4 フィールドバス通信
4.2 MODBUS の機能
4.2.5 内部変数
4.2.5.1 内部変数の説明
4.2.5.1.1 ウォッチドグ(フィールドバス障害の監視)
ウォッチドグは、フィールドバスマスタとカプラ間のデータ転送を監視します。
カプラのウォッチドグタイマは、カプラがある特定の要求(ウォッチドグ設定 レジスタで指定されるもの)をマスタから受信するたびにリセットされます。
障害のない通信の場合、ウォッチドグタイマは規定値に到達しません。そして データ転送の終了時にタイマはリセットされます。
ウォッチドグタイマがタイムアウトしたときは、フィールドバス障害が発生して います。その場合、フィールドバスカプラはそれ以後のすべてのMODBUS/TCP 要求に対して0x0004(スレーブ機器障害)の例外コードを返します。
カプラでは、マスタによるウォッチドグ設定のために特別なレジスタが使用さ れます(レジスタアドレス:0x1000〜0x1008)。
デフォルト状態においては、ウォッチドグはカプラの電源投入時点に有効とな りません。これを有効にするには、ウォッチドグタイマレジスタ(0x1000)の 所望タイムアウト値を最初に設定・確認します。次にマスクレジスタ
(0x1001)において機能コードマスクを指定します。これによってタイマをリ セットする機能コードが定義されます。最後にウォッチドグトリガレジスタ
(0x1003)をゼロ以外の値に変えてタイマを始動します。
最小トリガ時間のレジスタ(0x1004)を読み出せば、ウォッチドグによる障害 監視が有効かどうかがわかります。時間値が「0」の場合、フィールドバス障害 が考えられます。ウォッチドグタイマは、タイムアウトしていなければ、
ウォッチドグ再始動レジスタ(0x1007)に「0x1」の値を設定することによって 手動でリセットできます。
ウォッチドグの始動後にユーザがこれを停止するには、ウォッチドグ停止レジスタ
(0x1005)またはウォッチドグ簡易停止レジスタ(0x1008)を使用します。
4.2.5.1.2 ウォッチドグレジスタ
ウォッチドグレジスタのアドレスは、MODBUSの読み書き機能コードについて 説明したのと同様の方法で指定できます。参照番号のかわりに該当するレジス タアドレスを指定します。
レジスタアドレス 0x1000(MODBUSアドレス:404097)
名称 ウォッチドグタイマ値、WS_TIME アクセス種別 読み書き
デフォルト値 0x0000
説 明 ウォッチドグのタイムアウト値を符号なしの16ビット値で格納しま す。デフォルト値は「0」です。値を設定してもウォッチドグは始 動されません。ただし、ウォッチドグを始動可能にするにはゼロ以 外の値を設定する必要があります。タイムアウト値は100msの倍数 で指定します(例:0x0009→0.9秒)。なお、ウォッチドグの動作中 はこの値を変更することができません。
136 •
MODBUSの機能
レジスタアドレス 0x1001(MODBUSアドレス:404098)
名称 ウォッチドグの機能コードマスク、機能コード1〜16、
WDFCM_1_16 アクセス種別 読み書き デフォルト値 0x0000
説 明 このマスクにより、ウォッチドグ機能をリセットするよう特定の機能 コードを設定することができます。機能コードを指定するには、該当 ビット(2(機能コード−1)+....)に「1」を書き込みます。
ビット1001.0は機能コード1に、ビット1001.1は機能コード2に、……
対応します。
0xFFの値では、MODBUSの機能コード1〜16のすべてがウォッチド グをリセットできます。なお、ウォッチドグの動作中はこの値を変 更することができません。
レジスタアドレス 0x1002(MODBUSアドレス:404099)
名称 ウォッチドグの機能コードマスク、機能コード17〜32、
WD_FCM_17_32 アクセス種別 読み書き デフォルト値 0x0000
説 明 機能は上と同じですが、対象となる機能コードは17〜32となりま す。これらのコードは現在、サポートされていませんので、デフォ ルト値は変更しないでください。なお、ウォッチドグの動作中はこ の値を変更することができません。
レジスタアドレス 0x1003(MODBUSアドレス:404100)
名称 ウォッチドグトリガ、WD_TRIGGER アクセス種別 読み書き
デフォルト値 0x0000
説 明 ウォッチドグのトリガに使用されます。電源投入時のデフォルト値 は「0」です。ゼロ以外の値を書き込むとウォッチドグにトリガが掛 かります。このレジスタの内容を書き換えるたびにウォッチドグに トリガが掛かります。なお、ウォッチドグタイマのレジスタ値が
「0」のときはトリガを掛けることができません。
レジスタアドレス 0x1004(MODBUSアドレス:404101)
名称 トリガ最短残り時間、WD_AC_TRG_TIME アクセス種別 読み書き
デフォルト値 0xFFFF
説 明 ウォッチドグの最短残り時間を格納しています。デフォルト値は 0xFFFFです。ウォッチドグタイマにトリガが掛かると、このレジス タ値が残りのウォッチドグ時間と連続的に比較され、2値のうちの小 さい方がこのレジスタに格納されます。このレジスタの値が「0」に なると、ウォッチドグによる障害検出となります。
• 137
MODBUSの機能
レジスタアドレス 0x1005(MODBUSアドレス:404102)
名称 ウォッチドグの停止、WD_AC_STOP_MASK アクセス種別 読み書き
デフォルト値 0x0000
説 明 このレジスタに「0xAAAA」に続いて「0x5555」を設定すると ウォッチドグタイマが停止します。
レジスタアドレス 0x1006(MODBUSアドレス:404103)
名称 ウォッチドグの作動状況、WD_RUNNING アクセス種別 読み出し
デフォルト値 0x0000
説 明 ウォッチドグの現状
0x0000:ウォッチドグは未動作 0x0001:ウォッチドグは動作中 0x0002:ウォッチドグのタイムアウト
レジスタアドレス 0x1007(MODBUSアドレス:404104)
名称 ウォッチドグの再始動、WD_RESTART アクセス種別 読み書き
デフォルト値 0x0001
説 明 「0x1」の値を書き込むことでウォッチドグタイマが再始動します。
タイムアウトする前にウォッチドグが停止したときは、再始動され ません。
レジスタアドレス 0x1008(MODBUSアドレス:404105)
名称 ウォッチドグの簡易停止、WD_AC_STOP_SIMPLE アクセス種別 読み書き
デフォルト値 0x0000
説 明 「0xAA55」または「0x55AA」の値を書き込むことでウォッチドグ が停止します。ウォッチドグの障害監視が停止され、ウォッチドグ レジスタへの書き込みが可能になります。ウォッチドグによる障害 検出が生じている場合は、その状態がリセットされます。
レジスタアドレス 0x1009(MODBUSアドレス:404106)
名称 ウォッチドグタイムアウト後のMODBUSソケットのクローズ アクセス種別 読み書き
デフォルト値 0:MODBUSソケットはクローズされていない 1:MODBUSソケットはクローズされている
138 •
MODBUSの機能
レジスタアドレス 0x100A(MODBUSアドレス:404107)
名称 代替的ウォッチドグ アクセス種別 読み書き
デフォルト値 0x0000
説 明 ウォッチドグタイマを有効にするもう1つの方法を提供します。
手順:時間値をレジスタ0x1000に書き込み、続いて0x0001をレジスタ 0x100Aに書き込みます。ウォッチドグは最初のMODBUS要求によって 始動し、ウォッチドグタイマはMODBUS/TCP命令ごとにリセットされ ます。ウォッチドグがタイムアウトすると、全出力はゼロに設定され ます。通信が再確立されると出力は再び動作します。
レジスタデータはすべてワード形式です。
例:
ウォッチドグのタイマ値を1秒に設定します。ウォッチドグタイマのリセット には機能コード「5」(コイルの書き込み)を使用します。
1. ウォッチドグタイマのレジスタ(0x1000)に0x000A(1000ms÷100ms)を 書き込みます。
2. コードマスクのレジスタ(0x1001)に0x0100(2(5-1))を書き込みます。
3. ウォッチドグトリガのレジスタ(0x1003)の値を変更し、ウォッチドグを始 動します。
4. このときフィールドバスマスタは、ウォッチドグタイマをリセットするため に機能コード「5」(コイルの書き込み)を指定時間内に連続使用する必要 があります。要求メッセージの時間間隔が1秒を超えるとウォッチドグのタ イムアウト障害が発生します。
ウォッチドグの始動後にこれを停止するには、ウォッチドグ簡易停止レジスタ
(0x1008)に「0xAA55」または「0x55AA」を書き込みます。
ウォッチドグのタイマ値を10分に設定します。ウォッチドグタイマのリセット には機能コード「3」(複数レジスタの読み出し)を使用します。
1. タイマ値用のレジスタ(0x1000)に0x1770(10*60*1000ms÷100ms)を書き 込みます。
2. コードマスクのレジスタ(0x1001)に0x0010(2(3-1))を書き込みます。
3. ウォッチドグトリガのレジスタ(0x1003)の値を変更し、ウォッチドグを始 動します。
4. このときフィールドバスマスタは、ウォッチドグタイマをリセットするため に機能コード「3」(複数レジスタの読み出し)を指定時間内に連続使用す る必要があります。要求メッセージの時間間隔が10分を超えるとウォッチ ドグのタイムアウト障害が発生します。
ウォッチドグの始動後にこれを停止するには、ウォッチドグ簡易停止レジスタ
(0x1008)に「0xAA55」または「0x55AA」を書き込みます。
• 139
MODBUSの機能
レジスタアドレス 0x100B(MODBUSアドレス:404108)
値 ウォッチドグパラメータの保存 アクセス種別 書き込み
デフォルト値 0x0000
説 明 このレジスタに「1」を書き込むことにより、レジスタ0x1000、
0x1001、0x1002の内容は保持されます。