【1時限目】第2章 PLCの機械制御方法 自己保持

f:id:vv_6ong_3ka_cp:20211111064504p:plain

こんにちは。FA電気設計者のLDニックです

1時限目の第1章で扱いました通り、FA(ファクトリーオートメーション)の機械設備は主にPLCで制御しているということを紹介しました。

www.niwakamv.com

PLCで具体的にどのように機械設備を制御しているか、少しずつプログラムについて触れていこうと思います。

プログラムと言っても、もともとは電気回路図の手法をプログラムに適合しているだけですが、どんな複雑なプログラムであろうとラダー言語を扱っているのであれば必ず使用しているのが『自己保持』です。

自己保持を説明していきますが、その前にPCのプログラミング、C言語高級言語などの処理とPLCの処理を比較していきましょう。

PCのプログラミング言語に触れたことがあっても、PLCに触れたことがある方は少ないかと思います。

PLCの処理を理解しなければ少し自己保持について理解するのが難しいかと思います。

f:id:vv_6ong_3ka_cp:20211110093916p:plain

C言語のプログラム例ですが、上から順に処理されていきます。

printfは画面へ出力する命令ですので、Hello World!が表示されます。

C言語のプログラムは1度この処理を行えば終了となります。

f:id:vv_6ong_3ka_cp:20211110161931p:plain

PLCの処理は基本的に常時繰り返し処理です。

繰り返し処理を永遠と続けますので、常時演算が行われております。

ですので、Hello World!が永遠と表示されます。

うん?だから?という方が多いかと思います。

もう少しPLCとPCの違いを深堀すると、処理の方法がシングルタスクかマルチタスクかという違いです。
※正確には仮想的なマルチタスクという意味となります。

f:id:vv_6ong_3ka_cp:20211110165818p:plain

C言語、つまり高級言語の場合、1つの演算処理が終わった時点で結果がすぐ反映されます。

よってPC(C言語など)はシングルタスクとなります。

f:id:vv_6ong_3ka_cp:20211110165137p:plain

ラダー言語は演算結果が反映されるまでに全てのプログラムの処理が終了しなければなりません。

そのプログラムを処理して結果を反映するまでの時間をスキャンタイムと言いますが、この処理のおかげで仮想的にマルチタスク(本来はシングルタスクですが、演算結果を反映するのに時間があるため)となります。

よってPLCは仮想的にマルチタスクということです。

話が徐々に逸れてしまいましたが、なんとなくPCとPLCの処理が異なることがわかってきたかと思います。

ここで本題の自己保持について説明していきます

まずは下記の動作例を考えていきましょう。

動作例:センサー①で入力(ON)をトリガーとしてY0を出力し、センサー②の入力(ON)でY0の出力をOFFする。
※ただし、センサー①の入力はY0の出力後OFFする。

f:id:vv_6ong_3ka_cp:20211110171114p:plain
※注意!わかりやすく記述しているだけで本来のC言語の書き方とは異なります。

皆さんがイメージするように、C言語ならこのようにif文と呼ばれる条件分岐で記述することでY0の出力:ON、OFFを管理することができます

ではラダー言語ではどのようになるでしょうか。

まず大前提として、C言語と同じように記述してもうまくいきません。

f:id:vv_6ong_3ka_cp:20211110172016p:plain
※ラダーの命令、SET・RSTを使用すれば可能ですが、今回は無視します。

C言語と同じように条件分岐を作るという方法もありますが、プログラムがあちこち飛んでしまうため可読性が失われます。

そこで、電気回路で用いられている『自己保持』回路を使用します

ラダー言語で自己保持を記述すると下記のようになります。

f:id:vv_6ong_3ka_cp:20211110172630p:plain

Y0が出力:ONされたと同時にY0の入力:ONと判断し、センサー①が入力:OFFしてもY0、つまり自分自身で信号を保持している状態、自己保持をしているためY0の出力がOFFしない状況となります。

f:id:vv_6ong_3ka_cp:20211110173006p:plain

センサー②の入力:ONで自己保持回路を遮断するようにb接点を追加すれば動作例の自己保持回路が完成となります。

この自己保持を組み合わせて使用することによって動作を記憶させたり、動作を終わらせたいタイミングで自己保持をOFFしたりします。

C言語とかですと、フローでそのまま処理してしまうので自己保持みたいな形になってしまうのですよね。

ラダーにもSFCやSTというものがあり、SFCという記述方法がC言語のフローに似ていて、STというのがC言語の記述の仕方と似ている感じですね。

長くなりましたが自己保持についての説明を終わりにします。

www.niwakamv.com

www.niwakamv.com