シーケンススキャンとは何か

それを理解しないとどんな問題が起きるのか

現場でどう役立つのか

を、少し腰を据えて整理してみます。

そもそもシーケンススキャンとは何か

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技術者としての“基礎体力”**です。

ここを押さえておくことで、目先のバグ修正に振り回されず、

安全で再現性の高い制御システムを設計できるようになります。

昔書いた記事も参考にどうぞ

コメント