• 検索結果がありません。

通信オブジェクト

ドキュメント内 1 (ページ 77-89)

4 CANopen

4.3 ネットワーク通信

4.3.1 通信オブジェクト

4.3.1.1 PDOProcess 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-1RxPDO g012403x

4-2TxPDO g012404x

4.3.1.2 SDOService 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-3SDOプロトコル 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-5SDOセグメントのダウンロード 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-7SDOセグメントのアップロード

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-8SDO転送のアボート 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’にしてお

ドキュメント内 1 (ページ 77-89)