シーケンス制御講座

値の切替わりを検出する方法

シーケンス制御講座 中級編 値の切替わりを検出する方法

データレジスタなどの値が切替わったことを検出する方法を解説しています。データレジスタが切替わった時、1スキャンだけONする接点を作ります。

作成日:2023年01月19日
更新日:2023年01月19日


値の切替わりを検出する方法

データレジスタ、ファイルレジスタ、データメモリ等、PLCには数値などのデータを保存できるさまざまなデバイスがあります。このデバイスに保存されている数値が変更された事を検出方法を解説します。
例えばデータレジスタ「D0」に”10”という値が入っているとします。この”10”という値が”12”や”20”など、”10”以外の数値に変わった時何かの処理を行いたい。そういった時はこの「D0」の値が切替わった事を検出する必要があります。これを検出するラダーを解説します。とても短い回路なので、気軽に使うことができます。

まず必要なデバイスですが、まずは確認したいワードデバイス。「D0」の値が変化するのを検出したいのであれば「D0」。それと確認したいワードデバイスと同じサイズのデバイス。例えば「D0」をダブルワードで使うのであれば、この時点で「D0」と「D2」を使います。それとは別にダブルワードのデバイスが必要です。例えば「D2」と「D3」のように2個必要です。確認したいデバイスがシングルワードであれば「D2」だけのように1つで大丈夫です。

そしてビットデバイスが1つ必要です。これは数値が切替わった瞬間ONするビットです。「M0」等を使います。ラダー図も短く、命令も[MOV]命令を使うくらいで、難しい命令も使いません。実際のプログラムは次のようになります。

これだけです。この回路では「D0」の値が変化したら1スキャンだけ「M0」がONします。「D0」の値を変更する方法としては、ラダーで変更、タッチパネルから変更、モニタから変更、どんな方法でも、とにかく「D0」の値が変化したら「M0」がパルスでONします。仕組みを見ていきましょう。

ます「D0」には”1”が入っています。そして2行目の[MOV]命令で「D0」の値を常時「D2」に転送しているため、基本的には「D0」=「D2」となります。つまり「D2」にも”1”が入っています。上記赤枠で囲った部分は、デバイス内の値を比較する接点で、「<>」というマークが先頭についています。これは「D0」と「D2」の値が違ったらONする接点です。今値は同じなので接点としてはOFFの状態です。ちなみに「<>」以外にも「=」や「<」などの記号も使えます。値が一致しているのか、それよりも大きいのか小さいのか、等を比較して接点をON/OFFできます。

次に「D0」の値を変更してみます。

「D0」の値を”2"に変更しました。すると「D2」の値は”1”なので「D0」と「D2」の値が違います。すると比較している接点がONして回路がつながり「M0」がONします。ちなみにこの比較している接点を”接点比較命令”や”比較接点命令”等と呼びます。

このように「D0」と「D2」の値が違う時に「M0」がONします。つまり「D0」の値が変化したら「M0」がONするということになります。ただしこの「M0」がONするのは少しの間だけ、1スキャンだけ「M0」はONします。

「D0」と「D2」の値が違うのは少しの間(1スキャン以下)だけです。それは上の回路のように[MOV D0 D2]という命令が常時実行されているからです。この命令が常時実行されている限り「D0」の値をいくら変更していも、「D0」と「D2」の値は必ず一致します。ただし、命令を実行して「D2」の値を変更する前に、「D0」と「D2」の値を比較して違う場合は「M0」をONしています。ただし「M0」というのは「D0」と「D2」の値が一致した瞬間OFFするわけではありません。

このように「D0」の値を「D2」に転送したあとはプログラムは赤枠のように次の行を読込に行きます。「M0」のコイルが書いてある行以外の部分をプログラムが読込んで実行している時は、上記のように接点がOFFでも「M0」はONのままです。それはプログラムが違う行を実行しているので、「M0」をOFFするという動作を実行できないためです。

プログラムが回路全体を実行すると、また「M0」のコイルが書いてある部分を実行します。その時「M0」はOFFします。プログラムというのは回路全体を同時に実行しているわけではなく、1行ずつ実行しています。最後まで実行したらまた先頭から繰り返し実行しています。つまり「M0」がONしたあと「D0」と「D2」の値が同じになっても、「M0」はすぐにはOFFしません。プログラムが他の行を実行して、再度「M0」の部分を実行したときOFFします。このように繰り返し実行することを「スキャン」と呼び、プログラムが1周することを1スキャンと呼びます。

この書き方であれは「D0」の値が切替わったら「M0」は1スキャンだけONします。これはパルスと同じで、「M0」の接点をプログラム上のどこに書いても数値の切替わりを検出することが可能です。数値が切替われば「M0」がONするので、「M0」の接点を使って数値が切替わった瞬間に何かアクションを起こすことも可能です。



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

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