【PLC】エッジ検出(パルス化)の実務と罠〜ボタン長押しによる暴走を防ぐ〜

  • URLをコピーしました!
\ 迷子にならないための地図 /

未経験から一人前への
「最短ルート」公開中

独学で「何から勉強すれば…?」と悩んでいませんか?
現場で戦える知識を、体系的にまとめました。

FA電気設計ロードマップを見る
【実践プログラミング編:第2回】

本連載では、FA現場で戦うための実務特化型プログラミングを解説します。

ラダーを組み始めた若手エンジニアが、実機を動かして必ず直面する「恐怖のバグ」があります。

  • タッチパネルの「+1」ボタンを押したら、一気に「20」も足されてしまった
  • データ転送ボタンを押したら、処理がダダダッと連続実行されてフリーズした

実務経験9  年の現役電気設計エンジニアとして断言します。 その原因は、あなたの組んだプログラムが「人間とPLCの圧倒的なスピード差」を考慮できていないからです。

この問題を根本から解決し、プログラムの堅牢性を高めるための必須防具。それが今回のテーマである「エッジ検出(ワンショット / パルス化)」です。

本記事を読むことで、「1スキャンだけ実行させる」ことの真価が腹に落ち、現場のヒューマンエラー(誤操作や不正操作)による重大事故を未然に防ぐ「安全設計」が身につきます。

💡 【事前知識】PLC特有の「スキャン」とは?
本記事の「パルス化」を完全に理解するには、PLCが電気回路(ハード)とは違い、「上から下へ超高速で順番に処理されている」という原則を知っておく必要があります。まだ不安な方は、先に以下の入門記事をご覧ください。
▶【PLC入門】回路図とラダー図は別物!初心者がハマる「上から下へ」の罠

【本連載の前提】
本記事内のプログラム例や命令語は、国内FA業界で最もシェアの高い「三菱電機製PLC(MELSEC)」をベースに解説しています。しかし、ここで解説する「なぜその命令が必要なのか」「現場でどう使うのか」という設計思想は、オムロンやキーエンスなど、すべてのメーカーのPLCで共通して使える普遍的な技術です。メーカーの違いを恐れず、本質的な「設計の根幹」を身につけてください。

目次

人間の「1回」は、PLCにとって「数百回」である

なぜ、ボタンを1回押しただけなのに演算が二重、三重に実行されてしまうのでしょうか。まずは現場で起きている「物理的な真実」を知る必要があります。

作業者がタッチパネル(HMI)や物理ボタンを「ポンッ」と短く押したつもりでも、人間の動作には物理的な時間がかかります。どんなに素早く押しても、最低で0.1秒〜0.2秒(100〜200ミリ秒)は接点がONになり続けています。

一方、現代のPLCの演算周期(スキャンタイム)は極めて高速です。一般的なプログラムであれば、数ミリ秒(0.001秒~0.01秒)程度のスピードでラダー図を頭から尻尾まで駆け巡り、それを無限に繰り返しています。

この圧倒的なスピード差が悲劇を生みます。 人間が「1回押した」つもりの約200ミリ秒の間、PLCから見れば「ボタンが押されている状態が200回も連続で続いている」と判定されてしまうのです。

そのまま加算命令(INC)などを繋げば、一瞬で「200」が足し込まれるのは当然の結果です。

エッジ検出(1スキャン実行)の基本と書き方

この「人間の遅さ」を吸収し、意図しない連続実行を防ぐための技術が「エッジ検出(ワンショット / パルス化)」です。

エッジ検出とは、「信号がOFFからONに変わった瞬間(立ち上がり)」だけを検知し、PLCの演算1回分(1スキャン)だけ命令を実行させる機能です。 これを通せば、作業者がボタンを何秒間長押ししようが、確実に「1回だけ」しか処理が走りません。

三菱PLC(GX Works)の場合、書き方には大きく分けて3つのアプローチがあります。

1. 「PLS(パルス)命令」

デバイスそのものを1スキャンだけONさせる命令です。 [ X0 ] ──── [ PLS M0 ]

エッジ検出であるPLS(パルス)命令を使用したラダー図の例。内部リレー(M0)を消費する書き方。

このように書くと、起動ボタン(X0)がONになった瞬間、パルスフラグ(M0)が1スキャンだけONになります。

2. 「接点のパルス化(|↑|/ 立ち上がり接点)」

接点そのものに「立ち上がり検出(↑)」の属性を持たせる書き方です。 [ ↑X1 ] ──── [ INC D1 ]

接点そのものに立ち上がり検出(↑)を持たせたシンプルでスッキリとしたラダー図の例。

これなら余計な内部リレー(M0など)を消費せず、1行でスッキリと書くことができます。「ONした瞬間だけ通す関所」だと考えてください。

3. 条件の塊をパルス化する「パルス演算(—↑—)」

さらに実務でよく使われるのが、回路の途中に「↑」の記号を挟む書き方(MEP命令など)です。 [ X1 ] ── [ X2 ] ── [ X3 ] ── [ ↑ ] ──── [ INC D3 ]

複数条件(X1, X2, X3)がすべて成立した瞬間を1行で検知する、パルス演算(インラインでの立ち上がり検出)のラダー図の例。

単一の接点だけでなく、「X1とX2とX3がすべて揃った瞬間」というように、複数条件の組み合わせが成立した瞬間を1行でパルス化できるため、複雑なインターロックを組む際に非常に重宝します。

※メーカーによって呼び方や記号は変わりますが、「ONした瞬間を切り取る」という概念は全メーカー共通です。

【現場の修羅場】「起動ボタン」のテープ固定による予期せぬ再起動

では、実務においてこのエッジ検出をサボると、現場でどれほど恐ろしい事故が起きるのか。電気設計者が絶対に知っておくべき「現場のリアル」をお話しします。

作業者は「起動ボタンを押しっぱなし」にする

サイクルタイムを極限まで縮めたい、あるいは毎回ボタンを押すのが面倒だという理由で、イライラした作業者が「起動(スタート)ボタン」をガムテープ等で押しっぱなしに固定してしまうという、信じられない不正操作が現場ではしばしば発生します。

もしあなたが、「自己保持回路」を、エッジ検出を使わずにそのまま組んでいたとします。

パルス化されていない危険な自己保持回路のラダー図。起動ボタンがテープ等で押しっぱなしにされると、異常解除時に予期せぬ再起動を招く恐れがある。

この状態で起動ボタン(X0)がテープで固定されたまま設備が稼働していると、とんでもない恐怖が待ち受けています。

「エラー解除」の瞬間に、設備が勝手に動き出す

設備の稼働中、何らかのトラブルで「異常」が発生し、設備が安全停止したとします。 作業者が安全扉を開けて中に入り、詰まったワーク(製品)を取り除き、扉を閉めて『異常リセット』をかけました。

その瞬間、どうなるでしょうか。
起動ボタン(X0)はテープで固定されて常にONになっているため、異常が解除された瞬間に「人間の意思(再スタートの操作)に関わらず、設備が勝手にフルスピードで再起動する」のです。

人命に関わる根幹の安全回路はハードウェア(安全リレー等)で遮断するのが大前提ですが、標準のシーケンス制御においても、このような「意図しない連続起動」は、シリンダ同士の衝突や、セットが不完全な状態でのプレスによる金型破損など、重大な設備トラブルに直結します。

だからこそ、トリガーは必ず「パルス化」する

この「テープ固定による自動再起動」を防ぐための絶対的な防具が、エッジ検出です。

起動条件をパルス化(立ち上がり検出)した安全な自己保持回路のラダー図。ボタンが固定されても意図しない再起動を防ぐ、フェールセーフな設計。

このように組めば、ボタンが押された「最初の瞬間(OFFからONへの立ち上がり)」にしか起動処理が走りません。
もしテープで固定されていても、異常リセット後には必ず「一度ボタンから手を離し(OFFにし)、もう一度押し直す(ONにする)」という動作をしなければ、絶対に再起動しない堅牢な設計になります。

「人間が触るスイッチは、何が起こるか分からない」。だからこそ、動作のトリガー入力は必ずパルス化してプログラムをヒューマンエラーから守り抜く。これこそが、設計者が遵守する現場の鉄則なのです。

データ処理でパルス化が必須となるケース

物理的なボタン操作だけでなく、プログラム内部の「データ処理」においても、パルス化が必須となる代表的な場面を2つ紹介します。

① データ転送(MOV命令)の負荷軽減

製品の生産完了時など、各種データを別の領域にコピー(MOV)する際、条件がONの間ずっとMOV命令を実行し続けるプログラムを見かけることがあります。

動きはしますが、PLCはスキャンごとに毎回同じデータを上書き転送し続けるため、無駄な演算負荷(スキャンタイム)を増大させます。 [ ↑生産完了フラグ ] ──── [ MOV D100 D200 ] データの転送は、このように「条件が成立した瞬間の1回」だけで十分です。

💡 MOVとMOVPの使い分け
三菱PLCの場合、接点をパルス化(↑)するだけでなく、MOV命令自体をパルス実行させる「MOVP命令(P付き命令)」という便利な書き方もあります。連続実行(MOV)とパルス実行(MOVP)の現場での具体的な使い分けについては、以下の記事で徹底解説していますので、併せてマスターしてください。
▶【PLC】MOVとMOVPの決定的違い!ラダーのバグを防ぐ現場の常識

② 1ボタンでのON/OFF切り替え(ALT命令)

タッチパネルのスイッチを節約するため、1つのボタンで「照明ON→OFF→ON…」と切り替える回路(ALT命令やFF命令)でも、パルス化は必須です。

パルス化せずに組むと、ボタンを押している約0.2秒の間、超高速でON/OFFが切り替わり続け、指を離した瞬間にONになるかOFFになるかが「完全に運任せ(ルーレット)」になります。だからこそ、1ボタンでの状態切り替え(トグル回路)には、入力のパルス化が絶対条件なのです。

「立ち下がり(PLF / ↓)」の実務での使い所

ここまでは「OFFからONになった瞬間(立ち上がり)」を解説してきましたが、エッジ検出にはもう一つ、「ONからOFFになった瞬間」を切り取る「立ち下がり検出(PLF命令 / ↓接点)」が存在します。

これはいったい、現場のどこで使うのでしょうか。 代表的なのが「コンベア上を流れるワーク(製品)の通過カウント」です。

【初心者の失敗:立ち上がりでカウントしてしまう】

ワークを数える際、センサが反応した瞬間(立ち上がり)でカウントアップし、目標数に達したらコンベアを止める回路を組んだとします。 しかしこれでは、「ワークの先端がセンサを遮った瞬間」にコンベアの停止処理が走ってしまいます。コンベアの速度やセンサの位置といった機構にもよりますが、最後の1個がコンベアの端から落ちきらなかったり、所定の位置を通過しきる前にコンベア上に居座って止まってしまうという物理的なバグを誘発しやすくなります。

【回避策:立ち下がりでカウントする】

立ち下がり検出(↓接点)を使用したワーク通過カウントのラダー図。センサがOFFになった(ワークが完全に通り抜けた)瞬間にのみカウントアップする実務的な書き方。

このように「立ち下がり」を使えば、「ワークの最後尾がセンサを抜けきった(ON→OFFになった)瞬間」にカウントされます。 これにより、機構の慣性やスピードに頼るのではなく、プログラムの論理として「ワークが確実にセンサを通過しきった(=所定の動作を完了した)」ことを確認してから設備を止めることができるのです。

立ち上がり(↑)は「動作のトリガー」に、立ち下がり(↓)は「完了の確認」に使う。これが現場のセオリーです。

【まとめ】エッジ検出は、人間の気まぐれと物理的な動きからプログラムを守る「盾」

いかがだったでしょうか。 初心者はよく「とりあえず接点とコイルを繋げば動く」と考えがちですが、PLCの世界では「流れている時間(スキャン)」を意識しなければ、思わぬ設備の暴走やバグを引き起こします。

本記事の実務ポイントをまとめます。

  • 人間とPLCのスピード差を知る: 人間の「ポンッ(0.2秒)」は、PLCにとって「200回の連続実行」である。
  • 動作のトリガーは「立ち上がり(↑)」: 演算の二重実行や、作業者のテープ固定による「予期せぬ再起動(設備クラッシュ)」を防ぐための必須防具である。
  • 動作の完了確認は「立ち下がり(↓)」: ワークの通過など、機構の物理的な動きが「確実に終わった瞬間」を捉えるための定石である。

「1回だけ実行させたい処理には、必ずエッジ検出を入れる」。そして「立ち上がりで起動し、立ち下がりで完了を確認する」。明日からの実務で必ず実践し、予期せぬ動作を起こさない堅牢なプログラムを設計してください。

※本記事で使用している画面は、三菱電機株式会社「GX Works2」の操作画面です。
※GX Works2MELSECは、三菱電機株式会社の登録商標です。
※本記事で紹介しているプログラムや回路図は、技術解説のためのサンプルです。実機での動作を保証するものではありません。
※実際に使用する際は、十分な検証を行った上で、安全に配慮して運用してください。

💬 更新情報を X (Twitter) で発信中!

記事の更新通知や、現場で役立つ「電気制御の小ネタ」をツイートしています。 また、「記事のここが分からなかった」「現場でここが困っているけどどうしたらいい?」といった疑問があれば、DMで募集しています!個別のトラブル相談も、ブログのネタにさせていただけるなら大歓迎です!ぜひフォローして気軽に絡んでください!

産業用操作パネルのボタンを押す指と、それによって発生するデジタルパルス波形の概念図。エッジ検出(立ち上がりパルス)の実務を象徴するアイキャッチ画像。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次