シーケンス制御講座

プログラム作成(旧)

シーケンス制御講座 上級編 プログラム作成(旧)

ステップ方式のプログラムの作成方法を解説しています。

作成日:2016年05月10日
更新日:2021年09月30日


ここで紹介している書き方は一般的に使用されている自己保持を繰り返して作る「歩進方式」ではなく、データレジスタの値を利用して動作制御を行う「ステップ方式」です。しかしこの方式を使う人は少なく、実際に仕事で使うとあまり評判がよくないので現在私もこの方式は使用していません。興味ある方は参考にしてみてください。

プログラム作成

ショートカットキー

シーケンス回路のプログラム作成方法を説明します。実際に回路編集するときは下記のショートカットを覚えておきます。

「Shift」+「Insert」…行挿入
「Ctrl」+「Insert」…列挿入

すでに書かれているプログラムの前のほうに、新規にプログラムを追加したい場合は、カーソルを合わせて行挿入してください。実際は少し多めに(適当)に追加して変換します。変換後、空白行は削除されますので問題はありません。列挿入は接点を追加するときに実行します。このショートカットキーは必須と言えますので、確実に使えるようになってください。

動作の解説

プログラムといっても単純な動きのものはすぐできると思いますが、複雑な動きのものは簡単にはできません。作り方によっては動きが全く見えなくなってしまいます。「データシフトについて」で説明した動作を例にします。

製品シフトは次のようになります。

製品をシフトさせ、各ユニットに仕事をさせ、完了したら次の工程に送って仕事をさせるという動作です。まず回路設計の考え方ですが、いきなりすべての動作を作るのではなく、各ユニットごとに作っていきます。

簡単に作りましたが、「M0」の右側にあるb接点の「SM400」をはずして動作条件を入れれば動作します。しかしこの時点では動作条件がないため、動作しないように常時OFFの接点を入れています。上記回路は最初のステーションの部品を供給する部分です。動作させなくしているのは最初の「M0」の部分なので、試しに動作させてみたい場合は「D0」の値を1にします。直接1を書く回路を作るのではなく、パソコン側から強制的に1を書きます。

まず「F3」キーを押してモニターモードに切り替えます。(パソコンとPLCは接続しておいてください。)「D0」の上にカーソルを合わせて「Shift+Enter」を押します。これは強制出力で、回路上の設定を強制的にONさせたりOFFさせたりできます。データレジスタに対して実行すると、入力画面が出てきますので、1を入力して「設定」してください。これで書き換えが完了です。この時点でプログラムは動作を開始します。そしてサイクルが完了した時点で「D0」の値が0に戻ります。

補足として、接点の強制ON-OFFは1スキャンのみ有効です。そのスキャンはONしても次のスキャンでプログラムによりOFFされてしまいます。動作させたいコイルの前にパルスの接点でONさせている感じです。そのため回路によっては動作しません。(実際はしているのですが、早すぎて見えないのです。)目に見える形で動作させたい場合は、CPUのRUNを止めてください。これで動作します。これはCPUが停止しているので、OFFにする回路を演算しないためできるのです。又、自己保持がかかるコイルなどはRUN中にONできます。安全を確かめた上で、自己保持させて強制ONさせることも可能です。

プログラムの書き方

話を戻します。最初のステーションのベースのプログラムができました。同時に自動運転の回路も作っておきます。これは自動ボタンを押せば自動モードになる回路です。最初は特に条件もないので、単純な自己保持でいいと思います。この自動コイルを「M0」と「SM400」の間に入れれば、自動モードが切れたとき、サイクル動作(すべての動作が完了してから終了)になります。「INCP」の前に入れると即停止となります。この辺りは各会社での安全基準もあるのでそちらにあわせてください。

このユニットに対して動作させたいときは、「動作しなさい」と言うパルスを1個作り、b接点の「SM400」と入れ替えれば完了です。常時「D0」は0で待機しています。「M0」の接点が入って待機していますので、この「M0」の条件にスタートパルスをいれてあげれば、 「D0」は0から1になって動作開始するのです。

同じように、他のユニットに対してもサイクル動作を行うプログラムを作ります。すべてのユニット及び、搬送の動作に対してプログラムができたら、起動条件を入れます。ここからはプログラムを作成する人のセンスによりますが、作り方はいろいろあります。各ユニットを制御するメインルーチン部分を作るという考え方もありますが、私は各ユニットに起動条件を入れて制御します。各ユニットのプログラムが完全に独立する形で、それぞれのプログラムが自分で判断して動作する形です。作り方は人それぞれですが、このように作るとシンプルになるからです。

まず最初の部品を置くユニットの起動条件として、搬送部分(トランスファ)が原点で、尚且つ動作していないこと。さらにこのユニットのワーク検出センサーが反応していて、まだ作業を完了していないこと。もちろん自動運転中にです。こんなところでしょうか?動作完了したら、完了ビットを立てるか、データレジスタを利用して、正常に完了したら1を入れる、異常に完了したら2を入れるなどすれば、次工程の制御にも使えます。この情報は製品搬送時にデータシフトさせます。

各ユニットに上のような条件を入れます。次は搬送です。これも同じように、各ユニットにワークがない場合、又はワーク検出している場合、動作が完了していて、各ユニットが原点位置、動作していないことが条件です。動作していないという信号は各ユニットから出してあげてください。例えば「D0」が0以外なら動作中です。

そして入り口から製品が入ってきた場合も動作条件です。すべてのステーションの製品がなくなった場合、動作条件を消してあげないと空打ちしますので、条件を設定してください。

これで完了です。最初から全体をみてプログラムを作成するととても複雑になります。このように各ユニット別に製作しシンプルに仕上げることがバグの少ないプログラム作成のコツです。条件が合わないときは実際に動かしながらモニタしてみましょう。実際に目で見て判断することも重要です。

原点復帰の書き方

次は原点復帰動作です。これも各ユニットごとに原点復帰動作を作ってください。これはすべてのシリンダをいきなり原点に戻すと、他のユニットやシリンダと接触する恐れがあるため、一度逃がす動作を行ってから原点復帰を行います。原点復帰ボタンの信号を「M100」などにパルス化します。

このようにまず動作制御用の「D0」を0にします。これでプログラムは待機状態になります。しかしソレノイドがダブルの場合シリンダが原点に戻りません。そこでシリンダを戻すプログラムを作るのですが、まずハンドを上昇させて、原点復帰をします。最初から上昇していればそのまま原点復帰します。このように各ユニットに原点復帰動作をつくり、すべてが原点復帰した時点で「全原点復帰」とすればいいのです。

どうでしょうか?このように考えれば多少複雑な動作も、単純な動作の集まりに見えないでしょうか?複雑な作業があっても、全部の動作を一度に行わず、分割できるところは分割して行うことで誰にでも分かりやすいプログラムを製作できます。最低限自分が理解して納得いくプログラムを作成してください。自分でも分からないプログラムは、他の人が見たらもっとわかりませんよ。



図解入門 よくわかる最新 シーケンス制御と回路図の基本はKindle版(電子書籍)です。単行本ご希望の方は、フォーマットで単行本を選択してください。または、トップページよりご購入ください。

Copyright (C) 2010 シーケンス制御講座, All rights reserved.