〖対象〗PLC初心者/ラダーを書き始めた人(「なんか反応が遅い…」を経験した人)
〖前提〗入力→処理→出力、A接点/B接点、自己保持の基本が分かると読みやすいです
〖次に読む〗タイマーとは?/インターロックとは?/通信I/Fの基礎
はじめに:スキャンタイムは“PLCの反応速度”に直結する
PLCは、パソコンのように「イベントが起きたらその都度処理する」よりも、基本は 同じ処理を繰り返す ことで動きます。
この繰り返し1周を スキャン(scan) と呼び、1周にかかる時間が スキャンタイム です。
ざっくり言うと、
- スキャンタイムが短い → 反応が速い(見逃しにくい)
- スキャンタイムが長い → 反応が遅くなる(短い信号を見逃しやすい)
という関係になります。
この記事では、スキャンタイムの意味、遅いと何が起きるのか、現場で出るトラブル例と対策を“浅くても実務で困らない”レベルで整理します。
スキャン処理の流れ(超ざっくり)
PLCは一般的に、次の流れを繰り返します。
- 入力を読み取る
- ラダーを上から実行する
- 出力を更新する
- 次のスキャンへ
この「1〜4の1周」がスキャンで、その1周にかかる時間がスキャンタイムです。
スキャンタイムが長いと起きること(よくある3つ)
反応がワンテンポ遅く感じる
ボタンを押してから出力が出るまで、少し遅れて見えることがあります。
機械だと「動き出しが遅い」「停止が遅い」と感じる原因の1つになります。
※ただし安全停止(非常停止など)は、PLCより上位の安全回路で止めるのが基本です。
PLCのスキャンが遅いから危険、という設計は避けます。
短いON/OFF信号を見逃す
これが一番重要です。
PLCはスキャンのタイミングで入力を見ます。
もし入力が「スキャンとスキャンの間だけ」一瞬ONになって消えた場合、PLCはそのONを見ていないので 無かったこと になります。
例:パルスが短いセンサ、近接がギリギリ、エンコーダの一部信号、など。
タイマーやカウンタの“体感”がズレることがある
タイマーは内部で時間を数えますが、スキャンが極端に重いと、ON/OFFの入り方が想定と違って「なんかズレる」と感じるケースがあります。
(多くのPLCは時間管理が工夫されていますが、条件がブレブレだと“体感”はズレます)
目安として「どれくらいが普通?」(ざっくり)
スキャンタイムは、
- プログラムの量
- 通信の量
- 演算の重さ
- モジュール構成
で変わるので「◯msなら正解」という固定値はありません。
ただし現場感としては、
- 普段は十分短い(機械の動きに違和感がない)
- ある日突然遅くなった(以前より重くなった)
この“変化”がトラブルのサインです。
基準は絶対値よりも、いつもと比べて増えたかどうかです。
スキャンタイムが伸びる原因(現場で多い順)
プログラムが増えて処理が重い
一番多いです。
後付け改造で条件分岐や機能が増え、結果としてスキャンが伸びます。
特に重くなりやすい例:
- 大量のデータ処理(配列・テーブルを毎スキャンなめる)
- ループ的な処理を毎スキャンで回している
- 使っていない処理まで毎スキャン動いている
通信が増えて待ちが発生している
通信I/Fを増やしたり、監視データを増やしたりすると、内部で処理が重くなることがあります。
特に“診断を毎スキャンで読みに行く”ような設計は重くなりがちです。
ロギングや表示更新が多い
画面側(HMI)に大量のタグを表示していたり、ログ用のデータを常に整形していると、負担になることがあります。
トラブル例(初心者がハマりやすい)
例1:ワークカウントが飛ぶ/抜ける
「センサONで+1」などの処理で、
- スキャンが遅い
- センサのONが短い
が重なると、カウントが抜けることがあります。
対策:
- 立ち上がり検出(ワンショット)を使う
- 入力フィルタやパルス幅確保(センサ側・機械側)を考える
例2:ステップが飛ぶ(条件を見逃す)
ステップ遷移が「一瞬だけ成立」する条件だと、スキャンのタイミングで見逃して遷移しない/逆に飛ぶ、が起きます。
対策:
- 遷移条件は“安定して成立する形”にする
- 必要なら「成立したら保持するフラグ」を作る(自己保持やラッチ)
例3:ボタン操作がたまに効かない
押す時間が短いと、スキャンの間に押して離してしまい、PLCが見ていないことがあります。
対策:
- 入力フィルタ
- 押下を保持する回路(ワンショット+自己保持など)
対策の考え方(最低限これだけ)
まずはスキャンタイムを“見える化”
多くのPLCには、現在のスキャンタイムをモニタできる機能があります。
「いつもより増えてるか?」を見るだけでも効果があります。
重い処理は“毎スキャンでやらない”
- 初期化は起動時だけ
- 検索・集計は一定周期(例えば100msごと、1秒ごと)にする
- 使っていない処理は止める
短い信号を相手にするなら“見逃さない設計”にする
- 立ち上がり検出(ワンショット)
- 入力フィルタ
- パルス幅の確保(機械側で長くする)
- 必要なら外部でパルス補足(ハード/専用モジュール)
まとめ
- PLCはスキャン処理で動き、1周にかかる時間がスキャンタイム
- スキャンタイムが長いと、反応が遅くなり、短い信号を見逃しやすくなる
- 絶対値より「以前より増えたか」を見るのが実務的
- 対策は「重い処理を毎スキャンでやらない」「短い信号を見逃さない回路にする」
<執筆者の実務コメント>
スキャンタイムのトラブルは「プログラムを足した直後」に出ることが多いです。
改造するときは、処理を毎スキャンで回すのか、周期処理にするのかを意識するだけで、後のトラブルがかなり減ります。
▶ 次に読む:タイマーとは?/インターロックとは?/通信I/Fの基礎

