今回の記事では、Safety Controllerとして OMRON NX102-9000 + NX-SL5500 を使用し、CIP Safety Targetとして NXR-SXD1204-CST をEtherNet/IPネットワーク上に接続し、UNSEND関数を使用し、NXR-SXD1204-CSTにコマンドを送信します。
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/
CIPUCMMSend
CIPUCMMSend 命令は、CIP ネットワーク上の指定されたデバイスに UCMM CIP メッセージを送信します。

VAR_INPUT
パラメータ | 説明 |
|---|---|
RoutePath | 送信先までの通信経路 |
TimeOut | 応答待ちのタイムアウト時間 |
ServiceCode | 実行するCIPサービスのコード |
RqPath | Class、Instance、Attributeなどの要求先 |
ServiceDat | 実際に送信するコマンドデータ |
Size | 送信するデータ要素数 |
VAR_IN_OUT
パラメータ | 説明 |
|---|---|
RespServiceDat | 相手機器から返されるレスポンスデータ |
VAR_OUTPUT
パラメータ | 説明 |
|---|---|
RespSize | 受信したレスポンスデータのサイズ |
_sREQUEST_PATH
項目 | 意味 | 説明 | データ型 |
|---|---|---|---|
ClassID | クラスID | 対象CIP ObjectのClass ID | UINT |
InstanceID | インスタンスID | 対象Object内のInstance ID | UINT |
isAttributeID | Attribute ID使用有無 | TRUE:Attribute IDを使用する / FALSE:Attribute IDを使用しない | BOOL |
AttributeID | Attribute ID | 対象AttributeのID | UINT |
Safety Supervisor Object(Class Code: 39 hex)
Safety Supervisor Objectは、CIP Safety対応デバイスの中核となるオブジェクトです。デバイスの状態管理や設定、リセット、モード変更など、安全機器全体を監督する役割を持っています。
CIP Safetyでは、Safety Supervisorの実装を大きく次の2種類に分類しています。
実装 | 対応範囲 |
|---|---|
Baseline Supervisor | Required指定のAttributeとService |
SNCT Supervisor | Baseline機能+SNCT対応時に必要なConditional機能 |
Baseline Supervisor
Baseline Supervisorは、Safety Supervisor Objectで「必須(Required)」と定義されているすべてのAttributeとServiceを実装した、基本仕様のSupervisorです。Safety Supervisorのステートマシンに必要な基本動作を備えています。ただし、必須ではないServiceに関連する状態イベント処理については、実装対象に含まれません。つまり、CIP Safetyデバイスとして成立するための、最小限かつ標準的なSupervisor実装です。
SNCT Supervisor
SNCT Supervisorは、Baseline Supervisorの機能をすべて備えたうえで、さらに「SNCT対応時に必須(Conditional)」とされるAttributeとServiceを実装した拡張Supervisorです。SNCTは、CIP SafetyデバイスのSafety Network Number(SNN)など、安全ネットワーク設定を行うための構成ツールに関係します。したがって、両者の関係は次のように整理できます。
デバイス全体の状態管理
Safety Supervisor Objectは、主に次の情報と動作を一元管理します。
- Application Objectの状態定義
- 各Objectの状態に関連するStatus情報
- AlarmやWarningなどのException Status
- Safety Deviceに属するObjectが従うべき共通のBehavior Model
例えば、Safety Supervisor ObjectのInstanceに対してResetが要求された場合、Safety Supervisor自身だけがResetされるわけではありません。そのSupervisorに関連付けられた、すべてのApplication ObjectにもReset処理が適用されます。
この仕組みにより、Safety Supervisorだけが初期状態へ戻り、Safety I/OなどのApplication Objectが古い状態のまま残る、といった不整合を防ぎます。要するに、Safety Supervisorの状態がSafety Device全体の状態を決定するということです。各ObjectはSafety Supervisorに従属し、Reset、状態遷移、異常処理などをデバイス全体で一貫して実行します。
All Safety Devices shall contain, at a minimum, a basic level of safety functionality. Safety devices are built off of this baseline. As shown in Figure 6-3.1, the baseline safety functionality is defined as one which contains a “baseline” Safety Supervisor (refer to Section 5-4) for high-integrity device control and one or more Safety Validator instances for highintegrity safety I/O connections. It is optional for safety profiles to support the SNCT implementation of the Safety Supervisor, but is highly recommended since the profile then includes a common, TUV-certified configuration solution. All safety profile definitions shall specify which level (i.e. Baseline or SNCT) of Safety Supervisor is required.
求められる基本的な安全機能
すべてのSafety Device(安全デバイス)は、最低限、基本となる安全機能を備えている必要があります。CIP Safety対応デバイスは、この基本機能を土台として、必要な安全機能を追加して構成されます。
- デバイスを高い安全完全性で制御するための、基本構成の Safety Supervisor
- 高い安全完全性を持つSafety I/O通信を処理するための、1つ以上の Safety Validatorインスタンス
Safety Supervisorは、安全デバイス全体の状態や設定を管理する重要な役割を持ちます。一方、Safety ValidatorはSafety I/O Connectionを通じてやり取りされる安全データを検証し、通信の完全性を確保する役割を担います。
つまり、CIP Safetyデバイスの最低構成を概念的に表すと、
Safety Device
|
|---|
になります。
モード変更:executing
この機能は、I/O Connectionとは独立して「Executing(実行中)」状態をサポートする必要があるLogic Deviceで必須となります。また、Safety Deviceでモード変更を実行する際には、パスワードが必要です。
こちらはWiresharkから取ったPacket Capatureです。


Event | IDLE時の動作 | EXECUTING時の動作 | コメント |
|---|---|---|---|
安全接続に失敗しました/接続が切断されました | IDLEのまま | Standard I/O または Safety I/O Connection が1つでもOpenのままであれば、EXECUTINGを維持する。それ以外の場合はIDLEへ遷移する | このプロファイルでは、Standard I/O または Safety I/O Connection が少なくとも1つ確立されていない限り、デバイスはIDLE状態となる |
標準または安全I/O接続が確立されました | EXECUTINGへ遷移する | EXECUTINGを維持する | |
タイプ1 セーフティオープン | デバイスを設定し、EXECUTINGへ遷移する | Standard I/OおよびSafety I/O Connectionを切断し、デバイスを設定した後、EXECUTINGへ戻る | |
安全I/O接続が削除されました | サポートしない | サポートしない | Connectionの削除はサポートされない |
モード変更 | エラー応答:“Service Not Supported” | エラー応答:“Service Not Supported” | このプロファイルではMode Changeは定義されていない |
Lock/Unlock
SNCTインターフェースに対応するCIP安全装置に必須で、Safety Device のコンフィグレーションをロックまたはアンロックする操作は、無条件に実行できるものではなく、パスワードを伴うサービスとして定義されています。こちらはWiresharkから取ったPacket Capatureです。


Implementation
ここから実装していきます。基本はNXR-SXD1204-CSTそのままで、プログラムだけを追加する形になります。
Sysmac Studio
Sysmac Studio側を構築します。
Program1 UNSEND Message
次はUSEND関数を使用し、NXR-SXD1204-CSTにLock/Unlock/Idle/Executingコマンドを送信するプログラムを作成します。
VAR
こちらはプログラムの変数になります。

Program
こちらはメインプログラムです。
// ============================================================
|
|---|
ダウンロード
最後はプログラムをCPUにDownloadしましょう。
結果
こちらの動画から動作確認できます。