シーケンス制御講座
回路作成の考え方は、プログラミングの設計みたいなもので、ソフトを作る人にとって最も重要なスキルの一つです。歩進制御やステップ制御で動作制御の書き方は学びましたが、プログラムが大きくなるとどのように分割して設計するかが重要になります。このページでは、回路作成の考え方を、原点復帰やデータシフトの実例を交えて解説します。
作成日:2015年01月10日
更新日:2026年05月26日
解説の前に
歩進制御とステップ制御では動作制御に関する回路の作成方法を説明しました。その補足として、このページではもう少し大きな視点から回路作成の考え方を説明します。
まず最初に確認したい点として、歩進制御とステップ制御で説明した回路には、シリンダセンサー(リードスイッチ)からの入力に対してタイマーがほとんど入っていません。実際の回路を製作する場合は、シリンダセンサーからの入力が入って0.2秒ほどタイマーを入れておくことをお勧めします。タイマーにしておけば、デバッグ時にも簡単に動作を遅延させることができます。入力「X」を一度タイマーで受け、動作回路にはそのタイマーの接点を使えば簡単に対応できます。
実務のポイント:シリンダセンサーからの入力には、必ず0.2秒程度のタイマーを入れておきましょう。これによりチャタリングや振動による誤動作を防止でき、デバッグ時の動作遅延調整も容易になります。
回路作成の考え方
それでは回路作成の考え方を説明していきます。基本的には歩進制御で説明した感じで回路を作成しますが、プログラムが大きくなるとプログラムを分割して作成する必要があります。どのように分割するか?どのように各プログラムをリンクさせるか?この部分でプログラム全体の完成度は決まってしまいます。プログラム作成に入る前にしっかり設計してください。
データシフトについてで説明した動作を例に説明します。

この設備は「部品を置く工程」「カバーを置く工程」「ネジを締める工程」「ネジを確認する工程」、そして「製品をトランスファーで搬送する工程」があります。
まずプログラムは各工程別に作成します。下記の図のように、工程ごとに個別のプログラムを作成します。

上の図は、部品を置くステーションとカバーを置くステーションのプログラムが、お互いの状況確認のために相手のプログラムに入り込んでいる状態を示しています。このようなプログラムの作り方は推奨できません。2個のプログラムならまだ何とかなりますが、実際は4個の工程があるので、4個のプログラムが重なることになります。
なぜこのような書き方がいけないのでしょうか?例えばカバーを置くプログラムが不具合を出したとします。プログラムが重なっていると、どの部分で不具合が生じているのか分かりにくいのです。さらに設備の改造でカバーを置く部分に動作を追加する場合、他のプログラムにも影響が出るため、作った人以外では改造も難しいプログラムになります。
ではどのような書き方がいいのでしょうか?あくまで例ですが、下記の図のようにお互いのプログラムが読み書きできる共通のデータレジスタを設定します。

共通デバイスによる連携:例えば部品を置くことに失敗した場合、共通デバイスに設定したデータレジスタに失敗フラグを立てます(例:D200に2を書き込む)。カバーを置くプログラムはこのフラグを確認して、カバーを置くかパスさせるかを判断します(D200が1なら正常動作、2なら失敗とみなしパス動作)。
このようにすれば、片方のプログラムがもう片方のプログラムに影響を与えません。トラブルがあっても不具合を発見しやすくなります。
原点復帰の考え方
次は原点復帰をするプログラムのイメージを説明します。原点復帰とは、設備内のシリンダなどが初期状態の位置に戻る作業です。もちろんプログラム内の動作回路も初期位置に戻します。

作成方法は、まず各ステーション(部品を置く部分、カバーを置く部分など)が単体で原点復帰するプログラムを作ります。歩進制御で、パルスを与えると原点復帰するようにしておきます。
次に全体を制御する部分を作ります。全体を制御するプログラムも基本的には歩進制御です。全体制御プログラムを実行させると、各ステーションに原点復帰指令パルスを出します。そして全ステーションが原点復帰完了したら、搬送する部分に原点復帰パルスを出します。これですべてが原点復帰すれば、全原点復帰完了として原点復帰の歩進制御を停止させます。
このように各ユニットのプログラムを作成して、全体のプログラムで制御すればシンプルになります。この場合、各ユニット別に原点復帰完了のコイルも必要です。
データシフトのイメージ
最後に、データシフトを使ったプログラムのイメージを説明します。

各プログラムは、自分の右側のデータしか見ません。右のデータを確認してプログラムを動作させ、動作完了状態を右側のデータに書きます。例えば部品を置く部分で失敗したとします。このとき失敗した情報を右側のデータに書き込みます。そしてワークを搬送するとき、右側のデータをデータシフトさせます。カバーを置く部分の右側のデータには、先ほど失敗した情報が書き込まれています。この情報をみてカバーを置く部分をパスさせるなどの動作をすればよいのです。
部品を置く部分で失敗したとき、あらかじめ後工程の動作状況が入るデータレジスタに"3"などの値を入れておきます。カバーを置く部分にワークが来たときすでに"3"が入っているのでパスさせます(あらかじめ"3"が来たらパスさせるようにプログラムを作成しておく)。このようにプログラムを作成すれば、各プログラムは実行前に自分の動作状況を確認してプログラムを動かすか判断できます。
プログラム設計の基本原則:プログラムの基本は小さいプログラムの集合体です。いかにシンプルに考え、構築していくかが重要です。複雑に考えず、まずは各ユニット単体で動作するプログラムを作り、それを全体制御でつなぐという考え方が有効です。最初から完成度の高いプログラムを作るのは難しいですが、先輩方のプログラムを参考にしながら少しずつレベルアップしていきましょう。
よくある質問(FAQ)
図解入門 よくわかる最新 シーケンス制御と回路図の基本はKindle版(電子書籍)です。単行本ご希望の方は、フォーマットで単行本を選択してください。または、トップページよりご購入ください。




