条件分岐とは、ある条件が満たされているか判断して実行する内容を変えることをいいます。
C言語を始めとするプログラミング言語では「if文」や「switch文」を用いることでプログラムの条件分岐を行います。(全ての言語とは限りませんが)
この条件分岐はプログラミング言語を学習する上で、基礎部分であり”とても重要”な考え方です。
ラダープログラムにおいても条件分岐はとても重要ですが、他のプログラミング言語の条件分岐とは記述する方法・考え方が異なります。
ラダープログラムの場合、“接点”や”比較命令”を用いることで条件分岐を作ることができますが、三菱電機製シーケンサFXシリーズでは入力条件によって実行内容を変えることができる条件ジャンプ命令と呼ばれる命令が存在します。
この記事では、条件ジャンプ命令を用いて条件分岐するラダープログラム例を2ヶ解説します。
三菱電機製シーケンサFXシリーズにおける条件ジャンプ命令の指令方法は以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】条件ジャンプ(CJ)命令の指令方法とラダープログラム例目次
1.【例題①】条件がONのときのみ処理Aを実行
下記仕様のラダープログラムを条件ジャンプ命令を用いて解説します。
処理A:スイッチ(X0)を押すとランプ(Y0)が点灯する。
セレクタスイッチ(X10)がOFFであればスイッチ(X0)を押してもランプ(Y0)は点灯しない。
ラダープログラムを少しでもご存知の方からすると「これってX0とX10のANDでY0をONさせればいいのでは?」と思われるかもしれません。その通りです…
今回はこの仕様のラダープログラムを命令の解説も兼ねて条件ジャンプ(CJ)命令を用いて作成します。
フローチャート
フローチャートは以下のようになります。
セレクタスイッチ(X10)がONのとき、”処理A”である「スイッチ(X0)を押すとランプ(Y0)が点灯する」処理を実行します。
セレクタスイッチ(X10)がOFFであれば”処理A”は実行されず、スイッチ(X0)を押してもランプ(Y0)は点灯しません。
GOTの動作イメージ
GOTの動作イメージは以下のようになります。
ここでは「GOTはラダープログラムで使用されているデバイスのON/OFF状態や現在値をモニタしたり、変更することができるもの」程度の認識でOKです。
セレクタスイッチ(X10)は「右側に捻るとON」「左側に捻るとOFF」としています。(タッチパネルなので実際に捻っている訳ではありませんが…)
セレクタスイッチ(X10)がONの場合、スイッチ(X0)を押すとランプ(Y0)が点灯します。
セレクタスイッチ(X10)がOFFの場合、スイッチ(X0)を押してもランプ(Y0)は点灯しません。
ラダープログラム
ラダープログラムは以下のようになります。
入力条件をX10のb接点とする条件ジャンプ(CJ)命令を使用します。
セレクタスイッチ(X10)がONのとき、CJ命令は実行されずに2行目の「X0がONするとY0がONする」回路が実行されます。
セレクタスイッチ(X10)がOFFのとき、CJ命令が実行されて「ポインタP50にジャンプ」します。この時、CJ命令とジャンプ先であるポインタP50に挟まれたラダープログラムはすっ飛ばされて実行されません。(↑のラダープログラムのX0・Y0の部分)
CJ命令が実行中は”2行目のラダープログラムが実行されないため”X0がONしてもY0はONしません。
2.【例題②】条件がONで処理A・OFFで処理Bを実行
下記仕様のラダープログラムを条件ジャンプ命令を用いて解説します。
処理A:スイッチ(X0)を押すとランプ(Y0)が点灯する。
セレクタスイッチ(X10)がOFFであれば以下の処理Bを行う。
処理B:スイッチ(X1)を押すとランプ(Y0)が点灯する。
【例題①】ではセレクタスイッチ(X10)がOFFの場合、何も処理を行わない仕様でした。
今回はセレクタスイッチ(X10)がOFFの場合”処理B”を実行します。
フローチャート
フローチャートは以下のようになります。
セレクタスイッチ(X10)がONの場合、処理Aの「スイッチ(X0)を押すとランプ(Y0)が点灯する」処理を実行します。
セレクタスイッチ(X10)がOFFの場合、処理Bの「スイッチ(X1)を押すとランプ(Y0)が点灯する」処理を実行します。
GOTの動作イメージ
GOTの動作イメージは以下のようになります。
セレクタスイッチ(X10)がONであれば、スイッチ(X0)を押すとランプ(Y0)が点灯します。
セレクタスイッチ(X10)がOFFであれば、スイッチ(X1)を押すとランプ(Y0)が点灯します。
ラダープログラム
ラダープログラムは以下のようになります。
今回はCJ命令を2ヶ使用します。
セレクタスイッチ(X10)がONのとき、1行目のCJ命令は実行されずに2行目の「X0がONするとY0がONする」回路が実行されます。
その後、補助リレーM8000を入力条件とする3行目のCJ命令でポインタP51にジャンプします。
セレクタスイッチ(X10)がONしているとき、ラダープログラムの動作イメージは↓のようになります。
セレクタスイッチ(X10)がOFFのとき、1行目のCJ命令が実行されて「ポインタP50にジャンプ」します。【例題①】と同様ですが、CJ命令でP50にジャンプすると2行目の「X0がONするとY0がONする」回路は実行されません。
セレクタスイッチ(X10)がOFFしているとき、ラダープログラムの動作イメージは↓のようになります。
【例題②】のように、CJ命令でジャンプされたラダープログラムは『実行されない状態』となります。この実行されない状態を用いることで、同じコイルを2ヶ以上使用する”ダブルコイル”を用いたラダープログラムを組むことができます。
ただし、正常に動作するとしても”ダブルコイル”を毛嫌いする方は多くいます。今回のようなラダープログラムを組む場合は注意が必要です。
3. おわりに
三菱電機製シーケンサFXシリーズで作成する条件ジャンプ(CJ)命令による条件分岐するラダープログラム例を解説しました。
以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。
ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。
各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。
ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。
『doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。
「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。