それを理解しないとどんな問題が起きるのか
現場でどう役立つのか
を、少し腰を据えて整理してみます。
そもそもシーケンススキャンとは何か
PLCは、人間のように「状況を見ながらその場その場で判断」しているわけではありません。
内部では、決まった順番で同じ処理を繰り返し実行しています。これがシーケンススキャン(スキャンサイクル)です。
典型的な1サイクルの流れは次のようになります。
入力の取り込み(I/Oリフレッシュ・入力イメージ更新)
各入力端子のON/OFF状態を内部メモリ(入力イメージ)に一括で読み込みます。
ラダープログラムの実行(論理演算)
上から順番にラダーを解いていき、結果を出力用の内部メモリ(出力イメージ)に書き込んでいきます。
出力の書き出し(I/Oリフレッシュ・出力更新)
出力イメージに書かれたON/OFF状態を実際の出力端子に一括で反映します。
内部処理・通信処理など
タイマ、カウンタ、通信、診断など、PLC内部の管理処理が走ります。
これを数ms〜数十ms程度の周期で延々と繰り返すことで、あたかもリアルタイムに制御しているように振る舞います。
ポイントは、
「入力→論理→出力」が連続ではなく“離散的に”繰り返されている
ということです。
この「離散的に」という感覚を持てているかどうかで、プログラム設計の質がガラッと変わります。
なぜPLC技術者はシーケンススキャンを理解しなければならないのか
2-1. タイミング設計を誤ると「動いたり動かなかったり」が起きる
スキャンサイクルを理解していないと、一瞬だけONする信号や他機器とのタイミングのズレを正しく扱えません。
例えば、外部機器からパルス信号が入ってくる場合を考えます。
パルス幅:1ms
PLCのスキャン時間:10ms
PLCは10msごとに入力を「パシャッ」と写真のように読み取ります。
もしその“シャッターの瞬間”にパルスが立っていなければ、そのパルスは存在しなかったことになるのです。
このとき必要になるのが、
- 高速カウンタ入力
- 割り込み処理
- エッジ検出(立ち上がり/立ち下がり検知)
といった仕組みです。
これらはすべて、「PLCは一定周期でスキャンしている」という前提を理解していないと、なぜ必要なのかすら分からないままになります。
2-2. デバッグやトラブル対応で「原因不明」を避けるため
現場でよくあるトラブルに、
「条件は合っているはずなのに、たまに動かない」
「試運転では問題なかったのに、実運転だと誤動作する」
「ときどきインターロックが効かない/効きっぱなしになる」
といったものがあります。
多くの場合、
- スキャン順序
- 入力の更新タイミング
- 出力の反映タイミング
を正しくイメージできていないために、“たまたまうまくいっているだけ”のプログラムになっているケースが少なくありません。
2-3. 安全・インターロック設計に直結する
安全系・インターロック系のロジックは、タイミングや優先順位が非常に重要です。
- 「非常停止が押されたら、どのスキャンから何を止めるか」
- 「機械的に危険な動作が同時に出ないようにする条件」
- 「フェールセーフにするための論理の組み方」
これらを考えるとき、どの段階で入力を読んで、どの順番で論理を解き、いつ出力が切り替わるのかを理解している必要があります。
例えば、
インターロック解除条件を後ろのネットワークで上書きしてしまい、一瞬だけ危険な組み合わせが成立してしまう
非常停止ボタンの信号を扱うラダーが後ろにあり、1スキャンだけ遅れて出力がOFFになる
など、スキャンの理解が甘いがゆえに「紙上では成立しているのに、実機ではヒヤリハットが起きる」ケースが出てきます。
安全に関わるロジックを組むなら、シーケンススキャンの理解は最低条件と言ってよいレベルです。
2-4. 処理負荷・サイクルタイム設計の基礎になる
最近のPLCは性能が高いため、「とりあえず動く」程度の規模ならそれでも動いてしまいます。
しかし、システムが大きくなってくると、
- スキャン時間が長くなる
- 一部のタスクだけ遅れて実行される
- 画面更新や通信が重くなる
- といった問題が出てきます。
- そのとき重要になるのが、
- サイクルタイム(スキャン時間)
- 周期タスク/割り込みタスク
- 通信処理や演算処理をどこで行うか
といった設計です。
これらはすべて「スキャン」という考え方の延長線上にあります。
- 「この処理は毎スキャンで実行すべきか?」
- 「このチェックは100ms周期で十分か?」
- 「この重い処理は別タスクに分離すべきか?」
といった判断は、シーケンススキャンのイメージがあって初めて妥当な設計ができます。
2-5. 複数プログラム・マルチタスク環境で必須の素養
最近のPLCでは、
- 複数のプログラムを並列に見える形で動かす
- 優先度付きタスクを持つ
- 通信割り込みや高速入出力割り込みを使う
といった構成が当たり前になってきました。
しかし、実際には
「どのタスクがどの周期で、どの順に実行されるのか」
「そのタスクで処理されるI/Oや内部メモリは何か」
を理解していないと、同期が取れずバグの温床になります。
シーケンススキャンの基本を知らないままマルチタスクに手を出すと、
通信タスクと制御タスクのデータの食い違い
表示だけ最新・制御は古い値という状態
割り込みで書き換えられた値を、通常タスクが前提を知らずに使ってしまう
といった問題が起こりやすくなります。
シーケンススキャンを理解していないと起きがちな「あるある」
ここで、現場でよく見るパターンをいくつか挙げてみます。
3-1. 「チャタリング」「チラつき」が取れない
センサのチャタリング対策として、タイマでONディレイ・OFFディレイを組んだつもりなのに、
たまにチラつく
一瞬だけ誤動作する
というケース。
スキャンを意識していないと、タイマの入力条件が1スキャンだけOFFになる。その1スキャンでタイマがリセットされてしまう。その結果、出力がチラつく。
といった現象を読み解けません。
結果として、「とりあえずタイマを長くする」「フリッカが直らないまま妥協する」となりがちです。
3-2. 「ボタンを押しっぱなしにしないと動かない」
本来はワンタッチの自己保持回路にしたかったのに、実際には
- ボタンを押している間だけ動く
- 何度も押さないと自己保持がかからない
- という現象が出ることがあります。
原因は、
入力→自己保持→リセット条件
の評価順とスキャン方式を考慮せずにラダーを組んだため、
同じスキャン内でON/OFFが競合しているような回路になっていることが多いです。
スキャンを理解していれば、「この条件は次スキャンで成立する」「ここで書いた内部リレーは後ろのネットワークでこう評価される」といった時間軸での理解ができるため、スマートに修正できます。
3-3. 「シミュレータではOK、実機ではNG」
PC上のシミュレータでは問題なく動いたのに、
実機では外部機器とのタイミングが合わない
通信のハンドシェイクがかみ合わない
センサの応答が早すぎて取りこぼす
といった差が出ることもあります。
これも、根本は
- 実際のスキャン時間
- 入力信号のパルス幅
- 通信のポーリング周期
などが理解できていないまま設計していることが原因です。
シーケンススキャンを「身体で理解」するためにできること
概念として理解するだけでなく、実感としてイメージできるようにすると、設計の精度が一段上がります。
4-1. 実機でスキャン時間を確認する
まずは、使用しているPLCの、
現在のスキャン時間
最大・最小スキャン時間
タスクごとの実行周期
などをモニタ画面やエンジニアリングツールで確認してみてください。
「この制御は**○○msごとに1回しか評価されていない**」という感覚が持てると、
タイミングに対する意識がガラッと変わります。
4-2. 「1スキャン遅らせる」実験をしてみる
例えば、内部リレーを1段かませて、
ある信号をあえて1スキャン遅らせて処理してみる
逆に同一スキャン内でON/OFFがどう扱われるか検証してみる
など、小さな実験をすると、スキャンの“粒度”が体感できます。
4-3. 立ち上がり・立ち下がり検出命令を使ってみる
PLC各社が用意している、
立ち上がり検出(ワンショット)
立ち下がり検出
パルス命令
などを積極的に使ってみると、
「スキャンの1回分」という単位を前提にした命令が多い
ことに気づきます。
これらの命令の仕様を追っていくだけでも、シーケンススキャンへの理解が深まります。
まとめ:シーケンススキャン理解は「PLC技術者の必須教養」
最後に、本記事のポイントを整理します。
PLCは入力→プログラム→出力を一定周期で繰り返す「シーケンススキャン」で動いている
このスキャンを理解していないと、
一瞬の信号を見落とす
タイミングずれによる「たまに動かない」現象が発生する
安全・インターロック設計の信頼性が確保できない
負荷・サイクルタイム設計が勘頼みになる
シーケンススキャンを理解している技術者は、
タイミングの問題を論理的に説明・修正できる
実機とシミュレーションの差を冷静に分析できる
マルチタスク構成や高速処理を安全に設計できる
ラダーを書くだけなら、マニュアル片手に誰でもある程度はできます。
しかし、「なぜこのように動くのか」「なぜこの一瞬の差で現象が変わるのか」を説明できる人は多くありません。
**シーケンススキャンの理解は、PLC技術者としての“基礎体力”**です。
ここを押さえておくことで、目先のバグ修正に振り回されず、
安全で再現性の高い制御システムを設計できるようになります。
昔書いた記事も参考にどうぞ




コメント