1.二重コイルとは
PLCラダーの設計でおそらく誰もが経験したことがあるはず、またはこれから誰もが経験するはずの「二重コイル」。別名「ダブルコイル」ともよばれるこれはどんな状態のことをいうのでしょうか。この記事では二重コイルに関する解説とそのチェックや回避方法について記載していきます。
説明画像はクリックやタップで拡大可能です。そのままでは分かりづらいと思いますので適宜拡大してご覧ください。
1)その名のとおり
「二重コイル」とはその名のとおり別回路で同一のコイルが、二つ以上存在してしまうことを言います。それがどのような状態なのかは以下の画像を見てもらえれば一目瞭然です。キーエンス製のPLCラダー(KV STUDIO)での二重コイルと三菱電機製のPLCラダー(GX Works2)での二重コイルの両方を載せておきます。
ご覧のとおり、全く別の条件で出力することを命令されている同一コイルが存在しますね。上の画像ではKV STUDIOなら「Y50コイル」、GX Works2なら「Y0コイル」が二重コイルとなっています。こうなってしまうとプログラムとしては矛盾が生じることとなり、コイルはどちらの命令(条件)に従えばいいのか判断がつかなくなってしまいます。それでもPLCは健気に命令に従おうとした結果、見た目におかしな動作をすることとなります。
ひとまず上の画像にある回路の例を人間語(日本語)で解釈してみます。KV STUDIOでは「Y50コイル」を、GX Works2では「Y0コイル」を各々出力としている点だけご注意ください。以下が画像のプログラムを人間語にした場合の文章です。
1行目:【「X0,a接点」がON(導通)のとき「Y50(Y0)コイル」を出力しなさい】
2行目:【「X1,a接点」がON(導通)のとき「Y50(Y0)コイル」を出力しなさい】
一見OR回路のような解釈になってしまいそうですが1行目と2行目をもっと厳密に解釈すると以下のようになります。
1行目:【「X0,a接点」がONのときのみ「Y50(Y0)コイル」を出力しなさい】
2行目:【「X1,a接点」がONのときのみ「Y50(Y0)コイル」を出力しなさい】
これだと矛盾がわかりやすいのではないでしょうか。
2)出力しない
先ずは二重コイルを記述してしまった場合の結果をみてみましょう。以下の画像では「M0コイル」を二重に記述してしまった例です。PLCメーカー問わず「X0,a接点」をONさせても「M0コイル」が出力してくれないので、そのあとに続く「Y50コイル」や「Y0コイル」の出力はありません。しかし「X1,a接点」のONでは出力してくれます。ただ見た目になにかおかしいですね。「X0,a接点」のONが無い行の「M0コイル」も出力しているように見えます。
KV STUDIOでの二重コイルとシミュレーション
「X0,a接点」がONでも「M0コイル」は出力していません。
「X1,a接点」がONで「M0コイル」が出力していますが「X0,a接点」で出力するはずの「M0コイル」も命令無しで出力しているように見えます。
GX Works2での二重コイルとシミュレーション
「X0,a接点」がONでも「M0コイル」は出力していません。
「X1,a接点」がONで「M0コイル」が出力していますが「X0,a接点」で出力するはずの「M0コイル」も命令無しで出力しているように見えます。
KV STUDIOでもGX Works2でも同じ結果です。変な出力状態ですね。なぜこんなことになるのでしょうか。その理由を探りましょう!
2.「スキャン」という考え方
PLCラダーでは「スキャン」という考え方があります。これは、高速でプログラムを繰り返し読み込むことをいいます。PLCラダーではそのプログラムの順番を「ステップ」という単位で数えます。
プログラムの0ステップ目からプログラムENDを読み込んだら再び0ステップ目から読み込みを開始します。この繰り返しのうち一巡を「スキャン(またはワンスキャン)」といい、さらにその一巡の速さを「スキャンタイム」といいます。
あるスキャン時に接点の状態が変化していたら以降のステップにおけるコイルや接点の状態を命令に沿って変更していくという動作になります。
これを踏まえてPLCラダーの状態がどう変化しているのかをみていくと、その動作が理解できると思います。以降で動きを見やすく組んだPLCラダーで二重コイルと挙動について解説します。
1)命令のやりとり
高速で読み込まれるスキャンのなかでどのような命令のやりとりが行われているのか会話調で順番つけて表現しました。PLCラダーの中では以下のようなやりとりがなされています。画像ではKV STUDIOを例に挙げていますがGX Works2でも同じ挙動です。
一度は出力の命令を受けた「M0コイル」ですがすぐに逆の命令をうけ、実際に出力するのをやめています。この場合「M0コイル」は出力しないことになります。
PLCラダーではスキャン内の後ろにある命令の方が優先されます。というよりは後ろにある命令で上書きされるという挙動です。
以下の画像の状態は先ほどの状態とは逆ですね。スキャンの最後で出力する旨の命令をうけて出力し、次のスキャンで出力停止の命令を受け出力停止したかと思えばすぐに再び出力命令をうけて実際に出力しています。
より後ろにある命令でコイルの出力状態を上書きされた結果、「M0コイル」は出力する結果となっています。
2)二重コイルの動きが見やすい回路
二重コイルでどのような動作がおきているのかがもっと見やすくなるようなPLCラダーを作成してみました。二重コイルの回路の間に、該当のコイルからの接点命令で別のコイルを出力するような回路を作成しました。これを元にひとつひとつの動きをのぞいてみましょう。以下同じように会話調で表現しています。
下の画像ではけなげに命令を実行しようとした結果、一瞬出力してすぐに出力停止している様がわかります。
スキャン中に「M0コイル」が一瞬出力した結果「Y50コイル」も出力することになっています。そしてその後の「M0コイル」出力停止命令で上書きされていますので「Y51コイル」は出力していません。シミュレーションではONしていないようにみえる「M0,a接点」ですが途中ではONしているのですね。
見た目に違和感しかありません。
下の画像は上の画像と同じ回路ですが、接点の状態を変えています。「X0,a接点」がONしていないのに「M0,a接点」はONしているように見えますが2行目の「M0,a接点」は実際にONしていないことが「Y50コイル」の挙動からわかります。
ですがその直後の「X1,a接点」に出力命令を出されて「M0コイル」が出力し、結果「Y51コイル」は出力しています。
やっぱり違和感ばかりですね。
3.わかりづらさ以外にも不具合がある
上記のようにシミュレーションやモニタリングで非常に読みづらい状態になっていることがよくわかります。これまでの画像のように一目で二重コイルをみることができる範囲での記述ならすぐに気づくことができるかもしれませんが、PLCラダー内の離れた位置での二重コイルの場合、なかなか気づくことができないかもしれません。やっかいです。
シミュレーションやモニタリング時に「え?なんでここが出力してるの??」や「あれ?なぜ出力しない??ONしない??」ということがおこり、解読の大きな妨げになります。
さらにこの二重コイルでは、スキャン中の高速読み込みのなかで激しくON/OFFを繰り返しますので不安定な動作も招きかねません。その場合はどのような挙動になるのか予測不可能ということになります。「実際にはこうなりました!」といいたいところですが、危なっかしいので試したことはありません。なにより、「動作の安定性の高さ」を特徴に持つPLCの信頼性をわざわざ落とす必要は無いはずです。
4.「二重コイル」の確認と回避
それでは、このやっかいな二重コイルをチェックしたり回避するにはどうすればよいのでしょうか。その方法を記載していきます。
1)KV STUDIOではすぐに警告が出る
KV STUDIOには二重コイル対してデフォルトで非常にありがたい機能があります。
二重コイルを記述してしまった際にすぐに警告が発せられるのです。以下の画像はその警告が出た瞬間です。
これは本当にありがたい機能です。能動的にチェックをかけなくても記述時に警告してくれることで二重コイルを避けることができます。本来二重コイルは記述する必要がありませんのでここで解消しない手はありませんね。
2)GX Works2でも設定によって自動検出
GX Works2でも、コイル命令の記述時に警告を発してくれるようにすることが可能です。
以下の操作により設定できます。
①GX Works2のエディタを開いた状態で画面上部メニューバーの「ツール」タブをクリックし、②展開したメニューの下にある「オプション」をクリックします。③開いたウィンドウの左側にツリーがありますので、このツリーの「プログラムエディタ」をダブルクリックしてください。④更にツリーが展開しますので、その中の「ラダー/SFC」を再度ダブルクリックします。ここで再びツリーが展開します。⑤「回路入力」という項目が出ますのでこれをクリックすると、ウィンドウの右側に「動作設定」や「表示設定」という設定項目が現れます。⑥この中に目当ての「2重コイルをチェックする」という項目がありますので、これのチェックボックスにクリックにてチェックを入れます。
これで記述時に二重コイルを警告してくれるようになります。
3)KV STUDIOでのチェック方法
KV STUDIOでは前述の警告である程度二重コイルを回避できますが、類似回路作成のためコピー&ペーストで回路複製した場合は警告は発せられません。また何らかの理由で一度敢えて二重コイルを記述し後程の訂正を前提とした場合も含めてKV STUDIOでの二重コイルチェック方法を記載します。
メニューバーの「変換」をクリックし、さらに展開したメニューから「2重コイルチェック」をクリックします。即座に検索が開始されます。
チェック結果が画面下に表示されます。検索結果ウィンドウ「検索1」内の内容(例えば[2重コイルチェック]:OUT M0)をダブルクリックするとPLCラダー内の該当箇所へカーソルがジャンプします。これは記述時に警告を受けたときも同様です。
3)GX Works2でのチェック方法
GX Works2での二重コイルチェック方法を記載します。
メニューバーの「ツール」をクリックし、さらに展開したメニューの「プログラムチェック」をクリックします。
開いたウィンドウではデフォルトでチェック内容全てにレ点が入っていますが、「2重コイルチェック」のチェックボックスにもレ点が入っていることを確認したうえで「実行」をクリックします。
画面下にチェック結果が「アウトプット」として表示されます。結果の内容(例えば「'M0'は2重コイルとなっています。誤動作を起こす可能性があるためプログラムを見直してください。ステップ…」)をダブルクリックするとPLCラダー内の該当箇所へジャンプするとともに該当コイルが真っ赤になります。少しびっくりします。
5.二重コイルの多くはOR回路の記載ミス
では最後に、二重コイルを発見した場合はどうすればよいのかを解説します。
もうすでにご理解の方がおられるかもしれませんが、ほとんどの場合出力条件をOR回路でまとめることができます。先程までの回路を例に二重コイルを回避したPLCラダーを以下に記載します。
「X0,a接点」と「X1,a接点」をOR回路として接続し「M0コイル」を出力するように変更しました。【「X0,a接点」でも「X1,a接点」でも「M0コイル」を出力させたい】のであればこの変更で問題はありません。「M0,a接点」での出力「Y50(Y0)コイル」をOR回路にしているのはついでの変更です。
KV STUDIO
GX Works2
6.二重コイルにメリット無し
二重コイルは入力に対する出力の状態が見づらくなり、動作も不安定になる可能性の高い、メリットの無いプログラム内容です。ですので、この状態や起こりうる動作をしっかり理解して回避することが必要となります。
設計を進めているとき、なかなか自身の間違いには気づかないものです。配線設計の時なども同様です。自らの間違いに自らが気づくというのはなかなか至難の業です。ここで解説の二重コイルはその中でも特に気づきにくい間違いです。ラダープログラムの作成中に警告などが出てくれる場合はなんとか間違いにブレーキがかかりますが、そうでない場合はプログラムのシミュレーションでその異常に気付くか、能動的に二重コイルのチェックをかけていく必要があります。
プログラムがうまく機能しない場合、二重コイルが無いか確認をしてみるのもひとつの手段ですね。そういったときにこの記事が役立てれば幸いです。
最後までお付き合いいただきありがとうございます。
カーボンの美しさと堅牢性!
使いやすさで有名なThinkPad
さらに、シーケンス制御を効率よく学びたい方へ、筆者も実践した方法を記事にまとめました。時間的コストと金銭的コストのバランスが非常に良い方法であることを説明しています。以下からどうぞ。
