入力ポートでのデータ集約
複数コンポーネントからナノ秒単位でわずかに異なるタイムスタンプで届くデータを、指定したウィンドウ幅(ミリ秒)の区間ごとに1つのレコードへまとめて書き込む。
プロジェクトファイル
Section titled “プロジェクトファイル”本事例で使用しているプロジェクトファイルです。通常版と、PLCコレクタをシミュレーションモードで設定した確認用ファイルを用意しています。
※SpeeDBee Synapseバージョン4.9.9以降でインポートできます。
このページで分かること
Section titled “このページで分かること”- 複数コンポーネントのデータが別々のレコードになる理由
- 入力ポート設定の集約機能を使ってデータを1つのレコードにまとめる方法
PLC-AとPLC-Bに接続したPLCコレクタで、各PLCからtemperatureとpressureを収集し、CSVシリアライザの同じ入力ポートへ入力する。入力されたデータを設定したウィンドウ幅で区切り、各ウィンドウ区間内のデータを1つのレコードにまとめて出力する。
| コンポーネント | データ | アドレス | 内容 |
|---|---|---|---|
| PLCコレクタ(PLC-A) | temperature | D0100 | 温度(℃) |
| PLCコレクタ(PLC-A) | pressure | D0101 | 圧力(kPa) |
| PLCコレクタ(PLC-B) | temperature | D0100 | 温度(℃) |
| PLCコレクタ(PLC-B) | pressure | D0101 | 圧力(kPa) |
PLC-AとPLC-Bで同じ種類のデータを収集していても、PLCごとにデータを収集するタイミングは完全には一致しません。タイムスタンプはナノ秒単位で付与されるため、わずかなタイミング差によるタイムスタンプの違いでレコードが分かれます。
集約を設定しない場合、CSVシリアライザからは次のように出力されます。PLC-AとPLC-Bのデータが別々のタイムスタンプになっているため、各レコードには片方のPLCのデータだけが入ります。
| timestamp | PLC-A:pressure | PLC-A:temperature | PLC-B:pressure | PLC-B:temperature |
|---|---|---|---|---|
| 13:08:04.947378445+0900 | 68 | 25 | ||
| 13:08:04.949666433+0900 | 82 | 31 | ||
| 13:08:05.947378445+0900 | 68 | 25 | ||
| 13:08:05.949666433+0900 | 83 | 31 |
※日付部分(YYYY-MM-DD)は省略しています。
このように、タイムスタンプの異なるデータはレコードが分かれて出力されてしまうため、集約機能を使って同じウィンドウ区間内のデータを1つのレコードにまとめます。
使用するコンポーネント
Section titled “使用するコンポーネント”- PLCコレクタ(PLC-AとPLC-Bからデータを収集)
- CSVシリアライザ(集約したデータをCSV化)
- PLCコレクタでPLC-AとPLC-Bのデータを収集
- PLC-AとPLC-Bから収集したデータを、CSVシリアライザへ入力
- CSVシリアライザの入力ポート設定の集約機能で、設定したウィンドウ幅で区切った各区間内のデータを同じレコードにまとめる
- 集約したデータを、CSVの1つのレコードとして出力
-
PLCコレクタを設定します。 PLC-AとPLC-Bそれぞれの接続先、収集対象のアドレス、データ型などを指定し、
temperatureとpressureを収集できるようにします。 今回の設定では、各PLCのD0100をtemperatureとして、D0101をpressureとして収集します。

-
CSVシリアライザを設定します。 今回は、切替件数を
10件に設定し、10レコードごとに1ファイルとして出力されるようにします。
-
CSVシリアライザ設定後、CSVシリアライザの入力ポートに各PLCコレクタを接続します。 複数のコンポーネントから同じ入力ポートへデータが入力される構成にします。

-
CSVシリアライザの入力ポートを右クリックして入力ポート設定を開き、集約するをONにします。 ウィンドウ幅を指定します。今回は
1秒に設定し、各ウィンドウ区間内(1秒間)のデータを同じレコードにまとめます。
-
入力されるデータに対して集約の設定を行います。今回は正規表現で対象を指定します。 コンポーネント名に
.*、データ名に.*を指定し、CSVシリアライザに入力されるすべてのデータを対象にします。
-
集約した値だけを出力するため、RAW DATAのチェックを外します。指定した入力データの集約トグルをクリックし、集約オプションから最新値を選択します。今回は、ウィンドウ区間内の最新値のみを使用します。


-
設定を保存し、各コンポーネントを起動します。

出力結果の確認
Section titled “出力結果の確認”同じウィンドウ区間に含まれるデータは、CSVの1つのレコードとして出力されます。
以下は、集約後に出力されたCSVから一部のレコードを抜粋したものです。このように、各コンポーネントのデータに付与されたナノ秒単位のタイムスタンプが異なっていても、同じウィンドウ区間内のデータであれば1つのレコードにまとめて出力できます。
| timestamp | PLC-A:pressure.newer | PLC-A:temperature.newer | PLC-B:pressure.newer | PLC-B:temperature.newer |
|---|---|---|---|---|
| 14:37:13.551084040+0900 | 71 | 26 | 86 | 34 |
| 14:37:14.551084040+0900 | 71 | 26 | 87 | 34 |
| 14:37:15.551084040+0900 | 71 | 27 | 87 | 35 |
| 14:37:16.551084040+0900 | 72 | 27 | 88 | 35 |
| 14:37:17.551084040+0900 | 68 | 25 | 82 | 31 |
| 14:37:18.551084040+0900 | 68 | 25 | 83 | 31 |
※日付部分(YYYY-MM-DD)は省略しています。