シーケンス制御講座「回路作成の考え方」
基礎からはじめるシーケンス制御講座
中級:回路作成の考え方
歩進制御とステップ制御では動作制御に関する回路の作成方法を説明しました。
その説明の補足として、回路作成の考え方ではもう少し大きな視点から説明しようと思います。
まず最初に歩進制御とステップ制御で説明した回路にはタイマーがほとんど入っていません。実際の回路を製作する場合は、入力が入って0.2秒位タイマーをいれておくといいと思います。
タイマーにしておけば、デバッグ時にも簡単に動作を遅延させたりできます。入力の「X」を一度タイマーで受け、動作回路にはそのタイマーの接点を使えば簡単にできると思います。
それでは回路作成の考え方を説明していきます。基本的には歩進制御で説明した感じで回路を作成していきますが、プログラムが大きくなるとプログラムを分割して作成する必要があります。
どのように分割するか? どのように各プログラムをリンクさせるか? 結論から言うと、この部分でプログラム全体の完成度は決まってしまいます。この部分はプログラム作成に入る前にしっかり悩んでください。
データシフトについてで説明した動作を例に説明します。
この設備は部品を置く工程、カバーを置く工程、ネジを締める工程、ネジを確認する工程があります。そして製品をトランスファーで搬送する工程もあります。
まずプログラムは各工程別に作成します。プログラム単体で説明します。下記の図のようにプログラムを作成します。
これが何と意味するのか?これは部品を置くステーションとカバーを置くステーションのプログラムを作成したあと、お互いの状況(部品を置くことに失敗したなど)を確認するために、プログラムの一部を相手のプログラムに侵入させています。
このようなプログラムの作り方がいいかどうかというと、ダメです。上の図では2個のプログラムなのでまだ何とかなります。
しかし実際は4個の工程があるので、4個のプログラムが重なることになります。搬送関係も入れればさらに増えます。なぜこのようなプログラムの書き方がいけないのでしょうか?
例えばカバーを置くプログラムが不具合を出したとします。これをデバッグするのですが、お互いのプログラムが重なっていると、どの部分で不具合が生じているのか分かり難いのです。
さらに、もし設備の改造でカバーを置く部分に動作を追加するとします。この場合単純にはいきません。他のプログラムにまで影響が出る恐れがあります。作ったひと以外ではなかなか改造も難しいプログラムになります。
このようなプログラムは私は推奨しません。
ではどのような書き方がいいのでしょうか? あくまで例ですが。
プログラムを書く人にもよりますが、私は上の図のようにお互いのプログラムが読み書きできる共通のデータレジスタを設定します。
例えば部品を置くことに失敗した場合、上の図の共通デバイスで設定したデータレジスタに失敗したフラグを立てます。(例:D200に2を書き込む)カバーを置くプログラムはフラグを確認してカバーを置くか、パスさせるか判断します。(例:D200が1なら正常動作。D200が2なら部品を置く動作が失敗したとみなし、パス動作)このようにしておけば、片方のプログラムが、もう片方のプログラムに影響を与えません。
トラブルがあっても不具合を発見しやすいと思います。
では原点復帰をするプログラムのイメージを説明します。原点復帰とは設備内のシリンダなどが初期状態の位置にもどる作業です。
もちろんプログラム内の動作回路も初期位置に戻します。
作成方法はまず部品を置く部分やカバーを置く部分が単体で原点復帰するプログラムを作ります。歩進制御で、パルスを与えると原点復帰するようにしておきます。5工程ありますので、5通りのプログラムができます。
次に全体を制御する部分を作ります。全体を制御する部分も基本的には歩進制御です。全体を制御するプログラムを実行させると、部品を置く部分~ネジを確認する部分に原点復帰指令パルスを出します。
そして4個のユニットが原点復帰完了したら、搬送する部分に原点復帰パルスを出します。これですべてが原点復帰すれば、全原点復帰完了で、原点復帰の歩進制御を停止させます。
このように各ユニットのプログラムを作成して、全体のプログラムで制御すればシンプルになります。この場合、各ユニット別に原点復帰完了のコイルも必要です。
ではデータシフトを使ったプログラムのイメージを説明します。
各プログラムは、自分の右側のデータしか見ません。右のデータを確認してプログラムを動作させ、動作完了状態を右側のデータを書きます。例えば部品を置く部分で失敗したとします。
このとき失敗した情報を右側のデータに書き込みます。そしてワークを搬送するとき、右側のデータをデータシフトさせます。カバーを置く部分の右側のデータには、先ほど失敗した情報が書き込まれています。
この情報をみてカバーを置く部分をパスさせるなどの動作をすればいいのです。
簡単に説明しましたが、実際は部品を置く部分の右側のデータの中にもすでに後工程の動作状況が入るデータレジスタが設定してあります。(設定しないとデータシフトが成り立たないため)部品を置く部分で失敗したとき、あらかじめ後工程の動作状況が入るデータレジスタに“3”などの値をいれておきます。
カバーを置く部分にワークがきたときすでに“3”が入っているのでパスさせます。(あらかじめ“3”がきたらパスさせるようにプログラムを作成しておく)このようにプログラムを作成すれば、各プログラムは実行前に自分の動作状況を確認してプログラムを動かすか判断できます。
搬送する部分は、各データの中の動作状況を確認して、搬送を動作させます。
イメージだけの説明で分かり難いかもしれませんが、プログラムの基本は小さいプログラムの集合体です。
このプログラムを複雑に組むか、きれいに組むかは作成する人のセンスになります。最初から完成度の高いプログラムをつくのは難しいですが、他の先輩方のプログラムなどを参考にして、少しずつレベルアップしていきましょう。
ポイントは複雑に考えないことです。いかにシンプルに考え、構築していくことです。
参考書
秀和システム
売り上げランキング: 70,884
秀和システム
売り上げランキング: 31,176