中級者向け

【PLC×データ可視化】PLCヒストグラム処理をラダーで実装!測定データを区間カウントする方法

fa-engineer

ラダーでヒストグラムを作成する方法を詳しく解説

前回の記事では、ヒストグラムの概要と「区間値(ビン幅)」の設定方法について解説しました。まだご覧になっていない方は、先にこちらをどうぞ👇

ヒストグラム作成の全体像

今回は、PLCのラダー制御でヒストグラムを実際に作成していく方法をご紹介します。

完成イメージがこちら👇

この例では、区間数7、最小値2、区間幅20で構成されたヒストグラムを生成しています。

✅ 設定された区間は以下の通り:

区間条件範囲
x < 2
2 ≦ x < 22
22 ≦ x < 42
42 ≦ x < 62
62 ≦ x < 82
82 ≦ x < 102
102 ≦ x

このうち②〜⑥の区間は「左閉右開」(≦ x <)形式で定義されており、最初と最後の区間だけが異なる条件となっている点に注意が必要です。

ラダーでヒストグラムを作る構成

作成したラダーコードがこちらです👇

一見して複雑そうに見えますが、下図のように処理の流れを色分けして理解すれば、構造がつかみやすくなります。

① スタート条件のチェック

IF DM104 > 0 AND DM5002 > 5 THEN
  • DM104:測定された生産数
  • DM5002:区間数設定

生産数が1以上、かつ区間数が5以上であれば処理スタートです。

② FORループの準備と度数の初期化

DM105 = DM104 - 1
DM5003 = DM5002 + 1
FMOV(0, ZF1000, DM5003)
  • DM105:測定数 – 1(ループ回数用)
  • DM5003:区間数 + 1(閾値境界の数)
  • ZF1000〜:度数格納エリアをリセット

③ 各区間ごとのカウント処理(FOR文)

FOR DM106 = 0 TO DM5003 STEP 1

このDM106が区間ごとのインデックスになります。

DM106の値に応じて処理は次の3パターンに分岐:

  • DM106 = 0:区間①の処理
  • DM106 = DM5003:最終区間(⑦)の処理
  • その他:区間②〜⑥の処理

各区間の処理詳細

🔷 区間①(最小値未満)のカウント

IF DM106 = 0 THEN
FOR DM108 = 0 TO DM105 STEP 1
IF DM201:DM108 < ZF0 THEN
INC(DM110)
END IF
NEXT
  • 測定値(DM201〜)を1件ずつZF0(最小閾値)と比較。
  • 小さい値の数をDM110にカウント。

🟠 区間②〜⑥のカウント(中間区間)

IF DM106 > 0 AND DM106 < DM5003 THEN
DM107 = DM106 - 1
FOR DM122 = 0 TO DM105 STEP 1
IF ZF0:DM107 <= DM201:DM122 AND DM201:DM122 < ZF0:DM106 THEN
INC(DM110)
END IF
NEXT
  • ZF0:DM107:下限閾値
  • ZF0:DM106:上限閾値

→ 範囲に一致する測定値をカウントしてDM110に保存。


🟣 最終区間(上限以上)のカウント

IF DM5003 = DM106 THEN
DM5005 = DM5003 - 1
FOR DM120 = 0 TO DM105 STEP 1
IF ZF0:DM5005 <= DM201:DM120 THEN
INC(DM110)
END IF
NEXT
  • 最後の区間では「以上」の条件で測定値をカウントします。

✅ 最後に:度数の書き込み

ZF1000:DM106 = DM110
  • 各区間の度数結果(DM110)を度数格納先 ZF1000 以降へ書き込み。

使用デバイスまとめ

デバイス役割
DM104生産個数
DM105測定回数用FORループ上限
DM106区間FORループのカウンター
DM107区間下限閾値の参照用
DM5002区間数(タッチパネル設定)
DM5003区間FORループの上限
DM5006区間幅(タッチパネル設定)
ZF0〜区間の閾値リスト
ZF1000〜区間ごとの度数記録先
DM201〜測定履歴データ

今後の記事予定

今回はヒストグラム作成までのラダー処理について詳しく解説しました。
次回は、このヒストグラムをタッチパネル上で可視化する方法について取り上げます。

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