こちらの記事ではオムロンのCJ1W-ECT21を使用しEtherCAT Slaveを立ち上げ、Beckhoff TwinCAT 4026とEtherCAT 通信を行います。
さ、はじめよう。
![](http://soup01.com/wp-content/uploads/2024/05/image-37-1024x658.png)
EtherCAT?
EtherCAT (Ethernet Control Automation Technology) は、イーサネットをベースとした、より高速で効率的な通信を可能にする高性能産業用ネットワークシステムで、各ノードはイーサネット・フレームを高速で送信することで、短い通信サイクルタイムを実現します。
EtherCATは独自の通信プロトコルですが、物理層には標準イーサネット技術が使用されるので、イーサネット・ケーブルをより広い用途に使用することができます。
また。EtherCATは高い処理速度とシステムの完全性が要求される大規模制御システムだけでなく、中小規模の制御システムでも十分に活用できます。
How it Works?
EtherCATでは、イーサネットフレームは全てのスレーブノードを通過し、その際、スレーブノードはフレーム内で割り当てられた領域のデータを数ナノ秒で読み書きできます。
EtherCATマスタから送信されたイーサネットフレームは停止することなく全てのEtherCATスレーブを通過するので、最後のスレーブが全てのフレームを返送し、そのフレームは再び全てのスレーブを通過してEtherCATマスタに返送されます。
このメカニズムのおかけで高速でリアルタイムのデータ伝送が保証されるようになります。
EtherCATマスタとEtherCATスレーブ間で周期的に実行されるデータ交換は、イーサネットフレーム内に直接格納されるEtherCATデータグラムを使用し、各EtherCATデータグラムはHeader(データ長と1つ以上のスレーブアドレスを含む)、データ、Working Counter(Check-Bit)で構成されます。
そのイーサネットフレームを列車だとイメージし、EtherCATデータグラムは列車の車両だとわかりやすいかもしれません。
Types of EtherCAT Communications
EtherCATでは以下の2種類の通信が可能で、それはPDF通信とSDO通信です。
Process Data Communications (PDO Communications)
PDO通信はデータを周期的にリアルタイムで処理する通信手法で、EtherCATマスタは論理プロセスデータ空間をノードにマッピングし、EtherCATマスタとスレーブ間のサイクリック通信を実装します。
Mailbox Communications (SDO Communications)
SDO通信はメッセージ通信を行うために使用されています。アプリケーションの必要に応じてEtherCATマスタはスレーブにコマンドを送信し、スレーブはEtherCATマスタに応答を返すような手法になります。
SDO通信を使用し、以下のデータ通信が可能になります。
- プロセスデータの読み書き
- スレーブの設定
- スレーブ状態の監視
CJ1W-ECT21?
Cj1W-ECT21を使用することにより、EtherCATマスタとCPUユニット間でEtherCATネットワークを介してデータを交換することができます。
![](http://soup01.com/wp-content/uploads/2024/05/image-38-953x1024.png)
Data Exchange Sizes
Cj1W-ECT21はEtherCATネットワーク上で交換するデータ量を0、50、100、200、400バイトから設定できます。
System Configuration
こちらはEtherCATのシステム構築例になります。
![](http://soup01.com/wp-content/uploads/2024/05/image-39-1024x909.png)
EtherCAT master
EtherCATマスターはEtherCATネットワークを管理し、スレーブの状態を監視し、スレーブとI/Oデータの交換を行います。
![](http://soup01.com/wp-content/uploads/2024/05/image-40-1024x895.png)
CJ-series EtherCAT Slave Unit(CJ1W-ECT21)
CJシリーズEtherCATスレーブユニットはEtherCATネットワーク上で
以下の機能を実現します。
- EtherCATマスタとのプロセスデータ通信。
- EtherCATマスタとのメッセージ通信 (SDO通信)
![](http://soup01.com/wp-content/uploads/2024/05/image-41-1024x905.png)
CJ-series CPU
CJシリーズPLCを制御するメインユニットで、他のユニットやスレーブなどのIOデータを更新します。
![](http://soup01.com/wp-content/uploads/2024/05/image-42-1024x898.png)
CX-Programmer
CX-Programmerはパソコン上で動作し、CJシリーズCPUユニットとEtherCATスレーブユニット間の通信を行うためのI/O通信エリア設定テーブルの設定や、CJシリーズPLCのプログラム、モニタ、デバッグを行うために使用します。
![](http://soup01.com/wp-content/uploads/2024/05/image-43-1024x891.png)
Communications Cable
カテゴリ5(100BASE-TX)以上のアルミテープと編組を施した2重シールドケーブルを使用し、またストレート配線でご使用ください。
![](http://soup01.com/wp-content/uploads/2024/05/image-44-1024x894.png)
ESI (EtherCAT Slave Information File)
ESIファイルにはEtherCATスレーブ固有の情報がXML形式で格納され、EtherCATマスタ設定ソフトウェアにロードすることで、スレーブのプロセスデータの割り当てやその他の設定を簡単に行うことができます。また、ESI Fileは各EtherCAT スレーブメーカーから入手することが可能です。
![](http://soup01.com/wp-content/uploads/2024/05/image-45-1024x924.png)
Configuration Software
設定ソフトウェアはPCで動作し、EtherCATネットワークやEtherCATスレーブの設定に使用します。(今回の記事ではBeckhoff TwinCAT 4026になります)
![](http://soup01.com/wp-content/uploads/2024/05/image-46-1024x913.png)
Layout
こちらはCJ1W-ECT21の外形図になります。
Unit Switch
Unit Switchは、EtherCATスレーブユニットのユニット番号をCPUバスユニットとして設定します。ユニットステータス、スレーブステータス、I/O通信エリア設定テーブル、I/O通信エリア参照テーブルなどのデータが格納されているデータエリアワード、DMエリアワードをユニットに割り当ては、そのユニット番号の設定で決まります。
そして、設定できる範囲は0からFまで、出荷設定では0です。
![](http://soup01.com/wp-content/uploads/2024/05/image-47-1024x745.png)
Node Address Switches
Node Address SwitchesはEtherCATスレーブユニットのノードアドレスを設定し、EtherCATマスターがEtherCATスレーブユニットを認識できるためのスイッチです。
![](http://soup01.com/wp-content/uploads/2024/05/image-48-1024x844.png)
If 1-255
スイッチ設定を使用して、1〜255のノードアドレスを設定します。これらのスイッチが00に設定されていない場合、スイッチで設定されているノードアドレスが使用されます。
If 0
スイッチが00に設定されている場合、EtherCATマスタ設定ソフトウェアを使用してノードアドレスの範囲を1〜65535に設定します。
MAX Units?
拡張ラックがある場合、最大16台のEtherCATスレーブユニットをCJシリーズPLCシステムに取り付けることができます。
Memory Allocated
EtherCATスレーブユニットには以下のCPUユニットワードが割り当てられています。
- CIO Area words :Moduleのステータス情報が含まれている。
CIO エリア: n = CIO 1,500 + (25 x unit number) - DM Area words:I/O通信エリア設定表 Tが含まれています。
DM エリア:m = D30,000 + (100 x unit number)
CIO Area Allocations
開始ワードn=CIO1500+(25×ユニット番号)になります。
Unit Status 1 (n+10)
![](http://soup01.com/wp-content/uploads/2024/05/image-49-1024x583.png)
Unit Status 2 (n+11)
![](http://soup01.com/wp-content/uploads/2024/05/image-50-1024x594.png)
Slave Status 1 (n+12)
![](http://soup01.com/wp-content/uploads/2024/05/image-51-1024x603.png)
Slave Status 2 (n+13)
![](http://soup01.com/wp-content/uploads/2024/05/image-52-1024x619.png)
DM Area Allocations
開始ワード m = D30000 + (100 x ユニット番号)になります。注意するのはDMエリアはEtherCATスレーブユニットが使用する入出力ワードを設定するためにありますが、I/O通信エリア設定テーブルの変更を反映させるには、ユニットの再起動が必要です。
m 00 to 07 OUT data area
![](http://soup01.com/wp-content/uploads/2024/05/image-53-1024x520.png)
m + 1 00 to 15 First word in OUT
![](http://soup01.com/wp-content/uploads/2024/05/image-54-1024x546.png)
m + 2 00 to 15 OUT data area Size
![](http://soup01.com/wp-content/uploads/2024/05/image-55-1024x565.png)
m + 3 00 to 07 IN data area
![](http://soup01.com/wp-content/uploads/2024/05/image-56-1024x525.png)
m + 4 00 to 15 First word in IN
![](http://soup01.com/wp-content/uploads/2024/05/image-57-1024x526.png)
m + 5 00 to 15 IN data area size
![](http://soup01.com/wp-content/uploads/2024/05/image-58-1024x545.png)
Status Code
こちらは設定結果になります。詳しくは取説を参考にしてください。
![](http://soup01.com/wp-content/uploads/2024/05/image-59-1024x833.png)
State transition
EtherCATスレーブユニットの通信制御の状態遷移モデルはEtherCATマスタによって制御されます。電源ON時からの通信状態の遷移は下図になります。
Init
通信を初期化中で、この状態ではEtherCAT MasterとEtherCAT Slaveは通信できません。
Pre-Operational
この状態では、SDO通信(メッセージ通信)のみが可能で、Initが完了するとこの状態になります。ネットワーク設定の初期化をこの状態で行います。
Safe-Operational
この状態では、SDO通信(メッセージ通信)とPDO送信の両方が可能です。ステータスなどの情報はEtherCATスレーブユニットから送信されます。
Operational
これが通常の通信状態である。PDO通信はI/Oデータを制御するために使用されます。
PDO Mappings
PDOマッピングオブジェクトにはEtherCATスレーブユニットのI/Oデータが含まれます
- RxPDOのPDOマッピングオブジェクトはObject Dictionaryのインデックス1600から17FFで管理されます。
- TxPDOのPDOマッピングオブジェクトはObject Dictionaryのインデックス1A00から1BFFで管理されます。
RxPDO
TxPDO
また、EtherCATスレーブには複数のPDOを割り当てることができます。
Communications Performance
EtherCATスレーブユニットのI/O応答時間とは、CJシリーズCPUユニットがEtherCATマスタからの出力データを処理してから、EtherCATマスタが処理結果を入力するまでの時間になります。
I/O応答時間のタイミングチャートを下図に示します。
Tmaster
EtherCATマスタのサイクルタイムは、EtherCATマスタのサイクルがプロセスデータ通信のサイクルと同じであると想定します。詳しくはアプリケーションで使用してるEtherCAT Masterの取説を参照してください。
Tslave
EtherCATスレーブユニットの処理時間に該当します。
Tcj_plc
CJシリーズCPUユニットのサイクルタイムに該当します。
Ttrans
EtherCATマスターの送信時間に該当します。
formula
I/O応答時間の計算式を以下に示します。
Maximum I/O Response Time = Tmaster + (4 x Tslave) + (2 x Tcj_plc) + (2 x Ttrans)
![](http://soup01.com/wp-content/uploads/2024/05/image-60-1024x604.png)
Implementation
OMRON Side
CJ2B-ECT21から構築します。
Read Configuration
CX-Programmerを起動し、PLC>Auto Online>Direct Onlineをクリックします。
自分はUSB接続していますので、USB Connectionを選択し、Connectで進みます。
Yesで進みます。
Done!プロジェクトとHardware ConfigurationがUploadされました。
IO Table
次はHardware Configurationを変更するため、IO Table and Unit Setupをクリックします。
PLC IO Table画面が表示され、今回の記事で使用するCJ1W-ECT21を開きましょう。
Configuration
こちらはCJ1W-ECT21の設定画面になります。
こちらは今回の設定になります。
- Out Data area TypeはData Memory(D)で、先頭アドレスはD0、400 Byteに設定しました。
- In Data area TypeはWork Area(W)で、先頭アドレスはW0、400 Byteに設定しました。
Transfer[PC to Unit]
Transfer[PC to Unit]で設定をCJ1W-ECT21に転送します。
Compare
また、Compare機能を利用し、OfflineとOnlineの設定を照合可能です。
Program
こちらはCJ1W-ECT21とEtherCAT Master(今回はBeckhoff)と通信状態・もしくはモジュール本体の状態を取得する、簡単なプログラムです。
Download
プロジェクトをCPUにDownloadしましょう。
Transfer Allをクリックし、OKですべてのデータをCPUに転送します。
Yesで進みます。
Yesで進みます。
少々お待ち下さい…
Done!
YesでオムロンのCJ CPUをRun Modeに切り替えましょう。
Beckhoff Side
次はBeckhoff 側を構築します。
Download ESI File
オムロンのHPからESI FileをDownloadします。
https://www.fa.omron.co.jp/products/family/3439/download/software.html
Install ESI File
ESI Fileを Program Files(x86)/Beckhoff/TwinCAT/3.1/Config/io/EtherCATに格納します。
4026からESI Fileなどの格納場所が変わりました。
New Project
TwinCAT 4026に新規プロジェクトを作成するため、File>New>Projectをクリックします。
TwinCAT XAE Project(XML Format)を選び>Okで進みます。
Done!新規プロジェクトが追加されました。
Reload ESI File
TwinCAT>EtherCAT Devices>Reload Device Descriptions でESI Fileをリロードします。
Add EtherCAT Master
EtherCAT Masterを追加するため、Devices>Add New Itemします。
EtherCAT Masterを追加しましょう。
EtherCAT Masterとして使用するEthernet Interfaceを設定しましょう。
Done!EtherCAT Masterが追加されました。
Scan Network
次はTwinCATのScan networkを利用し、CJ1W-ECT21を検索しましょう。
Done!CJ1W-ECT21を見つけました。
Configrure Slots
CJ1W-ECT21をダブルクリックし、Process Data のTabを開き、PDO Mappingを設定しましょう。
Outputs
先ほどCJ1W-ECT21は400Bytesの出力データを設定しましたので、0x1703のCheck Boxを入れます。
Outputs Slotに400 BytesのPDOが追加されました。
Inputs
先ほどCJ1W-ECT21は400Bytesの入力データを設定しましたので、0x1B03のCheck Boxを入れます。
Inputs Slotに400 BytesのPDOが追加されました。
Result
入出力のPDO Mappingが追加されました。
Add PLC
PLCを追加します。PLC右クリック>Add New Itemします。
Standard PLC Projectを選び>Addで追加します。
Done!PLCプロジェクトが追加されました。
Add GVL
GVLを追加するため、GVLs>右クリック>Global Variable Listします。
GVL名を入力しましょう。
Done!
プロセス入出力データを定義します。
Build
Build>Build Solutionでプロジェクトをコンパイルします。
Map Input
CJ1W-ECT21の入力PDOとプロジェクトとMappingします。
すべてのプロセス入力データを選び>右クリック>Change Mulit Linkします。
先程定義したGVL.InputDataとLinkしましょう。
Done!プロジェクトにMappingされたプロセス入力データに”X”がついてます。
Map Output
CJ1W-ECT21の出力PDOとプロジェクトとMappingします。
すべてのプロセス出力データを選び>右クリック>Change Mulit Linkします。
先程定義したGVL.OutputDataとLinkしましょう。
Done!プロジェクトにMappingされたプロセス出力データに”X”がついてます。
Activate Configuration
Activate ConfigurationでHardware ConfigurationをRuntimeにDownloadしましょう。
Okで進みます。
もしライセンスがない場合は、Yesでライセンス入力に進みます。
ライセンスを入力します。
OkでRuntmeをRun modeに切り替えます。
Login
LoginをクリックしUserプログラムをDownloadします。
Yesで進みます。
Startでプログラムを開始します。
Result
CJ1W-ECT21にあるWcState変数から通信状態を確認します。
現在は0であり、CJ1W-ECT21と通信し交換するPDOデータは有効であります。
TwinCATから出力されたデータはCJ1W-ECT21が受信できました。
CJ1W-ECT21から出力されたデータはTwinCATが受信できました。
CJ1W-ECT21のラダーからも現在モジュールの状態を確認できます。