Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
EtherCAT デバイスプロトコル
ETG仕様書: www.ethercat.org/etg<仕様書番号 (4桁)> ナレッジベース: www.ethercat.org/kb 開発者フォーラム: www.ethercat.org/forum
obj0x1C12:1obj0x1C13:1
obj0x1600:1 obj0x1A00:1 obj0x1A00:2
obj0x7000 obj0x6000 obj0x6010
設定 1. 構成
obj0x700:1
Bool = 1 obj0x6000:1
INT = -3
obj0x700:2
Bool = 0 obj0x6000:2
Bool = 0 obj0x6010:1
STRING = “ETG”
obj0x700:3
UINT = 42 obj0x600:3
STRING = “EtherCAT” obj0x6010:2
UNSIGNED = 5
マスター周期通信: 入力データ処理スレーブベリファイ: DCによる同期動作 (サポートする場合)開始: 出力プロセスデータ更新 (START_OUTPUT_HANDLER)
スレーブ停止: 出力プロセスデータ更新 (STOP_OUTPUT_HANDLER)
OD エリア OD インデックス範囲通信エリア 0x1000-0x1FFF
RxPDO Mapping 0x1600-0x17FF
TxPDO Mapping 0x1A00-0x1BFF
SM RxPDO Assign 0x1C12
SM TxPDO Assign 0x1C13
プロファイルエリア (モジュール) 0x6000-0xBFFF
入力エリア 0x6000-0x6FFF
出力エリア 0x7000-0x7FFF
SDOリクエスト/レスポンスはCoEオブジェクトのリード/ライト処理に使用します。SDO Infoサービスはオブジェクトディクショナリの構成や関連するオブジェクトエントリーをリードします。SDOアボートはサービスのエラーを通知します。
ESC
ホストコントローラー
スレーブ
SLAVE 1
SLAVE 2
SLAVE 3
SLAVE 4
EPU PORT 3No Link
PORT
1
PORT 2Link
リクエストレスポンスアボート
送信モード:
Expedited
Normal
Segmented
データ ≤ 4 Byte
データ = Mbx size
データ > Mbx size
マスター
スレーブ
PORT 1
Link
PORT
0Li
nk
(SM3 PDO Assignment)
(RxPDO Mapping)
データグラム
・・・
ESM CoE0x03
プロセスデータ
µC
ESC
Mailbox
EoE0x02
AoE0x01
FoE0x08
SoE0x10
PDI (プロセスデータインタフェース)
プロセスデータRAM
LATCH SYNC
ALD
LPh
レジスターSII
(EEP
ROM
)
SM 0reg 0x0800
SM 1reg 0x0808
SM 2reg 0x0810
SM 3reg 0x0818
DCreg 0x0900
EtherCAT処理ユニット (EPU)
ADO0x1000
FMMU 0reg 0x0600
FMMU 1reg 0x0610
オートフォワーダー&ループバック
Port 0 (in) Port 1 (out) Port 2 (out) Port 3 (out)
参照先
: ETG
. 100
0.3
reg0x0100
reg0x0110
reg0x0302
reg0x0311
EtherCAT ステートマシン (ESM)EtherCATデバイスのステートマシンは、スレーブが状態遷移するために必要な設定項目を状態ごとに定義し、実装されている各機能にその設定を反映します。状態遷移時に誤った設定を行ったりスレーブ内部エラーが発生したりすると、ESMはAL StatusレジスタのエラーフラグとAL Status Codeのエラーコードを通知します。状態遷移のリクエストとレスポンスまたはエラーレスポンスはESCのAL Controlレジスタ(reg0x120), AL Statusレジスタ(reg0x130)およびAL Status Codeレジスタ(reg0x134)を使用します。ESMはスレーブのビヘイビアを規定し、マスターはESMにしたがいスレーブの設定や状態変更をリクエストします。ESMの管理に関するマスターとスレーブ間の基本設定の解説を下図に示します。図の見方: マスターとスレーブは必要な設定を行ってからAL ControlやAL Statusで状態遷移のリクエストとレスポンスをライトします。
CoE オブジェクトディクショナリー(OD)ODは従来CANopen®規格で定義された、スレーブ内の様々なデータ型の変数の構造体のセットです。各データ構造体はオブジェクトといい16bitのインデックスで指定します。オブジェクトごとに最大255個のエントリーをもつことができ、8bitのサブインデックス(SI)を使用して例えば obj0x7000:03のように指定できます。オブジェクトはオブジェクトコードタイプとしてVARIABLE(変数型、SI0のみ)、ARRAY(配列型、全エントリーが同一のデータ型と共通名称)、RECORD(構造体型、エントリーがそれぞれ異なるデータ型と名称)のいずれかです。ARRAYまたはRECORDオブジェクトではSI0 は最大のサブインデックス番号を意味し、SI1は16bitのオフセット位置から始まります(Complete Accessの場合)。
CoEベースのプロセスデータ設定CoEはフレキシブルなプロセスデータ設定をサポートしています。個々の変数(MDPの場合、obj0x7000-0x7FFFとobj0x6000-0x6FFF)のセットをMappingオブジェクト(obj0x1600-0x17FF/obj0x1A00-0x1BFF)に定義します。このうちSM2およびSM3で周期通信するMappingオブジェクトを選択してAssignオブジェクト(obj0x1C12, obj0x1C13)に割り当てます。これらのオブジェクトはコンプレックスデバイス(μC内蔵)で使用し、シンプルデバイス(μC/OD無し)も同じ概念でプロセスデータ構成をESIに記述します。
FMMU フィールドバスメモリー管理ユニット(FMMU)は論理アドレス指定のデータをESCのDPRAMアドレスにビット単位で対応づけします。FMMUの設定は例3に示すように論理開始アドレス、長さ、論理開始および終了ビット、これに対応した物理開始アドレスとビットおよび対応方向の指定からなります。一般的にFMMU0は出力データ、FMMU1は入力データに使用します。参照先: ETG.1000.4 – フィールドバスメモリ管理ユニット (FMMU)
フレームの経路と処理EtherCAT通信は必ずマスターのイーサネットインタフェースから送信するフレームで開始します。スレーブ側ではESCがフレームをオンザフライで処理します。ESC内部はEtherCAT処理ユニット(EPU)とポート間の巡回経路で構成されています。EtherCAT処理ユニット(EPU)で処理したフレームは次のオープン(外部リンク確立)状態のポートまでフォーワードされ、外部から戻ったフレームはPORT 0方向にフォワードされます。PORT 0は常にスレーブのINポートです。このしくみによってトポロジーは常に論理的にリング構造となり、原理上フレームの衝突や輻輳は発生しません。つまり、通信に必要な時間は一定であり正確に計算できます。
CoE SDO (サービスデータオブジェクト)サービス
CoE SDO アボートコード
0x06010001 ライトオンリーのオブジェクトにリードを実行 0x06070012 サービスパラメータの長さが過大0x06010002 リードオンリーのオブジェクトにライトを実行 0x06070013 サービスパラメータの長さが過小0x06010005 オブジェクト長がMailboxサイズを超えた 0x06070011 サブインデックスが存在しない0x06020000 オブジェクトディクショナリーに該当オブジェクトが存在しない 0x06070031 ライトしたパラメータ値が過大
0x06070010 サービスパラメータ長が不一致 0x06070032 ライトしたパラメータ値が過小
参照先: ETG.1000.5 – CoEサービス仕様
CoE 基本データ型 (抜粋)
0x0001 BOOL/BIT 0x0003 INT
0x001E BYTE 0x0005 USINT
0x001F WORD 0x0006 UINT
0x0020 DWORD 0x0008 REAL
0x0002 SINT 0x0011 LREAL
参照先: ETG.1020 – 基本データ型
obj0x1600
obj0x1A00
obj0x1C12
obj0x1C13
obj0x7000
obj0x6000マスター
スレーブ
用語の使い方
(SM2 PDO Assignment)
(TxPDO Mapping)
(出力)
(入力)
マスターアサイン: EEPROM Control/Statusとアドレス (reg0x0500 – 0x050F) クリアー: Mailbox SyncManager SM0 (reg0x0800 – 0x0807) SM1 (reg0x0808 – 0x080F) セット: 固定物理アドレス(ノードアドレス) (reg0x0010) Mailbox SyncManagers: SM0 (reg0x0800 – 0x0807) SM1 (reg0x0808 – 0x080F) SyncManager状態取得用FMMU (reg0x0620 – 0x062F)スレーブベリファイ: Maibox SyncManager設定 開始: Mailbox通信 (START_MBX_HANDLER)
マスターダウンロード: 例、CoEコマンド: PDO assign(入出力) (obj0x1C12/13) PDO mapping (例、入力) (obj0x1A00 – 0x1BFF) セット: プロセスデータSyncManager: SM2 (reg0x0810 – 0x0817) SM3 (reg0x0818 – 0x081F) FMMU: 出力 (reg0x0600 – 0x060F) 入力 (reg0x0610 – 0x061F) Module Ident List (reg0xF020 )スレーブベリファイ: プロセスデータSyncManager設定、PDO assign/mapping開始: 入力プロセスデータ更新 (START_INPUT_HANDLER)
マスターアサイン: EEPROM Control/Statusとアドレス (reg0x0500 – 0x050F) クリアー: Mailbox SyncManagers: SM0 (reg0x0800 – 0x0807) SM1 (reg0x0808 – 0x080F) SyncManager状態取得用FMMU (reg0x0620 – 0x062F)スレーブ停止: Mailbox通信 (STOP_MBX_HANDLER)
マスタークリアー: プロセスデータSyncManager: SM2 (reg0x0810 – 0x0817) SM3 (reg0x0818 – 0x081F) FMMU: 出力 (reg0x0600 – 0x060F) 入力 (reg0x0610 – 0x061F)スレーブ停止: 入力プロセスデータ更新 (STOP_INPUT_HANDLER)
INIT *(0x01) ESCレジスタにのみアクセス可能
BOOT *(0x03) オプションPREOP *(0x02) メールボックス通信が可能
SAFEOP *(0x04) プロセスデータ通信が可能。ただし、まだ出力は安全状態
OPERATIONAL *(0x08) 両プロセスデータが有効
状態遷移(デフォルトタイムアウト)
PreopTimeout (3000ms) BackToSafeopTimeout (200ms) SafeopOPTimeout (10000ms) BackTolnitTimeout (5000ms)参照先
: ETG
. 100
0.6
– ALステートマシン
2. 構成
(可変PDO マッピング)
参照先: ETG.1000.6 - オブジェクトディクショナリー ETG.5001 - モジュラーデバイスプロファイル
同期モードobj0x1C32/33経由でモード固有の設定フリーラン: DC不使用、ホストコントローラー内のアプリケーションはEtehrCATの通信サイクルと独立して動作。SM-同期: DC不使用、ホストコントローラー内のアプリケーションはプロセスデータのスレーブの出力SyncManagerへのライトをトリガに開始。(SM2-イベント、ESCのPDI IRQまたはALイベントレジスタ0x0200をポーリング)DC-同期: ハードウェアタイマーに基づく割込み信号(SYNC0/SYNC1)をトリガにホストコントローラーアプリケーションが出力処理。
ディストリビュートクロックディストリビュートクロック(DC)はEtherCATデバイスのローカルクロックを最大誤差1μsより十分高い精度で時刻同期する機能です。DCはESC内の64bit幅、ナノセカンド単位のシステムタイムを管理し、起点は2000年1月1日00:00です。常にDC機能の動作する最初のスレーブのシステムタイムを参照時計として使用します。DCの動作は以下の2段階からなります。
初期化 1. フレーム受信時刻のラッチをトリガ(xWR reg0x0900) 2. ラッチした受信時刻をリード (xRD reg0x0900 – 0x090F) 3. システムタイムオフセットを設定 (xWR reg0x0920) 4. 伝搬遅延オフセットを設定 (xWR reg0x0928)
ドリフト補償 周期的に参照時計のシステムタイムを配信 (xRMW reg0x0910)
SyncManager (SM) SyncManagerはハンドシェイク(1-バッファ, Mailbox SM用)とバッファモード(3-バッファ, プロセスデータSM用)に対し、データのコンシステンシーの管理とDPRAMアクセスの制御を行います。コンプレックスデバイス(µC有り)に対するSMチャネルの一般的な割当を示します。参照先: ETG.1000.4 – SyncManager
0x00 NOP ノーオペレーション 0x08 BWR ブロードキャストライト0x01 APRD オートインクリメント物理リード 0x09 BRW ブロードキャストリード&ライト0x02 APWR オートインクリメント物理ライト 0x0A LRD 論理アドレスリード0x03 APRW オートインクリメント物理リード&ライト 0x0B LWR 論理アドレスライト0x04 FPRD 固定アドレス物理リード 0x0C LRW 論理アドレスリード&ライト0x05 FPWR 固定アドレス物理ライト 0x0D ARMW オートインクリメント物理リード&マルチライト0x06 FPRW 固定アドレス物理リード&ライト 0x0E FRMW 固定アドレス物理リード&マルチライト0x07 BRD ブロードキャストリード
コマンド
参照先
: ETG
. 100
0.4
–Et
herC
AT フレームの構成 0x00D Invalid Output config. 0x0036 DC SYNC0 Cycle Time
0x001E Invalid Input config. 0x001B SyncManager Watchdog
0x0024 Invalid Input mapping 0x001A Synchronisation error
0x0025 Invalid Output mapping 0x0033 DC SYNC IO Error
0x0030 Invalid DC SYNC config.
AL Status Code(抜粋)
参照先: ETG.1020 - AL Status Codeの説明
マスター
スレーブ
例 3: FMMU設定各スレーブはESCを通過するフレームからプロセスデータのリード/ライトを実行します。
FMMU0
AA AABB BB CC CC CC CC CC CC DD DD DD DD WKC
WKC+5
0x1000000LRW
FMMU1 FMMU0 FMMU1 FMMU0
スレーブ 1 スレーブ 2 スレーブ 3
0x10000000x040x16000x01 (リード)
0x10000040x040x1A000x02 (ライト)
0x10000080x060x16000x01 (リード)
0x100000E0x040x1A000x02 (ライト)
0x10000040x040x16000x01 (リード)
設定レジスタ: reg0x0600
論理開始アドレス reg+0x0:長さ (Byte) reg+0x4:
物理開始アドレス reg+0x8: タイプ reg+0xB:
参照先: ETG.1000.4 – フレームの構成
値
データ領域 n
…
データ領域 2
データ領域 1
宛先MAC
送信元MAC
EtherType (0x88A4)イーサネット
ヘッダー データ
16 bit
48 bit
48 bit
長さ 長さ
サイズ識別子
優先度
コンプリートアクセス
予約 アドレス
送信タイプ
タイプ (CoE: 0x03)
コマンド指定
タイプ (0x01) チャネル
データセットサイズ
カウンタ
インデックス
予約
サブインデックス
全データサイズ
データ
11 bit
1 bit
2 bit
1 bit
1 bit 16 bit
16 bit
1 bit
4 bit
3 bit
4 bit 6 bit
2 bit
3 bit
16 bit
1 bit
8 bit
32 bit
Ethe
rCATヘッダー
FCS
パディング
32 bit
WKC 16 bit
イーサネットデータ
データ
Ethe
rCATデータ
データグラム
Mai
lboxサービスデ
ータM
ailb
oxヘッダー
データグラム
ヘッダー
データ
データ
コマンド
インデックス
アドレス
長さ
予約
巡回?
次データグラム?
IRQ
8 bit
8 bit
32 bit
11 bit
3 bit
1 bit
1 bit
16 bit
イーサネットフレーム(
IEEE
802
. 3):
64- 1
518
Byte
例 1: レジスタのリード/ライトアクセス
例 2: Mailbox通信(SM0, SM1経由), CoE SDO サービス
例 3: プロセスデータ通信(SM2, SM3経由)
番号(不使用)
予約
サービス (0x02)
9 bit
3 bit
4 bitプロトコル
ヘッダー
参照先: ETG.1000.3 - データリンク層のサービスとコンセプト
DL Control
DL Status
Invalid Fr. Cntr
Link Lost Cntr
設定&診断レジスタ
マスター
例 1: ESM関連レジスタのリード/ライトとESMの相互作用状態遷移はデータリンク層サービス(DL-サービス)でリクエストし、固定物理アドレス(ADP)とDPRAMアドレスオフセット(ADO)でスレーブのレジスタをアドレス指定してデータのリード/ライトを行います。この処理に成功したスレーブはワーキングカウンタ(WKC)をインクリメントします。
データグラム
コマンド
FPWR
値(s)
0x02
WKC
0x0000
WKC+1
WKC+1
WKC+1
アドレス (位置 | オフセット)
ADP0x03E9 | ADO0x0120
PREOPに状態遷移リクエスト
成功
失敗
FPRD
FPRD
0x02, 0x0000
0x11, 0x0016
0x0000
0x0000
ADP0x03E9 | ADO0x0130
ADP0x03E9 | ADO0x0130
ESC µC
スレーブ (ADP0x03E9)
AL Control
reg0x01200x010x02
PREOPリクエスト
0x02
0x01
AL Status
reg0x0130
0x01INIT状態
0x02PREOP状態
0x11INIT状態,エラー表示
AL Status Code
reg0x0134
0x0000エラー無し
0x0000エラー無し
0x0016 不正なメールボックス設定 NG
Mbx
SM設定の確認 M
bx S
M設定の確認
OK
参照先
: ETG
. 100
0.6
– プロトコルステートマシン
ケース: 2
ケース: 1
マスター
例 2: CoE SDO(サービスデータオブジェクト)の相互作用オブジェクトディクショナリー(OD)のアクセスにはSDOサービスを使用します。この例はSDO アップロードリクエストを0x1C12:01に発行し、ケース 1: アップロードレスポンス、ケース 2: 送信中止のサービスについてそれぞれ示します。
データグラム
コマンド
FPWR
タイプ サービス 識別子 インデックス SI データ
0x0000
WKC+1
WKC+1
WKC+1WKC+1
ADP0x03E9 | ADO0x1000
アップロードリクエスト
FPRD
FPRD
0x0000
0x0000
ADP0x03E9 | ADO0x1080
ADP0x03E9 | ADO0x1080
ESC
µC
スレーブ (ADP0x03E9)
NG
OK
参照先
: ETG
. 100
0.6
– SD
O
アップロードレスポンス
送信中止(アボート)ケース: 2
ケース: 1
アドレス (位置 | オフセット) WKC
CoE
CoE
CoE
リクエスト
リクエスト
リクエスト
アップロード
中止
アップロード
0x1C12
0x1C12
0x1c12
0x01
0x01
0x01
オブジェクトデータ
0x06090011
SdoRes()
SdoRes()
MBX_Main()
MailboxServiceInd()
COE_ServiceInd()
SDOS_Sdolnd()
OBJ_Read()
ESC
嘔気モード
マスター
フレーム
IRQ
SM-同期
DC-同期
Free Runローカルタイマー
タスク タスク タスク
フレーム フレーム
SM2/3 SM2/3SYNC0 SYNC0
アプリケーション
ジッタ―: ~µs
ジッタ―: ~ns
アプリケーション アプリケーション
アプリケーションアプリケーション
アプリケーション アプリケーション アプリケーション
…
例: プロセスデータオブジェクト(PDO)の組み立て SM2: RxPDO(出力) SM3: TxPDO(入力)
reg0x0100
reg0x0110
reg0x0300
reg0x0310
ESC
CoE サービス (番号)SDO Request (0x02) SDO Response (0x03) SDO Info (0x08)
0x00 分割ダウンロード 分割アップロード0x01 ダウンロード 分割ダウンロード ODリスト取得リクエスト0x02 アップロード アップロード ODリスト取得レスポンス0x03 分割アップロード ダウンロード オブジェクト記述取得リクエスト0x04 送信中止 オブジェクト記述取得レスポンス0x05 エントリー記述取得リクエスト0x06 エントリー記述取得レスポンス0x07 SDO Infoエラーリクエスト
参照先: ETG.1000.6 – SDO
モジュラーデバイスプロファイル(MDP)MDPはあらゆるEtherCATスレーブの基本データ構成を定義できるようになっています。データの種類(入力、出力、設定, ...)ごとに使用するインデックス範囲を規定しています。インデックス範囲はモジュールごとに定められたオブジェクト数に区分されています。MDPは以下の3種類に分類できます。1. フィールドバスゲートウェイ: 接続した各フィールドバススレーブがモジュール2. モジュラーデバイス: 接続した各サブデバイスがモジュール3. モジュールデバイス: 各チャネルがモジュール(4チャネルアナログ入力など)MDP対応デバイスは最大255モジュールまで接続可能です。モジュールは以下のデータ構造をサポートします。
1 TxPDO 1 RxPDO 各オブジェクトディクショナリーエリアに最大16個のインデックスデバイス全体のPDOとしてグローバルオブジェクトの定義を追加できます。
ダウンロード
アップロード
ライト
リード
プロセスデータ SM n
µC
EtherCAT
CC CC CC CCCC CC CC CCCC CC CC CCCC CC CC CC
AA AA AA AAAA AA AA AAAA AA AA AAAA AA AA AA
BB BB BB BBBB BB BB BBBB BB BB BBBB BB BB BB
ADO0x1000 ADO0x1100 ADO0x1110 ADO0x1120
プロセスデータRAMレジスター
0x1100からリード
0x1100にライト
物理開始アドレス 長さ
マスター
スレーブ 1
スレーブ n
スレーブ2参照時計
……
t
初期化
ドリフト補償
スレーブ 2
スレーブ 3
スレーブ n
ローカル
クロック
参照先
:ET
G. 1
020
– 同期
ETG
. 100
0.4
– ディス
トリビュートク
ロック
レジスター SM0Mailbox出力
reg0x0800MBX_WRITE_ADDRESS
reg0x0802MBX_SIZE
reg0x0804
reg0x0805
SM1Mailbox入力
reg0x0808MBX_READ_ADDRESS
reg0x080AMBX_SIZE
reg0x080C
reg0x080D
SM3入力
reg0x0818PD_READ_ADDRESS
reg0x081APD_OUTPUT_SIZE
reg0x081C
reg0x081D
SM2出力
reg0x0810PD_WRITE_ADDRESS
reg0x0812PD_INPUT_SIZE
reg0x0814
reg0x0815
物理開始アドレス
長さ
コントロール
ステータス
SDO コマンド指定
トポロジーの例
デバイスタイプ 1:フィールドバスゲートウェイ
デバイスタイプ 2:モジュラーデバイス
デバイスタイプ 3:モジュールデバイス
Gateway
モジュール 1 モジュール 1 チャネル /モジュール 1
モジュール 2 モジュール 2
ADC
Sensor
Digital Out
参照先: ETG.5001 – MDP デバイスモデル
MDP デバイスエリア名称 インデックス範囲 モジュール 0 モジュール 1 …通信エリア 0x1000 – 0x1FFF
RxPDOs
TxPDOs
0x1600 – 0x17FF
0x1A00 – 0x1BFF
0x1600
0x1A00
0x1601
0x1A01
……
ベンダー固有エリア 0x2000 – 0x5FFF
入力エリア 0x6000 – 0x6FFF 0x6000 – 0x600F 0x6010 – 0x601F …出力エリア 0x7000 – 0x7FFF 0x7000 – 0x700F 0x7010 – 0x701F …設定エリア 0x8000 – 0x8FFF 0x8000 – 0x800F 0x8010 – 0x801F …情報エリア 0x9000 – 0x9FFF 0x9000 – 0x900F 0x9010 – 0x901F …診断エリア 0xA000 – 0xAFFF 0xA000 – 0xA00F 0xA010 – 0xA01F …サービス転送エリア 0xB000 – 0xBFFF 0xB000 – 0xB00F 0xB010 – 0xB01F …デバイスエリア 0xF000 – 0xFFFF
スレーブの構成とEtherCATスレーブコントローラー(ESC)ESCはさまざまな論理機能要素(オートフォワーダー&ループバック機能やEPUなど)で高速なプロセスデータ通信を実現しています。「コンプレックス」スレーブは独立したホストコントローラー/µCでスレーブアプリケーションを処理します。「シンプル」スレーブはホストコントローラーをもたず、デジタルI/Oのみをサポートします。
MDPデバイスタイプ
MDP オブジェクトディクショナリー
チャネル /モジュール 3
チャネル /モジュール 2