シーケンス制御講座

サイクル動作部分作成

シーケンス制御講座 上級編 サイクル動作部分作成

各ユニットの一連の動作を書いていきます。

作成日:2016年05月10日
更新日:2022年05月17日


サイクル動作とは

サイクル動作というのは設備内の各ユニットが行う一連の動作です。設備というのは一連の動作を繰り返し行っているだけです。各ユニットで動作するタイミングが違うと、設備としては違う動作を行っているように感じます。例えば設備には部品を供給するユニットや製品を搬送するユニットなど複数のユニットがあります。例えば部品を供給するユニットに注目してみると、同じ動作を繰り返し行っていることが分かります。製品が見たら、製品に部品を供給。次の新しい製品が来たらまた部品を供給。部品を供給するという同じ動作を繰り返し行います。

このように部品を供給する動作をサイクル動作と呼びます。設備を自動で動作させるには、各ユニットのサイクル動作のプログラムを作って、それぞれの条件で実行するだけです。そしてこのサイクル動作は単純にシリンダやモータなどを順番に動作させているだけです。(例外もありますが)この順番に動作させるプログラムを今回は歩進制御で作っていきます。これは動作に対して自己保持を繰り返し行って、サイクル完了で自己保持を解除する方式です。文字で説明しても分からないので、実際にプログラムを確認してみましょう。

部品供給ユニットの条件部分

最初に部品供給ユニットを作ってみます。部品供給ユニットは「M1000」~「M1099」を使うように取り決めをしています。その中で「M1000」~「M1009」までの内部リレーでこのユニットの動作条件などを作り、動作は「M1010」~「M1059」の内部リレーを使います。最初に動作条件部分です。

今回はサンプルなので、このような感じで動作条件を設定しました。最初の「M1000」はデバッグ用です。この後サイクル動作回路を作るのですが、この「M1000」がONしていないとサイクル回路が進まないように作ります。動作を一時的に停止して設備の状態を確認したい時は「M1000」をOFFすると停止します。デバッグ用なので使用しなければ基本的には常時ONです。次の「M1001」と「M1002」はサイクル運転を開始するための条件です。両方のコイルがONしないと動作しないようになっています。「M1001」はサイクル運転開始可能な条件を設定し、「M1002」は開始指令などを設定します。用途で分けていますが、基本的には両方とも動作条件です。

次の「M1003」はサイクル動作を実行し続けるための条件です。実行条件との違いは、実行条件は実行するための条件で、実行してしまえばOFFになっもサイクル動作は実行し続けます。しかしこの「1003」は実行している間も常時ONしていないといけません。サイクル実行中に「M1003」がOFFすると動作が途中で停止し、リセットされます。最初に説明した「M1000」の停止とは違います。「M1000」の場合再度ONするとその状態から動作します。しかし「M1003」はOFFすると、最初から動作させないといけません。

この「M1003」はこのユニットの異常などが発生し、これ以上の動作が実行不能になった場合OFFして、動作回路自体を遮断します。サイクル動作が実行した状態は「M1000」で回路を一時停止させたとしても動作回路は途中まで実行して次の動作の条件待ちとなっています。この状態は自動運転以外では危険な状態です。そのため今回のサンプルプログラムでは基本的に自動運転状態でない限りは遮断しています。サイクル動作は一度実行してしまうとサイクル完了まで動作を行おうとしますので注意してください。
今回のプログラムでは、サイクル動作中に手動モードに切り替えた場合、動作を停止して再度動作させたい場合は一度原点復帰させて実行する形になります。それでは動作回路を見ていきます。

部品供給ユニットの動作部分

「M1010」が動作回路スタート部分です。先ほど説明した「M1002」が条件で動作開始します。「M1002」の条件に「M1001」も含まれていますので、結果的に両方ONしないと動作しません。その横に「M1003」の接点もあります。M1002」がONすると動作開始します。すると「M1010」で自己保持がかかります。つまり一度動作開始してしまえば「M1002」がOFFしても動作を続けます。そして「M1003」で「M1010」自己保持を行っています。つまりサイクル動作を行うには、動作中は常時「M1003」をONしておかないといけません。これが先ほど説明した意味です。

「M1010」と同時に「M1011」がONします。この「M1011」で最初にハンド状態を確認します。実は「M1011」でなくても「M1010」を使ってもいいのですが(「M1011」は書かないということ)コメントの入力数にも制限があるのと、それぞれの内部リレーに役割をはっきりと設定したかったので「M1011」を使っています。一見だらだらと長くなるような気もしますが、このように用途別に内部リレーを分けたほうが後から読みやすい回路になります。

この「M1011」のハンド状態確認というのは実行後にハンドが閉じているかどうか確認しています。どういうことかというと、すでにハンド内に部品を持っているか確認しています。本来であれば「部品をつかんだ」という記憶を別の内部リレー等で保持するのですが、今回はサンプルなのでハンドが閉じていれば部品をつかんでいることにします。実際に使う場合は、この「M252」を記憶に使っている他の内部リレーなどに書き換えればいいと思います。もちろんそのままでも動作します。
この「M1011」がONしたとき、「M252」がONしている、つまりすでに部品をつかんでいれば「M1012」がONします。そうでなければ「M1013」がONします。「M1012」か「M1013」のどちらかしかONしないようになっています。さらに一度どちらかがONしてしまうと「M1011」がOFFしない限りは変化しません。つまり一度部品を持っているかどうか判定したら、このサイクル中は判定は変わりません。突然「M1012」がOFF→ONに変化したりはしません。これはこの「M1011」の時点で動作回路を分岐させています。分岐されるといっても別の動作を作っているわけではありません。「部品を取る」という動作をパスさせます。本来の動作はここから部品を取りに行く動作となります。つまり「M1013」のほうから回路を作っていきます。「M1012」は一旦保留にしておきましょう。

「M1013」がONすると「M1014」がONします。この2つの内部リレーの動作は同じです。1つにまとめてもいいのですが、コメントの関係上このようにしたほうが分かりやすいので今回は2つの内部リレーを使っています。もちろんコメントをまとめて1つの内部リレーにまとめても大丈夫です。「M1014」がONするとハンド下降の出力がONするように後で回路を作ります。今は単純に「M1014」がONするとハンドが下降することにしてください。「M1014」がONするとハンドが下降します。するとハンド下降端の「M250」がONします。「M250」がONすると「M1015」がONして自己保持状態になります。「M1015」がONするとハンドが閉まって部品をつかみます。次に「M1015」がONしている状態でハンド閉端の「M252」がONすると「M1016」が自己保持状態となりハンドは上昇します。ここまでの流れは、ハンドが下降開始するとそれぞれのシリンダセンサ等の状態を確認して、「ハンド下降」→「ハンド閉」→「ハンド上昇」という一連の動作を行います。
ここで「M1000」の接点が気になるかもしれませんが、これはデバッグ用で常時ON状態なので普段は無視してもらえば大丈夫です。使い方としては、動作を止めたい場所で「M1000」をOFFする、スイッチなどで「M1000」をONするようにしておけば、スイッチを押している間だけ通常動作を行い、スイッチをはなすとと一時停止します。使い方はいろいろあります。仕組みとしては、「M1015」の部分で説明すると、「M1015」がONすると「M252」がONします。この時点で「M1000」がOFFしていればハンドが閉まった状態で停止して上昇動作は行いません。一時停止状態になります。ここで一度「M1000」をONすると次の動作を行います。

次は「M1016」がONして上昇後からの回路になります。

「M1016」がONするとハンドが上昇します。この時すでに部品を取っています。その後ハンド上昇端「M251」がONする「M1017」がONして自己保持状態とります。この「M1017」がONするとハンドが横移動して部品を製品の上まで搬送します。つまり「M1017」は部品を製品の上まで運ぶ出力となります。さらにこの時のユニット位置は原点位置です。このユニット動作の最初のあたりにあった「M1011」を思い出してください。「M1011」ですでにハンドに部品を持っているか確認しました。つまりもしこの時点で部品を持っていればそのまま製品の上に運べばいいのです。
もし「M1011」のハンド状態確認時点で部品を持っていれば「M1012」がONします。すると上記の「M1017」のコイルを直接ONしてハンドを動作させるようになっています。これが動作をパスさせるということで、今回は部品を取り出す動作をパスさせました。注意点として、回路をパスした後はサイクル動作が完了するまでパスした部分を動作させないことです。上記の回路で説明すると「M1012」で部品取出し動作をパスさせて「M1017」までONした場合、「M1013」~「M1016」は絶対に動作させないでください。もし動作させてしまうと部品を製品に供給している時や搬送しているときなどに部品を取出す動作を行います。この時、全然違う場所でハンドが下降したりしますので設備が壊れる原因になりますので注意してください。今回の回路では「M1012」のコイルか「M1013」のコイルどちらか一方しかONできません。つまり「M1012」がONした時点で「M1013」~「M1016」はONできないようにしています。自己保持を連続して書く歩進制御なので「M1013」さえONしなければそれ以降のコイルはONできないですし自己保持させることもできません。そのため回路パスさせる場合は「M1017」のように自己保持の外側から直接「M1012」でONさせます。こうすることで「M1017」以降の回路は正常に動作します。

「M1018」からの動作も同じように書いています。部品が製品の上まで搬送されたら(ハンドが横移動端まで動作したら)下降して部品を製品内に入れてハンドを開き、ハンドを上昇させて、元に位置に戻します。元の位置に戻るとサイクル完了です。サイクル完了時は「M1059」がONするようにしています。すると「M1010」の自己保持を解除するため、この動作回路全体をリセット(この動作回路の自己保持を解除)して完了となります。再度動作させたい場合は「M1010」をONすれば何回でもこの一連の動作を行います。

今回サイクル完了コイルに「M1059」を使いましたが、他の番号でも大丈夫です。例えば「M1022」でも大丈夫です。なぜ「M1059」にしたかというと他のユニットと基本的に同じような番号を使いたかっただけです、つまり他のユニットでは「M1159」や「1459」がサイクル完了コイルになります。

部品供給の一連の回路がこれで完成ですが、これはサンプルです。私の書き方をベースに説明しているだけです。回路の動作条件などはしっかり検討してください。例えばこの回路の動作条件を「製品有」と「製品搬送が定位置」など、簡単に考えると、同じ製品に繰り返し部品を供給してしまいます。部品を供給後は供給完了のフラグ(メモリ)などを入れておく必要があります。

製品搬送ユニットの動作部分

すこし長くなりますがついでに製品搬送部分も書いてみます。

基本的には先ほどの部品供給と考え方は同じです。動作条件は先ほどの部品供給完了や各ユニットが原点位置(完了しない位置)にいるということが条件です。ただし単純に各ユニットが動作完了という条件だけでは動作しません。それは製品が流れ出す最初と、生産が終了する最後では製品が無いユニットが存在するためです。初めて製品を流すときは最初の部品供給ユニットには製品があってもその後のユニットには製品がない。反対に製品をすべて流し終えるときは部品供給ユニットには製品がなく、その後のユニットには製品がある。ということが発生します。そのため動作条件に各ユニットの動作完了フラグと製品が無いということも条件にしておかないといけません。

↓↓ここまでのプログラムデータ↓↓
ダウンロード



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

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