シーケンス制御講座

プログラムの流れ

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

ラダー図は配線図のように読むことが基本ですが、それだけだと対応できないことが出てきます。このページではPLC内でラダー図が実際にどのように処理されているか解説します。

作成日:2015年01月10日
更新日:2022年12月26日


スキャンとは

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

この回路でいうと、「X0」が入ると「MO」が入り、さらにその先の「Y0」が入る。その間にある回路は全く動作していない。今までの説明ですと、こんな感じでしょうか。実は少し違うのです。

例えば「M1」が入ると、その先の「FMOV」命令と「Y1」が同時に入るようになっています。実は同時には入っていません。プログラムというものは、基本的に上から下の行に読み込まれていきます。さらに細かくいうと、左から右に読み込んでいきます。

つまり一番上の0ステップから43ステップの「END」まで、高速に読んでいるのです。そして「END」までいくとまた先頭に戻り繰り返し読み込んでいます。プログラムが一周する動きを「スキャン」といい、一周してくる時間を「スキャンタイム」と呼びます。パルス命令を使うと1スキャンだけONするのです。

ステップ18で「M0」がONすると、ステップ26、34とスキャンしていきます。ここではもちろん「M0」がないため何もおきません。そしてステップ39をスキャンしたとき「M0」がONしているので「Y0」が出力されるのです。

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

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

このようにデータ演算も1個ずつしか行わないので、プログラムの書く順番によっては上手に演算ができないことがあります。演算したい順番にプログラムを並べましょう。本来はステップ34の上にデータシフトのプログラムを置くのがいいと思います。

データレジスタの動き

演算も一つずつ行うので、1個のデータレジスタで何回も計算ができます。

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

このように同じデータレジスタに答えをいれて、そのデータレジスタでさらに演算して同じデータレジスタに戻す、ということも可能です。例えば上の「D2」に5を入れて1スキャン実行すれば、「D2」には35が入っています。演算の注意なのですが、必ずパルスで実行させてください。そうしないと、演算指令が出ている間、プログラムがスキャンするたびに何回も繰り返し計算してしまいます。上記のように同じデータレジスタを使用する場合は、1スキャン目にだした答えに対してさらに演算をしますので、限りなく大きな値になってしまいます。

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

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

リフレッシュ方式

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

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

このように入力と出力については若干の遅れがありますが、組み立て設備等にはほとんど影響はありません。影響が出るのは試験装置等の高速演算処理が必要な場合です。

このような入出力方法をリフレッシュ方式と読んでいます。

ここでは詳しく説明しませんが、リフレッシュ方式のほかにダイレクト方式もあります。また、入力の遅れを抑えるために入力フィルタを小さくしたり、割り込み処理をかける等の方法があります。



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

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