4 CANopen
4.3 ネットワーク通信
4.3.1 通信オブジェクト
4.3.1.1 PDO(Process Data Object-プロセスデータ・オブジェクト)
PDOは優先度の高いIDを持った実時間データが入っています。データ電文は最大8バイト で構成され、要求に応じて個々のサブアセンブリの間(プロデューサとコンシューマ間)で 転送することができます。このデータ交換はオプションでイベントコントロールができるか、
または同期方式で行うことができます。イベントコントロールモードではバスの付加を大幅 に下げることができ、低いボーレートでも高い通信容量を実現できます。一方、様々なモー ドを混合して処理することもできます(4.3.4.2.19 節「オブジェクト 0x1400〜0x141F、受 信PDO通信パラメータ」参照)。
72 CANopen
ネットワーク通信
4.3.1.1.1 PDOプロトコル
このプロトコルはバスカプラに対し、プロトコルのオーバーヘッドなしにデータを送受信す るのに用いられます。PDOはCAN識別子とデータ領域からのみ構成されます。プロトコル 情報は一切PDOに含まれていません。PDOデータの内容はマッピングパラメータと通信パ ラメータで記述されています。
RxPDO(受信PDO)とTxPDO(送信PDO)は区別して用いられます。
図4-1:RxPDO g012403x
図4-2:TxPDO g012404x
4.3.1.2 SDO(Service Data Object-サービスデータ・オブジェクト)
SDO はオブジェクトディクショナリのエントリに対しリードまたはライトするのに用いら れます。これを利用することでCANopenノードデバイスを完全にコンフィグレーションす ることができます。
デフォルトのSDOは優先度の低いIDで予め指定されます。送信するデータは4バイトを超 えた場合は幾つかのメッセージに分けなければなりません。
受信PDO(RxPDO)
クライアント
クライアント
サーバ
サーバ 送信PDO(TxPDO)
4.3.1.2.1 SDOプロトコル
SDO は送信に不可欠な特定のプロトコル・オーバーヘッドを持っており、コマンド指定子、
インデックスおよびリード/ライト用エントリのサブインデックで構成されます。
4.3.1.2.1.1 基本手順
図4-3:SDOプロトコル g012405x
受信 SDO(RxSDO)
送信 SDO(TxSDO)
クライアント
クライアント
サーバ
サーバ
4.3.1.2.1.2 SDOダウンロード・プロトコル
このプロトコルは、マスタからバスカプラにデータを書き込むときに用いられます。
4.3.1.2.1.2.1 SDOダウンロードの開始
このプロトコルは、マスタからバスカプラへのデータ送信を開始するときに用いられます。4 バイト以内のデータを送信するときは、データはこのプロトコルの中で送信できます。
74 CANopen
ネットワーク通信
図4-4:SDOダウンロードの開始 g012406x
ccs: クライアント・コマンド指定子 1
scs: サーバ・コマンド指定子
e=1およびs=1、n=4−3=1 e: 転送タイプ 0:標準転送、書き込むバイト数
≧5バイト
1:急送。書き込むバイト数
< 5バイト
s: サイズ指定 0:データセットのサイズは表示しない
1:データセットのサイズを表示する
sは常に1
m: マルチプレクサ オブジェクトディクショナリのインデッ クスとサブインデックス
インデックス、下位バイト:バイト1 インデックス、上位バイト:バイト2 サブインデックス:バイト3
d: データ e=0、s=0:dはCiAで使用予約
c=0、s=1:dはダウンロードのバイト数を
含む
バイト4はLSB、バイト7はMSBを含む e=1:dはデータを含む
x: 未使用、常に0
:ダウンロード開始の要求 答 3:ダウンロード開始の応
n: e=1およびs=1のときのみ有効 nが有効の場合データを含まないバイト数
他の場合は0 を表示。例:3データバイト、
SDOダウンロードの開始
SDOダウンロードの開始 クライアント
クライアント
サーバ
サーバ
4.3.1.2.1.2.2 SDOセグメントのダウンロード
このプロトコルは4個以上のデータを送信するのに用いられます。すなわち、データ送信を 開始する「SDOダウンロード開始プロトコル」を完全に処理した後に実行されます。
図4-5:SDOセグメントのダウンロード g012409x
ccs: クライアント・コマンド指定子 1:セグメント・ダウンロードの要求
scs: サーバ・コマンド指定子 3:セグメント・ダウンロードの応答
seg-data: 送信データを含む データの中身はアプリケーションで判断
される
n: データを含まないバイト数を示す。
セグメント・サイズが示されない場合、
n=0
c: ダウンロードするデータがまだ 0:ダウンロードするデータが更にある あるかどうかを示す 1:ダウンロードするデータはもうない t: トグルビット このビットはセグメントのダウンロード
が行われる毎に切り替わるものとする。
最初のセグメントのトグルビットは0に する。トグルビットは要求と応答メッセー ジにおいて同じ値である。
x: 未使用、常に0
reserved: CiA用に予約
SDOセグメントのダウンロード
SDOセグメントのダウンロード クライアント
クライアント
サーバ
サーバ
4.3.1.2.1.3 SDOアップロード・プロトコル
このプロトコルはバスカプラからデータを読み出すのに用いられます。
76 CANopen
ネットワーク通信
4.3.1.2.1.3.1 SDOアップロードの開始
このプロトコルにより、バスカプラからマスタへのデータ送信が開始します。4 バイト以内 のデータを送信するときは、データはこのプロトコルの中で送信できます。
6:SDO 0x
ード開始の要求
scs: サーバ・コマンド指定子
n: e=1およびs=1のときのみ有効 まないバイト数
:標準転送、書き込むバイト数
≧5バイト
: サイズ指定 0:送信するバイト数は表示しない
1:送信するバイト数は表示する
(バイト数に依存する)
m: マルチプレクサ オブジェクトディクショナリのインデッ クスとサブインデックス
インデックス、下位バイト:バイト1 インデックス、上位バイト:バイト2 サブインデックス:バイト3
d: データ e=0、s=0:dはCiAで使用予約
c=0、s=1:dはダウンロードのバイト数を
含む
バイト4はLSB、バイト7はMSBを含む e=1:dはデータを含む
x: 未使用、常に0
図4- アップロードの開始 g01241
ccs: クライアント・コマンド指定子 2:アップロ
2:アップロード開始の応答 nが有効の場合データを含
他の場合は0 を表示。バイト[8-n、7]にはセグメントデ ータはない。
e=1およびs=1、n=4−3=1 SDOアップロードの開始
SDOアップロードの開始 クライアント
クライアント
サーバ
サーバ
e: 転送タイプ 0
1:急送。書き込むバイト数
< 5バイト s
4.3.1.2.1.3.2 SDOセグメントのアップロード
このプロトコルは4個以上のデータを送信するのに用いられます。すなわち、データ送信を 開始する「SDOアップロード開始プロトコル」を完全に処理した後に実行されます。
図4-7:SDOセグメントのアップロード
ccs: クライアント・コマンド指定子
scs: サーバ・コマンド指定子
トグルビット ップロード
い
バイト数を示す。
にはデータはない。
セグメント・サイズが示されない場合、
n=0
x: 未使用、常に0
reserved: CiA用に予約
g012411x
3:セグメント・アップロードの要求 0:セグメント・アップロードの応答
t: このビッ
る毎に切り替わるものとする。
トはセグメントのア が行われ
最初のセグメントのトグルビットは0に する。トグルビットは要求と応答メッセー
て同じ値である。
ジにおい 0
c: アップロードするデータがまだ :アップロードするデータが更にある 1
あるかどうかを示す :アップロードするデータはもうな
seg-data: 送信データを含む データの中身はアプリケーションで判断
される
n : データを含まない
バイト[8-n、7]
SDOセグメントのアップロード
SDOセグメントのアップロード クライアント
クライアント
サーバ
サーバ
78 CANopen
ネットワーク通信
4.3.1.2.1.4 SDO転送のアボート
このプロトコルは送信中にエラーが起きた場合に用いられます。
図4-8:SDO転送のアボート g012412x
コマンド指定子 4:転送アボートの要求
m マル クサ オブジェクトディクショナリのインデッ クスとサブインデックス
x 未使用、常に0
Data: 4バ ード アボートの理由を示すアプリケーション
固有のデータ 転送アボート要求 以下のような構造になっています。
構造 cs:
: チプレ
:
イト、エラーコ
メッセージは
バイト 意味
0 コマンド指定子 1
2 インデックス 3 サブインデックス 4
5 追加コード 6 エラーコード 7 エラークラス
追加コード、エラーコードおよびエラークラスから成るアボートコードは、以下の表に示す ようにUNSIGNED32値でエンコードされます。
バイト 7−6 バイト 5 バイト 4
追加コード エラーコード エラークラス 意 味
05 03 00 00 トグルビットが切り替わらない 05 04 00 00 SDO プロトコルがタイムアウト
05 04 00 01 クライアント/サーバ・コマンドが無効または不明 05 04 00 02 無効ブロック・サイズ(ブロック・モードのみ)
05 04 00 03 無効シーケンス番号(ブロック・モードのみ)
05 04 00 04 CRC エラー(ブロック・モードのみ)
05 04 00 05 メモリ不足
06 01 00 00 オブジェクトに対するサポートされていないアクセス 06 01 00 01 ライト・オンリー・オブジェクトをリードしようとした 06 01 00 02 リード・オンリー・オブジェクトをライトしようとした 06 02 00 00 オブジェクトディクショナリにないオブジェクト 06 04 00 41 PDO にマッピングできないオブジェクト
06 04 00 42 マッピング対象オブジェクトの数および長さが PDO 長を超える 06 04 00 43 一般的なパラメータ不一致
06 04 00 47 デバイス内の一般的な内部不一致
06 06 00 00 ハードウェア・エラーによるアクセス失敗
06 07 00 10 データタイプ不一致、サービスパラメータ長の不一致 06 07 00 12 データタイプ不一致、サービスパラメータが長すぎる 06 07 00 13 データタイプ不一致、サービスパラメータが短すぎる 06 09 00 11 サブインデックスが存在しない
06 09 00 30 パラメータの値範囲を超えた(ライトアクセスのみ)
06 09 00 31 書き込まれたパラメータ値が大きすぎる 06 09 00 32 書き込まれたパラメータ値が小さすぎる 06 09 00 36 最大値が最小値より小さい
08 00 00 00 一般エラー
08 00 00 20 データをアプリケーションに転送または保存できない
08 00 00 21 ローカル制御が原因で、データをアプリケーションに転送または 保存できない
08 00 00 22 現在のデバイス状態が原因で、データをアプリケーションに転送 または保存できない
08 00 00 23 オブジェクトディクショナリの動的生成に失敗、またはオブジェ クトディクショナリが存在しない(例えば、オブジェクトディク ショナリをファイルから生成しようとしたが、ファイルエラーの ために生成できなかった)
4.3.1.2.2 SDO使用例
以下に4種類のSDO使用例を掲げます。データは16進で表されます。この例ではCANメ ッセージ・レベルでのSDOの処理を示しており、SDOプロトコルがCANカードに実装さ れていれば利用できます。
1つのメッセージに対し、4項目の欄に分けて説明します。
欄1 方向 M→BC=マスタからバスカプラにメッセージ送信
BC→M=バスカプラからマスタにメッセージ送信
欄2 CAN-ID CAN識別子
欄3 フレームタイプ D=データフレーム
R=RTRフレーム(RTR:Remote Transmit)
欄4 データ CANメッセージのデータバイト
CANメッセージでは最大8バイトのデータを送信できます。
個々のデータはスペースで分割されます。XX値の項目は意味 を持ちませんが、場所は確保されます。この値は’0’にしてお