最近、PLCっぽいものをあれこれといじっている。
見た目はPLCっぽくないんだけど、プログラムの作り方がPLCと同じなんだよね。
IEC 61131-3準拠って書いてあったような気がするけど。
PLCってProgrammable Logic Controllerのことね。
シーケンス制御のためのコンピュータってことだね。
このプログラムの作り方としては、伝統的にはラダー図が使われてきた。
というのも、もともとリレーシーケンスでやっていたものを置き換えるために生まれたので、
リレーシーケンスの回路図を書くように作れるラダー図が直感的だったということらしい。
けど、プログラムという観点で見るとラダー図というのは可読性がよいとは言えない場合もある。
IEC 61131-3というPLCのプログラムの標準規格があって、
ここではPLCのプログラムの書き方として、LD, FBD, SFC, IL, ST の5種類の記法を定義している。
第2回 IEC 61131-3の特長 【前編】 5つのプログラミング言語と変数 (OMRON)
LDっていうのがラダー図のこと。伝統的によく使われてるけど、モジュール化が難しいとか、可読性がよくないとか書かれている。
FBDはFunction Block Diagramの略で、演算ブロックを結線することで処理を書く方式。
SFCはSequential Function Chartの略で、工程ごとにLDやSFCでプログラムを作って、遷移条件を書いて行くようなものらしい。
ILはInstruction Listの略で、アセンブラみたいなもの、STはStructured Textの略で、Pascal風の言語で、いかにもプログラミングという感じ。
で、今回のプログラミングではこの中でFBDを使っている。
詳細は不明だが、プログラミング環境を見ると FBD, LD, STの3種類しか選択肢がなかったから、それだけ対応しているのかな?
その上で既存のプログラムやサンプルコードがFBDで書かれていたから、それにならってFBDを選んだ。
実際のところ、IEC 61131-3の5方式の中で一番人気が高いのはどれなんだろうね?
LDは伝統的な方式だが拡張性に難があるように見えるが、FBDは拡張性と理解性のバランスが取れてるように思える。
STは記述能力は高いんだろうが、電気の技術者にとってはグラフィカルな方が理解しやすくて好まれるんじゃないかな。
いろいろな特殊な機能を操作する都合、特殊な演算ブロックの出番が多いのだが、
基本的な論理演算ブロックを使った部分もある。
その中でよく書いたのが、複数の変数を監視して、もし1つでもFALSEになったら、変数をTRUEにする処理。
使うのは AND と RS というごく基本的な演算ブロックである。
複数の変数をANDに入力して、その出力を反転してRSのS入力にいれ、リセットスイッチをR入力に接続すれば完成。
RSっていうのはRSフリップフロップのブロックですね。(リセット優先のフリップフロップって説明だったはず)
こういう場合、ラダー図だと自己保持回路を書いてってやるんだろうが、RSブロックを呼び出せばそれでOKなわけ。
ラダー図でもRSブロックぐらいは簡単に使えたような気はするが。
最初に書いたとおり、PLCではない装置なのだが、プログラミングはPLCの方式なんだよね。
詳細は不明だが、IEC 61131-3というオープンな規格に準拠しておけば便利だろうという考えもあったのかも。
PLCで使われている方式だからなじみのある人も多いだろうということに期待したんだろうかね。
確かに独自言語とかやられるよりはうれしいか。