2016-07-30 8 views
0

私は3つのエンジンで構成されたCANOpenネットワークをセットアップしました。各エンジンは、独自のCANOpenスレーブを備えています。 CANOpenマスターとして働くHilscher CifXボードを持っています。SDOを介してCANOpen変数をポーリングすることは可能ですか?

私はRPDOとTPDOをHilscherボードのプロセスメモリに直接読み書きすることによって、適切なエンジンコマンドを達成しました。

ここで、Sycon.NET(Hilscher設定ツール)を使用してネットワークを設定して、追加の変数をPDOにマップしようとしましたが、キャプチャしたい変数がリストに表示されません。私はこれが、これらの変数のEDS測定値PDO Mapping = 0であると考えています。

私はこれらの変数の値を20msごとに読みたいと思います。 SDOを介してデバイスをポーリングすることでこれを行うことはできますか?もしそうなら、どうですか?

答えて

1

オブジェクトに対してSDOアップロードを実行できます。

この(オブジェクトインデックス:0x1234の、サブインデックス:0x01の):のようなものになるはずメッセージ

イド:0x680 + NODEID、DLC:8、データ:0x40の0x34の0x12を0x01を0x00には0x00 0x00には0x00を

CiA DS301でSDOの詳細を見ることができます。

+0

@ M.Neubauer:ありがとうございました。私はDS301を調べて、あなたの例を "Initiate SDO Upload"プロトコルのメサージー構造にマップすることができました。私は、 "迅速な転送"ビットがスレーブからの応答の一部であることがわかります(私の場合)。この場合、スレーブが転送モードを選択することを意味しますか?データが4バイトを超えることはないため、スレーブは常に高速転送を使用することを保証していますか? –

+0

はい、転送モードを決定するのはスレーブまでです。ほとんどの実装では迅速な転送が行われると思います。しかし、セグメント化されたアップロードで4バイト未満を転送することは可能です。したがって、保証はありません。 – mkninc

+0

私はサービス全体を実装するのに良いです。 –