Modbus2サーバーの下流方向制御

PD Handler Modbus2 Serverの下流方向制御について説明します。 PD Handler Modbus2 は、PD Handler Modbusとは異なりModbusモデリングファイルに基づきサーバーのレジスタマップが定義されるため、クラウド側からは、レジスタマップの一括読み込みと入力レジスタ(inputBits もしくは inputRegisters)に対する書き込みしかできません。

レジスタマップを読み取るためには、次のように空の制御メッセージを送ります。

{ }

対する応答メッセージは、次のようになります。

{
"timestamp": "2019-11-07T15:30:05.758+09:00",
"request_from": "0x13(0)",
"reply_to": "99914b932bd37a50b983c5e7c90ae93b", "result": true,
"unitId": 16,
"maker": "Plat Home", "product": "Modbus Handler", "model": "Test Server", "sku":"001",
"do00": "0x24", "do01": "0x36", "do02": "0xcd", "do03": "0xac",
"di00": "0x00", "di01": "0x00", "di02": "0x00", "di03": "0x00",
"rego00": 128, "regi01": 25, "regi02": -1, "regi03": 45,
"regi": [0, 0, 0, 0]
}

ここで"reply_to"は、制御メッセージのハッシュ値(MD5)です。

サーバーの入力レジスタ(inputBits または inputRegisters)に値を書き込む場合は、クラウドより次のような制御メッセージを送ります。

{
"write": {"di00": "0xff", "regi": [123, 456, 678, 910]}
}

ここで、write キーに与えられるオブジェクトは、Modbusモデリングファイルの outputBits または inputRegisters に定義される、 "key", "type", "ratio", "array" に応じた値でなくてはなりませんが、レジスタセットの全て(di00~di03)を指定する必要はなく、上記のようにその一部(di00)を指定することができます。

書き込み制御に対する応答メッセージは、読み出し制御とは異なり指定されたレジスタセットの値のみを返します。
ただし、次のよに書き換えの指定がレジスタセットの一部(di00)であっても、レジスタセットの全て(di00~di03)のデータを返します。 :

{
"timestamp": "2019-11-07T16:35:13.653+09:00",
"reply_to": "9e5d68f8ce9bb5dc3e86f2d3c2ef4167","result": true,
"request_from": "0x13(0)",
"unitId": 16,
"maker":"Plat Home", "product":"Modbus Handler", "model":"Test Server", "sku":"001",
"di00": "0xff", "di01": "0x00", "di02": "0x00", "di03": "0x00",
"regi": [123, 456, 678, 910]
}