条件成立時のPLCへの制御信号書き込み
PLCから収集した値が特定条件を満たしたときに、PLCへ制御信号や指示値を書き込めるようにする。
プロジェクトファイル
Section titled “プロジェクトファイル”本事例で使用しているプロジェクトファイルです。通常版と、PLCコレクタをシミュレーションモードで設定したファイルを用意しています。
※SpeeDBee Synapseバージョン4.9.9以降でインポートできます。
このページで分かること
Section titled “このページで分かること”- PLCから収集したデータを条件判定に使う方法
- 演算コレクタで複数の収集値をもとに条件を判定する方法
- イベントデータコンポーネントで条件成立時だけ書き込み用データを出力する方法
- PLC書き込みコンポーネントでPLCの指定アドレスへ値を書き込む方法
PLCから設備状態と測定値を収集し、条件を満たした場合にPLCへ制御信号を書き込みます。
例として、以下のデータをPLCから収集しているものとします。
| データ名 | アドレス例 | データ型 | 内容 |
|---|---|---|---|
operation_mode | D0100 | WORD | 運転モード。1のとき自動運転 |
temperature_c | D0101 | WORD | 温度(℃) |
pressure_kpa | D0102 | WORD | 圧力(kPa) |
条件が成立したとき、PLCのW100.00へ制御信号を書き込みます。
| 書き込み先アドレス例 | データ型 | 書き込み値 | 条件 |
|---|---|---|---|
W100.00 | BIT | 1 | operation_mode = 1 かつ temperature_c >= 80 かつ pressure_kpa >= 500 |
使用するコンポーネント
Section titled “使用するコンポーネント”- PLCコレクタ(条件判定に使うデータの収集)
- 演算コレクタ(複数の収集値をもとにした書き込み条件の判定と
1/0の出力) - イベントデータ(演算コレクタからの出力データが
1の場合のみ後続へ出力) - PLC書き込み(イベントデータからのデータをトリガにPLCへの値書き込み)
- PLCコレクタで
operation_mode、temperature_c、pressure_kpaを収集 - 演算コレクタで、収集値が書き込み条件をすべて満たす場合は
result = 1、それ以外の場合はresult = 0を出力 - イベントデータコンポーネントで、
result = 1の場合のみ値を出力 - PLC書き込みコンポーネントで、イベントデータから
resultが入力された場合にPLCのW100.00へ1を書き込み
今回のデータフローは次のようになります。

-
PLCコレクタの設定を行います。 PLCの接続先、収集周期、収集対象のアドレスを指定し、条件判定に必要なデータを収集できるようにします。

データ名 アドレス例 データ型 operation_modeD0100WORDtemperature_cD0101WORDpressure_kpaD0102WORD -
演算コレクタを追加し、PLCコレクタと接続します。 演算コレクタ新規登録時は、入力ポートに接続するコンポーネントを選択するダイアログが表示されるので、手順1で設定したPLCコレクタを選択し、接続をクリックします。
※PLCコレクタが起動していないと選択できないため、あらかじめ起動しておいてください。▶ボタンからも起動できます。
-
演算コレクタの入力データと演算式を設定します。 まず、入力データ設定でPLCコレクタから受け取ったデータを
$A、$B、$Cに割り当てます。
変数 入力データ $Aoperation_mode$Btemperature_c$Cpressure_kpa演算式に次の式を設定し、出力データ名を
resultとします。$A、$B、$Cがすべて条件を満たす場合は1、それ以外の場合は0が出力されます。
出力データ名 演算式 resultIF($A = 1 AND $B >= 80 AND $C >= 500, 1, 0) -
イベントデータコンポーネントを追加し、演算コレクタと接続します。 イベントデータコンポーネント新規登録時は、入力ポートに接続するコンポーネントを選択するダイアログが表示されるので、前の手順で設定した演算コレクタを選択し、接続をクリックします。
※演算コレクタが起動していないと選択できないため、あらかじめ起動しておいてください。▶ボタンからも起動できます。
-
イベントデータコンポーネントで、演算コレクタから受け取った
resultが1の場合に、resultを後続へ出力するように設定します。 条件種別にはraiseを選択し、条件式には$VALUE = 1($VALUE=result)を指定します。これにより、resultが0から1へ変化したタイミングだけデータを出力できます。
入力データ 条件種別 条件式 CalculateWriteCondition:resultraise$VALUE = 1条件が成立していない間は、PLC書き込みコンポーネントへデータを渡さないようにします。 これにより、条件成立時だけPLCへ書き込みが実行されます。
-
PLC書き込みコンポーネントを追加し、イベントデータコンポーネントと接続します。 PLC書き込みコンポーネント新規登録時は、入力ポートに接続するコンポーネントを選択するダイアログが表示されるので、前の手順で設定したイベントデータコンポーネントを選択し、接続をクリックします。
※イベントデータコンポーネントが起動していないと選択できないため、あらかじめ起動しておいてください。▶ボタンからも起動できます。
-
接続先には書き込み対象のPLCを指定し、入力データには、イベントデータコンポーネントから出力される
resultを割り当てます。resultが入力された場合に、書き込み先アドレスW100.00へ固定値1を書き込むように設定します。
トリガデータ 書き込み先アドレス例 データ型 書き込み値(固定値) DetectWriteCondition:ed1-CalculateWriteCondition-resultW100.00BIT1 -
PLC書き込みコンポーネントの入力ポート設定で遅延時間を設定します。 今回のように演算コレクタやイベントデータを経由する場合、PLC書き込みコンポーネントにデータが届くまでに遅延が発生します。 そのため遅延時間を設定して入力データの検索範囲を遅延分だけずらします。今回は
6000ミリ秒に設定します。 遅延時間の詳細は、補足の「遅延時間について」を参照してください。
-
設定を保存し、各コンポーネントを起動します。

PLC側の値を変更し、条件成立時にW100.00へ1が書き込まれることを確認します。
PLCコレクタとイベントデータコンポーネントの出力データを確認し、条件を満たしたタイミングだけイベントデータからresult(1)が出力されていることを確認します。以下の例では10:53:57にresult(1)が出力されていることが確認できます。

続いて、PLC書き込みコンポーネントのログを確認します。
10:53:57のresult(1)出力後、約7秒後の10:54:04.594に書き込みが実行されているログを確認します。
この約7秒には、設定した6000ミリ秒の遅延時間などが含まれます。

遅延時間について
Section titled “遅延時間について”実際のデータが届くまでの遅延が、設定されている遅延時間より大きい場合、後続コンポーネントで入力データを取得できないことがあります。 これは、出力データが遅延して後続コンポーネントの入力データの検索範囲に入らなくなるためです。 入力データを取得できない場合、後続コンポーネントでは出力や書き込みなどの処理は行われません。 遅延時間は、この検索範囲をずらすための設定です。データが届くまでの遅延を考慮して設定してください。
遅延時間の目安は、イベントデータコンポーネントであればのDEBUGログから確認できます。

この例では、インサート時刻とデータに付与されたタイムスタンプの差である約4.1秒が遅延に相当します。今回の例では、この時間に余裕を持たせて遅延時間を6000ミリ秒程度に設定することで、データの入力を検知できるようになります。
| インサート時刻 | 付与されたタイムスタンプ | 差分 |
|---|---|---|
2026-09-15T09:47:27.183 | 1789433243063622411 (2026-09-15T09:47:23.064) | 4.119秒 |
2026-09-15T09:47:42.192 | 1789433258063622411 (2026-09-15T09:47:38.064) | 4.128秒 |
2026-09-15T09:47:57.200 | 1789433273063622411 (2026-09-15T09:47:53.064) | 4.136秒 |