ものづくりニュース by aperza

シーケンス制御講座「プログラムの流れ①」

シーケンス制御講座「プログラムの流れ①」

基礎からはじめるシーケンス制御講座

中級:プログラムの流れ

今回は実際のプログラムの流れを説明します。プログラムの流れ? と思われる方もいるかも知れません。

接点が入ればそれに対応したコイルが入る。または命令が実行される。今までの説明ではこんな感じでした。

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

スクリーンショット 2017-04-04 16.16.20

例えば「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をスキャンした後、出力されます。

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

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

 

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

出典:『基礎からはじめる シーケンス制御講座』

参考書

これだけ!シーケンス制御 (これだけ!シリーズ)
武永 行正
秀和システム
売り上げランキング: 70,884
図解入門よくわかる最新シーケンス制御と回路図の基本 (How‐nual Visual Guide Book)
武永 行正
秀和システム
売り上げランキング: 31,176

1977年、広島県福山市生まれ。武永制御 代表。「基礎からはじめるシーケンス制御講座」管理人。◎福山職業能力開発短期大学校(制御科)を卒業。某電機会社にて設備エンジニアを務めた後、武永制御を創業。◎著作に『図解入門よくわかる最新シーケンス制御と回路図の基本』(2013年 秀和システム)、『これだけ!シーケンス制御』(2014年 秀和システム これだけ!シリーズ)がある。◎基礎からはじめるシーケンス講座 http://plckouza.com/index.html