Modbusサーバーの下流方向制御
PD Handler Modbus Server の下流方向制御について説明します。
PD Handler Modbus Server の下流方向制御に用いるJSON文字列のオブジェクトを示します。
PD Handler Modbus Server の下流方向制御に用いるJSON文字列のオブジェクト
キー | データ型 | 必須 | 説明 |
---|---|---|---|
function | 文字列又は整数 | 〇 | Modbusの下流方向制御に説明するファンクションコードの内、次表PD Handler Modbus Serverで利用可能なファンクションコードに記載されるコード |
data_type | 文字列又は整数 | 次の何れか
| |
address | 文字列又は整数 | データが格納されている、あるいは格納するPLC機器上の開始アドレスを設定します。先頭が'0x'の場合は16進数と解釈されます。指定されない場合は、0x00となります。 | |
number | 文字列又は整数 | 読み書きするレジスタ数を記載します。指定されない場合は、1となります。 | |
values | 整数配列 | △ | 書き込むデータ(整数値)の並び |
PD Handler Modbus Clientとは異なりPD Handler Modbus Server自身のレジスタマップに対する操作を行うものであるため、"node"や"device"キーの設定は必要としません。
PD Handler Modbus Serverで利用可能なファンクションコードを示します。
PD Handler Modbus Server で利用可能なファンクションコード
コード | 名称 | 利用可能 |
---|---|---|
0x01 | Read Coils | 〇 |
0x02 | Read Discrete Input | 〇 |
0x03 | Read Holding Registers | 〇 |
0x04 | Read Input Registers | 〇 |
0x05 | Write Single Coil | 〇 |
0x06 | Write Single Register | 〇 |
0x07 | Read Exception Status | |
0x09 | Write Single Discrete Input | 〇 |
0x0a | Write Single Input Register | 〇 |
0x0f | Write Multiple Coils | 〇 |
0x10 | Write Multiple Registers | 〇 |
0x11 | Report Slave ID | |
0x13 | Write Multiple Discrete Input | 〇 |
0x14 | Write Multiple Input Registers | 〇 |
0x16 | Mark Write Registers | |
0x17 | Write and Read Registers | 〇 |
例えば、入力レジスタを読み込むのであれば、クラウドより次のような制御メッセージを送ります。
対する応答メッセージは、次のようになります。
ここで"reply_to"は、制御メッセージのハッシュ値(MD5)です。
レジスタマップに"node","port"もしくは"device"の区別はありませんが、 PD Repeaterからは異なるデバイス番号を持つ個別のModbusサーバーデバイスと位置付けられるため、応答メッセージには、PD Repeaterから制御メッセージを受けたUNIXドメインソケットと対をなす"node","port"もしくは"device"が付加されます。
入力レジスタに値を書き込むのであれば、クラウドより次のような制御メッセージを送ります。
入力レジスタは本来物理的にADコンバータ等を介してセットされるレジスタですが PD Handler Modbus Serverでは下流方向制御によりレジスタマップを書き換えることができます。
ここで"data_type"が32bitsの場合、"values"は上位/下位の16bitsに分割されて処理されるため、"number"が1であっても、"function"はWrite Multiple Input Registersを使用しなくてはなりません。
対する応答メッセージは、次のようになります。