プログラム作成タイトル画像

プログラム作成

シーケンス制御講座ロゴ

シーケンス制御講座

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

シーケンス制御講座おすすめ教材
シーケンス制御講座おすすめ教材

PLCのラダープログラムの書き方を、実際の搬送(移載)動作と原点復帰のプログラムを例に解説します。プログラムはできる限りシンプルに、わかりやすく書くことが何より重要です。自己保持を使った一連動作回路の作り方を順番に見ていきましょう。

作成日:2016年05月10日
更新日:2026年07月09日

ショートカットキー

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

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

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

動作の解説

基本的なプログラムの書き方を説明していきます。プログラムはできる限りシンプルにわかりやすく書くこと、そして後で自分が修正・改造する気持ちで書くことを心がけてください。わかりやすく書くことが何より重要です。

(以前このページの回路はステップ方式で説明していましたが、あまり一般的ではないため、自己保持を連続して書く方式に変更しています。初めて読む方は気になさらないでください。)

「データシフトについて」で説明した動作を例にプログラムを作成していきます。

データシフトを行う組立設備の全体図

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

製品シフトの動作手順1 製品シフトの動作手順2 製品シフトの動作手順3 製品シフトの動作手順4 製品シフトの動作手順5

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

プログラムの書き方

移載ユニットの一連動作を自己保持で書いたラダー図

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

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

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

ポイント:「M1400」の実際の使い方
通常時は常時ONさせておき、動作確認などで1工程ずつ動作させたい時は「M1400」をOFFしておいて、動作させたいタイミングでONさせます。デバッグ時に非常に便利な仕組みです。

次に「M1401」は、この動作を行ってもいい条件が整っている時に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が別途必要です。


→ 次のページ:プログラム設計

よくある質問(FAQ)

常時ONしているコイル(M1400)はなぜ必要なのですか?
一時停止機能のためです。各動作の自己保持の前にa接点として入れておくことで、動作中にOFFするとその時点で停止し、再度ONすると途中から動作を再開できます。動作確認などで1工程ずつ動かしたいときに非常に便利です。
動作条件のコイルをなぜ複数に分けるのですか?
実際の設備では動作条件が複雑で接点数も多くなるため、1つのコイルにまとめると回路が見苦しくなるからです。「原点条件(M1401)」「起動指令(M1402)」のように役割を分けておくと、条件が増えたときもコイルを追加するだけで対応できます。
サイクル停止以外の停止接点はなぜ必要ですか?
停止接点がサイクル停止だけだと、シリンダセンサーの故障時に回路が信号入力待ちのまま停止できず、センサーが直った瞬間に突然動き出す危険があるためです。自動モード接点や異常発生接点など、回路を完全に停止できる接点を必ず入れてください。
原点復帰はなぜ「逃がし動作」をしてから行うのですか?
すべてのシリンダを一斉に原点へ戻すと、他のユニットやシリンダと接触する恐れがあるためです。まずハンド上昇などの逃がし動作を行い、各ユニットごとの原点復帰がすべて完了した時点で「全原点復帰」とします。
シーケンス制御講座おすすめ教材バナー

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

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