フレキシブルにお客様のご要望にあわせ提供します.

IT系にとっての PLCラダー

PLC (Programmable Logic Controller) は米国GM社がリレーによるシーケンス制御を 電子計算機に置き換えることを目的として生まれた制御機器と言われており、PLCラダーはリレー制御をニーモニックまたはラダー図形としてあらわすような書き方が基本です。リレーシーケンスといいます。これが基本であるため、ほとんどの書籍はリレーシーケンスな書き方が示されています。

 

リレーシーケンスとは、IT系でたとえると、フリップフロップ(FF)による順序回路です。FFによる順序回路構築の考え方を、リレーシーケンスに導入すれば自然に作成できるわけです。PLCラダーの基本です。

 

実際にはリレーシーケンスのみならず、プログラムの流用性やインタロック記述の確実性のために、様々な概念を導入し、ラダーが書かれております。実際に使われている概念のうち、その一部をいかに示します。

サブルーチン

一般のプログラム同様、サブルーチンを作成することもあります。ただし古典的なPLCラダー(リレーシーケンス)においては関数という考え方はありませんので、プログラム中の、とある番地に飛ぶ goto によって呼び出します。

FB(≒関数)

近年の PLC の統合開発環境が関数に近い概念を導入したことで可能になったもので、ブロックのなかに処理を実装し、それをメインフローから関数引数のように入力端子にレジスタ値を指定することで呼び出します。

 

 

ステップラダー

シーケンスをオートマトンに還元し、各状態を数値としてあらわすような考え方です。比較的に数の少ない変数(レジスタ)で済むというメリットがある一方で、数値にコメントをつけることはできませんので、あとからラダー(コード)を見る人のために説明文が必要であるというデメリットがあります。

 

論理演算

PLCに内蔵されているのはCPUであるため、CPU の論理演算命令を用いて、適宜、部分的に、一括に処理を記述することでラダーを短くしよういう考え方です。

 

図3. 論理演算の一例

モードとアンサ

シーケンス制御にはインタロックという絶対に守らねばならない方針があります。確かに制御はモノを動かすためにやるわけですが、その一方で動いてほしくないタイミングで動くのは災害です。それを絶対に避けるための仕組みを作ることです。

 

ほとんどの書籍に書いてあることしては、たとえば安全ドアが閉まってない限り動かしたくないなら、安全ドアとその信号を受けて開始する制御ラダー、これがワンセットで1つのインタロックです。

 

これを操作ごとに適用したのがモードやアンサという考え方です。なおアンサとは一般にはアンサバック信号のことを意味しますが、以下で示すことは別の意味になります。

 

操作においても同じように、各操作のインタロックを切り分けて考える場合は、操作別に、モードとアンサという概念を、個別の操作に対しそれぞれ導入します。

 

モードとは自動運転、手動運転それぞれの場合、アンサとは操作に対する応答があったときにはじめて処理を実行する、という部分を制御フローのなかに記述するのではなく、これを別個に記述しておくということです。

 

いささか冗長的な書き方にはなるわけですが、インタロックというのは不可欠であり、しかも正常動作のときは実装に抜けがあっても気づきにくい部分がゆえに、実装抜けを確実に予防するという意味でも、これを事前に切り分けて実装するという考えかたです。

 

なおその書き方には特にこれという決まりはなく、個人の発想でそれを導き出すことも可能でしょうが、長く使われているラダーにはそれなりの理由があり、洗練されているはずであるため、要するに、そういったプログラムを参考にするのがもっともよいかと思います。

 

 

 

以上のような概念を縦横に導入した場合、PLCラダーは、十分に IT系の人にとっても親しみが深い表現になります。

 

IT系もラダーを

最近の統合開発環境には ST言語というスクリプトも用意されています。この言語は  Pascal  みたいなものであり、算術演算において特に有用です。

ただし、前述したとおり、ラダーを使っても構造的にプログラムすることは可能ですし、また、ST言語はアドレッシング指定ができないなど、いわゆるC言語のようにはいかない部分もあるので、「STに出来てラダーにできないことはない」けれども、その逆は十分ではありませんので、IT系の方であっても PLCプログラムとしてはメインではラダーを使うのがよいのかなという印象です。混在は可能なので、算術処理の部分をSTで記述するとラダーの見通しに寄与するでしょう。