Modbusの下流方向制御

PD Handler Modbus の下流方向制御について説明します。
PD Handler Modbusの下流方向制御を利用するためには、Modbusに用いられるファンクションコードを理解しておく必要があります。
PD Handler Modbusに用いられているファンクションコードを示します。

PD Handler Modbusに用いられているファンクションコード

コード名称機能説明
0x01Read Coilsデジタル出力に設定されているビット値を読み込みます。
0x02Read Discrete Inputデジタル入力のビット値を読み込みます。
0x03Read Holding Registersレジスタ出力に設定されている値を読み込みます。
0x04Read Input Registersレジスタ入力の値を読み込みます。
0x05Write Single Coilデジタル出力1ビットのビット値を設定します。
0x06Write Single Registerレジスタ出力1レジスタの値を設定します。
0x07Read Exception Statusクライアント/サーバー間でエラーステータスを通知します。
0x09Write Single Discrete Inputデジタル入力1ビットのビット値を設定します。
0x0aWrite Single Input Registerレジスタ入力1レジスタの値を設定します。
0x0fWrite Multiple Coils連続する複数のデジタル出力のビット値を設定します。
0x10Write Multiple Registers連続する複数のレジスタ出力の値を設定します。
0x11Report Slave ID接続可能なスレーブ(サーバー)機器のIDを通知します。
0x13Write Multiple Discrete Input連続する複数のデジタル入力のビット値を設定します。
0x14Write Multiple Input Registers連続する複数のレジスタ入力の値を設定します。
0x16Mark Write Registersレジスタ出力をマスクします。
0x17Write and Read Registers連続する複数のレジスタ出力の値を設定し、その値を読み込みます。

ここで、0x09, 0x0a, 0x13, 0x14 物理的な入力を持たないPD Handler Modbus Serverのデジタル入力もしくはレジスタ入力をクラウド側から設定できるよう用意された、本来のModbusプロトコルには存在しない独自拡張のファンクションです。

Modbusファンクションコードは、PD Handler Modbusのコンフィグファイル(pd_handler_modbus_client.conf, pd_handler_modbus_server.conf)もしくは下流方向制御においてJSON文字列の"function"キーに設定されます。
また、CVSファイル(pd_handler_modbus_client.csv)においては「読込方式」として第3カラムに設定されます。
"0x"から始まる16進表記のファンクションコードを文字列と"function"キーに設定することも可能ですが、16進表記とは別に整数表記と文字列表記を用いることも可能です。

"function" キーに用いるファンクションコードの別称を示します。

"function"キーに用いるファンクションコードの別称

コード名称整数表記文字列表記
0x01Read Coils1read_coils
0x02Read Discrete Input2read_discrete_input
0x03Read Holding Registers3read_holding_registers
0x04Read Input Registers4read_input_registers
0x05Write Single Coil5write_single_coil
0x06Write Single Register6write_single_register
0x07Read Exception Status7read_exception_status
0x09Write Single Discrete Input9write_single_input_register
0x0aWrite Single Input Register10write_single_input_register
0x0fWrite Multiple Coils15write_multiple_coils
0x10Write Multiple Registers16write_multiple_register
0x11Report Slave ID17report_slave_id
0x13Write Multiple Discrete Input19write_muliple_discrete_input
0x14Write Multiple Input Registers20write_multiple_input_registers
0x16Mark Write Registers22mark_write_registers
0x17Write and Read Registers23write_and_read_registers