PLC(Programmable Logic Controller)とは、機械を電気仕掛けで動すために工業製品に組み込まれる重要な部品です。 1980年頃マイコンが登場するのと ほぼ同時に日立、オムロン、三菱電機等が相次いで商品化しました。日立、オムロンではプログラマブルコントローラー 三菱ではシーケンサーと呼んでいます。
それまで電気仕掛けはリレー(電磁石に通電して、接点をON OFFする部品)を使った大きな制御盤でした。タイマー(通電してから接点がONするまでの遅れ時間を設定できる部品)やカウンター(通電の回数を設定して、設定回数に達した時接点をONする部品)などがどうしても必用になり、配線は複雑で大げさになりがちでした。
マイコンを使ったPLCはこのタイマー動作やカウント動作以外にも機械を思い通りに動かせる多くの命令語や計算が自由に設定できるもってこいのシステムです。 登場した頃のPLCはメーカー毎に使い方、プログラム方法も様々でした。しかし使用者の大半が電気計装業者で、従来からリレー制御に慣れた職人だったことからリレーシンボルを使ったプログラムが主流になりました。光洋のステージ式など現在も生き残っている物はあるようですが・・
リレーシンボル式プログラム(はしごの様な図面なのでラダー図と呼ばれます )の利点は並列に多くの入出力を扱えるところ。入力、出力は何千点接続してもきちんと動きます。特に使用しているマイコンは日進月歩 処理能力も容量も速度も格段に向上していますから最近のPLCの信頼性は申し分ありません。
PLCを使う時、あえて内部構造にまで注意する必要はありませんが、ひととおり動作原理は押さえておきましょう。三菱電機のMELSEC-Qを例に進めます。
まず、CPUユニットです。その名の通り、マイコン部分です。主なはたらきはベースユニットに差し込んだ入出力カードを読み書きする部分とメモリー部分、周辺に接続するパソコンなどと通信する部分があります。そのメモリーの一部は入力、出力カードに対応、一部がプログラムエリアです。コンピュータのデータは32ビット(64ビット)ですが、PLCのプログラムでは1ビットデータを主に扱います。つまり入力カードのONOFF信号や出力のONOFFを直接取り扱うのに適しています。
カードスロットの並んだベースユニットに電源ユニット、CPUユニット、入力ユニット出力ユニットを装着して準備完了です。
PLCは雑音、熱、ほこり、振動など、厳しい環境で10年以上休み無く安定して動き続けることが求められます。ベースユニットの差し込みコネクター等は軍用機器のようです。三菱電機がシェアを抑える理由もこのあたりにあるのでしょう。
MELSOFT GX Works2を使ってラダープログラムを作ってみます。ソフトは有料で、新しい商品が発売になる度にバージョンアップが必用になります。インターフェースがUSBやLANになったので最近はずいぶん使いやすくなりました。今回使用しているPLCは残念ながらインターフェースが232Cです。入力と出力を配線して、電源を入れ、パソコンでソフトを立ちあげ、新しいプロジェクトを新規作成。CPU機種を選択して初期設定パラメータを書き込みます。ほとんど工場出荷のままです。
OKで進めるとラダーが表示されます。ENDだけが書かれています。
PLCはラダーに書かれた命令を0からENDまで処理し、結果をメモリーに反映させます。出力情報を書き込み、入力情報をリフレッシュして再び ラダーに書かれた命令を0からENDまで処理。これをひたすら繰り返します。
この繰り返しをスキャンといいます。モニター画面に表示されている時間は1回のスキャンに要した時間。このシステムでは2.2msつまり1秒間に450回処理を繰り返しています。
それでは実際にPLCに機器を接続して動かしてみます。入力にトグルスイッチ、出力にエアーソレノイドバルブをつないでみました。
プログラムは以下のようにしました。
スイッチの操作でソレノイドバルブが動作しています。
そしてソレノイドバルブにエアーシリンダを接続して動かしてみます。エアーシリンダーに付いているスイッチと光スイッチ(光電管)をX10?X15に割り当てました。
バルブに通電するとエアーシリンダーが動きます。
このシリンダにこんな動きをさせてみましょう
前に作ったラダーはシンプルですが、スイッチ操作でうまく玉を運べました。
こんな動きが自動的にできたと仮定して、動きに合わせて割り当てたスイッチを検出する毎にメモリーがセットしていくラダーを書きます。
X7(自動運転)のスイッチを入れて玉が置かれるのを待ちます。X10(光スイッチ)が 玉を検出したらメモリーM10 がON します。
動き始めて、メモリーM16 まで順番にメモリーがセットしていく間、M10は ONのままにしておきたいので X10 と並列に M10 接点を並べてあります。
この並列接点 M10の扱い方を 自己保持回路 といいます。
M10と同時にT0(タイマー)が起動します。(クランプが開く時間)0.5秒後にシリンダーが下降し始め、 下降端X13がON したら M11を自己保持。
再びシリンダーが上昇してX12がONしたらM12を自己保持します。
動作終了までメモリーを積み上げて終了のメモリーM16がONすると M10の自己保持が切れます。そのため全部のメモリーの自己保持が切れます。
順番に自己保持していくメモリーを使ってバルブ出力ラダーを作ります。
こんな動作がプログラムできました。
モニタ画面の接点が青くなるのがONしているメモリーです。動作が一回りしてスタート位置に戻った時 積み重ねた自己保持メモリーが一斉にOFFしています。