Modbus PLC

PD Handler Modbus

info
  • 出力されるJSONデータは順不同です。
  • 接続プロトコル(TCP と RTC)とデータ形式(レジスタとデジタル)の組み合わせにより、データ、リクエストメッセージ、応答メッセージの各サンプルは本来4通りとなりますが、TCP プロトコルによるレジスタ入出力と RTU プロトコルによるビット入出力のみ掲載しています。

Modbusクライアント (Modbusマスター)

PLC 機器へのポーリング動作時

TCP プロトコルによるレジスタ出力又はレジスタ入力の読み込み

■ データサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"protocol": "tcp",
"node": "172.16.7.250",
"port": 1502,
"unit": 255,
"memo": "PLC01",
"address": 31,
"function": 3,
"data_type": "uint16_t",
"values": [ 2, 0, 1234, 5678, 9876]
}
#JSONキー内容データ型常駐補足
1timeデータ取得日時StringISO8601拡張書式
2protocolプロトコルStringWEB-UIから設定された値.'tcp'.
3node取得先IPアドレスStringWEB-UIから設定された値.
4portポート番号IntegerWEB-UIから設定された値.
5unitModbus Unit IDIntegerWEB-UIから設定された値
6memoメモStringWEB-UIから設定された値
7address読み込みアドレスIntegerWEB-UIから設定された値
8functionModbus function codeintegerWEB-UIから設定された値
3:

レジスタ出力

4:

レジスタ入力

9data_typeデータの型StringWEB-UIから設定された値
uint16_t :

符号なし16bits

int16_t :

符号付16bits

uint32lsb_t :

符号なし32bits LSB

uint32msb_t :

符号なし32bits MSB

int32lsb_t :

符号付32bits LSB

int32msb_t :

符号付32bits MSB

10values読み込み値Integer 配列配列数は読み込みレジスタ数の設定に応じて可変.
RTUプロトコルによるデジタル出力又はデジタル入力の読み込み

■ データサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"protocol": "rtu",
"device": "/dev/ttyRS485",
"unit": 21,
"memo": "PLC04",
"address": 37,
"function": 2,
"values": [ 1, 0 ,0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1]
}
#JSONキー内容データ型常駐補足
1timeデータ取得日時StringISO8601拡張書式
2protocolプロトコルStringWEB-UIから設定された値. 'rtu'.
3deviceデバイスファイル名StringWEB-UIから設定された値.
4unitModbus Unit IDIntegerWEB-UIから設定された値
5memoメモStringWEB-UIから設定された値
6address読み込みアドレスIntegerWEB-UIから設定された値
7functionModbus function codeintegerWEB-UIから設定された値
1:

デジタル出力

2:

デジタル入力

8values読み込み値Integer 配列0 又は 1. 配列数は読み込みレジスタ数の設定に応じて可変.

クラウドからのオンデマンド動作時

TCPプロトコルによるレジスタ出力又はレジスタ入力の読み込み

■ リクエストメッセージサンプル :

{
"protocol": "tcp",
"node": "172.16.7.250",
"port": 1502,
"unit": 255,
"address": 31,
"function": 3,
"number": 5,
"data_type": "uint16_t"
}
#JSONキー内容データ型必須補足
1protocolプロトコルString'tcp'.
2node取得先IPアドレスStringPLC機器のIPアドレス
3portポート番号Integer
4unitModbus Unit IDInteger省略時は 255
5address読み込みアドレスInteger *1省略時は 0
6functionModbus function codeinteger *1
3:

read holding registers

4:

read input registers

7number読み込むレジスタ数Integer *1省略時は 1
8data_typeデータの型String
uint16_t :

符号なし16bits

int16_t :

符号付16bits

uint32lsb_t :

符号なし32bits LSB

uint32msb_t :

符号なし32bits MSB

int32lsb_t :

符号付32bits LSB

int32msb_t :

符号付32bits MSB

省略時は、uint16_t
info

1. String型 '0x' から始まる 16 進数表記も可能です。

■ 応答メッセージサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "84bfb66e5a0841732e28463bb91c297c",
"result": "done",
"protocol": "tcp",
"node": "172.16.7.250",
"port": 1502,
"unit": 255,
"memo": "PLC01",
"address": 31,
"function": 3,
"data_type": "uint16_t",
"values": [ 2, 0, 1234, 5678, 9876]
}
#JSONキー内容データ型常駐補足
1timeデータ取得日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringリクエストされた値. 'tcp'
5node取得先IPアドレスStringリクエストされた値
6portポート番号Integerリクエストされた値
7unitModbus Unit IDIntegerリクエストされた値
8memoメモStringWEB-UIから設定さた値
9address読み込みアドレスIntegerリクエストされた値
10functionModbus function codeintegerリクエストされた値
11data_typeデータの型Stringリクエストされた値
12values読み込み値Integer 配列配列数は number キーでリクエストされたレジスタ数に応じて可変.
RTUプロトコルによるデジタル出力又はデジタル入力の読み込み

■ リクエストメッセージサンプル :

{
"protocol": "rtu",
"device": "/dev/ttyRS485
"unit": 21,
"address": 37,
"function": 2,
"number": 20
}
#JSONキー内容データ型必須補足
1protocolプロトコルString'rtu'.
2deviceデバイスファイル名StringPLC機器を接続するシリアルポート
3unitModbus Unit IDInteger
4address読み込みアドレスInteger *1省略時は 0
5functionModbus function codeinteger *1
1:

read coils

2:

read discrete inputs

6number読み込むビット数Integer *1省略時は 1
info

1. String型 '0x' から始まる 16 進数表記も可能です。

■ 応答メッセージサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "5762a76a3235c71c5759029f078a8ca2",
"result": "done"
"protocol": "rtu",
"device": "/dev/ttyRS485",
"unit": 21,
"memo": "PLC04",
"address": 37,
"function": 2,
"values": [ 1, 0 ,0 ,0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1]
}
#JSONキー内容データ型常駐補足
1timeデータ取得日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringリクエストされた値. 'rtu'
5deviceデバイスファイル名Stringリクエストされた値
6unitModbus Unit IDIntegerリクエストされた値
7memoメモStringWEB-UIから設定さた値
8address読み込みアドレスIntegerリクエストされた値
9functionModbus function codeintegerリクエストされた値
10values読み込み値Integer 配列0 又は 1. 配列数は number キーでリクエストされたレジスタ数に応じて可変.
TCPプロトコルによるレジスタ入力への書き込み

■ リクエストメッセージサンプル :

{
"protocol": "tcp",
"node": "172.16.7.250",
"port": 1502,
"unit": 255,
"address": "0x0ab",
"function": 16,
"data_type": "uint32lsb_t",
"values": [ 42949672951, 21474836471]
}
TCPプロトコルによるレジスタ入力への書き込み
#JSONキー内容データ型必須補足
1protocolプロトコルString'tcp'.
2node取得先IPアドレスStringPLC機器のIPアドレス
3portポート番号Integer
4unitModbus Unit IDInteger省略時は 255
5address書き込みアドレスInteger *1省略時は 0
6functionModbus function codeinteger *1
6:

write single register

16:

write multiple registers

23:

write and read registers

7data_typeデータの型String
uint16_t :

符号なし16bits

int16_t :

符号付16bits

uint32lsb_t :

符号なし32bits LSB

uint32msb_t :

符号なし32bits MSB

int32lsb_t :

符号付32bits LSB

int32msb_t :

符号付32bits MSB

省略時は、uint16_t
8values書き込む値Integer 配列functionキーが 6 の場合、は先頭の1レジスタを書き込む.
info

1. String型 '0x' から始まる 16 進数表記も可能です。

■ 応答メッセージサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "73771103b4765ed0ce859ac912321c04",
"result": "done"
"protocol": "tcp",
"node": "172.16.7.250",
"port": 1502,
"unit": 255,
"address": 171,
"function": 16,
"data_type": "uint32lsb_t",
"values": [ 42949672951, 21474836471]
}
#JSONキー内容データ型常駐補足
1timeデータ書き込み日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringリクエストされた値. 'tcp'
5node取得先IPアドレスStringリクエストされた値
6portポート番号Integerリクエストされた値
7unitModbus Unit IDIntegerリクエストされた値
9memoメモStringWEB-UIから設定さた値
10address書き込みアドレスIntegerリクエストされた値
11functionModbus function codeintegerリクエストされた値
12data_typeデータの型Stringリクエストされた値
13values書き込んだ値Integer 配列リクエストされた値
RTUプロトコルによるデジタル入力への書き込み

■ リクエストメッセージサンプル :

{
"protocol": "rtu",
"device": "/dev/ttyRS485",
"unit": 21,
"address": "0x0ce",
"function": 15,
"values": [ 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1]
}
#JSONキー内容データ型必須補足
1protocolプロトコルString'rtu'.
2deviceデバイスファイル名StringPLC機器を接続するシリアルポート
3unitModbus Unit IDInteger
4address書き込みアドレスInteger *1省略時は 0
5functionModbus function codeinteger *1
5:

write single coil

15:

write multiple coils

7values書き込む値Integer 配列0 又 は 1. functionキーが 5 の場合、は先頭の1ビットを書き込む.
info

1. String型 '0x' から始まる 16 進数表記も可能です。

■ 応答メッセージサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "0408f69db38b4d89f25d026d6d9449b7",
"result": "done"
"protocol": "rtu",
"device": "/dev/ttyRS485",
"unit": 21,
"address": 206,
"function": 15,
"values": [ 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1]
}
#JSONキー内容データ型常駐補足
1timeデータ書き込み日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringリクエストされた値. 'rtu'
5deviceデバイスファイル名Stringリクエストされた値
6unitModbus Unit IDIntegerリクエストされた値
7memoメモStringWEB-UIから設定さた値
8address書き込みアドレスIntegerリクエストされた値
9functionModbus function codeintegerリクエストされた値
10values書き込んだ値Integer 配列リクエストされた値
スレーブIDの読み出し

■ リクエストメッセージサンプル :

{
"protocol": ": rtu": ,
"device": ": /dev/ttyRS485": ,
"unit": 21,
"function": 17
}
#JSONキー内容データ型必須補足
1protocolプロトコルString'rtu'.
2deviceデバイスファイル名StringPLC機器を接続するシリアルポート
3unitModbus Unit IDInteger
4functionModbus function codeinteger *1
17:

report slave id

info

1. String型 '0x' から始まる 16 進数表記も可能です。

■応答メッセージサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "72cf056269d6bcd150df8125fbe04710",
"result": "done"
"protocol": "rtu",
"device": "/dev/ttyRS485",
"unit": 21,
"function": 17,
"values": [ 7, 12]
}
#JSONキー内容データ型必須補足
1timeデータ取得日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringリクエストされた値. 'rtu'
5deviceデバイスファイル名Stringリクエストされた値
6unitModbus Unit IDIntegerWEB-UIから設定さた値
7memoメモStringWEB-UIから設定さた値
8functionModbus function codeintegerリクエストされた値 17
9values接続されているModbus Unit IDの一覧Integer 配列
エラー時

■ 応答メッセージサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "7408f69d838b4d89f257036d6d9449b7",
"result": "not queuing",
"reason": "not specified 'function' at least"
}
#JSONキー内容データ型必須補足
1time処理日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString
'not queuing':

リクエストメッセージの不備

'failed':

PLC機器に接続できなかった場合等

4reasonエラーの理由String

Modbusサーバー(Modbusスレーブ)

PLC 機器からの書き込み動作時

TCPプロトコルによるレジスタ入力への書き込み

■ データサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"protocol": "tcp",
"node": "172.16.7.240",
"port": 502,
"unit": 255,
"memo": "PLC Server 01",
"address": 31,
"function": 6,
"values": [ 5678]
}
#JSONキー内容データ型常駐補足
1timeデータ書き込み日時StringISO8601拡張書式
2protocolプロトコルStringWEB-UIから設定された値.'tcp'.
3node書き込み元IPアドレスStringWEB-UIから設定された値.
4portポート番号Integer502 (固定)
5unitModbus Unit IDInteger255 (固定)
6memoメモStringWEB-UIから設定された値
7address書き込みアドレスInteger0 ~ 2048 (registers) の範囲
8functionModbus function codeinteger
6:

write single register

16:

write multiple registes

9values書き込まれた値Integer 配列16ビット符号無し整数値. 配列数は書き込まれたレジスタ数に応じて可変.
RTUプロトコルによるデジタル入力への書き込み

■ データサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"protocol": "rtu",
"device": "/dev/ttyRS485",
"unit": 21,
"memo": "PLC Server 01",
"address": 37,
"function": 5,
"values": [1]
}
#JSONキー内容データ型常駐補足
1timeデータ書き込み日時StringISO8601拡張書式
2protocolプロトコルStringWEB-UIから設定された値.'rtu'.
3deviceデバイスファイル名StringWEB-UIから設定された値.
4unitModbus Unit IDIntegerWEB-UIから設定された値.
5memoメモStringWEB-UIから設定された値
6address書き込みアドレスInteger0 ~ 2048 (registers) の範囲
7functionModbus function codeinteger
5:

write single coil

15:

write multiple coils

9values書き込まれた値Integer 配列0 または 1. 配列数は書き込まれたビット数に応じて可変.

クラウドからのオンデマンド動作時

レジスタ出力又はレジスタ入力の読み込み

■ リクエストメッセージサンプル :

{
"function": 3,
"address": 31,
"number": 5,
"data_type": "uint16_t"
}
#JSONキー内容データ型必須補足
1functionModbus function codeinteger *1
3:

read holding registers

4:

read input registers

2address読み込みアドレスInteger *1省略時は 0
3number読み込むレジスタ数Integer *1省略時は 1
4data_typeデータの型String
uint16_t :

符号なし16bits

int16_t :

符号付16bits

uint32lsb_t :

符号なし32bits LSB

uint32msb_t :

符号なし32bits MSB

int32lsb_t :

符号付32bits LSB

int32msb_t :

符号付32bits MSB

省略時は、uint16_t
info

1. String型 '0x' から始まる 16 進数表記も可能です。

■ 応答メッセージサンプル(サーバがTCP接続設定時) :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "e4f87480e871555105cc81aac50e5e54",
"result": "done",
"protocol": "tcp",
"node": "172.16.7.249",
"port": 502,
"unit": 255,
"memo": "PLC Server 01",
"address": 31,
"function": 3,
"data_type": "uint16_t",
"values": [ 2, 0, 1234, 5678, 9876]
}
#JSONキー内容データ型常駐補足
1timeデータ取得日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringWEB-UIから設定さた値. 'tcp'
5nodeサーバ自身のIPアドレスString
6portポート番号Integer502(固定)
7unitModbus Unit IDInteger255(固定)
8memoメモStringWEB-UIから設定さた値
9address読み込みアドレスIntegerリクエストされた値
10functionModbus function codeintegerリクエストされた値
11data_typeデータの型Stringリクエストされた値
12values読み込み値Integer 配列配列数は number キーでリクエストされたレジスタ数に応じて可変.
info

protocol, node, port, unit, memo の値は、リクエストメッセージを受けた UNIX ドメインソケットのデバイス番号を持つデバイスに設定されている値です。

デジタル出力又はデジタル入力の読み込み

■ リクエストメッセージサンプル :

{
"function": 2,
"address": 37,
"number": 20,
}
#JSONキー内容データ型必須補足
1functionModbus function codeinteger *1
1:

read coils

2:

read discrete inputs

2address読み込みアドレスInteger *1省略時は 0
3number読み込むレジスタ数Integer *1省略時は 1
info

1. String型 '0x' から始まる 16 進数表記も可能です。

■ 応答メッセージサンプル(サーバがRTU接続設定時) :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "e5910e15403f5e2158a5776cd7136eeb",
"result": "done"
"protocol": "rtu",
"device": "/dev/ttyRS485",
"unit": 21,
"memo": "PLC04",
"address": 37,
"function": 2,
"values": [ 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1]
}
#JSONキー内容データ型常駐補足
1timeデータ取得日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringWEB-UIから設定さた値. 'rtu'
5deviceデバイスファイル名StringWEB-UIから設定さた値
6unitModbus Unit IDIntegerWEB-UIから設定さた値
7memoメモStringWEB-UIから設定さた値
8address読み込みアドレスIntegerリクエストされた値
9functionModbus function codeintegerリクエストされた値
10values読み込み値Integer 配列0 又は 1. 配列数は number キーでリクエストされたビット数に応じて可変.
info

protocol, device, unit, memo の値は、リクエストメッセージを受けた UNIX ドメインソケットのデバイス番号を持つデバイスに設定されている値です。

レジスタ出力又はレジスタ入力への書き込み

■ リクエストメッセージサンプル :

{
"function": 16,
"address": "0x0ab",
"data_type": "uint32lsb_t",
"valuse": [ 42949672951, 21474836471]
}
#JSONキー内容データ型必須補足
1functionModbus function codeinteger *1
6:

write single register

10:

write single input register

16:

write multiple registers

20:

write multiple input registers

23:

write and read registers

2address書き込みアドレスInteger *1省略時は 0
3data_typeデータの型String
uint16_t:

符号なし16bits

int16_t:

符号付16bits

uint32lsb_t:

符号なし32bits LSB

uint32msb_t:

符号なし32bits MSB

int32lsb_t:

符号付32bits LSB

int32msb_t:

符号付32bits MSB

省略時は、uint16_t
4values書き込む値Integer 配列functionキーが 6 又は 10 の場合、は先頭の1レジスタを書き込む.
info

1.String型 '0x' から始まる 16 進数表記も可能です。

  • function の 内、10.write single input register と 20.write multiple input registes は、本来の Modubusプロトコルには存在しない機能です。

■ 応答メッセージサンプル(サーバがTCP接続設定時) :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": " 35cf8fa6243d87e0ebb0c2aaaf8eeecf",
"result": "done"
"protocol": "tcp",
"node": "172.16.7.249",
"port": 502,
"unit": 255,
"address": 171,
"function": 16,
"data_type": "uint32lsb_t",
"values": [ 42949672951, 21474836471]
}
#JSONキー内容データ型常駐補足
1timeデータ書き込み日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringWEB-UIから設定さた値. 'tcp'
5nodeサーバ自身の IPアドレスString
6portポート番号Integer502(固定)
7unitModbus Unit IDInteger255(固定)
9memoメモStringWEB-UIから設定さた値
10address書き込みアドレスIntegerリクエストされた値
11functionModbus function codeintegerリクエストされた値
12data_typeデータの型Stringリクエストされた値
13values書き込んだ値Integer 配列リクエストされた値
info

protocol, node, port, unit, memo の値は、リクエストメッセージを受けた UNIX ドメインソケットのデバイス番号を持つデバイスに設定されている値です。

デジタル出力又はデジタル入力への書き込み

■ リクエストメッセージサンプル :

{
"function": 15,
"address": "0x0ce",
"values": [ 0, 0, 0, 1, 1, 1, 0, 1, 1 ,0, 1, 1, 0, 1, 1]
}
#JSONキー内容データ型必須補足
1functionModbus function codeinteger *1
5:

write single coil

9:

write single discrete_input

15:

write multiple coils

19:

write multiple discrete input

2address書き込みアドレスInteger *1省略時は 0
3values書き込む値Integer 配列0 又 は 1. functionキーが 5 又は 9 の場合、は先頭の1ビットを書き込む.
info

1. String型 '0x' から始まる 16 進数表記も可能です。

  • functionの内、9.write single discrete input と 19.write multiple discrete input は、本来のModubusプロトコルには存在しない機能です。

■ 応答メッセージサンプル(サーバがRTU接続設定時) :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "c4348e30643dac56cb61bac9743729e7",
"result": "done"
"protocol": "rtu",
"device": "/dev/ttyRS485",
"unit": 21,
"address": 206,
"function": 15,
"values": [ 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1]
}
#JSONキー内容データ型常駐補足
1timeデータ書き込み日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringWEB-UIから設定さた値. 'rtu'
5deviceデバイスファイル名StringWEB-UIから設定さた値
6unitModbus Unit IDIntegerWEB-UIから設定さた値
7memoメモStringWEB-UIから設定さた値
8address書き込みアドレスIntegerリクエストされた値
9functionModbus function codeintegerリクエストされた値
10values書き込んだ値Integer 配列リクエストされた値
info

protocol, device, unit, memo の値は、リクエストメッセージを受けた UNIX ドメインソケットのデバイス番号を持つデバイスに設定されている値です。

スレーブIDの読み出し

■ リクエストメッセージサンプル :

{
"function": 17
}
#JSONキー内容データ型必須補足
1functionModbus function codeinteger *1
  1. report slave id

■応答メッセージサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "e553cae505e64e305373c73d7dd6cd31",
"result": "done"
"protocol": "rtu",
"device": "/dev/ttyRS485",
"unit": 21,
"function": 17,
"values": [ 21, 255]
}
#JSONキー内容データ型必須補足
1timeデータ取得日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString成功時は 'done'
4protocolプロトコルStringWEB-UIから設定さた値 'rtu'
5deviceデバイスファイル名Stringリクエストされた値
6unitModbus Unit IDIntegerWEB-UIから設定さた値
7memoメモStringWEB-UIから設定さた値
8functionModbus function codeintegerリクエストされた値 17
9values接続されているModbus Unit IDの一覧Integer 配列
info

protocol, device, unit, memo の値は、リクエストメッセージを受けた UNIX ドメインソケットのデバイス番号を持つデバイスに設定されている値です。

エラー時

■ 応答メッセージサンプル :

{
"time": "2017-02-03T14:44:37.020+09:00",
"reply_to": "7408f69d838b4d89f257036d6d9449b7",
"result": "not queuing",
"reason": "not specified 'function' at least"
}
#JSONキー内容データ型必須補足
1time処理日時StringISO8601拡張書式
2reply_toリクエストメッセージのMD5値String
3result取得ステータスString
'not queuing':

リクエストメッセージの不備

'failed':

PLC機器に接続できなかった場合等

4reasonエラーの理由String

PD Handler Modbus 2

info
  • 出力されるJSONデータは順不同です。

Modbus2クライアント (Modbusマスター)

PLC 機器へのポーリング動作時

■ データサンプル :

{
"timestamp": "2019-11-15T10:02:17.277+09:00",
"unitId": 1,
"maker": "OMRON",
"product": "Smart Power Monitor",
"model": "KM-N1-FLK",
"sku": "00",
"voltage1": 103.6,
"voltage2": 0.0,
:
}
#JSONキー内容データ型常駐補足
1timestampデータ取得日時StringISO8601拡張書式. *1
2unitIdModbus Unit IDInteger or StringWEB-UIから設定された値. *2
3makerメーカー名StringWEB-UIから設定された値. *3
4productプロダクト名StringWEB-UIから設定された値. *3
5modelモデル名StringWEB-UIから設定された値. *3
6skuSKU名StringWEB-UIから設定された値. *3
info

上記以外の項目は、モデリングファイルの設定に応じて異なります。

  1. timestamp_key キーにより、JSONキーを変更することが可能です。
  2. id_formキーの設定に応じて、整数または '0x0 ' から始まる大文字16進数、小文字16進数の何れかとなります。
  3. モデリングの設定応じて非表示とすることができます。

クラウドからのオンデマンド動作時

ポーリング中のレジスタに対するオンデマンド読み込み

■ リクエストメッセージサンプル :

{
"unitId": 1
}
#JSONキー内容必須常駐補足
1unitIdModbus Unit IDInteger or String整数または、'0x' から始まる16進数文字列.

■ 応答メッセージサンプル :

{
"timestamp": "2019-11-15T10:19:54.651+09:00",
"unitId" : 1,
"maker": "OMRON",
"product": "Smart Power Monitor",
"model": "KM-N1-FLK",
"sku": "00",
"request_from": "0x01(0)",
"reply_to": "661d94902a592172865e6853159dc138",
"result": true,
"voltage1" : 103.5,
"voltage2" : 0,
:
}
#JSONキー内容データ型常駐補足
1timestampデータ取得日時StringISO8601拡張書式. *1
2unitIdModbus Unit IDInteger or StringWEB-UIから設定された値. *2
3makerメーカー名StringWEB-UIから設定された値. *3
4productプロダクト名StringWEB-UIから設定された値. *3
5modelモデル名StringWEB-UIから設定された値. *3
6skuSKU名StringWEB-UIから設定された値. *3
7request_fromリクエスト元クラウドIDString*4
8reply_toリクエストメッセージの MD5 値String*4
9result取得ステータスBoolena通常は true. *4
info

上記以外の項目は、モデリングファイルの設定に応じて異なります。

  1. timestamp_key キーにより、JSONキーを変更することが可能です。
  2. id_formキーの設定に応じて、整数または '0x0 ' から始まる大文字16進数、小文字16進数の何れかとなります。
  3. モデリングの設定応じて非表示とすることができます。
  4. replyキー が true に設定されている場合のみ表示されます。
レジスタに対するオンデマンド書き込み

■ リクエストメッセージサンプル :

{
"unitId": 1,
"rawRequest": {
"configMode": null
},
"write": {
"ctType": 1
}
}
}
#JSONキー内容必須常駐補足
1unitIdModbus Unit IDInteger or String整数または、'0x' から始まる16進数文字列.
2rawRequestRAWリクエストJSON objモデリングファイルの設定に応じて異なります。
3write書込み制御JSON objモデリングファイルの設定に応じて異なります。

■応答メッセージサンプル :

{
"timestamp": "2019-11-18T10:07:46.587+09:00",
"unitId": 1,
"maker": "OMRON",
"product": "Smart Power Monitor",
"model": "KM-N1-FLK",
"sku": "00",
"request_from": "0x01(0)",
"reply_to": "dd8d548a7adf42102a6a6762d0866520",
"result": true,
"configMode": "0x0106FFFF07008BDE",
"ctType": 1
}
#JSONキー内容データ型常駐補足
1timestampデータ取得日時StringISO8601拡張書式. *1
2unitIdModbus Unit IDInteger or StringWEB-UIから設定された値. *2
3makerメーカー名StringWEB-UIから設定された値. *3
4productプロダクト名StringWEB-UIから設定された値. *3
5modelモデル名StringWEB-UIから設定された値. *3
6skuSKU名StringWEB-UIから設定された値. *3
7request_fromリクエスト元クラウドIDString*4
8reply_toリクエストメッセージの MD5 値String*4
9result取得ステータスBoolena通常は true. *4
info

上記以外の項目は、モデリングファイルの設定に応じて異なります。

  1. timestamp_key キーにより、JSONキーを変更することが可能です。
  2. id_formキーの設定に応じて、整数または '0x0 ' から始まる大文字16進数、小文字16進数の何れかとなります。
  3. モデリングの設定応じて非表示とすることができます。
  4. replyキー が true に設定されている場合のみ表示されます。

rawRequest と write を同時にリクエストした場合で、いずれか片方のみがエラーとなった場合、エラーとなったリクエストに対する応答のみが返されます。

エラー発生時の応答メッセージ

■応答メッセージサンプル :

{
"timestamp": "2019-11-15T11:34:54.679+09:00",
"request_from": "0x01(0)",
"reply_to": "8473b3a74dfe726d256314fcfd1186cf",
"result": false,
"reason": "parser_sub_socket(): unitId 2 not found"
}
#JSONキー内容データ型常駐補足
1timestampデータ取得日時StringISO8601拡張書式. *1
2request_fromリクエスト元クラウドIDString
3reply_toリクエストメッセージの MD5 値String
4result取得ステータスBoolena失敗時は false
5reasonエラーの理由String
info

replyキー が true に設定されている場合のみ応答を返します。

Modbus2サーバー(Modbusスレーブ)

PLC機器からの書き込み動作時

レジスタ出力への書き込み

■ データサンプル :

{
"timestamp": "2019-11-22T10:34:49.179+09:00",
"unitId": 255,
"maker": "PlatHome Co., Ltd.",
"product": "Virtual PLC server",
"model": "32 bits 8 port Register",
"sku": "0000"
"outRegs": [
"0x00000001",
"0x00000002",
"0x00000003",
"0x00000004",
"0x00000005",
"0x00000006",
"0x00000007",
"0x00000008"
]
}
#JSONキー内容データ型常駐補足
1timestampデータ書き込み日時StringISO8601拡張書式. *1
2unitIdModbus Unit IDInteger or StringWEB-UIから設定された値. *2
3makerメーカー名StringWEB-UIから設定された値. *3
4productプロダクト名StringWEB-UIから設定された値. *3
5modelモデル名StringWEB-UIから設定された値. *3
6skuSKU名StringWEB-UIから設定された値. *3
info

上記以外の項目は、モデリングファイルの設定に応じて異なります。

  1. timestamp_key キーにより、JSONキーを変更することが可能です。
  2. id_formキーの設定に応じて、整数または '0x0 ' から始まる大文字16進数、小文字16進数の何れかとなります。
  3. モデリングの設定応じて非表示とすることができます。

クラウドからのオンデマンド動作時

レジスタの読み込み

■ リクエストメッセージサンプル :

{ }

レジスタの読み込みのためのリクエストメッセージは、空のJSONオブジェクトです。

■ 応答メッセージサンプル :

{
"timestamp": "2019-11-22T11:28:50.084+09:00",
"unitId": 255,
"maker": "PlatHome Co., Ltd.",
"product": "Virtual PLC server",
"model": "32 bits 8 port Register",
"sku": "0000",
"request_from": "0x01(0)",
"reply_to": "99914b932bd37a50b983c5e7c90ae93b",
"result": true,
"outBits": "0x0",
"inBit0": 0,
"inBit1": 0,
"inBit2": 0,
"inBit3": 0,
"outRegs": [
"0x00000001",
"0x00000002",
"0x00000003",
"0x00000004",
"0x00000005",
"0x00000006",
"0x00000007",
"0x00000008"
],
"inReg0": 0,
"inReg1": 0,
"inReg2": 0,
"inReg3": 0
}

読み込みのリクエストに対しては、全てのレジスタの情報を返します。

#JSONキー内容データ型常駐補足
1timestampデータ取得日時StringISO8601拡張書式. *1
2unitIdModbus Unit IDInteger or StringWEB-UIから設定された値. *2
3makerメーカー名StringWEB-UIから設定された値. *3
4productプロダクト名StringWEB-UIから設定された値. *3
5modelモデル名StringWEB-UIから設定された値. *3
6skuSKU名StringWEB-UIから設定された値. *3
7request_fromリクエスト元クラウドIDString*4
8reply_toリクエストメッセージの MD5 値String*4
9result取得ステータスBoolena通常は true. *4
info

上記以外の項目は、モデリングファイルの設定に応じて異なります。

  1. timestamp_key キーにより、JSONキーを変更することが可能です。
  2. id_formキーの設定に応じて、整数または '0x0 ' から始まる大文字16進数、小文字16進数の何れかとなります。
  3. モデリングの設定応じて非表示とすることができます。
  4. replyキー が true に設定されている場合のみ表示されます。
レジスタへの書き込み

■ リクエストメッセージサンプル :

{
"write": {
"inBit0": 1,
"inReg3": 34586
}
}
#JSONキー内容必須常駐補足
1write書込み制御JSON objモデリングファイルの設定に応じて異なります。

■ 応答メッセージサンプル :

{
"timestamp": "2019-11-22T13:17:20.327+09:00",
"unitId" : 255,
"maker": "PlatHome Co., Ltd.",
"product": "Virtual PLC server",
"model": "32 bits 8 port Register",
"sku": "0000",
"request_from": "0x01(0)",
"reply_to": "10348911fddda12f880575e5dec3d698",
"result" : true,
"inBit0" : 1,
"inBit1" : 0,
"inBit2" : 0,
"inBit3" : 0,
"inReg0" : 0,
"inReg1" : 0,
"inReg2" : 0,
"inReg3" : 34586
}

書込みのリクエストに対しては、書き込み後の関連するレジスタセットの情報を返します。

#JSONキー内容データ型常駐補足
1timestampデータ取得日時StringISO8601拡張書式. *1
2unitIdModbus Unit IDInteger or StringWEB-UIから設定された値. *2
3makerメーカー名StringWEB-UIから設定された値. *3
4productプロダクト名StringWEB-UIから設定された値. *3
5modelモデル名StringWEB-UIから設定された値. *3
6skuSKU名StringWEB-UIから設定された値. *3
7request_fromリクエスト元クラウドIDString*4
8reply_toリクエストメッセージの MD5 値String*4
9result取得ステータスBoolena通常は true. *4
info

上記以外の項目は、モデリングファイルの設定に応じて異なります。

  1. timestamp_key キーにより、JSONキーを変更することが可能です。
  2. id_formキーの設定に応じて、整数または '0x0 ' から始まる大文字16進数、小文字16進数の何れかとなります。
  3. モデリングの設定応じて非表示とすることができます。
  4. replyキー が true に設定されている場合のみ表示されます。
エラー発生時の応答メッセージ

■応答メッセージサンプル :

{
"timestamp": "2019-11-15T11:34:54.679+09:00",
"request_from": "0x01(0)",
"reply_to": "8473b3a74dfe726d256314fcfd1186cf",
"result": false,
"reason": "parser_sub_socket(): invalid write request '{\"inBitr10\": 0}'"
}
#JSONキー内容データ型常駐補足
1timestampデータ取得日時StringISO8601拡張書式. *1
2request_fromリクエスト元クラウドIDString
3reply_toリクエストメッセージの MD5 値String
4result取得ステータスBoolena失敗時は false
5reasonエラーの理由String
info
  • replyキー が true に設定されている場合のみ応答を返します。
  • 複数の書き込みリクエストが、行われた場合で、そのいずれかの書き込みが成功した場合、エラー出力は行われず、正常に書き込まれたレジスタの情報のみが返されます。

PD Handler Modbus2 サポートリスト

メーカー製品名ProductModel型番/製品ページ
PATLITE積層情報表示灯Network-enabled SignalingLA6-POELA6-POE
オムロン小型電力量モニタSmart Power MonitorKM-N1-FLKKM-N1-FLK
オムロンヒューマンビジョンコンポHVC-FB5Z-001001B5Z-001001
オムロンサーモパイル型人感センサThermopile Human Sensor2JCRT-1616H-012JCRT-1616H-01
渡辺電機工業1ch電力監視モジュールWMSPE1NWMS-PE1N
渡辺電機工業6ch電力監視モジュールWMSPE6NWMS-PE6N
渡辺電機工業デジタル入出力モジュールWMBDIO8RWMB-DIO8R
渡辺電機工業デジタル入出力モジュール(増幅器)WMBDIO8RAWMB-DIO8RA
渡辺電機工業デジタル入力モジュールWMBDI16WMB-DI16
渡辺電機工業デジタル入力モジュール(増幅器)WMBDI16AWMB-DI16A
渡辺電機工業アナログ/測温抵抗体入力モジュールWMBMAI6WMB-MAI6
渡辺電機工業アナログ入力モジュールWMBAI8WMB-AI8
東光東芝メーターシステムズSmaMe-TypeMSmaMe SeriesS2MS-RNS22S2MS-RNS22