コンテンツにスキップ
JelinaJelina Documentation技術ドキュメント
公式サイトに戻る

modbus-TCP 収集

説明:一般的な伝送媒体として、Modbus はシリアルポートとネットワークポート(光ファイバーを含む)を使用できます。RTU はシリアル通信、TCP はネットワークポート(Ethernet 通信)を使用します。Modbus 通信プロトコルはマスターデバイスとスレーブデバイス間の通信手順に従います。エッジゲートウェイの Modbus ドライバーは Master クライアント【マスター】(マスターデバイス)として能動的に Modbus スレーブへ問合せを送信し、スレーブは受信内容に応じた応答を作成してゲートウェイへ返します。

(1) CommBridge の【スマートツイン】を開き、左側で【デバイス接続】に切り替えます。

(2) Modbus クライアント【マスター】、データ処理、MQTT アップロードの各プラグインをプラグインワークスペースへ順にドラッグし、3 つのノードを作成します。

(3) Modbus クライアント【マスター】 → データ処理 → MQTT アップロードの順に 3 つのノードを接続します。

プロトコルには Modbus-TCP を選択します。

(1) Modbus クライアント【マスター】をダブルクリックし、【プランを追加】をクリックします。

(2) 接続設定を入力し、【次へ】をクリックします。

(3) 【グループを追加】をクリックし、グループ情報を入力して【確認】をクリックします。

(4) 【データを追加】をクリックし、データポイントを入力して【確認】をクリックします。

(5) 【完了】をクリックし、収集プランの追加を完了します。

(6) プランのスイッチをオンにし、【保存】をクリックします。

(1) 【デバイス接続】の【デプロイ】をクリックし、デプロイを完了します。

(2) 【スマートツイン】に切り替え、Modbus クライアント【マスター】ノードにマウスポインターを合わせると、ノード情報の一覧が表示されます。

(3) プランをクリックし、そのプランの各グループに含まれるデータポイントのリアルタイムデータと履歴データを確認します。

収集(処理前):

処理後(データ処理プラグインでプランを確認):

データポイントの読み書きモードが rw または wo で、データを正常に収集している場合にのみデータを変更できます。

(1) 対象データの【書き込み】をクリックし、データを設定して【確認】をクリックします。

(2) 履歴データを確認します。

パラメーター 説明 形式 例
プラン名 ユーザーが設定するプランの名前 必須 slave 収集
プロトコル Modbus プロトコル Modbus TCP、Modbus RTU Modbus TCP
同期収集 同期収集を行うかどうか。Yes または No Yes、No YES
収集周期 データ読み取りのポーリング周期。プラン全体の各グループがレジスターを読み取る間隔 数値、範囲:(100,2147483647] 2000
収集有効時間 グループ内のすべてのデータポイントを指定時間内に収集できなければ、そのグループのデータを破棄します。この時間にはフレーム遅延を含みます 数値、範囲:(0, 収集周期] 1000
タイムアウト プラン内の各グループで 1 回のデータ収集に許容する時間。超過すると、その回の読み取りデータを破棄します 数値、範囲:(0, 収集周期] 1000
最大一括レジスター数 連続するデータポイントを一括収集する際の最大レジスター数 自然数、範囲:[1,120] 120
フレーム遅延 2 回の収集の最小間隔。既定値は 0。収集時にタイムアウトが頻発する場合は適宜増やします。それ以外では変更不要です 単位:ミリ秒、数値、範囲:[0, 2147483647] 0
書き込みフレーム遅延 データ書き込み時の追加待機時間。書き込み処理が遅いデバイスで設定します。0 は追加遅延なし 単位:ミリ秒、数値、範囲:[0, 2147483647] 0
レジスター書き込み機能コード 保持レジスターへの書き込み機能コードを設定します Auto、06、10。下記の説明を参照 Auto
変化時収集 データ収集方式。No:変化時収集なし。SingleData:変化したデータポイントのみ送信。WholeGroup:グループ内のいずれかのデータが変化したらグループ全体を送信 No、SingleData、WholeGroup SingleData
変化時収集のリセット時間 データが変化しない状態がこの時間を超えたら、強制的にデータを 1 回送信します。0 にすると実行しません 単位:秒、数値、範囲:(0, 2147483647] 0
失敗時バックオフ 収集失敗後、バックオフ率に応じて次の収集までの時間を延長します。最大時間は収集周期 × 最大バックオフ率 Yes、No。下記の説明を参照 Yes
バックオフ率 失敗時の時間増加率。0 より大きく、1 以外であること 数値 2
最大バックオフ率 最大バックオフ時間の倍率。この倍率に達すると、それ以上変化しません 数値 16

同期収集:

  1. Yes:プラン内の全グループの収集周期、タイムアウト、収集有効時間を共通で設定します。適用範囲はプラン内のすべてのデータポイントです。
  2. No:グループごとに収集周期、タイムアウト、収集有効時間を設定します。

レジスター書き込み機能コード:Auto はレジスター 1 個の書き込みに 06、複数個の書き込みに 10 を使用します。06 はすべての書き込みに 06 を使用し、10 はすべての書き込みに 10 を使用します。

失敗時バックオフ:収集周期が 1 秒、バックオフ率が 2、最大バックオフ率が 16 の場合、収集失敗が続くと待機時間は 1s、2s、4s、8s、16s となります。同様に、収集周期が 10 秒、バックオフ率が 0.5、最大バックオフ率が 0.1 の場合は、10s、5s、2.5s、1.25s となります。収集が成功すると、最初の収集周期に戻ります。

バックオフ率が 1 より大きい場合、最大バックオフ率はバックオフ率より大きくする必要があります。バックオフ率が 1 より小さい場合、最大バックオフ率はバックオフ率より小さくする必要があります。

パラメーター 説明 形式 例
グループ名 ユーザーが設定するグループの名前 必須 グループ 1
Slave ID Modbus デバイスのアドレス。収集対象デバイスのスレーブアドレス 数値、範囲:(0,255] 1
IP Modbus デバイスの IP アドレス ドット付き 10 進表記のアドレスを入力 172.21.78.157
ポート Modbus デバイスのポート番号。既定値は 502 数値、範囲:(0,65535] 502
収集周期 データ読み取りのポーリング周期。個々のグループがレジスターを読み取る間隔 数値、範囲:(100,2147483647] 2000
収集有効時間 個々のグループに含まれる全データポイントの収集有効時間。時間内に全ポイントを読み取れなければ、そのグループの全データを破棄します 数値、範囲:(0, 収集周期] 1000
タイムアウト 個々のグループで 1 回の収集に許容する時間。超過すると、その回の読み取りデータを破棄します 数値、範囲:(0, 収集周期] 1000

注意: 接続設定の同期収集が No の場合、グループ内のデータポイント全体に適用されます。 Modbus には、1 回に読み取れるレジスター数の上限があります。連続レジスターのグループを 1 回で読み取る場合、Holding Register と Input Register は最大 120 ポイント、Discrete と Coils は最大 2000 ポイントです。

パラメーター 前提条件 説明 形式 例
データエイリアス データポイントの名前。同じグループ内で一意であること 必須。数字やアンダースコアで始めることはできず、空白も使用不可 M
アドレス レジスターアドレス。同じグループ内で重複不可 レジスターアドレス。同じグループ内で重複不可 数値、範囲:(0,2147483647) 0
レジスター種別 Modbus の操作コード Holding Register、Input Register、Discrete、Coils。下記の説明を参照 Holding Register
データ型 レジスター種別により決定 レジスターデータの元の型 uint16、int16、uint32、int32、float、boolean、combine、string、hex string。下記の説明を参照 uint16
バイトオーダー レジスター種別とデータ型により決定 1 バイトを超えるデータ型のメモリー内格納順序 AB、BA、ABCD、CDAB、BADC、DCBA。下記の説明を参照 AB
レジスター数 レジスター種別とデータ型により決定 データ型に必要なレジスターの数 下記の説明を参照 1
読み書きモード レジスター種別により決定 ro(読み取り専用)、rw(読み書き)、wo(書き込み専用)に対応 ro、rw、wo ro
計算 データのエイリアスを使用してユーザーが定義する式 {M}/10
オフセット データ型が bit バイトオーダーの調整後、上位から下位へのビットオフセット 数値、範囲:[0,15]

例えば温度プロパティをデバッグする場合、デバイスの温度プロパティのアドレスが 1 であれば、レジスターアドレスを 1 に設定します。

  1. レジスター種別が Discrete または Coils の場合、データ型の既定値は boolean です。
  2. データ型が uint16、int16、combine の場合は AB、BA、uint32、int32、float の場合は ABCD、CDAB、BADC、DCBA を選択できます。その他のデータ型にはバイトオーダーの設定はありません。
  3. レジスター種別が Discrete、Coils の場合、レジスター数の既定値は 1 です。データ型が uint16、int16、boolean の場合も既定値は 1、uint32、int32、float の場合は 2 です。combine の場合は 1、2 から選択できます。string、hex string の場合は手動で入力できます。

16 ビットの順序:

  1. AB:1 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は上位バイト、下位バイトの順(ビッグエンディアン)。
  2. BA:1 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は下位バイト、上位バイトの順(リトルエンディアン)。

32 ビットの順序:

  1. ABCD:2 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は上位バイト、下位バイトの順(ビッグエンディアン)。
  2. BADC:2 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は下位バイト、上位バイトの順(ビッグエンディアンのバイトスワップ)。
  3. CDAB:2 ワードのレジスター。下位ワード、上位ワードの順で、ワード内は上位バイト、下位バイトの順(リトルエンディアンのバイトスワップ)。
  4. DCBA:2 ワードのレジスター。下位ワード、上位ワードの順で、ワード内は下位バイト、上位バイトの順(リトルエンディアン)。

6. Modbus プロトコルの関連パラメーター

Section titled “6. Modbus プロトコルの関連パラメーター”

レジスター種別によって、データ型、レジスター数、読み書きモードが決まります。

0x、1x、3x、4x は Modbus プロトコルで定められたアドレス範囲です。

レジスター種別 名前 レジスター PLC アドレス レジスタープロトコルアドレス 読み書き 説明
Holding Register 保持レジスター (4x) 40001-49999 0000H-FFFFH 読み書き。読み取り:0x03、書き込み:0x06 出力パラメーターまたは保存パラメーター。コントローラーの動作時に設定するパラメーター
Input Register 入力レジスター (3x) 30001-39999 0000H-FFFFH 読み取り専用、0x04 入力パラメーター。コントローラーの動作時に外部デバイスから取得するパラメーター
Discrete ディスクリート入力状態 (1x) 10001-19999 0000H-FFFFH 読み取り専用、0x02 入力ポート。外部設定により入力状態が変化します
Coils コイル状態 (0x) 00001-09999 0000H-FFFFH 読み書き。読み取り:0x01、単一コイル書き込み:0x05、複数コイル書き込み:0x0F 出力ポート。出力状態の設定と、該当ビットの出力状態の読み取りが可能

データ型は、元のデータ型、レジスター内の上位・下位バイトの入れ替え、レジスター順序の入れ替えの 3 つによって決まります。各英字は 1 バイトを表します。

  1. 元のデータ型:uint16、int16、uint32、int32、float、boolean、combine、string、hex string。
  2. レジスター内の上位・下位バイトの入れ替え:16 ビットデータの前後の 8 ビットを入れ替えます。16 ビットでは正順(AB)と逆順(BA)があり、上位優先が正順、下位優先が逆順です。
  3. レジスター順序の入れ替え:32 ビットデータを 16 ビット単位で入れ替えます。例:ABCD と CDAB。

元のデータ型:

名前 説明 レジスター数
uint16 16 ビット符号なし整数 1
int16 16 ビット符号付き整数 1
uint32 32 ビット符号なし整数 2
int32 32 ビット符号付き整数 2
float 32 ビット浮動小数点数 2
combine 1、2
boolean ブール値 1
string ASCII 文字列 任意に設定可能
hex string 16 進文字列 任意に設定可能

上位・下位の順序:

プロパティ値 説明
AB 2 バイトのレジスター。上位バイト、下位バイトの順(正順)
BA 2 バイトのレジスター。下位バイト、上位バイトの順(逆順)
ABCD 2 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は上位バイト、下位バイトの順(ビッグエンディアン)
BADC 2 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は下位バイト、上位バイトの順(ビッグエンディアンのバイトスワップ)
CDAB 2 ワードのレジスター。下位ワード、上位ワードの順で、ワード内は上位バイト、下位バイトの順(リトルエンディアンのバイトスワップ)
DCBA 2 ワードのレジスター。下位ワード、上位ワードの順で、ワード内は下位バイト、上位バイトの順(リトルエンディアン)