Transcript
Page 1: EtherCAT デバイスプロトコル · 2019-08-30 · このうちSM2およびSM3で周期通信するMappingオブジェクトを選択してAssignオブジェクト(obj 0x1C12,

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

Top Related