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

Modbusクライアントは、Modbusプロトコルを用いてPLC機器から定期的にデータを読み込み(ポーリングを行い)、 PD Repeater を介してクラウドに送ります。
また、PD Repeaterを介してクラウドから送られる制御メッセージ(JSON文字列)に基づきPLC機器にModbusプロトコルを用いて 接続しデータを読み書きすることもできます。
WEB UIの「IoTデータ」→「送受信設定」タブの「Modbusクライアントデバイス設定」メニューより、 Modbusクライアントデバイスの設定を行うことが出来ます。
Modbusクライアントデバイスを利用するためには、WEB UIの「サービス」→「基本」→「Modbus(C)登録」タブより、 サービス機能の基本設定としてModbusクライアントデバイスが登録されている必要があります。
サービス機能の基本設定については、WEB UIセットアップガイドサービス機能 を参照して下さい。
「Modbusクライアントデバイス設定」メニューが表示されていない場合は、IoTデータ制御のアプリ設定 を参照し、 PD Handler MODBUS Clientを「使用する」に設定して下さい。
../../../_images/modbus_client_init.png
登録済のModbusクライアントデバイスが存在している場合、初期状態では上図のようになっています。(デバイスが1個登録されている場合です。)
Modbusクライアントデバイスとは、PLC機器そのものではなく、対象となるPLC機器への接続方法の他、 データを取得するための「読込方法」や「読込開始アドレス」、「読込レジスタ数」等の設定の組み合わせを意図します。
デバイス毎に送信対象項目にて「送信する」を選択すると各設定項目が表示されます。
送信対象一括有効、送信対象一括無効ボタンにて全ての登録済のデバイスの送信対象を制御できます。

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

../../../_images/modbus_client_tcp.png

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

../../../_images/modbus_client_rtu.png

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

Modbusクライアントデバイス設定の設定項目(1/2)

設定項目

説明

デバイス番号

OpenBlocksシリーズのWEB UI内で管理している番号です。変更はできません。

データ間引間隔

データを間引くための入力データを受け取らない時間をmsec単位で設定します。 0の場合、間引きは行われません。

バッファーサイズ

データの最大サイズを設定します。単位はバイトです。

受信設定

PD Repeaterを介してクラウドからの制御メッセージを受ける下流方向制御を行うか否かを選択します。

ユーザーメモ

登録されたデバイスにて設定されたメモ情報を表示します。

固定情報付与(JSON)

データに付加する静的情報をJSON文字列で設定します。

読込方法

デジタル出力(ビット)、デジタル入力(ビット)、レジスタ出力、レジスタ入力から選択します。 「デジタル出力」または「デジタル入力」を選んだ場合は、0または1の並びが出力されます。

データタイプ

読込方法を「レジスタ出力」、「入力レジスタ」を選択した際に、出力のデータタイプを以下から選択します。

  • 符号なし16ビット整数

  • 符号付き16ビット整数

  • 符号なし32ビット整数/リトルエンディアン

  • 符号付き32ビット整数/リトルエンディアン

  • 符号なし32ビット整数/ビッグエンディアン

  • 符号付き32ビット整数/ビッグエンディアン

読込開始アドレス

読み込みたいデータが格納されているPLC機器上の開始アドレスを設定します。

読込レジスタ数

「読込方法」として「デジタル出力」または「デジタル入力」が選択されている場合は、 読み込まれるビット数と解釈されます。 「開始アドレス」に設定されるアドレスから読み込むレジスタ数もしくビット数を設定します。

ユニットID

PLC機器のModbus ユニットIDを設定します。 ユニットIDは、1~247または255の数値です。

Modbusクライアントデバイス設定の設定項目(2/2)

設定項目

説明

取得時間間隔[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機器からデータを取得する際のタイムアウトを設定します。単位はミリ秒です。

使用プロトコル

「TCP」、「RTU」のいずれかを選択します。「TCP」はネットワーク、「 RTU」はシリアルです。

接続アドレス

接続するPLC機器のIPアドレスを設定します。

接続ポート

接続するPLC機器のTCPポート番号を設定します。 デフォルト値は、502です。

読込デバイスファイル

PLC機器を接続するシリアルポートのデバイスファイル名を設定します。

ボー・レート

シリアルポートのボー・レートを選択します。

パリティビット

シリアルポートのパリティビットを選択します。

データビット

シリアルポートのデータビット数を選択します。

ストップビット

シリアルポートのストップビット数を選択します。

タイムアウト許容回数

設定された回数を超えて、タイムアウトが連続して場合にシリアルポートをリセットします。 デフォルト値は、10です。

送信先設定

“使用する”を選択した送信先に対してチェックボックスが選択できるようになります。 チェックを付けた送信先に対して、送信を行います。 チェックをつけると送信先固有の設定項目が表示されます。 送信先固有の設定については、送受信先毎の設定 を参照して下さい。



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

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

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

デバイス番号,ユニットID,読込方式,データタイプ,読込開始アドレス,読込レジスタ数
PD Handler Modbus ClientのCSVファイルの書式

パラメータ

データの形式

説明

デバイス番号

半角英数字

WebUIにより割り振れたデバイス番号を記載します。

WebUIに設定されていないデバイス番号は無視されます。

先頭が'#'または”/”の場合は、コメント行として扱われます。

ユニット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進数と解釈されます。

読込レジスタ数

半角数字

読み込みたいレジスタ数を記載します。

注釈

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

記載例

#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,31read_,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

注釈

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



■ 基準時刻制御

基準時刻制御は、特定の時刻にデータを取得する機能です。
「Modbusクライアントデバイス設定」メニューの「基準時刻制御」を「有効」にし、 「取得時間間隔[sec]」と「基準時刻」で取得間隔と取得時刻を設定します。
基準時刻制御における「取得時間間隔」は 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の順におこなわれます。