今回の記事では、Safety Controllerとして OMRON NX102-9000 + NX-SL5500 を使用し、CIP Safety Targetとして NXR-SXD1204-CST をEtherNet/IPネットワーク上に接続し、Type2b接続・Add-ON。
FAを楽しもう!

Reference Link
http://soup01.com/ja/category/omron%e3%82%aa%e3%83%a0%e3%83%ad%e3%83%b3/nxr-sxd/
http://soup01.com/ja/category/protocol/ethernet-ip/cip-safety/
Type 2 Safety Opens
Type 2のセーフティオープンには、SCIDを伴うものと伴わないものの2種類があります。
SRS2 タイプ2a:ターゲットが、タイプ2のセーフティオープン(構成データなし)と、
ゼロ以外のセーフティ構成ID(SCID = SCCRC+SCTS)を伴う信号を受信した場合、ターゲットはこれを構成のSCIDと比較し、両者が一致する場合にのみ接続を受け入れるものとします。
タイプ2b:ターゲットが、タイプ2のSafetyOpen(構成データなし)と、
値がゼロのSCIDを受信した場合、チェックをスキップする。

接続タイプの判断
では接続される側は現在Type1なのか?Type2aなのか?Type2bなのかどう判断するだろうか。このような流れになります。
- Safety Forward OpenのリクエストにConfigurationデータあれば:Type1
-
Safety Forward OpenのリクエストにConfigurationデータないなら:Type2
- さらにSCIDあるなら:Type2a
- ないなら:Type2b
ここで一旦Type2aとType2bのPackagesを分けてみましょう。
これはType2a接続のパケットです。CRCとUNIDはPackagesの中に格納されていますね。

これはType2b接続のパケットです。中にあるSCCRCはすべて0です。それで現在のSafety Forward OpenリクエストがType2bであることがわかります。なので、Packagesの中に明確に接続タイプを記載してるわけでありません。

接続反応時間タイプ | Producing側 | Consuming側 |
|---|---|---|
Safety Input | 入力モジュール | コントローラ |
Safety Output | コントローラ | 出力モジュール |
SafetyOpenの概要
項目 | Type 1データ付きSafetyOpen | Type 2aSCIDチェック付きSafetyOpen | Type 2bSCID |
|---|---|---|---|
TUNID | X | X | X |
OUNID | X | X | X |
UPID¹ | X | X | X |
CPCRC | X | X | X |
SCID | X | X | = 0 |
SafetyOpen内の構成データ | あり | なし | なし |
UNID?
それは安全機能の一つであり、UNIDは、接続確立プロセス中に発信元および/または宛先を一意に識別するために使用されます。
Safety Network Number(SNN)
Safety Network Number(SNN)は、安全システム内のすべてのネットワークにわたって、ネットワークを一意に識別します。ユーザーは、それぞれのSafety NetworkまたはSafety Subnetに対して、システム全体で一意となるSNNを割り当てる必要があります。
この番号は、ノードのCommissioning時に定義しなければなりません。
Safety Network Numberは、UNIDの一部を構成します。
この値は6 octetの値であり、CIPのDATE_AND_TIME形式を使用します。DATE値の10進数1~11,687、すなわち1972年1月1日から2003年12月31日までの過去の日付値は、SNNを手動設定する場合の値として予約されています。
SNNには、次の2種類があります。
- 手動設定(Manual Setting)
- ソフトウェアツールによる生成(Software Tool Generated)
SNNの種類は、DATE部分から判別できます。
OUNID
OUNID=Originator’s Unique Network Identifierであり、SafetyOpen内のOriginatorを特定します。

TUNID
TUNID=Target’s Unique Network IdentifierでSafetyOpen内のターゲットを特定します。

実際PackagesにはTUNIDが格納されています。

そのTUNIDはNXR-SXD1204-CSTモジュールのWEB Server上で確認できます。

またSysmac Studio上にも再設定などは可能です。

Instance 16#3C1
Safety Forward Openリクエストに接続するAssemblyが含まれており、例えばC→Pは0x3C1 Assembly を接続するように記載しています。


0x3C1 AssemblyはNXR-SXD1204-CSTの安全入力データになります。

Instance 16#360
各Safety Forward OpenリクエストにもConfiguraion Assembly 864が含まれています。

そのAssembly 864にはNXR-SXD1204-CSTの設定データが格納されています。

Recaton time
システムの応答時間は、安全に関連する事象がシステムへの入力として、あるいはシステム内の故障として発生してから、システムが安全状態に達するまでの最悪の場合の所要時間である。

制御チェーン全体のシステム応答時間を求めるには、安全チェーンを構成する各要素の応答時間を合計しなければなりません。
例えば、上図のシステム応答時間は、次のようになります。
システム応答時間
= センサーの応答時間
+ 入力の応答時間
+ ネットワークの応答時間
+ コントローラーの応答時間
+ ネットワークの応答時間
+ 出力の応答時間
+ アクチュエーターの応答時間
Network Time Expectation
Network Time Expectationは、System Reaction Timeの一部です。Network Time Expectationとは、安全データProducerがデータを取り込んだ時点から、Consumer側のApplicationが安全状態を認識するまでの最悪時の時間です。これには、データの生成時および消費時に発生するエラーも含まれます。
下図はSysmac Studio上でのNetwork Reaction Timeの表示です。

Network_Time_Expectation_Multiplie
Network_Time_Expectation_Multiplierは、安全データProducerがデータを取り込んだ時点から、Consumer側のApplicationが安全状態の通知を認識するまでに測定された最悪時の時間を表します。
タイムアウトエラーが検出されないことを保証するために必要なNetwork_Time_Expectation_Multiplierの値は、次のとおりです。
Network_Time_Expectation_Multiplier
|
|---|
Safety_Message_Time(max)
Safety_Message_Time(max)は、安全データProducerがデータを取り込んだ時点から、その安全データが使用のためにConsumer側のApplicationへ渡されるまでの実際の時間です。
Time_Coord_Message_Time(max)
Time_Coord_Message_Time(max)は、時刻調整情報がConsumerからProducerへ送信される際に要する可能性のある最大時間です。
Timeout_Multiplier
Timeout_Multiplierは、CIP Safetyプロトコルの処理に必要なパラメータです。この値は、コネクションエラーを宣言するまでに許容されるメッセージの損失数を決定します。
- Timeout_Multiplierが1の場合、メッセージの損失は許容されません
- Timeout_Multiplierが2の場合、1つのメッセージの損失が許容されます。
プロトコル内でのTimeout_Multiplierのチェックに加えて、反応時間のチェックも実行されます。
そしてTimeout_Multiplierの妥当なデフォルト値は2であり、また設定ソフトウェアでは、Timeout_Multiplierを1から4までの整数値に制限することが妥当です。
ExtendedFormatの場合、Network Time Expectationの値が5.8秒を超えない限り、Timeout_Multiplierを255まで増加させることができます。
下図はSysmac Studio上でTimeout_Multiplierの設定画面です。

Connection_Correction_Constant
Connection_Correction_Constantは、128 µs単位の値であり、タイムスタンプから減算されます。この値は、時間のドリフト、ProducerとConsumerのクロックが非同期であること、およびTime Coordination MessageがConsumerからProducerへ到達するための最小時間に起因する、最悪ケースの誤差を表します。

Implementation
ここからCIP Safetyネットワークを設定していきましょう。
Sysmac Studio側

Safety Application出力
前回記事で作成した安全ロジックをSysmac StudioからExportします。ExportするNXR-SXD1204-CSTを右クリック→Exporing a Safety Applicationをクリックします。

赤枠のところに必要な情報を入力し、Safety ApplicationをExportします。

別の安全ロジック作成
次は下図のように別の安全ロジックを作成します。
Sysmac StudioからExportすれば、現在は2つの安全アプリケーションが作成されました。

安全接続を作成
次はNXR-SXD1204-CSTを右クリック→Create new Connectionします。

今回はAdd On を使用しますので、Open Typeを2a もしくは2bに設定しましょう。今回の記事では2bを設定します。

アプリケーションタイプ変更
NXR-SXD1204-CST→I/O Configuration→ApplicationのDrop-listから09-13を設定します。

NXR-SXD1204-CST側

NXR-SXD1204-CST側を設定します。NXR-SXD1204-CSTのWeb Serverにアクセスし、Safety Application Settingsをクリックします。

安全アプリケーション設定
今回記事で使用するのは9番のAPPで、下記のSetボタンをクリックします。

こちらはSafety Applicationの設定画面です。

Select Fileをクリックします。

先程Sysmac StudioからExportした安全アプリケーションをImportします。

Safety Applicationパスワードは先程Sysmac Studioで、安全アプリケーションをExportするときを設定したパスワードになります。

最後はConfirmをクリックします。

アプリケーション名・CRCなどを確認し、Writeをクリックします。

Done!

それで9番が安全アプリケーションの登録完了です。

先程と同じ操作で10番をもう1つのSafety Application登録します。

Sysmac StudioからCRCのチェック
NXR-SXD1204-CST→I/O Configuration→Signature TabでSCCRCとSCTSの確認ができます。

結果
NXR-SXD1204-CST本題にある2つのロータリースイッチを9もしくはAを同じく設定し、再起動すれば、NXR-SXD1204-CSTが自動的に安全アプリケーションに切り替わります。
