TwinCAT3 TF6281 EtherNet/IP Scannerを使用することよってIntel®のPC-Based ControllerとReal-time Ethernet Driverを EtherNet/IP Scnnerを実装できます。EtherNet/IP AdapterはGeneric NodeやメーカーからダウンロードしたEDSも可能です。
EtherNet/IPはEthernet Iudustrial Protocol ,EIP、リアルタイムのProtocolで、DeviceNet™と同様にODVA()から管理と標準化されています。このProtocolはTCP・UDP・IPv4ベースで設計されています。
System Requirement
TF6281はEtherNet/IPのScannerやMasterを実装できます。もう一回言いますが、そのFunctionにはIntel chipsetのchipsetが必要です。そしてBeckhoffが開発してたReal-time Ethernet DriverがBeckhoff IPDに含まれているので別途のインストールは不要です。もし他社のもの使うであればインストールしてください。
EDSインストール
ProfinetがGSDMLが必要と同じように、EtherNet/IPにもEDS Fileが必要です。
EDS=Electronic Data Sheetで、文字ベースで通信設定などが記載されてNetWork内で他のデバイスと通信させます。
Molex – TCDEI-8D0P-DYU-G02場合
今回使うのはMolexのTCDEI-8D0P-DYU-G02です。EDS FILEは以下のLinkでダウンロードできます:
https://www.molex.com/molex/mysst/doCenter.action
そして1つ目にはEDSのFileですね。Downloadしてください。
ZIPを解凍するとこのような.eds Fileたちが見えます。
Codesysの場合
こちらの記事を参考してください。
Scannerを追加する
まずScanner(Master)を追加しましょう。
I/O>Devices>Add New Itemします。
EtherNet/IP>EtherNet/IP ScannerでScanner追加します。
IP Scannerをクリックし、AdapterをTab開きます。
SearchでNetwork Adapterをクリックします。
そしてScannerとAdapterを接続してるAdapterを選び、OKします。
次はEIP Scannerを設定します。EIP Scannerは2つの基本設定があり、
0xF800はSystem起動するときのパラメータと、
0xF900はいいまシステム実行してるパラメータになります。
Device 1 TC3 EIP Scannerをクリックします。
F800:21はIP AddressでこのIPはHardwareのNetwork IPではなく仮想IPです。もちろんF800:22のNetwork Maskも設定してください。
Double Clickし設定してください。
Network Maskにも同じく設定します。
EDS File Import
Molexの場合
追加されたScannerに右クリックし、Import EDS Fileをクリックします。
型式に合わせてEDS FileをImportしましょう。
…なんで一括Importできないでしょう。
Codesysの場合
Codesys IDEからExportしたのものを選んでいただければOKです。
TwinCAT3にはSupportしないEDS Deviceもありますので、File imporyed successfullyのPopupが出ると確認しましょう。
Adapterを追加する
Molexの場合
Scannerに右クリック>Add New Itemします。
先に追加したEDS デバイスを選び、OKします。
それはEIP Adapterが追加されました。
Settings>IP AddressでIPをクリックします。
AdapterにIP合わせて設定しましょう。
次は追加したAdapterをクリックします。
Append IO Connection>Input Onlyします。
変数を作成しますか?Yesします。
Codesysの場合
先EDS で追加した3S-Smart Software Solutions GmbHを選び、OKします。
同じく右クリックでChange IP Address、IP追加します。
IPと合わせます。
それでOKです。
IP Adapter>Append IO Connection>Exclusive Ownerします。
変数を作成しますか?Yesします。
それで設定OKです。
プログラムで変数を追加します。
そしてプログラム内で変数を使います。
簡単でいいですので(使わないと変数更新しませんので)
最後はInputs/Outputsを割り付けます。
(割り付けないと、ProcessIOも更新しないので)
Linked to..ボタンで割り付けます。
先追加した変数を選び、OKします。
結果
ではInputsのStateをクリックします。
いまは0x0000なので、通信がOKです。
Codesys側にも確認したところ、通信確立されています。
Wiresharkからみますと、CIP I/OのPacketがあるにもわかります。
ですが、Dataは単なるHex値だけでなにもわかりません。
一回Adapterを止めて、Wireshark起動してからまたAdapterを起動します。
そうするとDataはちゃんと人間わかるデータにEncodeされますね。
注意
私はUSBのNetwork AdapterとRaspberry Pi4使ってるので、多分このせいで高速でIO Data更新するとTimeoutになります。
そこでテストするときは更新Cycleを少し遅くしてください。
あと、Freerun cycle(ms)も調整してください。
最後
はーい、お疲れ様です。
もしなにか質問あれば、メール・コメント・Twitterなどでもどうぞ!
Twitterのご相談:@3threes2
メールのご相談:soup01threes*gmail.com (*を@に)