Ethernet/IP#少し話しよ_01

OVDA?

OVDAは1995年立ち上げされたCommunityでメンバーは世界中のFAメーカ(Omron、Rockwellなど)でありOPEN・双方向的な工業Protocolを開発・推奨しています。

OVDAはCIP(Common Industrial Protocol)の標準や派生されたEthernet/IP ・Device NET・Control NETなどのCore技術持っています。

Basic

Ethernet/IPはOSIモデルの元に設定されたもので、物理層は同じくRJ45のケーブルを使用し、Data Link層はMac アドレス、そしてLayer3はIP、Layer4はTCP/UDP。違うのはLayer5以上はCIP標準になっています。ですが、結局これはソフトウェアの話で、Dataをカプセル化し下の層に渡しておくのイメージになります。

UDP Default Port:44818

TCP Default Port:2222

以下の図だともう少しわかりやすくいただければと思います。Data Linkと物理層は同じなで、Layer3が使えることによって、IGMP・ルーティングなどの機能も実現できます。そしてLayer4がTCPやUDPも応用でき、つまりCIPだけではなく、IT・OPC・WEBのProtocolと共存できます。

さらに詳しく見ていきますと、General I/O・SensorなどのデバイスのDataがCIP Application Layerに載せられ、その使いみちによりExplicit MessageやIO Messagesに分けて、TCP・UDPどっちの接続で間とやり取りします。

CPF=Common Packet Formatです。

送受信方式

Ethernet/IP はCaseによってTCP/IP・UDP/IP通信に分けてています。

TCP/IP

  • Point to Pointのデータやり取り
  • デバイスのConfiguration設定
  • デバイスの診断
  • CIP Explicit Message
  • Server/Client

UDP/IP

  • IP-Producer/Consumer
  • Multicast
  • Timeoutで通信エラー検知
  • TimeStampで制御
  • IO Data通信用


Encapsulation

先から何回もEncapsulationの言葉が出て来ますが、そのEncapsulationはCIP Explicitのときに使われてたFormatだと思ってください。

まずEncapsulation Packageには標準のTCP/IP HeaderとEncapsulationデータから組み合わせています。

TCP/IP Header入ってるのは送信元・送信先のIPやMac、制御データが入って標準のFormatです。ここでは詳しく説明しません。

そしてEncapsulationには24BytesのHeaderとコマンドによって変わるの可変データと組み合わせています。

そしてEncapsulation HeaderにコマンドやStatusなどのCIPに決められたデータが入っています。コマンドの種類によって値が変わります。同じくEncapsulationにもコマンドの種類によって可変データがあると先にも書いていますね。

Encapsulation Header

次はEncapsulationのHeader部分について説明します。

Command

機能定義です。例えば、ListService(UDP/TCP,0x63)・RegisiterSession・UnRegisiterSession(TCP,0x65,0x66)。

Length

Dataの長さを定義します。(Byte単位)もしDataがない場合は0にします。

Session Handle

その部分はTargetから生成されOriginatorに返信するときに返す必要があります。(一部のコマンド、例えばNOPなどはいらないものもあります。)

Status

その部分はReceiverがコマンド実行できるかどうかを示します。もし実行成功なら0になります。

SenderContext

Sender側はそのFieldでCommandによって値を入れる必要があります。

Options

それもコマンドによって割り当てることができます。

Command Specific Data Field

Receiverに送信するData構造の塊です。コマンドによってデータの中身が変わりますが、一般的には固定な構造やCommon Packet formatによって構成されたデータを入れるか、ですね。

Encapsulation Data

今度はEncapsulationData部分について説明します。

おおまけに3つの部分にわかれ、Interface Handle・Timeout・Encapsulated Packetsです。

Interface Handle

リクエスト処理するCommunication interfaceを定義します。Encapsulating CIP Packetの場合は0にします。

Timeout

1-65535で単位は秒です。0にするとTimeout検知しません。

Encapsulated Packets(CPF)

CPF=Common Packet FormatでEncapsulation protocolの中に標準的なFormatをデータやり取りします。CPFで以下の要素含まれています。Item CountとそのItem Count分にある構造データです。

更に、各Itemにも決められたFormatがあります。

TypeID:EncapsulatedのItem IDです。

Length:Data領域の長さ

Data:そのデータ。(もしLength>0)

Explicit Message

EIPは2種類のMessageがあり、ExplicitとImplicitです。

Explicitはリクエストのアドレスとコマンドはちゃんとあり、最初にの通信確立用、P2P(Point to Point)などのためによく使われています。

Implicit Message

Implicit MessageはExplicitと違ってRequestなどは特になく、Connect IDで通信確立します。あとはEncapsulation HeaderなしでConsumerとProducerのコンセプトで通信します。IODataやP2PやMulticastなど様々な場合で使われています。

Client And Server Connection Endpoints

EIPを使うことによってClientやServerの言葉が耳に入りますが、ここで簡単に説明しますとClientはリクエストを送信し返信待ち、Serverはリクエストを待ちで、そしてそのリクエストによって返信するのイメージです。

Producer/Originator・Consumer/Target

次によく聞くのはProducer/Originator・Consumer/Targetの4つの言葉ですね。

簡単にいいますと、Producer/Originatorは生産者(Sender)そしてConsumer/Targetは消費者(Receiver)。Profinetにも似てる言葉ありますね。

Scanner/Adapter

いまの段階でScannerはMasterでAdapterはAdapterだと思ってください。

本来ならまだClassのわけなどの細かいの説明がありますが、私もここまで書いてちょっと疲れました…

最後に

はーい、お疲れ様です。

以下のLinkでCodesysやBeckhoffでEthernet/IP を立ち上げる方法書いていますので、興味ある方には実際やってみてくださいね。

http://soup01.com/ja/category/work_jp/protocol/ethernet-ip/

もしなにか質問あれば、メール・コメント・Twitterなどでもどうぞ!

Twitterのご相談:@3threes2

メールのご相談:soup01threes*gmail.com (*を@に)

Footer_Basic

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする