プログラムの流れタイトル画像

プログラムの流れ

シーケンス制御講座ロゴ

シーケンス制御講座

シーケンス制御講座 中級編 プログラムの流れ

シーケンス制御講座おすすめ教材

ラダー図は配線図のように読むことが基本ですが、それだけだと対応できないことが出てきます。このページではPLC内でラダー図が実際にどのように処理されているかを解説します。スキャンスキャンタイムの仕組みを理解することで、プログラムの動作をより深く把握できるようになります。

作成日:2015年01月10日
更新日:2026年05月26日

スキャンとは

今回は実際のプログラムの流れを説明します。「プログラムの流れ?」と思われる方もいるかもしれません。今までの説明では「接点が入ればそれに対応したコイルが入る」または「命令が実行される」という説明でした。しかし実は少し違います。

スキャンの仕組みを示すラダー図

プログラムというものは、基本的に上から下の行に読み込まれていきます。さらに細かくいうと、左から右に読み込んでいきます。つまり一番上の0ステップから最後の「END」まで、高速に読んでいるのです。そして「END」までいくとまた先頭に戻り、繰り返し読み込んでいます。

スキャンとスキャンタイム
スキャン:プログラムの先頭(ステップ0)からENDまで一周する動作のことをスキャンと呼びます。
スキャンタイム:一周してくる時間のことをスキャンタイムと呼びます。
パルス命令:パルス命令を使うと1スキャンだけONします。これはスキャンの仕組みを利用した命令です。

例えば「M0」がONしてことを想定してみます。ステップ18でM0がONします。そしてスキャンしながら「END」まで行き、ステップ0に戻ります。ステップ0にはM0の1スキャンのみONする接点があります。この命令により「D100」〜「D400」がシフトします。

次は「M1」がONした場合を想定してみます。ステップ26で「M1」がONします。するとすぐ下のステップ34でD100〜100個のデータをクリアする命令が実行されます。そして「END」まで行き、ステップ0に戻ります。このとき先にデータがクリアされているので、実行するたびにクリアされた値がシフトしていきます。「M1」を3回ONすれば「D100」〜「D499」の値はすべてクリアされます。

このようにデータ演算も1個ずつしか行わないため、プログラムを書く順番によっては上手に演算ができないことがあります。演算したい順番にプログラムを並べるようにしましょう。

シーケンス制御講座おすすめ教材バナー

データレジスタの動き

演算も一つずつ行うので、1個のデータレジスタで何回も計算ができます。例えば下記のような演算が可能です。

① 「D2」+K2 → 「D2」に入れる
② 「D2」×K5 → 「D2」に入れる
③ 演算後「D2」と「D3」で32ビットになるので、16ビット変換して「D2」に入れる

このように同じデータレジスタに答えを入れて、そのデータレジスタでさらに演算して同じデータレジスタに戻すということも可能です。例えば上の「D2」に5を入れて1スキャン実行すれば、「D2」には35が入っています。

演算の注意点:演算命令は必ずパルス命令(Pコマンド)で実行させてください。そうしないと、演算指令が出ている間プログラムがスキャンするたびに何回も繰り返し計算してしまいます。同じデータレジスタを使用する場合は、1スキャン目に出した答えに対してさらに演算をするため、際限なく大きな値になってしまいます。

ただし、最初のうちは同じデータレジスタで演算することはお勧めできません。モニタ中に演算過程が見えないため、演算エラーが発生した場合に原因の特定が難しいからです。

プログラムの流れは、他の参考書やシーケンサーのマニュアルでは最初に説明されています。しかし「シーケンス制御講座」ではあえて中級の段階で説明しました。理由は、ラダー図が理解できていないと分かりにくく、中級者になってからのほうが簡単に理解できるからです。最初から難しい説明をしても、上達するどころかあきらめてしまう可能性のほうが高いので、この段階での説明を選びました。

リフレッシュ方式

次は入出力の動きについてです。今までの説明は内部コイルなどの動作でした。しかし入力「X」や出力「Y」の動作は少し変わってきます。

まず「X0」を外部からONするとどのタイミングでプログラムに反映されるでしょうか?実はすぐには入りません。プログラムがスキャンして、ENDを読み込んだ後はじめて入力されます。ENDを過ぎて0に戻ったときに、入力されている「X0」をプログラム上で反映させます。複数の入力があった場合もまとめて反映されます。これがシーケンサーの入力の遅れとなります。

出力の「Y」も同じです。例えば「Y0」と「Y1」が出力されたとき、プログラムのENDをスキャンした後に出力されます。

リフレッシュ方式とは:入力と出力についてEND命令のタイミングでまとめて更新する方式です。若干の遅れがありますが、組み立て設備などにはほとんど影響はありません。影響が出るのは試験装置等の高速演算処理が必要な場合です。

なお、リフレッシュ方式のほかにダイレクト方式もあります。また、入力の遅れを抑えるために入力フィルタを小さくする方法や、割り込み処理をかける等の方法もあります。

よくある質問(FAQ)

スキャンタイムはどのくらいの時間ですか?
スキャンタイムはプログラムの規模(ステップ数)によって変わりますが、一般的な産業用PLCでは1〜数十ミリ秒程度です。三菱電機のFXシリーズでは通常1〜10ms程度、Qシリーズではさらに高速化できます。プログラムが大きくなるとスキャンタイムが長くなります。
パルス命令を使うのはなぜですか?
パルス命令(P付き命令)を使うことで、命令の実行を1スキャンのみに限定できます。例えばINCコマンドをパルス化しないと、接点がONしている間スキャンするたびにデータレジスタの値が増え続けてしまいます。1回だけ実行したい命令(カウントアップ、データ転送など)には必ずパルス命令を使用します。
リフレッシュ方式でタイミングがずれる問題は解決できますか?
はい、いくつかの方法で対応できます。①入力フィルタの時定数を小さくして入力遅れを減らす、②割り込み処理を使って特定の入力を優先的に処理する、③高速入力機能を持つ専用モジュールを使用する、などの方法があります。一般的な組み立て設備ではリフレッシュ方式で問題なく動作します。
プログラムの書き順は演算結果に影響しますか?
はい、影響します。PLCはプログラムを上から順番にスキャンするため、演算したい順番にプログラムを並べることが重要です。例えばデータシフト命令をDECO命令より前(上)に配置するか後(下)に配置するかによって、同一スキャン内での動作が変わります。データの依存関係を意識してプログラムの順序を決めましょう。
シーケンス制御講座バナー

図解入門 よくわかる最新 シーケンス制御と回路図の基本はKindle版(電子書籍)です。単行本ご希望の方は、フォーマットで単行本を選択してください。または、トップページよりご購入ください。

Copyright (C) 2010 シーケンス制御講座, All rights reserved.