シーケンス制御講座

プログラム作成

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

プログラムの書き方ということで、実際の搬送の動作と原点復帰のプログラムを使って解説していきます。

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


ショートカットキー

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

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

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

動作の解説

基本的なプログラムの書き方を説明していきます。プログラムはできる限りシンプルにわかりやすく書くことと、後で自分が修正したり改造したりする気持ちで書いてください。わかりやすく書くことが何より重要です。このページでは単純にプログラムの書き方のみを説明します。
(ちなみに以前このページで使っていた回路はステップ方式で説明していました。この方式はあまり一般的ではないので自己保持を連続して書く方式に変更しています。このページを初めて読む方は特に気になさらないでください。)
以前「データシフトについて」で説明した動作を例にプログラムを作成していきます。

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

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

プログラムの書き方

これは私が普段書いている書き方をそのまま使いました。移載回路に「M1400」~「M1499」の100個の内部リレーを使うことにします。

この回路の動作開始は「M1410」~です。この回路単体では出力コイルを書いていないので動作しませんが、「M1410」がONすると移載がが上昇します。すると上昇端センサーがONするので移載は横移動します。つまり「M1410」がONすれば移載は一連の動作を行い停止するようになっています。ここまでは普通の自己保持を使った書き方となります。では順番に細かい説明をしていきます。

最初に各動作の自己保持の前に「M1400」のa接点があります。そしてこのコイルは回路の先頭で常時ONしています。常にONしているのであってもなくても影響はありません。ではなぜ「M1400」の接点を入れているのでしょうか。「M1410」がONしてサイクルがスタートすると、一連の動作を実行してしまいます。それはこの「M1400」がONしている状態だからです。例えばこの「M1400」を途中でOFFすると、その時点で停止します。そして再度ONすると途中から動作します。一時停止みたいなことが可能です。

実際の使い方ですが、「M1400」は通常時は常時ONさせておきます。そして動作確認などで1工程ずつ動作させたい時は「M1400」をOFFさせておき、動作させたいタイミングでONさせます。

次に「M1401」ですが、この動作を行ってもいい条件が整っている時にONさせます。例えばこの移載ユニットが原点位置にいるなどスタートしてもいい状態の時にONさせます。この回路の例では移載ユニットが原点位置とその他のユニットが原点位置にいるときに「M1401」がONするようにしています。最低限この状態でないと動作できないという意味です。

「M1402」のON条件に「M1401」の接点があります。「M1402」をONすればこの移載回路は動作します。つまり「M1401」と[M1402」が動作条件となっており。この2つのコイルを同時にONさせればいいのです。わざわざ2つのコイルを使っているのは、実際の条件はもっと複雑で接点も多いため1つのコイルで行うと見苦しくなるためです。条件が増えると「M1408」のような使っていないコイルをさらに追加することもあります。

「M1403」もこの回路を動作させる条件なのですが、先ほど説明した「M1401」などとは少し違います。「M1403」をONさせておかないとこの回路は動作しません。さらに動作中にこの「M1403」をOFFすると即停止します。これは一時停止ではなく完全に回路を停止させるため、停止した場所から再起動はできません。「M1400」の場合は一時停止になるので再起動は可能なのですが、「M1403」をOFFするということはこの回路を完全に停止させます。

このように一連の動作回路の場合必ずサイクル停止接点以外にも回路を完全に停止させる接点が必要です。例えば停止接点がサイクル停止だけの場合、シリンダのリードスイッチ(シリンダセンサー)が故障したらその場で身動きが取れなくなります。異常回路などを作って異常を出しても、回路を停止する方法がなければ回路はリードスイッチの信号入力待ち状態になります。もちろんリードスイッチが直ると突然動作するということです。大変危険なので一連で動作する回路は自動モードなどの特定の状態以外は実行できないようにしておきます。もちろん異常が発生した場合などもOFFします。

各ユニットの動作はこのように「M1410」~をユニット動作の一連の動作回路とし、「M1400」~「M1403」(必要であればさらに追加)を使ってそのユニット(ここでは移載)を制御すればシンプルになると思います。これは私が使っている書き方なので、ここから自分なりに使いやすく変更していただいてもかまいません。

原点復帰の書き方

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

移載ユニットのみの原点復帰回路です。移載ユニットの原点は簡単でユニットが下降して横移動が戻り側にあればいいのでリードスイッチは下降端と戻端の2つのリードスイッチがONしていればいいことになります。この条件が「M440」です。もちろん原点復帰回路の動作中はONしないようにしています。その下の「M449」は単純に原点位置にいれば原点復帰中でもONする接点です。これはこの原点復帰回路内で使います。何個も原点状態の回路を書くのがいやなので、このようにまとめています。

次に「M441」で原点復帰できる条件を指定します。「M442」~が原点復帰動作の回路になります。このコイルの左端に「SM400」のb接点があります。この接点を原点復帰の指令接点へ変更すれば完成です。この動作回路もサイクル完了の「M448」以外にも「M20」の手動モードという接点が入っています。これも先ほどの移載動作回路と同じで、サイクル完了の接点のみだと、サイクル完了できない場合回路停止ができないからです。本来はここに異常発生などの接点も追加します。
ここに「M20」の手動モード接点があるということは、原点復帰中に自動モードにすると原点復帰は停止できます。これはイレギュラーな場合、原点復帰を停止させる手段として使っています。もちろん自動モードにしたからといって原点復帰が完了していないので自動運転はできませんが。

どうでしょうか?このように考えれば多少複雑な動作も、単純な動作の集まりに見えないでしょうか?複雑な作業があっても、全部の動作を一度に行わず、分割できるところは分割して行うことで誰にでも分かりやすいプログラムを製作できます。もちろん最終的には全体の動作を考える必要はありますが、そのまま全体の動作で考えるのではなく、各ユニットの集まりとして考えます。そして各ユニット同士がそれぞれ条件を渡しあって連携して動作します。この部分は設備の内容によって違うので、実際に作業して覚えていくしかありません。最終的には最低限自分が理解して納得いくプログラムを作成してください。自分でも分からないプログラムは、他の人が見たらもっとわかりませんよ。

ここまではプログラム作成方法の簡単な解説になります。次回からはプログラムの設計を簡単に行っていこうと思います。

今回はプログラムの作成方法を簡単に説明しましたが、下記の実践ラダー学習キットではさらに詳しく、実践的に解説しています。実際の設備に見立てた物をGOTのシミュレーション機能で動作させ、動かしながら学習できます。ご興味のある方はぜひご検討ください。
※GX Works2とGT Designer3が別途必要です。


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

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