目次次へChap.5 PLCとラダー図

この章では、今までとちょっと視点を変えて、制御におけるPLCとラダー図について考えてみます。

5.1 PLCとは
PLC(Programmable Logic Controller)とは、制御をおこなう電子装置です。
その名の示すとおり、論理演算(Logic)を主体とした制御装置(Controller)で、どのような制御をするかは、プログラムで与えます。
プログラマブル(Programmable)といっているように、プログラムを書き換えることで、制御仕様を変更することができます。

PLCは、工場などの環境の悪い現場で使用されることを前提に作られているため、温度、湿度、ノイズ、電源電圧などの環境に対して丈夫にできていますが、回路的には、CPU、RAM、ROM、I/Oポートのある普通のマイコンボードと大差ありません。
PLCの特徴は、PLCの実行に特化したプログラミング言語(ラダー図)と、それを実行させるための命令セット(命令語)にあるといっていいと思います。

5.2 PLCのプログラミング言語としてのラダー図
ところでChap.2以降でみてきたとおり、ラダー図はリレー回路の配線図でした。
しかし、PLCの世界では、ラダー図はPLCの動作を記述するプログラミング言語とあつかわれます。
図5.1に、PLCのラダー図の例を示します。
これを見てわかるように、接点のシンボル以外は電気回路図のラダー図と同じです。

図5.1 PLCのラダー図(自己保持回路)

PLCにラダー図で記述したプログラム(厳密には、命令語に変換した結果)を転送し、転送されたプログラムを実行させると、PLCはラダー図のロジックを実行します。
あたかもPLC内部にリレーがラダー図の通り配線されて入っているかのように振る舞います。

5.3 PLC+ラダー図の特殊性
ここで、一般的なマイコンによる制御と、PLC+ラダー図の制御の違いについて考えてみましょう。
一般にマイコンによる制御といった場合、次の2つの方法が考えられます。

(1)割込み処理による制御
(2)リアルタイムOSによる制御

両者の違いは、(1)が割込みが発生すると、直ちに割込み要因に応じた処理をおこなうのに対して、(2)は割り込みが発生すると、制御をいったんOSに渡し、後で(自分の番がきたら)処理をおこなう点です。
しかし、割込みに対して処理をおこなう点では両者は同じです。

これ対して、PLC+ラダー図の制御では割込みを使用しません。
割込みを使用しないため、入力の変化は待っていても知ることができません。
したがって、入力ポートは自分で見にいく必要があります。どの入力が変化したかはわかりませんから、結局全部の入力をしらみつぶしに見にいくしかありません。
もし、100点入力ポートがあれば、100点全部を見にいきます。
しかも、いつ入力が変化するかわからないため、定期的に(繰り返し)見にいきます。
この方法は、割込みを用いた制御と比べると非常に時間がかかります。
つまり動作原理からして、PLC+ラダー図の制御では、リアルタイムの応答はできないようになっています。
これはPLC+ラダー図の一番の欠点であると思います。

5.4 PLC+ラダー図が使われる理由
では、前述の欠点にもかかわらずラダー図が使用される理由は何でしょう。
おそらく、ラダー図がリレー回路をダイレクトに表現しているため、リレー回路からPLCへの移行がスムーズだったことが一番の理由だと思います。
しかし、これ以外に次の理由もあると思います。

(1)入出力の遅延
PLCが実際に使用される現場では、ノイズ環境の悪さから、入出力にフィルタがないと誤動作することがあります。
PLCにも入出力に数ms〜数10msのフィルタ(遅延)が入ってることが多いです。
このようなハードウェアでは、CPUがいくら高速に応答しても、PLC全体としては、数ms〜数10msの遅延が発生してしまいます。
たとえば、割込み要因に対してCPUの処理が50μsで応答できたとしても、入出力に合計10msの遅延があれば、制御の応答時間は10ms+50μsになってしまいます。
このような場合、CPUの処理は1msぐらいかかっても問題ありません。
つまり、割込みを使わないPLC+ラダー図でも十分対応可能です。

(2)ラダー図の変換効率
ラダー図は、プログラム言語としては、制御仕様を図形で表した超(?)高級言語にもかかわらず、変換効率が良く、接点、コイルが1〜2語の命令語に展開でき、コンパイルされたコードが非常コンパクトに(つまり高速に)なります。
しかも、ほとんどのPLCでは、ラダー図に特化した命令セットをもっているため、高速に動作します。

(3)誤動作しても次のスキャンで上書き
PLC+ラダー図では、全部の入力を繰返し見にいくといいましたが、出力も繰返し書込みにいきます。
したがって、電気的な外乱で出力ポートのラッチが反転してしまっても次回の書込みで正しいデータに上書きされます。
(泥臭い話ですが、ノイズ環境の悪いところでは最後の砦になっています。)


さて、ラダー図で記述したプログラムは、リレー回路と同じく、見かけ上あらゆる部分が同時に動作します。
しかし、プログラム全体が同時に動かれては困る場合がよくあります。
次回は、このことについて解説します。

目次次へ