【公式】HULFT IoT EdgeStreaming 逆引きリファレンス_2021年7月1日_初版発行

Modbus TCP対応機器から入力されるデータを一定間隔で送信したい

Modbus TCP対応機器から入力されるデータを指定した間隔で送信する処理について説明します。

この処理で以下のような出力結果を得られます。

Modbus TCP対応機器の入力間隔より長い間隔で、スクリプト変数の値を外部のシステムに送信する。

処理の説明

Modbus TCP対応機器から入力されるデータを、入力間隔とは異なる間隔を指定して外部に送信することができるスクリプトを作成します。

たとえば、センサーから0.01秒間隔でデータが入力される場合、同じ間隔で外部にデータを送信しようとするとデータ量が膨大になるという懸念が生じます。その対策として、以下のストリームを1つのスクリプト上に作成します。

  • HULFT IoT EdgeStreamingの「スクリプト変数」を使用してModbus TCP対応機器からの入力をスクリプト変数に受けます。

  • Modbus TCP対応機器の入力間隔より長い間隔で、スクリプト変数の値を外部のシステムに送信します。

= 備考 =

取得した値を外部システムにどれくらいの間隔で送信すればよいかは、後続のシステムでデータの可視化および分析を行う際に必要となるデータの粒度に応じて決定します。

ポイントとなる機能

保持レジスタ読み取り

保持レジスタ読み取りのプロパティを設定します。

ツールパレットの産業用機器-Modbus-保持レジスタ読み取りで設定できます。

定期イベント

イベントを実行するインターバルを設定します。

ツールパレットの基本-基本-定期イベントで設定できます。

送信処理

送信処理のプロパティを設定します。

ツールパレットの汎用プロトコル-HTTP-送信で設定できます。

操作手順

ここでは、1分間隔で外部システムに温度データを送信するスクリプトを作成します。

1. Modbus TCP対応機器から保持レジスタの値を読み取るオペレーションを配置します。

  1. ツールパレットから産業用機器-Modbus-保持レジスタ読み取りをスクリプトキャンバスにドラッグ&ドロップします。

    新規保持レジスタ読み取り処理ダイアログが表示されます。

  2. Modbus TCP対応機器の保持レジスタから値を読み取る設定をします。

    名前

    任意の値(半角英数字、アンダーバー)を入力

    接続先

    接続先のリスト内の追加ボタンをクリックし、新規Modbus TCP接続設定ダイアログを表示

    ホスト

    接続したいModbus TCP対応機器のホスト名またはIPアドレスを入力

    ポート

    接続したいModbus TCP対応機器のポート番号を入力

    タイムアウト

    接続したいModbus TCP対応機器のタイムアウト値を入力

    データ保持形式

    接続したいModbus TCP対応機器のデータ保持形式を選択

    完了ボタンをクリックします。

    新規保持レジスタ読み取り処理ダイアログに戻ります。

    スレーブID

    接続したいModbus TCS対応機器のスレーブIDを入力

    インターバル

    保持レジストリから値を取得する間隔を入力

    ここでは「0.01」を入力

    開始アドレス

    読み取りたい保持レジスタの開始アドレスを入力

    レジスタ数

    データ型を設定することで自動的に設定

    データ型

    保持レジスタに設定されている値の型を選択

    ここでは温度データを想定しているので単精度実数を選択

    名前

    その行で取得できるデータを表す任意の値を設定

    = 備考 =

    名前は画面上の表示にのみ使用されます。

  3. 完了ボタンをクリックします。

    保持レジスタ読み取り処理のアイコンがスクリプトキャンバスに表示されます。

2. Modbus TCP対応機器から取得した値を一度保存し、外部に送信する際に参照するためのスクリプト変数を作成します。

  1. プロジェクトエクスプローラでスクリプトを右クリックし、メニューから新規作成-スクリプト変数を選択します。

    新規スクリプト変数ダイアログが表示されます。

  2. スクリプト変数を設定します。

    変数名

    任意の値(半角英数字、アンダーバー)を入力

    変数型

    保存または参照したいデータ型を選択

    ここでは温度センサーから得られる温度データを保存または参照のため、浮動小数点数型を選択

    初期値

    スクリプト変数の初期値を入力

    ここでは「0」を入力

  3. 完了ボタンをクリックします。

    スクリプト変数がスクリプトの直下に表示されます。

3. Mapperを設定します。

  1. ツールパレットから変換-基本-マッピングをスクリプトキャンバスにドラッグ&ドロップします。

  2. 保持レジスタ読み取り処理アイコンをmapping_1アイコンにドラッグ&ドロップします。

    保持レジスタ読み取り処理からマッピングにストリームフローが引かれました。

4. スクリプト変数への値を保存します。

  1. マッピングのアイコンをダブルクリックし、Mapper エディタを開きます。

  2. 入力元の「hr_05000_05001」を出力先の「temperature」へドラッグ&ドロップします。

    要素「hr_05000_05001」とスクリプト変数「temperature」がマッピングリンクでつながります。

    これで「mapping_1」の設定ができました。

 

ここまでの手順で、Modbus TCP対応機器の保持レジスタから得られる温度をスクリプト変数に保存するストリーム処理を作成しました。

5. スクリプト変数から一定間隔で値を取得し、REST APIを持つ外部システムに送信するストリーム処理を作成します。

  1. ツールパレットから基本-基本-定期イベントをスクリプトキャンバスにドラッグ&ドロップします。

    新規定期イベント処理ダイアログが表示されます。

  2. 外部システムにデータを送信する間隔を設定します。

    名前

    任意の値(半角英数字、アンダーバー)を入力

    インターバル

    外部システムに値を送信する間隔を入力(単位:秒)

    ここでは「60」を入力

  3. 完了ボタンをクリックします。

    定期イベント処理のアイコンがスクリプトキャンバスに配置されます。

  4. ツールパレットから汎用プロトコル-HTTP-送信をスクリプトキャンバスにドラッグ&ドロップします。

    新規送信処理ダイアログが表示されます。

  5. 外部システムのREST APIの設定を行います。

    名前

    任意の値(半角英数字、アンダーバー)を入力

    入力データ

    先ほど配置した定期イベント処理のアイコン名を選択

    URL

    REST APIのURIを設定

    メソッド

    REST APIのHTTPメソッド(POSTまたはPUT)を設定

    ヘッダー

    REST APIへリクエストを送信する際に必要となるリクエストヘッダを設定

  6. 完了ボタンをクリックします。

    送信処理のアイコンがスクリプトキャンバスに配置されます。

    定期イベント処理のアイコンと送信処理のアイコンがストリームフロー(橙色の破線)でつながります。

  7. 定期イベント処理と送信処理をつなぐストリームフローを右クリックし、メニューからマッピングの追加を選択します。

    定期イベント処理と送信処理の間にMapperが配置されます。

  8. 先ほど配置されたmapping_2アイコンをダブルクリックし、Mapperエディタを開きます。

  9. 出力先で、送信処理の入力スキーマを設定します。

    = 備考 =

    設定方法は、「収集したファイルのデータをHTTPで転送したい」を参照してください。

    ここでは、スキーマを以下のように設定します。

6. 入力元temperature出力先temperatureへドラッグ&ドロップします。

7. スクリプトを保存します。

スクリプトの保存方法については「ファーストステップガイド」を参照してください。

 

 

【公式】HULFT IoT EdgeStreaming 逆引きリファレンス_2021年7月1日_初版発行