EtherNet/IP?
本来ならSiemens同士でProfinetでデータ通信するのは一般的ですが、Profinetでは他のProtocolと共用できます。Ethernet/IPはその一例です。Ethernet/IPはIEE802.3ベースのProtocolでIPV4のネットワーク技術を使用しTCPかUDPできます。そのProtocolはODVA協会で管理されています。
DevicesにScannerとAdapterも2つのデバイスあります。
Scanner:名前通り、ネットワーク内のデバイスをScanするものです。そのScannerがField Devicesのデータなどの情報を収集します。ProfinetだとController・Masterの意味です。
Adapter:ScannerにDataを提供するものです。AdapterはEtherNet/IP Protocol使用しScannerに送信します。ProfinetだとDevice・Slaveの役割です。
そして、Scanner とAdapterのCommunicationsを確立したあと、UDPを使用しEtherNet/IP のIOデータを送受信します。そこで、また2つの名称が出てきます。
Originator:デバイスでConnectionの初期化するものです。一般的にはScannerがやります。
Target:デバイスでそのConnectionをAccept側です。一般的にAdapterになります。
いま、SiemensではFunction Block -”LCCF_EnetAdapter ”を提供し、EtherNet/IPを使用で通信できるようになります。今回の例ではS7-1200をEtherNet/IP Adapterとして働きScannerとやりとります。制限がありますが(Signal I/O Connection)
例のExampleではシーメンス同士でEtherNet/IPやりますが、今回はTwinCAT+TF6281でScannerを立ち上げ、S7-1200がAdapterとして通信確立し、送受信します。
Topology Setup
Line Topology
こちらは一番簡単な接続方法で、Netowork debuggingには向いていません。
Star Topology
Star Topologyはネットワークスイッチを中間デバイスとして使用します。その方法はWireshakeなど使用するときPort MirroiringやPort spawning ネットワークに向いてます。
ライブラリ
1でDocumentsをDownloadします。
2でTIAバージョン合わせてDownloadできます。
3でEtherNET/IPの通信ライブラリDownloadできます。
4でS7-1200,S7-1500のEDS FileのDownloadします。
最低限はItem3,4をDownloadしましょう。
ライブラリを解凍します。
TIAを開き、右側にあるGlobal libraries>右クリック>Open libraryします。
Files of typおwCompressed librariesを選びます。
そしてLCCF_EnetAdapter.zal1xを選択し、Openします。
ライブラリに展開先を設定します。
それでライブラリがインストールされました。
説明
Input
enable | bool | 立ち上げ=通信Startたち下げ=通信Stop |
interface | HW_ANY | CPUのInterfaceを指定する |
endianness | bool | True=BigEndianFalse=Little Endian |
inputAssembly | Uint | T->O のAssembly ID Default=101 |
outputAssembly | Uint | O->T のAssembly IDDefault=102 |
configAssembly | Uint | O->TのAssembly IDDefault=104AdapterのConfigurationデータを送信する |
adapterName | String[32] | Adapter Nameの名前 |
adapterIPAddr | IP_V4 | そのAdapterのIP |
InOut
inputs | variant | ScannerのInput Area |
outputs | variant | ScannerのOutput Area |
configuration | variant |
Output
valid | bool | 1=通信してる |
busy | bool | 1=Block実行中 |
error | bool | 1=Errorあり |
status | word | Block現在の状態 |
actUpdIntervalOut | time | AdapterがScannerから受信したCycle Time |
actUpdIntervalIn | time | ScannerがAdapterへ送信したCycle Time |
diagnostics | LCCF_typeAdaptDiag | エラーの診断情報 |
TIA側
Function Block呼び出し
先のGlobal librariesからS7-1200のFolderを開き、LCCF_EnetAdapterを選びます。
そしてOB30の周期OBを追加します。Cyclic timeは100msに設定します。
そしてFunction BlockをOB30に追加します。
InstanceDBを追加します。
これでOKです。
Function Blockの下に小さいな矢印をクリックします。
そして隠しパラメタが表示するようになります。
DB追加
次はやりとり用のData Blockを追加します。
中身は64長さのByte配列を定義します。
デバイス振り分け
Inputs/outputs/configurationに先のDBに宣言した変数に割り付けます。
そしてEnableの信号割り付けます。
TwinCAT側実装
TwinCAT側はScanner役なので、S7-1200のEDS FileをImportする必要があります。
EtherNET/IPの立ち上げ方法を昔も書いてたので、以下で参考してください。
EDS
EDS Fileは先SiemensのWebからDownloadし、解答したらEDS Fileが出てきます。
そしてTwinCATにImportしてください。
Variables追加
何回も書いてたことありますが、TwinCATでは変数を割り付けないと更新しない・Connectしないです。
実装
このように構成してください。
Test
両方のProjectもダウンロードし、TwinCAT側でStateをみてみましょう。
0x0000なら通信問題なしです。
TIA Output
Siemens側に123の値を入れてみます。
そしてTwinCAT側にも123も入っています。
TwinCAT Output
逆にTwinCAT側1番目のByteに91の値入れます。
そのようにSiemens側にも反映されますね。
最後
はーい、お疲れ様です。
もしなにか質問あれば、メール・コメント・Twitterなどでもどうぞ!
Twitterのご相談:@3threes2
メールのご相談:soup01threes*gmail.com (*を@に)
Youtube Channel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ