PD Handler Modbus
Modbus ファンクションコード
PD Handler Modbus に用いられているファンクションコード
コード | 名称 | 機能説明 |
---|---|---|
0x01 | Read Coils | デジタル出力に設定されているビット値を読み込む。 |
0x02 | Read Discrete Input | デジタル入力のビット値を読み込む。 |
0x03 | Read Holding Registers | レジスタ出力に設定されている値を読み込む。 |
0x04 | Read Input Registers | レジスタ入力の値を読み込む。 |
0x05 | Write Single Coil | デジタル出力 1 ビットのビット値を設定する。 |
0x06 | Write Single Register | レジスタ出力 1 レジスタの値を設定する。 |
0x07 | Read Exception Status | クライアント/サーバー間でエラーステータスを通知する。 |
0x09 | Write Single Discrete Input | デジタル入力 1 ビットのビット値を設定する。 |
0x0a | Write Single Input Register | レジスタ入力1レジスタの値を設定する。 |
0x0f | Write Multiple Coils | 連続する複数のデジタル出力のビット値を設定する。 |
0x10 | Write Multiple Registers | 連続する複数のレジスタ出力の値を設定する。 |
0x11 | Report Slave ID | 接続可能なスレーブ(サーバー)機器のIDを通知する。 |
0x13 | Write Multiple Discrete Input | 連続する複数のデジタル入力のビット値を設定する。 |
0x14 | Write Multiple Input Registers | 連続する複数のレジスタ入力の値を設定する。 |
0x16 | Mark Write Registers | レジスタ出力をマスクする。 |
0x17 | Write and Read Registers | 連続する複数のレジスタ出力の値を設定し、その値を読み込む。 |
0x09, 0x0a, 0x13, 0x14 物理的な入力を持たない PD Handler Modbus Server のデジタル入力もしくはレジスタ入力をクラウド側から設定できるよう用意された、本来の Modbusプロトコルには存在しない独自拡張のファンクションです。
Modbus ファンクションコードは、 設定ファイルもしくは CSV ファイルあるいはクラウド側からの制御においてJSON 文字列の 'function' キーの値に設定される. '0x' から始まる 16 進表記のファンクションコードを文字列として 'function' キーの値に設定することも可能ですが、16 進表記とは別に整数表記と文字列表記を用いることも可能です。
'function' "キーに用いるファンクションコードの別称
コード | 名称 | 整数表記 | 文字列表記 |
---|---|---|---|
0x01 | Read Coils | 1 | read_coils |
0x02 | Read Discrete Input | 2 | read_discrete_input |
0x03 | Read Holding Registers | 3 | read_holding_registers |
0x04 | Read Input Registers | 4 | read_input_registers |
0x05 | Write Single Coil | 5 | write_single_coil |
0x06 | Write Single Register | 6 | write_single_register |
0x07 | Read Exception Status | 7 | read_exception_status |
0x09 | Write Single Discrete Input | 9 | write_single_input_register |
0x0a | Write Single Input Register | 10 | write_single_input_register |
0x0f | Write Multiple Coils | 15 | write_multiple_coils |
0x10 | Write Multiple Registers | 16 | write_multiple_register |
0x11 | Report Slave ID | 17 | report_slave_id |
0x13 | Write Multiple Discrete Input | 19 | write_muliple_discrete_input |
0x14 | Write Multiple Input Registers | 20 | write_multiple_input_registers |
0x16 | Mark Write Registers | 22 | mark_write_registers |
0x17 | Write and Read Registers | 23 | write_and_read_registers |
PD Handler Modbus Client
デフォルトパス
PD Handler Modbus Client に関連するファイルのデフォルトパスは次の通りです。
PD Handler Modbus Client に関連するファイルのデフォルトパス
パス名 | 説明 |
---|---|
/usr/sbin/pd_handler_modbus_client | 常駐実行オブジェクト(デーモン) |
/lib/systemd/system/pd_handler_modbus_client.service | Systemd Service ファイル |
/etc/init.d/pd_handler_modbus_client | RC ファイル |
/var/webui/config/pd_handler_modbus_client.conf | 設定ファイル |
/var/webui/upload_dir/pd_handler_modbus_client.csv | CSV ファイル |
/var/run/pd_handler_modbus_client.pid | PID ファイル |
設定ファイルの書式構文
構文
ルートオブジェクト
キー | データ型 | 説明 |
---|---|---|
csv_file | 文字列 | CSVファイルのパス名. デフォルト値は '/var/webui/upload_dir/pd-data/pd_handler_modbus_client.csv'. (MAXPATHLEN) |
clients | JSON obj | clients オブジェクト |
clients オブジェクト
clients オブジェクトは、PD Handler Modbus Client の動作を規定する設定オブジェクトです。 clients オブジェクトの配列数は、最大256 個です。 Modbus のプロトコル (TCP, RTC) に依存するオブジェクトとプロトコルに依存しない共通のオブジェクトがあります。
キー | データ型 | 説明 |
---|---|---|
enable | 論理値 | デフォルト値は false. |
localname | 文字列 | デバイスのローカル名. (32byte) |
bind | 文字列 | 制御メッセージを受け取るソケット名. 文字列の先頭が '@' の場合は abstract namespace と解釈する. 空の場合は、デフォルト値 '@/pd_handler/<localname>.sock' が設定される. (MAXPATHLEN) |
push_to | 文字列 | データの送り先ソケット名. 文字列の先頭が '@' の場合は abstract namespace と解釈する. 空の場合は、デフォルト値 '@/pd_repeater/<localname>.sock' が設定される. (MAXPATHLEN) |
buffer_size | 整数値 | データのバッファサイズ(byte). デフォルト値は 4096. |
receive | 論理値 | クラウドからメッセージを受け取る(下流方向制御)か否か. デフォルト値は false. |
writeout | 論理値 | push_to に指定するソケットに出力するか否か. デフォルト値は true. |
protocol | 文字列 | 接続プロトコル 'tcp' 又は 'rtu' を指定. デフォルト値は 'tcp'. |
interval | 整数値 | データを取得する間隔(sec). デフォルト値は 60. |
timeout | 整数値 | データを取得出来ない場合のタイムアウト(msec). デフォルト値は 5000. |
time_sync | 論理値 | 基準時刻制御モード. デフォルト値は false. |
base_time | 文字列 | 基準時刻制御モードの基準時刻を 'HH:MM' 形式で指定する. デフォルト値は '00:00'. |
node | 文字列 | 【TCP 接続】PLC 機器の IP アドレス. デフォルト値は '127.0.0.1'. |
port | 整数値 | 【TCP 接続】PLC 機器のポート番号. デフォルト値は 502. |
device | 文字列 | 【RTU接続】のデバイス名. デフォルト値は '/dev/ttyUSB1'. |
rtu_speed | 整数値 | 【RTU接続】のビットレート. デフォルト値は 115200. |
rtu_bits | 整数値 | 【RTU接続】のビット数. 8 又は 7. デフォルト値は 8. |
rtu_parity | 文字列 | 【RTU接続】のパリティ. 'none', 'even', 'odd' のいずれか. デフォルト値は'none'. |
rtu_stop | 整数値 | 【RTU接続】のストップビット. 1 又は 2. デフォルト値は 1. |
rtu_rts_delay | 整数値 | 【RTU接続】の RTS ディレイ値(usec). 0 の場合は自動設定される値. |
rtu_reset | 整数値 | 設定される値を越えて接続エラーが連続して発生した場合に 'device' キーに設定されるデバイスをリセットする. デフォルト値は 10. |
memo | 文字列 | 出力に付加されるユーザー定義文字列. (256byte) |
infos | JSON Object | 出力に付加されるユーザー定義オブジェクト |
acquisitions | JSON配列 | acquisitions オブジェクト |
acquisitions オブジェクト
キー | データ型 | 説明 |
---|---|---|
unit | 整数値 | PLC 機器の Modbus ユニットID. 1 ~ 247 又は 255 (TCP接続のみ). |
function | 文字列又は整数 | Modbus プロトコルのデータ読み出しファンクション名又はファンクション番号. 文字列の場合は、'read_coils', 'read_discrete input', 'read_holding_registers','read_input_registers' 又は'0x01'~'0x04'、 整数値の場合は文字列の順に 1~4. デフォルト値は 'read_holding_r_gisters'. |
data_type | 文字列又は整数 | 文字列の場合は 'uint16_t', 'int16_t', 'uint32lsb_t', 'int32lsb_t', 'uint32msb_t', 'int32msb_t' のいずれか. 整数値の場合は文字列の順に 0~5. 'function' が 'read_coils' 又は'read_discrete_input'の場合は、'uint16_t' に固定される. デフォルト値は'uint16 t'. |
address | 文字列又は整数 | 読み込み介しレジスタアドレスを指定する. 文字列の先頭に '0x' が付加されている場合は 16 進表記と解釈される. デフォルト値は '0x0'. |
number | 文字列又は整数 | 読み込むビット数またはレジスタ数、文字列の先頭に '0x' が付加されている場合は16 進表記と解釈される. data_type が'uint32lsb_t', 'int32ls_t', 'uint32msb_t', 'int32msb_t' の場合は、内部的に 2 倍の値で扱われる. デフォルト値は 1. |
利用可能なファンクションコード
PD Handler Modbus Client で利用可能なファンクションコードを示します。
PD Handler Modbus Client で利用可能なファンクションコード
コード | 名称 | ローカル | クラウド |
---|---|---|---|
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 | Mask Write Registers | ||
0x17 | Write And Read Registers | 〇 |
ローカルは、設定ファイルもしくは CSV ファイルに指定可能なファンクションコード、クラウドはクラウド側か指定可能なファンクションコードを意図する。
CSVファイル
/var/webui/config/pd_handler_modbus_client.conf の 'csv_file' キーに設定される CSV ファイルを置くことで、/var/webui/config/pd_handler_modbus_client.conf で設定された 1 つのデバイス番号に対し複数の取得 Modbus クライアントデバイスを設定することができます。
CSV ファイルの書式は、次の通りです。
PD Handler Modbus ClientのCSVファイルの書式
パラメータ | データの形式 | 説明 |
---|---|---|
デバイス番号 | 半角英数字 | WEB-UIにより割り振れたデバイス番号を記載する。 WEB-UIに設定されていないデバイス番号は無視される。先頭が '#' 又は '/' の場合は、コメント行として扱われる。 |
ユニットID | 半角数字 | PLC 機器の Modbus ユニット ID を設定する。 ユニットIDは、1~247 または 255を記載する。 |
読込方式 | 半角英数字 | 読込方式として次の何れかを記載する。
|
データタイプ | 半角英数字 | データタイプとして次の何れかを記載する。
|
読込開始アドレス | 半角英数字 | 読み込みたいデータが格納されている PLC 機器上の開始アドレスを設定する。 先頭が '0x' の場合は 16 進数と解釈される。 |
読込レジスタ数 | 半角数字 | 読み込みたいレジスタ数を記載する。 |
各パラメータの区切りはカンマ、先頭がシャープ '#' もしくはスラッシュ '/' の行はコメント行と見なされる。
CSV ファイルが読み込まれると clients オブジェクトに設定された Modbus クライアントデバイスは上書きされる。
そのため、CSV ファイルには client オブジェクトに設定した Modbus クライアントデバイスを含む取得したい全ての
Modbus クライアントデバイスを記載して下さい。
基準時刻制御
基準時刻制御は、特定の時刻にデータを取得する機能である。
clients オブジェクトの 'time_sysnc' キーを true に設定し、'interval' キーと 'base_time' キーで取得間隔と取得時刻を設定する。
基準時刻制御における「取得時間間隔」は300, 600, 900, 1800, 3600, 7200, 10800, 14400, 21600, 28800, 43200 と 86400の倍数に限られる。「取得時間間隔」としてこれら以外の値が設定される とPD Handler Modbus Client内で次のように扱われる。
基準時刻制御における取得時間間隔の設定と実動作値
取得時間間隔の設定値 | 実動作値 |
---|---|
0 ~ 599 | 300 |
600 ~ 899 | 600 |
900 ~ 1799 | 900 |
1800 ~ 3599 | 1800 |
3600 ~ 7199 | 3600 |
7200 ~ 10799 | 7200 |
10800 ~ 14399 | 10800 |
14400 ~ 21599 | 14400 |
21600 ~ 28799 | 21600 |
28800 ~ 43199 | 28800 |
43200 ~ 86399 | 43200 |
86400 ~ | 86400 の倍数 |
「基準時刻」とは動作の起点となる時刻で、例えば「取得時間間隔」を300とし、「基準時刻」を '00:01' とした場合、データの取得は 00:01, 00:06, 00:11 ... 00:56,'01:01 ... 23:56, 00:01 の定刻に行われる。
データの取得開始時刻は「基準時刻」に設定さた時刻そのものではなく、「基準時刻」と「取得時間間隔」から算定される直近の時刻となる。
例えば08:30に「基準時刻」'01:05'、「取得時間間隔」10800の設定が行われた場合、最初のデータ取得は10:05に行われ、以降13:05,16:05, 19:05, 22:05, 01:05 の順におこなわれる。
メッセージオブジェクト
入出力メッセージに用いられる JSON オブジェクトを示します。
PD Handler Modbus Client のメッセージオブジェクト
キー | 内容 | データ型 | 方向 | 備考 |
---|---|---|---|---|
time | データ取得日時 | 文字列 | 出力 | ISO8601拡張書式 |
prototocol | プロトコル | 文字列 | 入出力 | 'tcp' 又は 'rtu'. |
node | 取得先 IP アドレス | 文字列 | 入出力 | TCP接続時のみ. |
port | ポート番号 | 整数値 | 入出力 | TCP接続時のみ. |
device | デバイスファイル名 | 文字列 | 入出力 | RTU接続時のみ. |
unit | Modbus Unit ID | 整数値 | 入出力 | |
memo | メモ | 文字列 | 出力 | memo キーに設定された値. |
address | 読み/書き込みアドレス | 整数値 | 入出力 | |
number | 読み込むレジスタ数 | 整数値 | 入力 | |
function | Modbus function code | 整数値 | 入出力 | |
data_type | データの型 | 文字列 | 入出力 | 'uint16_t', 'int16_t', 'uint32lsb_t', 'int32lsb_t', 'uint32msb_t', 'int32msb_t' のいずれか. |
valuse | 読み/書き込み 整数配列 入出力 | |||
reply_to | リクエストメッセージのMD5 | 文字列 | 出力 | |
result | 制御ステータス | 文字列 | 出力 | 'done', 'not queuing', 'failed' のいずれか. |
reason | エラーの理由 | 文字列 | 出力 |
クラウドからの制御
クラウドから PD Repeater を介し制御(JSON)文字列を送ることで、接続されている PLC 機器のレジスタを読み書きすることができます。
制御文字列には、PLC 機器を特定するため clients オブジェクトの protocol, node, port, もしくは device と acquisitions オブジェクトの unit, function, data_type, addres, number および書き込みファンクションにおいては、valuse に値を記載する。
node, port, もしくは device は、設定ファイルに設定されているものでなければなりません。 物理的に接続されていても設定ファイルに設定されていない node, port, もしくは device を操作することはできません。
例えば、TCP 接続されている PLC 機器の入力レジスタを読み込むのであれば、その制御文字列は次のようになります。
これに対する、応答メッセージは、次のようになります。 :
ここで、reply_to は、制御文字列の MD5 です。
シリアル接続の PLC 機器の出力レジスタを書き込むのであれば、その制御文字列は次のようになります。
ここで data_type が 32bit の場合、values は上位/下位の 16 bitsに分割されて処理されるため、書き込む値の数が 1 であっても function は Write Multiple Registers を使用しなくてはなりません。
これに対する、応答メッセージは、次のようになります。
PD Handler Modbus Server
Modbusサーバーは次表に示すレジスタマップを保持し、PLC 機器からの Modbus プロトコルによる接続を待ち受け、PLC 機器の書き込み操作によりレジスタの値を更新すると共に更新されたレジスタとその値を PD Repeater を介してクラウドに送ります。
また、PD Repeater を介してクラウドから送られる制御メッセージ(JSON文字列)に基づきレジスタマップを読み書きすることもできます。
レジスタマップは、60 秒毎に更新があればレジスタマップファイル registers.map に出力される。
PD Handler Modbus Serverのレジスタマップ
レジスタ | 開始アドレス | サイズ |
---|---|---|
デジタル出力(Coils) | 0x000 | uint8_t × 2048 |
デジタル入力(Discrete Input) | 0x000 | uint8_t × 2048 |
レジスタ出力(Holdig Registers) | 0x000 | uint16_t × 2048 |
レジスタ入力(Input Registers) | 0x000 | uint16_t × 2048 |
デフォルトパス
PD Handler Modbus Server に関連するファイルのデフォルトパスは次の通りです。
PD Handler Modbus Server に関連するファイルのデフォルトパス
パス名 | 説明 |
---|---|
/usr/sbin/pd_handler_modbus_server | 常駐実行オブジェクト(デーモン) |
/lib/systemd/system/pd_handler_modbus_server.service | Systemd Service ファイル |
/etc/init.d/pd_handler_modbus_server | RC ファイル |
/var/webui/config/pd_handler_modbus_server.conf | 設定ファイル |
/var/webui/.modbus_server/registers.map | レジスタマップファイル |
/var/run/pd_handler_modbus_server.pid | PID ファイル |
設定ファイルの書式
構文
ルートオブジェクト
キー | データ型 | 説明 |
---|---|---|
registers_file | 文字列 | レジスタマップファイルのパス名. デフォルト値は '/var/webui/.modbus_server/pd-data/registers.map'. (MAXPATHLEN) |
servers | JSON obj | servers オブジェクト |
servers オブジェクト
server オブジェクトは、PD Handler Modbus Serverの動作を規定する設定オブジェクトです。 server オブジェクトの配列数は、最大8 個. Modbus のプロトコル(TCP, RTC)に依存するオブジェクトとプロトコルに依存しない共通のオブジェクトがあります。
キー | データ型 | 説明 |
---|---|---|
enable | 論理値 | デフォルト値は false. |
localname | 文字列 | デバイスのローカル名. (32byte) |
bind | 文字列 | 制御メッセージを受け取るソケット名. 文字列の先頭が '@' の場合は abstract namespace と解釈する. 空の場合は、デフォルト値 '@/pd_handler/<localname>.sock' が設定される. (MAXPATHLEN) |
push_to | 文字列 | データの送り先ソケット名. 文字列の先頭が '@' の場合は abstract namespace と解釈する. 空の場合は、デフォルト値 '@/pd_repeater/<localname>.sock' が設定される. (MAXPATHLEN) |
buffer_size | 整数値 | データのバッファサイズ(byte). デフォルト値は 4096. |
receive | 論理値 | クラウドからメッセージを受け取る(下流方向制御)か否か. デフォルト値は false. |
writeout | 論理値 | push_to に指定するソケットに出力するか否か. デフォルト値は true. |
protocol | 文字列 | 接続プロトコル 'tcp' 又は 'rtu' を指定. デフォルト値は 'tcp'. |
timeout | 整数値 | データを取得出来ない場合のタイムアウト(msec). デフォルト値は 5000. |
node | 文字列 | 【TCP 接続】PLC 機器からの接続を待ち受ける IP アドレス. デフォルト値は'0.0.0.0' |
port | 整数値 | 【TCP 接続】PLC 機器からの接続を待ち受ける TCP ポート番号. デフォルト値は 502 |
device | 文字列 | 【RTU接続】PLC 機器からの接続を待ち受けるシリアル接続デバイス名. デフォルト値は '/dev/ttyUSB1' |
rtu_speed | 整数値 | 【RTU接続】PLC 機器からの接続を待ち受けるシリアル接続ビットレート. デフォルト値は 115200 |
rtu_bits | 整数値 | 【RTU接続】PLC 機器からの接続を待ち受けるシリアル接続ビット数. 8 又は 7. デフォルト値は 8. |
rtu_parity | 文字列 | 【RTU接続】PLC 機器からの接続を待ち受けるシリアル接続パリティ. 'none', 'even', 'odd' のいずれか. デフォルト値は 'none'. |
rtu_stop | 整数値 | 【RTU接続】PLC 機器からの接続を待ち受けるシリアル接続ストップビット. 1 又は 2. デフォルト値は 1. |
rtu_rts_delay | 整数値 | 【RTU接続】PLC 機器からの接続を待ち受けるシリアル接続の RTS ディレイ値(usec). 0 の場合は自動設定される値. |
unit | 整数値 | 自身に付与する Modbus ユニット ID. 1 〜 247. |
memo | 文字列 | 出力に付加されるユーザー定義文字列. (256byte) |
infos | JSON Object | 出力に付加されるユーザー定義オブジェクト |
利用可能なファンクションコード
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 | Mask Write Registers | 〇 | |
0x17 | Write And Read Registers | 〇 | 〇 |
ローカルは、設定ファイルに指定可能なファンクションコード、クラウドはクラウド側か指定可能なファンクションコードを意図する。
メッセージオブジェクト
入出力メッセージに用いられる JSON オブジェクトを示します。
PD Handler Modbus Server のメッセージオブジェクト
キー | 内容 | データ型 | 方向 | 備考 |
---|---|---|---|---|
time | データ取得日時 | 文字列 | 出力 | ISO8601拡張書式 |
prototocol | プロトコル | 文字列 | 出力 | 'tcp' 又は 'rtu'. |
node | 取得先 IP アドレス | 文字列 | 出力 | TCP接続時のみ. |
port | ポート番号 | 整数値 | 出力 | TCP接続時のみ. |
device | デバイスファイル名 | 文字列 | 出力 | RTU接続時のみ. |
unit | Modbus Unit ID | 整数値 | 出力 | |
memo | メモ | 文字列 | 出力 | memo キーに設定された値. |
address | 読み/書き込みアドレス | 整数値 | 入出力 | |
number | 読み込むレジスタ数 | 整数値 | 入力 | |
function | Modbus function code | 整数値 | 入出力 | |
data_type | データの型 | 文字列 | 入出力 | 'uint16_t', 'int16_t', 'uint32lsb_t', 'int32lsb_t', 'uint32msb_t', 'int32msb_t' のいずれか. |
valuse | 読み/書き込み 整数配列 入出力 | |||
reply_to | リクエストメッセージのMD5 | 文字列 | 出力 | |
result | 制御ステータス | 文字列 | 出力 | 'done', 'not queuing', 'failed' のいずれか. |
reason | エラーの理由 | 文字列 | 出力 |
クラウドからからの制御
クラウドから PD Repeater を介し制御(JSON)文字列を送ることで、レジスタマップを読み書きすることができます。
acquisitions オブジェクトの function, data_type, address, number 相当のパラメタと、書き込みファンクションにおいては、valuse に値を記載する。
PD Handler Modbus Client とは異なり自身のレジスタマップを読み書きするため、node, port, unit もしくは device の設定は必要としません。
例えば、入力レジスタを読み込むのであれば、その制御文字列は次のようになります。
これに対する応答メッセージは、次のようになります。
ここで、reply_to は、制御文字列の MD5 です。
レジスタマップに node, port, もしくは device の区別はありませんが、PD Repeater からは異なる
localname を持つ個別のデバイスと位置付けられるため、応答メッセージには、制御文字列を受けだ
Unix ドメインソケットと対をなす node, port, もしくは device が付加される。
入力レジスタを書き込むのであれば、その制御文字列は次のようになります。
これに対する応答メッセージは、次のようになります。
レジスタマップのダンプと作成
レジスタマップファイル(/var/webui/.modbus_server/registers.map)の内容は、/usr/sbin/pd_handler_modbus_register コマンドを用いて CSV ファイルへダンプもしくは、CSV ファイルからレジスタマップファイルを作成することができます。
pd_handler_modbus_register コマンドのコマンドオプションを示します。
レジスタマップファイルの CSV ファイルへダンプ例を示します。
ここで、数値の並びは、
の順です。
値は全て符号なし 16 ビットです。
レジスタマップファイルはコメントを保持しないため、コメント欄は常に空欄となります。
CSV ファイルからレジスタマップファイルを作成する場合は、次のような CVS ファイルを用意し、pd_handler_modbus_register コマンドでレジスタマップファイルに変換する。
CSVファイルは、アドレス 0〜2047 の全てを用意する必要はなく、値を設定する必要があるアドレスだけで構いません。
値は全て符号なし 16 ビットで指定し、ディジタル出力値とディジタル入力値は必ず 0 又は 1とする。 記載されていないアドレスのレジスタ値は 0 がセットされる。 先頭が '#' もしくは '/' の行はコメントと見なされる。
pd_handler_modbus_register コマンドによるレジスタマップファイルへの変換方法は次の通りです。