今回の記事では、Safety Controllerとして OMRON NX102-9000 + NX-SL5500 を使用し、CIP Safety Targetとして NXR-SXD1204-CST をEtherNet/IPネットワーク上に接続します。
NXR-SXD1204-CST側には、非常停止スイッチとSafety Output機器を接続し、Safety Inputの状態をCIP Safety経由でNX-SL5500へ送信しますが、NXR-SXD1204-CSTの特徴であるUser definedアプリケーションを活用し、プログラムレスで安全制御を行います。
さ、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/
Safety Application
NXR-SのSafety Applicationは大きく4種類あります。違いは、「LogicをNXR-S側で持つか」「誰がApplicationを管理するか」です。大体4種類に分けています。
種類 | そもそも何か | 主な使い方 |
|---|---|---|
Remote I/O Mode Application | NXR-S内部Logicを使わず、I/O設定だけを持つApplication | Safety Controller側でSafety Logicを実行したい場合 |
Fixed Application | NXR-Sに最初から内蔵されているSafety Logic | 用意されたLogicが用途にそのまま合う場合 |
User-defined Application | Sysmac Studioで独自に作成し、Safety ControllerからType1 Safety OpenでNXR-Sへ送るApplication | 複数のNXR-SをSafety Controller側で集中管理したい場合 |
Add-on Application | Sysmac Studioで独自に作成し、Application FileとしてWeb UIからNXR-Sへ保存するApplication | NXR-S側にLogicを保存して分散管理したい場合 |
Remote I/O Mode Application
これは一番普通の「Safety Remote I/Oとして使うモード」と考えると分かりやすいです。NXR-S自身ではSafety Logicを実行せず、I/O Configurationだけを持ちます。Safety InputをSafety Controllerへ送り、Safety Controller側のSafety Programで判断してSafety Outputを制御します。また、NXR-S本体のSETTING SW1 / SW2は両方とも0に設定します。

Fixed Application
これはOMRONがあらかじめNXR-S本体に用意しているSafety Logicです。ユーザーがLogicを作る必要はありません。その代わり、Logicの仕様はカスタマイズできません。
Applicationには、Safety LogicとI/O Configurationが含まれており、NXR-S内部でSafety制御を実行します。そのため、Safety Controller側でSafety Logicを組む必要はなく、必要に応じてSafety ControllerからNXR-Sの入出力状態をMonitorすることもできます。
Fixed Application自体はNXR-S内部に保持されているため、使用するApplicationを本体のSETTING SW1 / SW2で選択します。SW1とSW2は両方とも、使用するFixed Applicationの番号1~3に設定します。

Add-on Application
Add-onも、User-definedと同じく自分でLogicを作る方式です。違うのは、そのLogicをSafety Controllerから毎回Configurationするのではなく、Safety ProgramはSafety Controller内に保持される一方、Add-on ApplicationはSysmac Studioで作成し、Web UIを使ってNXR-SへDownloadします。
Sysmac StudioでLogic+I/O Configurationを作成し、Application FileをExport。そのFileをWeb UIからNXR-SへDownloadします。
Safety ControllerはNXR-Sに対して Type 2a Safety Open でConnectionを確立します。NXR-S側のSafety ApplicationにはLogic設定とI/O Configurationが含まれており、必要に応じてSafety Controller側のSafety Programと組み合わせた制御も可能です。
使用するApplicationは、本体の SETTING SW1 / SW2 を、登録したAdd-on Application番号に対応する 9~D に設定して選択します。

User-defined Application
User-defined Applicationは、ユーザーがSysmac Studioで独自に作成するSafety Applicationです。このApplicationには、NXR-SのI/O構成設定とLogic設定を含めることができ、NXR-S内部でSafety Inputを評価してSafety Outputを制御します。
そして、作成したUser-defined Applicationは、Safety ControllerからNXR-Sへ CIP SafetyのType1 Safety Open を使ってConfigurationされます。マニュアルでも、User-defined Applicationは「Type1 Safety OpenでのConfigurationを使用してDownloadする、Logicを持つSafety Application」と定義されています。

安全応答性能
Safety Response Performance(安全応答性能)とは、Safety Chain上で異常や故障が発生した場合に、危険側への出力を遮断するまでに必要となる最大時間です。
Safety Systemを設計する際は、この応答時間をもとにSafety Distanceを算出します。そのため、Safety Inputの検出から最終的に機械や駆動部が停止するまでの最悪時間が、要求されるSafety Specificationを満たしている必要があります。
ここでいうSafety Chainとは、
Safety Input Device
→ Safety I/O Terminal
→ Safety Controller
→ Safety Output
のように、Safety Functionを実現するために連続して構成される一連の経路を指します。
Safety Response Timeの計算(CIP Safety使用の場合)
CIP Safetyを使用してSafety Controllerで制御する場合、Safety Chain全体の応答時間は、各機器・通信区間の最大応答時間を合計して求めます。
概念的には次の式です。
TSafety=Ta+Tb+Tc1+Td+Tc2+Te+Tf
項目 | 内容 |
|---|---|
Ta | Light CurtainやE-STOPなど、Safety Device自身のON→OFF応答時間 |
Tb | NXR-SがSafety Inputを検出・処理するまでの時間 |
Tc | CIP Safety Connection上でSafety Dataを伝送する時間 |
Td | Safety ControllerがSafety Programを演算する時間 |
Te | NXR-SがSafety OutputをOFFするまでの時間 |
Tf | Safety Relay、Contactorなど外部機器が実際にOFFするまでの時間 |
NXR-S自身の応答時間については、設定によって値が変わります。Tbは、Input Channel Modeと要求Safety Levelによって以下のようになります。さらに、Safety Inputに ON→OFF Delay を設定している場合は、そのDelay Timeも加算します。
条件 | 基本応答時間 |
|---|---|
Dual Channel | 10 ms |
Single Channel、危険側故障を考慮しない場合 | 10 ms |
Single Channel、危険側故障を考慮する場合 | 260 ms |
一方、Safety Output側 (e) の基本応答時間は 5 ms です。こちらもOutput側にON→OFF Delayを設定している場合、その時間を加算します。また、NXR-S内部Logicを使用する構成では、Logic Execution Timeもこの応答時間に含めて考える必要があります。
Safety Response Timeの計算(CIP Safety使用しないの場合)
NXR-S内部のSafety Applicationだけで制御する場合、Safety InputからSafety Outputまでの処理がNXR-S内部で完結します。
そのため、CIP Safetyを使用する構成で必要だった、
- Tc
- Td
はSafety Chainから除外できます。
NXR-S単体構成では、概念的には次のようになります。
TSafety=(a)+(b)+(e)+(f)
つまり、Safety Sensor → NXR-S Input → NXR-S Output → Actuatorの各応答時間を合計してSafety Response Timeを求めます。
また、NXR-Sを2台I/O接続Cableで接続する場合は、1台増えるごとにInput Response Time (b) と Output Response Time (e) の合計を加算します。例えば2台構成なら、
TSafety=(a)+(b)+(e)+(b)+(e)+(f)
項目 | 内容 |
|---|---|
Ta | Light CurtainやE-STOPなど、Safety Device自身のON→OFF応答時間 |
Tb | NXR-SがSafety Inputを検出・処理するまでの時間 |
Tc | CIP Safety Connection上でSafety Dataを伝送する時間 |
Td | Safety ControllerがSafety Programを演算する時間 |
Te | NXR-SがSafety OutputをOFFするまでの時間 |
Tf | Safety Relay、Contactorなど外部機器が実際にOFFするまでの時間 |
Implementation
オムロン側
最初にオムロン側から設定します。

I/O Assembly設定
I/O Assembly設定をRemote Output1+Safety Remote Output1+Stand Outputを使用します。

Done!

IO 設定
今回は15:User Applicationを使用するので、Open TypeをType1に設定してください。

NXRのプロパティにはInput/Output/LogicのTabが表示されます。

入力
今回の記事ではSi00とSi04にDualチャンネルの非常停止を追加します。

出力
今回の記事ではSo00をDual Output without Test Pulseに設定します。

アプリケーション設定
今度はApplication Tabを開き、ApplicationのDrop-listから15:User definedを指定します。

ロジック作成
次はLogic Tabを開きます。

ロジック追加
赤枠の+ボタンで新しいロジックを追加します。

Done!新しいロジックが追加されました。

Input Drop-listから該当するロジックを判断する入力を指定します。

下図ではロジックをSi00を使用することになりました。

次はDevice欄をクリックします。

こちらはロジックの詳細を設定できます。

Reset TypeをAutoに設定し、自動リセットするようにします。

Input TypeではORもしくはANDを選択できます。

今回の記事ではANDを設定します。

ANDもしくはORを設定した場合、2個目の新語をInput Signalから選択できます。

今回はSi04を選択します。

これでOkです。

Done!

安全プログラム
今回の記事ではUser-definedを使用するので、安全プログラムは一切作成しません。

ダウンロード
最後はプロジェクトをCPUにダウンロードしてください。
NXR-SXD1204-CST側
次はNXR-SXD1204-CST本体をセットアップします。

TUNID ID をクリアする
NXR-SにTUNIDを設定できるのは、Targetが「Waiting for TUNID」状態にある場合です。すでにTUNIDが登録されている場合は上書きできないため、Memory All Clearで既存TUNIDを削除したうえで再設定します。また、TargetとのEtherNet/IP通信が確立できない場合もTUNID設定は実行できません。
WEB UIにアクセスし、Execute Command→Memory All Clearします。

そしてクリアしたい項目のCheckを外してください。

次はSafetyパスワードを入力し、コマンドを実行します。

TUNID ID を設定する
次はTUNID IDを設定するためにUnit Settings→TUNID Settingsをクリックします。

こちらはTUNIDの読み書き画面です。

Readボタンをクリックし現在NXR-SXD1204-CSTのTUNIDを読み出します。

Done!

次は設定したいTUNIDを入力し、Writeボタンで新しいTUNIDを書き込みます。

ロータリースイッチ設定
NXR-Sで使用するSafety Applicationは、本体のSETTINGロータリースイッチ SW1 / SW2で選択します。SW1とSW2は同じ値に設定し、指定した番号に応じて使用するApplicationが決まります。今回はUser definedを使用しますのでロータリースイッチSW1/SW2をFに設定しましょう。
SETTING SW1 / SW2 | 使用するSafety Application |
|---|---|
0 | Remote I/O Mode Application |
1~3 | Fixed Application |
9~D | Add-on Application |
F | User-defined Application |
結果
WiresharkからCIP Safety IO Messageを確認できました。

こちらの動画から動作確認できます。