- Jelina 概要
- CommBridge
- データ収集
modbus-TCP 収集
説明:一般的な伝送媒体として、Modbus はシリアルポートとネットワークポート(光ファイバーを含む)を使用できます。RTU はシリアル通信、TCP はネットワークポート(Ethernet 通信)を使用します。Modbus 通信プロトコルはマスターデバイスとスレーブデバイス間の通信手順に従います。エッジゲートウェイの Modbus ドライバーは Master クライアント【マスター】(マスターデバイス)として能動的に Modbus スレーブへ問合せを送信し、スレーブは受信内容に応じた応答を作成してゲートウェイへ返します。
1. ノードの作成
Section titled “1. ノードの作成”(1) CommBridge の【スマートツイン】を開き、左側で【デバイス接続】に切り替えます。

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

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

2. プランの作成
Section titled “2. プランの作成”プロトコルには
Modbus-TCPを選択します。
(1) Modbus クライアント【マスター】をダブルクリックし、【プランを追加】をクリックします。

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

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

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

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

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

3. 結果の確認
Section titled “3. 結果の確認”(1) 【デバイス接続】の【デプロイ】をクリックし、デプロイを完了します。

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

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

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

4. データの書き込み
Section titled “4. データの書き込み”データポイントの読み書きモードが
rwまたはwoで、データを正常に収集している場合にのみデータを変更できます。
(1) 対象データの【書き込み】をクリックし、データを設定して【確認】をクリックします。

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

5. 設定項目の説明
Section titled “5. 設定項目の説明”| パラメーター | 説明 | 形式 | 例 |
|---|---|---|---|
| プラン名 | ユーザーが設定するプランの名前 | 必須 | 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 |
同期収集:
- Yes:プラン内の全グループの収集周期、タイムアウト、収集有効時間を共通で設定します。適用範囲はプラン内のすべてのデータポイントです。
- 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 より小さい場合、最大バックオフ率はバックオフ率より小さくする必要があります。
グループの追加
Section titled “グループの追加”| パラメーター | 説明 | 形式 | 例 |
|---|---|---|---|
| グループ名 | ユーザーが設定するグループの名前 | 必須 | グループ 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 ポイントです。
データの追加
Section titled “データの追加”| パラメーター | 前提条件 | 説明 | 形式 | 例 |
|---|---|---|---|---|
| データエイリアス | データポイントの名前。同じグループ内で一意であること | 必須。数字やアンダースコアで始めることはできず、空白も使用不可 | 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 に設定します。
- レジスター種別が Discrete または Coils の場合、データ型の既定値は boolean です。
- データ型が uint16、int16、combine の場合は AB、BA、uint32、int32、float の場合は ABCD、CDAB、BADC、DCBA を選択できます。その他のデータ型にはバイトオーダーの設定はありません。
- レジスター種別が Discrete、Coils の場合、レジスター数の既定値は 1 です。データ型が uint16、int16、boolean の場合も既定値は 1、uint32、int32、float の場合は 2 です。combine の場合は 1、2 から選択できます。string、hex string の場合は手動で入力できます。
16 ビットの順序:
- AB:1 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は上位バイト、下位バイトの順(ビッグエンディアン)。
- BA:1 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は下位バイト、上位バイトの順(リトルエンディアン)。
32 ビットの順序:
- ABCD:2 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は上位バイト、下位バイトの順(ビッグエンディアン)。
- BADC:2 ワードのレジスター。上位ワード、下位ワードの順で、ワード内は下位バイト、上位バイトの順(ビッグエンディアンのバイトスワップ)。
- CDAB:2 ワードのレジスター。下位ワード、上位ワードの順で、ワード内は上位バイト、下位バイトの順(リトルエンディアンのバイトスワップ)。
- DCBA:2 ワードのレジスター。下位ワード、上位ワードの順で、ワード内は下位バイト、上位バイトの順(リトルエンディアン)。
6. Modbus プロトコルの関連パラメーター
Section titled “6. Modbus プロトコルの関連パラメーター”レジスター種別によって、データ型、レジスター数、読み書きモードが決まります。
レジスター種別
Section titled “レジスター種別”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 バイトを表します。
- 元のデータ型:uint16、int16、uint32、int32、float、boolean、combine、string、hex string。
- レジスター内の上位・下位バイトの入れ替え:16 ビットデータの前後の 8 ビットを入れ替えます。16 ビットでは正順(AB)と逆順(BA)があり、上位優先が正順、下位優先が逆順です。
- レジスター順序の入れ替え: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 ワードのレジスター。下位ワード、上位ワードの順で、ワード内は下位バイト、上位バイトの順(リトルエンディアン) |