コンテンツにスキップ

PLCコレクタで収集した配列データの演算

PLCコレクタで連続領域の配列として収集したデータを、演算コレクタで扱える形式に変換してから演算する。

  • PLCコレクタで収集した配列データを演算コレクタへ渡す構成
  • データ変換コンポーネントの配列分解を使う理由
  • 配列データを個別データに分解して演算するまでの流れ

PLCから複数箇所の温度データを連続領域の配列として収集し、各温度データを使って平均温度や温度差を演算する。

例として、PLCコレクタで以下のような配列データを収集しているものとします。

データ名アドレス例データ型配列数内容
temperature_valuesD0100WORD44点の温度データ(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中央温度と周囲温度の差分(℃)
  • PLCコレクタ(配列データの収集)
  • データ変換(配列データの分解)
  • 演算コレクタ(分解後データを使った演算)
  1. PLCコレクタで4点の温度データを連続領域の配列として収集
  2. データ変換コンポーネントで、PLCコレクタから受け取った配列データを要素ごとに分解
  3. 分解後のデータを演算コレクタへ渡す
  4. 演算コレクタで、分解後の各温度データを使って平均温度や温度差の演算を行い、出力
  1. PLCコレクタの設定を行います。 PLCの接続先、収集対象のアドレス、データ型、配列数などを指定し、4点の温度データを配列として収集できるようにします。 今回の例では、D0100から4点分の温度データをtemperature_valuesとして収集します。

  2. データ変換コンポーネントを追加し、PLCコレクタと接続します。 データ変換コンポーネント新規登録時は、入力ポートに接続するコンポーネントを選択するダイアログが表示されるので、手順1で設定したPLCコレクタを選択し、接続をクリックします。
    ※PLCコレクタが起動していないと選択できないためあらかじめ起動しておいてください。▶ボタンからも起動できます。 alt text

  3. データ変換コンポーネントで配列分解を設定します。 PLCコレクタから受け取った配列データを選択し、演算で使用する要素を個別のデータとして出力するように設定します。

    temperature_valuesの各要素を、測定箇所が分かる名前にして出力します。

    alt text

    分解前のデータ分解後のデータ例
    temperature_values[0]temperature_inlet_raw
    temperature_values[1]temperature_center_raw
    temperature_values[2]temperature_outlet_raw
    temperature_values[3]temperature_ambient_raw
  4. 演算コレクタを追加し、データ変換コンポーネントと接続します。 演算コレクタ新規登録時は、入力ポートに接続するコンポーネントを選択するダイアログが表示されるので、手順3で設定したデータ変換コンポーネントを選択し、接続をクリックします。
    ※データ変換コンポーネントが起動していないと選択できないためあらかじめ起動しておいてください。▶ボタンからも起動できます。

    alt text

  5. 演算コレクタで演算式を設定します。 まず、入力データ設定で配列分解によって取り出した温度データを$A$B$C$Dに割り当てます。

    alt text

    変数入力データ
    $Atemperature_inlet_raw
    $Btemperature_center_raw
    $Ctemperature_outlet_raw
    $Dtemperature_ambient_raw

    入力データを設定したうえで、$Aなどの変数を使用して必要な演算式を作成します。 今回はPLCの値が0.1℃単位で入っている想定のため、演算後に0.1を掛けて℃に換算します。

    alt text

    データ名演算式内容
    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中央温度と周囲温度の差分(℃)
  6. 設定を保存し、各コンポーネントを起動します。

    alt text

演算コレクタの出力データを確認し、配列分解後のデータを使った演算結果が出力されていることを確認します。

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

alt text

分解後のデータ換算後
temperature_inlet_raw24724.7℃
temperature_center_raw26826.8℃
temperature_outlet_raw28228.2℃
temperature_ambient_raw23123.1℃

演算コレクタ(CalculateTemperatureMetrics)の出力を確認します。 入力データ設定で割り当てた$A$B$C$Dを使って、平均温度や温度差が出力されていることが分かります。

alt text

演算後のデータ内容
average_temperature_c26.567入口・中央・出口の平均温度(℃)
inlet_outlet_diff_c3.5入口温度と出口温度の差分(℃)
center_ambient_diff_c3.7中央温度と周囲温度の差分(℃)

上記のように、平均温度は26.567℃、入口出口温度差は3.5℃、中央温度と周囲温度の差分は3.7℃となっています。

この事例で使用したプロジェクトファイルをダウンロードできます。 SpeeDBee Synapseにインポートすることで、構成をそのまま再現して確認できます。
通常版のプロジェクトファイルを利用する場合は、PLCコレクタの接続先設定やアドレス設定を利用環境に合わせて変更してください。 まずはデータフローの動作を手軽に確認したい場合は、PLCコレクタをシミュレーションモードで設定したプロジェクトファイルをご利用ください。
※こちらのプロジェクトファイルは、SpeeDBee Synapseバージョン4.9.9以降でインポートが可能です。