中級者向け

【PLC演算処理】サイクルタイムの最大・最小・平均を自動で集計するスクリプト構成を解説!

fa-engineer

設備の安定稼働を評価する上で欠かせない「サイクルタイム」。
特に立ち上げ初期はバラつきが大きく、安定性を定量的に評価するために、サイクルの集計は非常に重要です。

しかし、毎回手動で計測・記録するのは時間と手間がかかるため、PLC内で自動的に集計処理を行うことをおすすめします。

今回は、**ラダー図とスクリプト(ボックス命令)**を用いたサイクルタイム集計の構成を分かりやすく解説します。

✅ サイクルタイム集計の仕様

以下の3項目を自動集計します:

  • 最大サイクルタイム(MAX)
  • 最小サイクルタイム(MIN)
  • 平均サイクルタイム(AVERAGE)

🔧 使用デバイス一覧

デバイス役割
MR000サイクル動作中フラグ
DM1000計測サイクルタイム(10ms単位)
DM1002最大サイクルタイム
DM1004最小サイクルタイム
DM1006平均サイクルタイム
DM1008累積サイクルタイム(平均算出用)
DM1010カウント(平均算出用)

🪜 ラダー図の処理構成(概要)

  1. 1行目
     サイクル動作中(MR000)を条件に、10msごとにDM1000をカウントアップ(0.01s単位で計測)
  2. 2行目
     サイクル完了信号をトリガーに、ボックススクリプトを実行し、集計処理を行う

🧠 ボックススクリプトの内容と解説

以下、スクリプトの処理内容を順を追って解説します。

【1】最大値の更新

IF DM1000 > DM1002 THEN
    DM1002 = DM1000
END IF
→ 現在の計測値(DM1000)が最大値(DM1002)より大きければ、最大値を更新

【2】最小値の更新(初回対応あり)

IF (DM1000 < DM1004) OR (DM1010 = 0) THEN
    DM1004 = DM1000
END IF
→ 最小値を更新する条件:
  • 計測値が現在の最小値より小さい場合
  • 初回実行時(DM1010 = 0)の場合は強制的に初期化
    ※DM1004は初期値が0のため、初回対策としてDM1010 = 0条件を追加

【3】累積値とカウントの更新

DM1008 = DM1008 + DM1000
DM1010 = DM1010 + 1
→ 測定値を累積し、カウントも加算していきます。

【4】平均値の算出

IF DM1010 > 0 THEN
    DM1006 = DM1008 / DM1010
END IF
→ カウントが0のときは割り算ができないため条件分岐を追加
※通常は0にはならないが、安全対策として明記

⚠️ 注意点:リセット命令の位置

スクリプトの直前にDM1000のリセットを入れてしまうと、演算処理前に値が消えてしまいます。

✅ 必ずスクリプト実行に以下のようにリセットしてください:

📝 まとめ

  • サイクルタイムの自動集計は、現場の見える化や安定稼働の分析に不可欠
  • 手動記録から脱却し、PLC内スクリプトで最大・最小・平均を算出
  • スクリプトの書き方と順番を正しく記述することで、正確なデータ収集が可能

ABOUT ME
Yu
Yu
設備エンジニア(フリーランス)
生産技術の現場で10年以上の経験を持ち、制御設計を中心に生産設備の開発全般に携わってきました。 特に、産業用ロボットを活用した自動化設備の開発を得意としており、機械・電気・制御の知識を横断的に活かして業務に取り組んでいます。 近年では、PLCと連携したIoTシステムの構築にも注力しており、PythonやSQL Serverなどを活用したデータ収集・可視化・分析の仕組みづくりにも対応しています。 現場のリアルな課題を解決するための実践的なノウハウを発信していきます。
記事URLをコピーしました