CPUとProfinetネットワークでリアルタイム通信してるRemote-IOを一時無効する方法説明します。今回の構成はPLCとET200SP一台を通信する構成になっています。PLC.RemoteS1を無効するプログラムを作成します。
D_ACT_DP
IO Devicesを無効有効するにはこのD_ACT_DPの関数を利用します。
注意
- S7-1200はProfinet IOにしかできません。(Profibusは不可)
- S7-1500はFirmwareV1.8以上が使用できます。
Interface
- Input
- REQ:Bool
- True=実行します。
- Mode:USINT
- Mode=0、現在該当するIO Devicesの状態をCheckする
- Mode=1、現在該当するIO Devicesの状態を有効する
- Mode=2、現在該当するIO Devicesの状態を無効する
- LADDR:HW_DEVICE
- 操作したいIO Devicesのデバイス番号
確認する方法は下で説明します。
- 操作したいIO Devicesのデバイス番号
- REQ:Bool
- Output
- RET_VAL:INT
- 関数の実行結果
- BUSY:Bool
- 関数実行中かどうか
- RET_VAL:INT
LADDRの調べ方法
LADDR変数ルールはこうです:
IOController名_IODevice名~IODevicで決めます。なので、
今回の名前は、
PLC1_RemoteS1~IODeviceになります。
実装
まずMode変数を作成します。
常に1を入れ、もしDisableがONになったら2を入れます。
そしてD_ACT_DP関数呼びます。
REQがONになるとMODE値に基ついて実行します。
結果
Mode=2を実行します。
Onlineしてみますと、PLC1.RemoteS1のICONがわかり、いまは無効してる状態を表示しています。
なので、PLC1.RemoteS1についてるINPUT I0.0をプログラムにON/OFFすることができます。(無効してるのでIO更新するのは止まります。)
次はMode=1、もう一度実行します。
PLC1.RemoteS1の状態は緑になり、有効になってる状態です。
IO更新するので、I0.0はプログラム上でON/OFFすることはもうできません。
使え道
例えば、機械のOEMにとって客の要求によってデバイスを加減するのはよくあることです。その度に1つのプロジェクトを用意するには効率ではありません。そこで、HMI・OB100(Start-up)に一緒に組み合わせてプログラムだけでIO Devicesを使用かどうかを設定することができます。
あと、シミュレーターでDebugするとき、すべてのProfinet IO Devicesは”つながってる状態”になり、Ctrl+F2・Ctrl+F3をON/OFFすることができません。(一応IO Cycleが更新していますので)。この関数使ったら自由でINPUTをON/OFFすることができます。
はーい、お疲れ様です。