Ethernet/IPについての第9話です。今回もCIP Safetyについて話します。
よくある誤会ですが、CIP Safetyのみならず、ProfisafeやFSoEなどの安全通信では通信エラーの発生を防止するものではありません。そのかわりに、エラーを検出し、デバイスが適切なアクションを取れるようにすることで、伝送の完全性を確保する仕組みがたくさん盛り込まれていて、データのエラーが検出されたとき、適切なアクションを取ることができます。
Communication Errors/Measurement
下図ではCIP Safetyの中の様々な通信エラーを検出するために採用する手段になります。
見方としては、こちらは通信するデータで発生する可能性があるエラーの項目で、例えばメッセージの重複・損失・遅延・シーケンス乱れなどになります。
こちらはCIP Safety内で使用する検出方法になります。例えば、TimeStamepの使用・CRC・2重チェックなどがあります。
たとえば1つ目のMessage重複エラーであれば、TimeStampとCRCの使用によって検出することが可能です。
Message Repetition
ネットワーク上でメッセージが重複することはあり得ます。安全プロトコルはデータの上書きを許可しているため、これ自体はエラーとはならないんですが、 重複されたメッセージはタイムスタンプが更新されないんです。
それはProducerのみがTimestampを更新することが許され、新しいデータの代わりに受信された繰り返しメッセージは、Consumer側の期待時間間隔を満たしていない場合、接続の終になる可能性があります。
Message Loss
Time Expectationはメッセージの損失を検出することができ、安全プロトコルでは、決められた時間内にメッセージを送信しなければなりません。これらの予想時間より遅れて受信されたメッセージはエラーとして扱われ、結果として接続は終了することになります。
Message Insertion
Message Insertionは2つの方法で検知されます:
- Time Expectation
メッセージは、受信したメッセージのタイムスタンプまたはタイムスタンプに予期以外の値を持つことにより、Connectionが切断されます。 - ID For Send and Receive
Message Insertは、送信者と受信者の識別によって検出されることも可能です。
独自の識別子は、タイムスタンプ部、時間調整部、データ部の両方のCRCでエンコードされます。CRC-Sxが正しくない場合、データが壊れているか、メッセージが間違ったデバイスに送信されたかのどちらかを判断できます。
Incorrect Sequence
incorrect sequenceはtime expectationにより検出できます。メッセージのシーケンスが正しくない場合、受信したメッセージのタイムスタンプに予期と異なる値が含まれているため、接続が切断されることになります。
Message Corruption
メッセージの破損を検出するために、以下の方法を使用しました。
- Cyclic Redundancy Check:
- 各安全メッセージには、CRC冗長符号化されていて、メッセージの破損は、データと CRC-が計算されます。CRC比較するときエラーが発生する場合、接続が切断されることになります。
- Redundancy with cross checking:
- すべてのSafety Dataは、同じメッセージ・パケットで2回送信され、受信した安全性データは、Consumerに届いた時点でクロスチェックされます。
Message Delay
Time Expectation はmessage delayを検知することができます。必要な時間間隔の間に期待されるメッセージがConsumerで受信されない場合、Connectionが切断されます。
Coupling of Safety and Safety Information
こちらのエラーではTimeStamp・Data Section、時間補正メッセージで安全CRC計算にPIDと呼ばれる一意の識別子によって検出できます。
PID=Production IDentifier は、生成された各Safety Packetにエンコードされ、受信したメッセージが正しいConsumerに届くことを確認します。なので、
- 誤ったPIDのメッセージを受信したデバイス
- 正しいPIDを持つメッセージを予定された時間内に受信しなかったデバイス
デバイスは安全な状態に移行します。
Coupling of Safety and Standard Information
下記の5種類の手法で安全フォーマットを使用していない標準メッセージを検出できます。
注意するにはSafety Consumerは、標準メッセージを不正なメッセージとして検出する必要があります。
- クロスチェックによる冗長性
Safety Consumerが誤って受信した標準メッセージは、同じパケット内の冗長データの要件を満たさないため、CRC Checkを行うとエラーが発生します。 - 安全機器と標準機器に異なるデータ完全性
Safety Messageには、TimeStampと一意のセーフティ CRC-を含む固有のMessage Coding があります。なので、標準デバイス接続では、このフォーマットで情報をエンコードしたり、Safety Messageの正しいCRCコードを生成したりすることはできません。 - CRC
標準メッセージには安全 CRC ( 安全 CRC アルゴリズムによって生成される ) が含まれず、正しい安全フォーマットを使用してメッセージを生成しないため、標準メッセージはエラー状態として検出される。 - Time Stamp
標準メッセージには正しいタイムスタンプが含まれていない。 - Package Format
標準メッセージは正しいPacket Formatを含んでいない。
Increased Age of Data in Bridges
Time Stempは、データが最新かを検出するために使用されます。もし期待されたメッセージが必要な時間間隔までにConsumerで受信できなければ、接続は終了になります。
Addressing errors
最後はAddressing Errorsですね。
Producerが間違ったアドレス生成した場合は、
- メッセージが何らかの理由で無効なアドレスに誤送信されたこと。この状態は以下によって検出される。
- Message Loss
- メッセージが他の安全機器に誤送信されたこと。この状態は以下によって検出される。
- Message Insertion
- Message Repetition
- TimeStamp
- Message Delay
- Coupling of Safety and Safety Information
Consumerが間違ったアドレスを受信した場合は、
- 安全デバイスが、他の非安全デバイス向けのメッセージをConsumeした。この状態は以下によって検出される。
- Coupling of Safety and Standard Information
- 安全デバイスが他の安全デバイス向けのメッセージをConsumeする。この状態は以下によって検出される。
- Message Insertion
- Message Repetition
- Time Stamp
- Coupling of Safety and Safety Information