ファクトリーオートメーション(FA)のシーケンス制御とラダー回路の基礎と工夫
ファクトリーオートメーション(FA:生産工場)の設備の多くはシーケンス制御を使用しています。その制御を行う制御装置をPLC(プログラマブルロジックコントローラ:通称シーケンサ)と呼ばれるものを使用しており、それらはラダー回路(一部言語記述もある)で記述するものが多いです。シーケンス制御とラダー回路について説明していきたいと思います。
シーケンス制御とは?
シーケンス制御とはシーケンス動作をするための制御で、「決められた順序・やりとりで制御の各段階を踏んで進めていく制御」のことです。
「決められた一連の動きを忠実に守ってひたすら動く制御」で生産工場で非常に使われています。
また、生産工場ではその生産特有の設備・動きをしなければならず、制御の仕様変更や汎用性が求められることが多いため比較的記述しやすいラダー回路で記述するタイプのPLCが多いです。
ラダー回路とは?
先ほども述べましたが、ファクトリーオートメーション(FA)では仕様変更や汎用性が求められることが多いです。
そんな中、ラダー回路はビジュアル的にプログラムをできるようにしたビジュアルプログラムの一種です。
例としては以下のような絵を組み合わせて回路を作りシーケンス動作にしていきます。
ただし、このビジュアルも細かな設定や機能はPLCメーカーにより異なります。
・a接点(ONで回路通過)
・b接点(OFFで回路通過)
・立ち上がりパルス接点(ONした1周期のみ通過)
・コイル(回路が繋がるとON)
・NOTコイル(回路が繋がるとOFF、回路が繋がっていないとON)
ラダー回路作成前に
ラダー回路を作成する上で注意してもらいたいことがいくつかあり、それを踏まえることでラダー回路を記述する上でのメリットがたくさん出でくるので説明していきます。
入力と出力
PLCは基本的に外部へのやり取りとして入力と出力がリレーとしてシーケンス制御されます。
そのため、PLCにはそれぞれハード的な接続先があります。
・入力:センサ、スイッチ、エンコーダーなど
・出力:バルブ、ランプ、モーターなど
ラダー回路内では入力・出力をラダー回路名で使用していきます。
この記事の中では
入力:R2000, R2001
出力:R50000, R50001
としていきます。
それ以外にMR001等を使用していますが、内部のスイッチ(PLC内の制御)です。
これらはPLCのメーカー、ラダー回路のソフトウエアによって違ってきます。
入力・出力の挙動は直接動作の制御に関係していきます。
プログラムを作っていく基本ですが、外部とのやりとり部分は極力少なく、シンプルを心がけてください。
分かりやすくなり、ヒューマンエラーも低減できます。
ラダー回路内の入力・出力の使い方は極力シンプルに
ラダー回路の動作の流れ
PLCや作成ソフトウエアによりますが、最近の傾向としてラダー回路を記述するプログラム図面を複数持てるものが多くなってきています。
設定によりその順序を変えることができますが、その順序によりプログラムを実行していきます。また、プログラム図面内も上から順にラダー回路を実行していきます。
以下はプログラム図面の例です。
・Input :外部入力から受け取り処理のプログラム
・Input_work :入力からの変換のプログラム
・Main_Routine :主の制御プログラム
・Exception_Routine :例外処理プログラム
・Output_work :出力への変換プログラム
・Output :外部出力への処理プログラム
としました。
この場合上から順に
「入力」→「入力処理」→「主制御」→「例外制御」→「出力処理」→「出力」
となっています。
入力から制御を経由して出力に流れているため、入力があったらすぐに処理を行い出力まで出ます。(1周期内で処理が終了する)
この順番が曖昧だと、制御から出力まで数周期に渡ってしまい出力までに時間がかかってきます。
(周期はPLCやプログラム量により異なります。1周期:数μs〜数十ms程度)
「出力処理」→「出力」→「主制御」→「例外制御」→「入力」→「入力処理」の順の場合、
入力があったら
「入力」→「入力処理」「主制御」→「例外制御」「出力処理」→「出力」
になってしまいます。
プログラム図面に記述するラダー回路はそのプログラムの上から下に向かって実行していきます。
(一番下まで実行が終わったら、次のプログラム図面の一番上から実行していきます)
そのためラダー回路記述順も同様に「入力」→「制御」→「出力」というように上から記述しましょう。
以下はプログラム図面であり、ラダー回路を記述するスペース
また、プログラム図面単位でスキャン周期(プログラム実行周期)を分けることもできることもできます。
分けることで、制御装置の負荷を下げスキャン周期を早くできる等があります。
メーカーによって異なるため、制御装置の取扱説明書で確認してください。
プログラム順、プログラム周期を考えて設定・記述することで周期遅れ等を防止できる
基本的なラダー回路
ラダー回路の基本的な使い方を説明していきます。
AND回路とOR回路(直列回路、並列回路)
基本中の基本の回路になります。
・AND回路(直列回路とも言われる)
横並びにa接点つなげてコイルに渡します。
条件が全て揃わないと回路が最後まで繋がりません。
この場合、「R2000:ON」,「R2001:ON」のみ「MR001:ON」です。
スイッチ1(R2000) | スイッチ2(R2001) | コイル(MR001) |
OFF | OFF | OFF |
ON | OFF | OFF |
OFF | ON | OFF |
ON | ON | ON |
・OR回路(並列回路とも言われる)
縦並びにa接点つなげてコイルに渡します。
条件が1つでも揃えば回路が繋がります。
この場合、「R2000:ON」または「R2001:ON」なら「MR001:ON」です。
スイッチ1(R2000) | スイッチ2(R2001) | コイル(MR001) |
OFF | OFF | OFF |
ON | OFF | ON |
OFF | ON | ON |
ON | ON | ON |
条件が揃って動作はAND回路、どれか1つでもの動作はOR回路
NAND回路とNOR回路
NAND回路とNOR回路はそれぞれ、AND回路とOR回路の反対(NOT)の意味になります。
そのため、コイルの動作も全く逆になります。
まず、NAND回路の説明をします。
・NAND回路
下の表を見てわかると思いますが、スイッチ全てがONの時にコイルがOFFになります。
そのため、並列でスイッチをb接点にすることで作れます。
AND回路の動作の逆になります。そのため、AND回路を作りコイルをNOT回路にしても可能です。
スイッチ1(R2000) | スイッチ2(R2001) | コイル(MR001) |
OFF | OFF | ON |
ON | OFF | ON |
OFF | ON | ON |
ON | ON | OFF |
・NOR回路
下の表を見てわかると思いますが、スイッチ全てがOFFの時にのみコイルがONになります。
そのため、直列でスイッチをb接点にすることで作れます。
OR回路の動作の逆になります。そのため、OR回路を作りコイルをNOT回路にしても可能です。
スイッチ1(R2000) | スイッチ2(R2001) | コイル(MR001) |
OFF | OFF | ON |
ON | OFF | OFF |
OFF | ON | OFF |
ON | ON | OFF |
NAND回路はAND回路の逆、NOR回路はOR回路の逆の挙動をする
XOR回路
排他的論理和回路とも呼ばれています。
あまり使うことはないかもしれませんが、以下の表のように動作は表せます。
スイッチ1もしくはスイッチ2のどちらか一方のみONの時にコイルがONする(排他)回路になります。
スイッチ1(R2000) | スイッチ2(R2001) | コイル(MR001) |
OFF | OFF | OFF |
ON | OFF | ON |
OFF | ON | ON |
ON | ON | OFF |
XOR回路は排他的な制御で使用される。
自己保持回路(セルフホールド回路)
自己保持回路の説明をします。
セルフホールド回路とも呼ばれ、一度押されるとスイッチを離しても(スイッチOFF)してもコイルがONし続ける回路です。
動きの流れを説明します。
スイッチを押すとコイルまで繋がりコイルがONします。そうするとコイルのスイッチもONします。
次の周期で前回の周期でコイルがONであったため、コイルのスイッチがONになります。
そのスイッチがコイルまで繋がってコイルがONし続けます。
この周期の時にスイッチR20000のON/OFFは関係ありません。
自己保持回路では、一度コイルがONするとOFFできないため、ここではコイルOFF用のスイッチMR002をb接点で回路に入れています。
コイルがONしている時にMR002をONするとコイルがOFFします。
デッドロック(コイルがOFFできなくなる)で制御できなくなることがないように注意しましょう。
また、コイルを使用する点での注意点ですが、2重コイルに注意しましょう。
同じ出力名のコイルが2つ以上あると正常に動作しません。
一度のスイッチ操作でコイルをONし続けられる。ただし、デットロックに注意
セット・リセット回路
セット・リセット回路は自己保持をしてくれる回路です。そのため、ONはセット、OFFはリセットで行います。
自己保持回路と描き方が異なるぐらいで同じです。
デッドロック(コイルがOFFできなくなる)で制御できなくなることがないようにリセットを入れたりして注意しましょう。
セット・リセットの出力を使用する際には、セット出力を入れたらリセット出力も同時に作るようにしましょう。
そうすることで、デッドロックを予防できます。また、動作入れ忘れを防止できます。
自己保持と同じ描き方が異なる。同じように、デットロックに注意
オルタネート回路(フリップフロップ回路)
オルタネート回路はスイッチを押すたびにON/OFFを交互に繰り返します。
フリップフロップ回路とも呼ばれます。
OFF→ONに移る動きを説明します。
スイッチをONすると立ち上がりパルスで押した1周期スキャンのみONします。そのタイミングでコイルがONします。
次の周期でスイッチの立ち上がりパルスは切れます。
ですが、前の周期でコイルがONしているためコイルのスイッチがONして自己保持がかかります。
スイッチを押すたびにコイルのON/OFFが切り替わる
シーケンス制御として以下の本が詳しくわかりやすいです。
よければ参考にして見てください。
図解入門よくわかる最新シーケンス制御と回路図の基本 (How‐nual Visual Guide Book)
基本的な段階回路
プログラムをラダー回路で記述する際に段階的にシーケンス制御をしていくと思います。
段階的に制御することで、制御が次々と進んでいきます。
その際の段階的なシーケンスの動きについて簡単に説明していきます。
自己保持回路の段階回路
自己保持回路の段階回路として、一例を下に載せました。
作りは色々パターンがありますので、自分のやりやすいようにしてもらえればいいと思います。
制御の流れとして、
「R2000スイッチON」→「1段階目処理」→「R2001スイッチON」→「2段階目処理」→「R2002スイッチON」→「処理終了」
になります。
1段階目処理だけで処理をさせたい場合は「MR001:a接点」「MR002:b接点」のAND回路で動くように次に繋げればいいです。
セットリセットの段階回路
先ほどの自己保持の段階回路のセットリセットで作った等価回路になります。
制御の流れとしても同じで、
「R2000スイッチON」→「1段階目処理」→「R2001スイッチON」→「2段階目処理」→「R2002スイッチON」→「処理終了」
になります。
こちらも1段階目処理だけで処理をさせたい場合は「MR001:a接点」「MR002:b接点」のAND回路で動くように次に繋げればいいです。
段階回路で制御を進めていき一連の動作とする
タイマー回路
意外と要望が多かったタイマー回路について追記して行きますね。
今回は基本的なタイマー回路について話します。
基本的なタイマー回路は大きく分けて3つあります。
・オンディレータイマー回路
・オフディレータイマー回路
・ワンショットタイマー回路
簡単に説明して行きたいと思います。
オンディレータイマー回路
簡単に言いますと、スイッチONしてから一定時間経過後にコイルがONする回路です。
用途としては
・タイムラグでONさせたい動作
・異常監視 など
回路を描くと以下になります。
これはタイマコイルでPLCメーカーによって見た目が異なります。
この場合は100msタイマでカウント10になります。
そのため1秒経過するとT0スイッチがONします。
R2000がONした一秒後にMR001のコイルがONします。
オンディレイはコイルがONするまでに一定時間経過する
オフディレータイマー回路
簡単に言いますと、スイッチOFFしてから一定時間経過後にコイルがOFFする回路です。
用途としては
・タイムラグでOFFさせたい動作
・安全監視 など
回路を描くと以下になります。
先ほどのオンディレイタイマー回路と同様に、100msタイマでカウント10になります。
そのためスイッチOFFした後に1秒経過するとT0スイッチがONします。
R2000がOFFした一秒後にMR001のコイルがOFFします。
オフディレイはコイルがOFFするまでに一定時間経過する
ワンショットタイマー回路
簡単に言いますと、スイッチONしたらコイルがONし、スイッチ関係なく一定時間経過後にコイルがOFFする回路です。
用途としては
・時間基準で動作させたい動作
・時間監視 など
回路を描くと以下になります。
先ほどと同様に100msタイマでカウント10になります。
この回路はスイッチONでコイルがONします。
これはスイッチの立ち上がりで自己保持がかかります。
その後はスイッチ動作に関係なく、一秒後にコイルがOFFします。
R2000がONしたらMR001がONをして、その一秒後にMR001のコイルがOFFします。
ワンショットタイマーはコイルがONしたらコイルがON、一定時間経過後にOFFする
ラダー回路の工夫
私がラダーを描く際に少し注意・工夫している点を少しだけ説明します。
・並列回路の見にくさ軽減
・コマンド、インターロック、出力と分ける
・出力でソレノイドバルブ制御の場合
並列回路の見にくさ軽減
以下のように並列回路を書きます。
ですが、どんどん並列回路のスイッチが増えると縦に回路が伸びてビジュアルプログラムではとても見にくくなります。
その場合、以下のように等価回路が作れます。
並列を直列にする場合AND回路さらにNOT回路にすることで同じ回路になります。
すこしわかりにくい形になりますが、プログラムとしてはとても見やすくなります。
ラダー回路を極力見やすくして間違いを低減する
誤動作防止
入力及び出力は極力シンプルにするのは基本と言いました。(ヒューマンエラー、バグの防止)
それ以外にも注意点があり、基本的に誤動作防止を考えて描いていきます。
・入力をそのまま使用しない。
入力をそのままするのではなく、誤動作防止を踏まえて使用する。
誤動作が起こらないと思われる場所はそのまま使用しても問題ないと思います。
センサで待機側、動作側2点取っている場合、そのセンサ2点の状態から待機側、動作側を判断してプログラムに使用します。
センサ、スイッチ等が壊れないとは言い切れません。
故障の際にプログラムを進めさせないためです。
・動作コマンドを出力にそのまま使用しない。
こちらも誤動作が起こらないと思われる場所はそのまま使用しても問題ないと思います。
インターロック(動作が可能な状態を監視・判断)するのを使用します。
常時、出力の動作に対して状態を監視・判断を作っておきます。
コマンド+インターロックで出力に渡します。
入出力は誤動作防止を考えて利用・接続をする
出力でソレノイドバルブ制御の場合
シングルソレノイドやダブルソレノイドを出力で使用する場合の工夫点です。
ダブルソレノイドバルブを制御する場合、2点出力が繋がっていると思います。
制御状態により、両方OFF、片一方ONがありますが通常両方ONはあり得ません。
そのため、両方ONを制御として作らせない方法です。
また、シングルソレノイドバルブの制御をダブルソレノイドバルブのプログラムを作っておくと、シングル→ダブルと変更になった際にプログラム修正が容易になります。
・自己保持回路
特徴として、R50000,R50001が同時にONしないようになっています。
例えばMR000(MR010,MR011がON状態として)がONした場合MR1000が一度ONします。
その周期ではR50000がONをせず、R50001の回路を切ります。(R50000,R50001がOFFする)
次の周期でR50001がONします。
ここでMR100(両方出力OFF)を作っているのは両方を切りたい場合のスイッチになります。
・セットリセット回路
先ほどの自己保持回路の等価になります。
同様にR50000,R50001が同時にONしないようになっています。
ただし、MR000もしくはMR001(MR010,MR011がON状態として)がONした場合R50000,R50001が両方OFFの1周期はありません。
すぐに(その周期で)ON/OFFが切り替わります。
ソレノイドバルブ制御ではダブルソレノイドで回路を作っておくと変更にすぐに対応できる
シーケンス制御として以下の本が詳しくわかりやすいです。
よければ参考にして見てください。
2017/09/27 タイマーについて追加