Modbusクライアント設定

Modbusクライアントは、Modbusプロトコルを用いてPLC機器から定期的にデータを読み込み(ポーリングを行い)、PD Repeater を介してクラウドに送ります。
また、PD Repeaterを介してクラウドから送られる制御メッセージ(JSON文字列)に基づきPLC機器にModbusプロトコルを用いて接続しデータを読み書きすることもできます。
WEB-UIのIoTデータ送受信設定タブのModbusクライアントデバイス設定メニューより Modbusクライアントデバイスの設定を行うことが出来ます。
Modbusクライアントデバイスを利用するためには、WEB-UIのサービス基本Modbus(C)登録タブより、サービス機能の基本設定としてModbusクライアントデバイスが登録されている必要があります。サービス機能の基本設定については、スタートアップガイドサービス機能を参照して下さい。
Modbusクライアントデバイス設定メニューが表示されていない場合は、アプリ設定を参照し、PD Handler MODBUS Clientを使用するに設定して下さい。

登録済のModbusクライアントデバイスが存在している場合、初期状態では上図のようになっています。(デバイスが1個登録されている場合です。)
Modbusクライアントデバイスとは、PLC機器そのものではなく、対象となるPLC機器への接続方法の他、データを取得するための読込方法読込開始アドレス読込レジスタ数等の設定の組み合わせを意図します。

デバイス毎に送信対象項目にて送信するを選択すると各設定項目が表示されます。
送信対象一括有効、送信対象一括無効ボタンにて全ての登録済のデバイスの送信対象を制御できます。

送信するを選択すると各設定項目が次のように表示されます。

使用プロトコルとしてTCP(ネットワーク)を選択した場合の表示

使用プロトコルとしてRTU(シリアル)を選択した場合の表示

Modbusクライアントデバイス設定の設定項目

設定項目説明
デバイス番号OpenBlocksシリーズのWEB-UI内で管理している番号です。変更はできません。
データ間引間隔データを間引くための入力データを受け取らない時間をmsec単位で設定します。
0の場合、間引きは行われません。
バッファーサイズデータの最大サイズを設定します。単位はバイトです。
受信設定PD Repeaterを介してクラウドからの制御メッセージを受ける下流方向制御を行うか否かを選択します。
ユーザーメモ登録されたデバイスにて設定されたメモ情報を表示します。
固定情報付与(JSON)データに付加する静的情報をJSON文字列で設定します。
読込方法デジタル出力(ビット)デジタル入力(ビット)レジスタ出力レジスタ入力から選択します。
デジタル出力またはデジタル入力を選んだ場合は、0または1の並びが出力されます。
データタイプ読込方法をレジスタ出力入力レジスタを選択した際に、出力のデータタイプを以下から選択します。
  • 符号なし16ビット整数
  • 符号付き16ビット整数
  • 符号なし32ビット整数/リトルエンディアン
  • 符号付き32ビット整数/リトルエンディアン
  • 符号なし32ビット整数/ビッグエンディアン
  • 符号付き32ビット整数/ビッグエンディアン
読込開始アドレス読み込みたいデータが格納されているPLC機器上の開始アドレスを設定します。
読込レジスタ数読込方法としてデジタル出力またはデジタル入力が選択されている場合は、読み込まれるビット数と解釈されます。開始アドレスに設定されるアドレスから読み込むレジスタ数もしくビット数を設定します。
ユニットIDPLC機器のModbus ユニットIDを設定します。ユニットIDは、1~247または255の数値です。
取得時間間隔[sec]PLCデバイスからデータを取得する時間間隔を数字で設定します。単位は秒です。
後述の基準時刻制御を使用する場合、時間間隔は以下の値へと内部的に変更されます。
  • 86400[sec]×整数倍
  • 43200[sec]
  • 28800[sec]
  • 21600[sec]
  • 14400[sec]
  • 10800[sec]
  • 7200[sec]
  • 3600[sec]
  • 1800[sec]
  • 900[sec]
  • 600[sec]
  • 300[sec]
基準時刻制御特定の時刻にデータを取得する場合、本機能を有効とし基準時刻を設定しください。
基準時刻特定の時刻にデータを取得する際の基準時刻を設定します。HH:MM形式となります。
タイムアウト[ms]PLC機器からデータを取得する際のタイムアウトを設定します。単位はミリ秒です。
使用プロトコルTCPRTUのいずれかを選択します。TCPはネットワーク、RTUはシリアルです。
接続アドレス接続するPLC機器のIPアドレスを設定します。
接続ポート接続するPLC機器のTCPポート番号を設定します。デフォルト値は、502です。
読込デバイスファイルPLC機器を接続するシリアルポートのデバイスファイル名を設定します。
ボー・レートシリアルポートのボー・レートを選択します。
パリティビットシリアルポートのパリティビットを選択します。
データビットシリアルポートのデータビット数を選択します。
ストップビットシリアルポートのストップビット数を選択します。
タイムアウト許容回数設定された回数を超えて、タイムアウトが連続して場合にシリアルポートをリセットします。 デフォルト値は、10です。
送信先設定使用するを選択した送信先に対してチェックボックスが選択できるようになります。
チェックを付けた送信先に対して、送信を行います。
チェックをつけると送信先固有の設定項目が表示されます。送信先固有の設定については、送受信先毎の設定を参照して下さい。

CSVファイルを用いた取得Modbusクライアントデバイスの拡張

WEB-UIのシステムファイル管理タブより、 /var/webui/upload_dir にファイル名 pd_handler_modbus_client.csv のCSVファイルを置くことで、WEB-UIで設定された1つのデバイス番号に対し複数の取得Modbusクライアントデバイスを設定することができます。

CSVファイルの書式は、次の通りです。

デバイス番号,ユニットID,読込方式,データタイプ,読込開始アドレス,読込レジスタ数

PD Handler Modbus ClientのCSVファイルの書式

パラメータデータの形式説明
デバイス番号半角英数字WEB-UIにより割り振れたデバイス番号を記載します。WEB-UIに設定されていないデバイス番号は無視されます。
先頭が '#'または'/'の場合は、コメント行として扱われます。
ユニットID半角数字PLC機器のModbusユニットIDを設定します。
ユニットIDは、1~247または255を記載します。
読込方式半角英数字読込方式として次の何れかを記載します。
デジタル出力 :
'read_coils' 又は '0x01' 又は '1'
デジタル入力 :
'read_discrete_input' 又は '0x02' 又は '2'
レジスタ出力 :
'read_holding_registers' 又は '0x03' 又は '3'
レジスタ入力 :
'read_input_registers' 又は '0x04' 又は '4'
データタイプ半角英数字データタイプとして次の何れかを記載します。
符号なし16ビット整数 :
'uint16_t' 又は '0'
符号付き16ビット整数 :
'int16_t' 又は '1'
符号なし32ビット整数/リトルエンディアン :
'uint32lsb_t' 又は '2'
符号付き32ビット整数/リトルエンディアン :
'int32lsb_t' 又は '3'
符号なし32ビット整数/ビッグエンディアン :
'uint32msb_t' 又は '4'
符号付き32ビット整数/ビッグエンディアン :
'int32msb_t' 又は '5'
読込開始アドレス半角英数字読み込みたいデータが格納されているPLC機器上の開始アドレスを設定します。
先頭が '0x' の場合は16進数と解釈されます。
読込レジスタ数半角数字読み込みたいレジスタ数を記載します。
info

各パラメータの区切りはカンマ、先頭がシャープ '#' もしくはスラッシュ '/' の行はコメント行と見なされます。

記載例

#localname,unit_id,read_function,data_type,read_addr,read_registers
mdcdev_0000001,15,read_coils,uint16_t,0x130,37
mdcdev_0000001,15,read_discrete_input,uint16_t,0x1c4,22
mdcdev_0000001,15,read_holding_registers,uint16_,0x160,3
mdcdev_0000001,16,read_input_registerss,uint32lsb_t,0x108,1
mdcdev_0000002,17,read_coils,uint16_t,0x130,37
mdcdev_0000002,18,read_discrete_input,u_int16,0x1c4,22
mdcdev_0000002,19,read_holding_registers,int16,0x160,3
mdcdev_0000002,20,read_input_registers,int32lsb,0x108,1
mdcdev_0000003,30,read_coils,u_int16,0x130,37
mdcdev_0000003,30,read_discrete_input,u_int16,0x1c4,22
mdcdev_0000003,31,read_holding_registers,u_int16,0x160,3
mdcdev_0000003,31,read_input_registers,u_int32msb,0x108,1
mdcdev_0000004,32,read_coils,u_int16,0x130,37
mdcdev_0000004,32,read_discrete_input,u_int16,0x1c4,22
mdcdev_0000004,33,read_holding_registers,int16,0x160,3
mdcdev_0000004,33,read_input_registers,int32msb,0x108,1
info

CSVファイルが読み込まれるとWEB-UIで設定されたModbusクライアントデバイスは上書きされます。
そのため、CSVファイルにはWEB-UIで設定したModbusクライアントデバイスを含む取得したい全てのModbusクライアントデバイスを記載して下さい。

基準時刻制御

基準時刻制御は、特定の時刻にデータを取得する機能です。
Modbusクライアントデバイス設定メニューの基準時刻制御有効にし、取得時間間隔[sec]基準時刻で取得間隔と取得時刻を設定します。
基準時刻制御における取得時間間隔は 300, 600, 900, 1800, 3600, 7200, 10800, 14400, 21600, 28800, 43200 と 86400 の倍数に限られます。
取得時間間隔としてこれら以外の値が設定されるとPD Handler Modbus Client内で次のように扱われます。

基準時刻制御における取得時間間隔の設定と実動作値

取得時間間隔の設定値実動作値
0 ~ 599300
600 ~ 899600
900 ~ 1799900
1800 ~ 35991800
3600 ~ 71993600
7200 ~ 107997200
10800 ~ 1439910800
14400 ~ 2159914400
21600 ~ 2879921600
28800 ~ 4319928800
43200 ~ 8639943200
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の順におこなわれます。