EIPのアプリケーションタイプは4種類あり、それはListen Only、 Input Only、 Exclusive Owner とRedundant Ownerになります。最大接続数はデバイスにより代わり、デバイスはその数を判断しStatusをScannerにReturnします。
この記事ではListen Only、 Input Only、 Exclusive Ownerを紹介します。
Reference Link
http://soup01.com/ja/category/protocol/ethernet-ip/
Electronic Keying
Electronic Keying はScannerがこれから接続しにいくのAdapterが本物かどうかをCheckでるInstance Attributesです。Ethernet/IPは基本はInstance 該当するIPのAdapterのConnection Pathと合えば勝手に繋がりますので、メーカのInformationも含めておくと接続先を判断できます。Electrionic Keyingには以下の情報が含まれています。
- Vendor ID
- Device Type
- Product Code
- Revision
これらのものを含めてデバイスのElectronic Keyになります。
もしCompatlibilityがTrueになると、CIP Connection Manager>Command Specific Data>Connection Path 0x34が一致するかどうかも確認されます。
Setting in Codesys
CodesysでEthernet/IP Scannerを立ち上げるとき、IPだけではなくElectronic Keyingも確認することができるってしっていますか。
以下はCodesysのElectronic Keyingです。
CompatlibilityのCheckboxを入れるかどうかにより接続エラーになります。
Vendo ID・Device TypeなどはEDS File内で記載されるものなので、変更はできません。
IF un-match..
では実際そのElectronic Keyingが合わないときどうなるかみてみましょう。
ConnectionsのTabを開き、Input Onlyを追加します。Edit Connectionをクリックしますと、Connection Pathという呪文のような文字列が出てきます。
その呪文をCOPYします。
次はGeneric EtherNet/IP Connectionを追加します。
User-defined pathを選択し>Connection Pathに先Copyした呪文を貼り付けます。
データ交換サイズなども正しく設定しOKします。
ProjectをダウンロードしWiresharkを開きます。CIP CM(CIP Connection Manager)のPacketでScannerが(192.168.1.44)Forward Openのリクエストを送りましたが、それに対してAdapter(192.168.1.50)がFailureの返事を返してきます。
Packetsの中身をみると、CIP>StatusでVendor ID or product code mismatchのエラーメッセージが表示されますね。
Listen Only
Listner Only Connectioは以下のような機能を提供します。
T—>OはApplication Dataを送信します。Application DataはScannerのInputだと思ってください。
O–>TはHeartBeatのみ送信します。そのHeartBeatのInstance IDはInput Onlyと異なります。
もしConnectionがListen onlyだと設定されたら、Listen only以外のConnectionをAdapterと接続してからデータ交換が始まります。例えば以下のようにScanner2、Scanner3はListen onlyではない。もしScanner2/3がAdapter1とConnection接続されてないなら、Scanner1がForward Openのリクエストを送ってもAdapter1にConnection拒否されます。
Adapterに拒否されたらNon-Listen Only Connection Not Opened、 General Status = 0x01, Extended Status = 0x0119のStatus値が返答します。
Connection Path
Codesysからみますと、Listen onlyのConnection pathは
20 04 2C C7 2C 65です。
Connection failure
先にも書いていますが、こちらのPacketはListen onlyで他のScannerからのConnectionなしの状態です。Non-Listen Only Connection Not Opened、 General Status = 0x01, Extended Status = 0x0119のStatus値が返答します。
Connection OK
そしてもう1つのScannerが接続されたら、General Status=0x00(成功)、 Additional Status sizeはなしです。
Input Only
Input Only connectionは以下のような機能を提供します。
T—>OはApplication Dataを送信します。Application DataはScannerのInputだと思ってください。
O–>TはHeartBeatのみ送信します。そのHeartBeatのInstance IDはListen Onlyと異なります。
Connection Path
では実際Codesys Ethernet/IP AdapterのInput only Connection pathはこれです。
20 04 2C C6 2C 65です。
実際Input onlyのCIP CM Packet見ますと、このConnection pathをAdapterに送っています。つまりAdapterに私がInput onlyのConnectionを確立したい、ということです。
Exclusive Owner
Exclusive Ownerは以下のような機能を提供します。
T—>OはApplication Dataを送信します。Application DataはScannerのInputだと思ってください。
O–>TはApplication Dataを送信します。Application DataはScannerのOutputだと思ってください。
注意するのは1つのAdapterに対して最大1のExclusive Ownerのみが接続可能です、よく考えたら当たり前ですね。
Connection Path
同じくCodesysのEDS FileからExclusive OwnerのConnection pathがこちらです。
Wiresharkからみますと、同じPathがAdapterに送信しています。
Connection Path
Connection Path パラメタでは複数のPathの組み合わせによりAdapterに必要なServicesをリクエストします。Pathはメーカーによって違いますが、大体は似てるPatternです。
Format
もしEDS Fileを使用する場合、その部分きにする必要がありません。ですが、RobotがScannerでAdapterと接続する場合、Robot ControllerはEDS Importできないとか、もしくはRobotがAdapterでMain Controllerと接続したりするときはInstance 番号などの情報だけになることが多いです。
Configuration Path
20 04 24 xx 30 03
Consuming I/O Path
20 04 24 yy 30 03
Producing I/O Path
20 04 24 zz 30 03
なので、Full-pathは20 04 24 xx 30 03 24 yy 30 03 24 zz 30 03になります。
でも略になると、20 04 24 xx 24 yy 24 zz も可能です。
Robot Controllerから他のAdapterと接続するとき、きになるのはそのXX,YYとZZだけです。
あともちろんIO Data Sizeですね。
Connection size
先ほどのPacktesをみたとき、Connection Sizeが見つかりませんでしたか?これは、Connection sizeは16BitのWords式でConection Pathのデータサイズを示しています。
例えば以下の例だとConnection Path size=3であればConnection Pathは3 Wordです。
Example1-Without Electronic Keying Check
実際そのConnection PathのSizeはExclusive OwnerやInput onlyなど各Adapterにも違うことがよくあります。例えば、こちらのExampleではElectronic KeyingのChecknなしの接続を設定します。
Size見ますと、3Wordsです。
20 04 2c c6 2c 65なので6Byteつまり3Wordsです。
Example2-With Electronic Keying Check
次はElectronic KeyingをCheckする接続を設定します。
今度はConnection Sizeは8Wordsになりました。
オレンジ枠はElectronic Keyingの部分で、緑枠はIO Connectionの部分になります。
もう少し詳しく見ますと、0x34はElectronic KeyのSegmentです。Key Format 0x04はVendor IDやDevice Typeの標準Formatに準じることです。
なので、
Electronic Key Segment(1Byte)
Keyformat(1 Byte)
VendorID(2 Bytes)
DeviceType(2 Bytes)
Product Code(2Bytes)
Compatibility(2Bytes)
I/O Path Input only(6Bytes)
Total=8wordsです。