PLCコレクタで収集した配列データの演算
PLCコレクタで連続領域の配列として収集したデータを、演算コレクタで扱える形式に変換してから演算する。
このページで分かること
Section titled “このページで分かること”- PLCコレクタで収集した配列データを演算コレクタへ渡す構成
- データ変換コンポーネントの配列分解を使う理由
- 配列データを個別データに分解して演算するまでの流れ
PLCから複数箇所の温度データを連続領域の配列として収集し、各温度データを使って平均温度や温度差を演算する。
例として、PLCコレクタで以下のような配列データを収集しているものとします。
| データ名 | アドレス例 | データ型 | 配列数 | 内容 |
|---|---|---|---|---|
temperature_values | D0100 | WORD | 4 | 4点の温度データ(0.1℃単位) |
配列の各要素は、以下の箇所の温度に対応しているものとします。
| 要素 | 内容 |
|---|---|
temperature_values[0] | 入口温度 |
temperature_values[1] | 中央温度 |
temperature_values[2] | 出口温度 |
temperature_values[3] | 周囲温度 |
このデータをもとに、以下のような演算結果を作成します。
| 演算結果 | 内容 |
|---|---|
average_temperature_c | 入口・中央・出口の平均温度(℃) |
inlet_outlet_diff_c | 入口温度と出口温度の差分(℃) |
center_ambient_diff_c | 中央温度と周囲温度の差分(℃) |
使用するコンポーネント
Section titled “使用するコンポーネント”- PLCコレクタ(配列データの収集)
- データ変換(配列データの分解)
- 演算コレクタ(分解後データを使った演算)
- PLCコレクタで4点の温度データを連続領域の配列として収集
- データ変換コンポーネントで、PLCコレクタから受け取った配列データを要素ごとに分解
- 分解後のデータを演算コレクタへ渡す
- 演算コレクタで、分解後の各温度データを使って平均温度や温度差の演算を行い、出力
-
PLCコレクタの設定を行います。 PLCの接続先、収集対象のアドレス、データ型、配列数などを指定し、4点の温度データを配列として収集できるようにします。 今回の例では、
D0100から4点分の温度データをtemperature_valuesとして収集します。
-
データ変換コンポーネントを追加し、PLCコレクタと接続します。 データ変換コンポーネント新規登録時は、入力ポートに接続するコンポーネントを選択するダイアログが表示されるので、手順1で設定したPLCコレクタを選択し、接続をクリックします。
※PLCコレクタが起動していないと選択できないためあらかじめ起動しておいてください。▶ボタンからも起動できます。
-
データ変換コンポーネントで配列分解を設定します。 PLCコレクタから受け取った配列データを選択し、演算で使用する要素を個別のデータとして出力するように設定します。
temperature_valuesの各要素を、測定箇所が分かる名前にして出力します。
分解前のデータ 分解後のデータ例 temperature_values[0]temperature_inlet_rawtemperature_values[1]temperature_center_rawtemperature_values[2]temperature_outlet_rawtemperature_values[3]temperature_ambient_raw -
演算コレクタを追加し、データ変換コンポーネントと接続します。 演算コレクタ新規登録時は、入力ポートに接続するコンポーネントを選択するダイアログが表示されるので、手順3で設定したデータ変換コンポーネントを選択し、接続をクリックします。
※データ変換コンポーネントが起動していないと選択できないためあらかじめ起動しておいてください。▶ボタンからも起動できます。
-
演算コレクタで演算式を設定します。 まず、入力データ設定で配列分解によって取り出した温度データを
$A、$B、$C、$Dに割り当てます。
変数 入力データ $Atemperature_inlet_raw$Btemperature_center_raw$Ctemperature_outlet_raw$Dtemperature_ambient_raw入力データを設定したうえで、
$Aなどの変数を使用して必要な演算式を作成します。 今回はPLCの値が0.1℃単位で入っている想定のため、演算後に0.1を掛けて℃に換算します。
データ名 演算式 内容 average_temperature_c(($A + $B + $C) / 3.0) * 0.1入口・中央・出口の平均温度(℃) inlet_outlet_diff_c($C - $A) * 0.1入口温度と出口温度の差分(℃) center_ambient_diff_c($B - $D) * 0.1中央温度と周囲温度の差分(℃) -
設定を保存し、各コンポーネントを起動します。

出力結果の確認
Section titled “出力結果の確認”演算コレクタの出力データを確認し、配列分解後のデータを使った演算結果が出力されていることを確認します。
配列分解後のRAW値
Section titled “配列分解後のRAW値”データ変換コンポーネント(ArraySplitter)で配列分解されたRAW値を確認します。
PLCコレクタで収集したtemperature_valuesの各要素が、個別の温度データとして出力されていることが分かります。

| 分解後のデータ | 値 | 換算後 |
|---|---|---|
temperature_inlet_raw | 247 | 24.7℃ |
temperature_center_raw | 268 | 26.8℃ |
temperature_outlet_raw | 282 | 28.2℃ |
temperature_ambient_raw | 231 | 23.1℃ |
演算後の出力値
Section titled “演算後の出力値”演算コレクタ(CalculateTemperatureMetrics)の出力を確認します。
入力データ設定で割り当てた$A、$B、$C、$Dを使って、平均温度や温度差が出力されていることが分かります。

| 演算後のデータ | 値 | 内容 |
|---|---|---|
average_temperature_c | 26.567 | 入口・中央・出口の平均温度(℃) |
inlet_outlet_diff_c | 3.5 | 入口温度と出口温度の差分(℃) |
center_ambient_diff_c | 3.7 | 中央温度と周囲温度の差分(℃) |
上記のように、平均温度は26.567℃、入口出口温度差は3.5℃、中央温度と周囲温度の差分は3.7℃となっています。
プロジェクトファイル
Section titled “プロジェクトファイル”この事例で使用したプロジェクトファイルをダウンロードできます。
SpeeDBee Synapseにインポートすることで、構成をそのまま再現して確認できます。
通常版のプロジェクトファイルを利用する場合は、PLCコレクタの接続先設定やアドレス設定を利用環境に合わせて変更してください。
まずはデータフローの動作を手軽に確認したい場合は、PLCコレクタをシミュレーションモードで設定したプロジェクトファイルをご利用ください。
※こちらのプロジェクトファイルは、SpeeDBee Synapseバージョン4.9.9以降でインポートが可能です。