条件分岐 - IF

条件分岐は「IF文」とも呼ばれ「IF [(条件式)](処理)」の形で記述されます。「もし条件式が成立すれば、処理を行う」という意味になり、条件式が成立しなければ、何もせずに次のブロックに進みます。

比較演算子に関しては「演算子」のページで解説していますので、そちらをご覧ください。

処理の部分は「GOTO」か「THEN」になります。「GOTO」の場合は「無条件分岐」のページで解説してある通り「GOTO」+「数値」で記述し、数値と同じシーケンス番号のあるブロックに飛びます。

THENを使用する場合は「THEN」+「代入式(計算式)」という記述になります。「IF [ #100 LE 0 ] THEN #101 = 50.」というブロックであれば「#100が0以下なら、#101に50.を代入する」という意味になります。

古い設備になると「THEN」の機能をサポートしておらず、使用できない場合もありますので注意が必要です。

・
・
#100 = 0
IF [ #100 EQ 0 ] GOTO 5 (#100が0なのでN5に飛ぶ)
M3
S2000
N5
IF [ #100 NE 0 ] THEN #100 = 0 (#100が0以外ではないので、何もせずに次のブロックへ)
・
・
				

IF文で繰り返しを行うプログラム

・
・
#100 = 10 (繰り返し回数)
N100
IF [ #100 LE 0 ] GOTO 200 (#100が0以下ならN200へ飛ぶ)
(処理)
#100 = #100 - 1
GOTO 100
N200
・
・
				

上は(処理)を10回繰り返すプログラムですが、下のプログラムでもほぼ同じことができます。IF文を処理の「前に置くか」「後に置くか」の違いです。

ただし、「#100」の初期値を0にした場合、上のプログラムでは一度も処理を行わずにN200へ飛びますが、下のプログラムでは処理を一度だけ行うことになります。処理の内容によって使い分けましょう。

・
・
#100 = 10
N100
(処理)
#100 = #100 - 1
IF [ #100 GT 0 ] GOTO 100 (#100が0より大きいならN100へ飛ぶ)
・
・
				

GOTO で THEN と同じ機能を実現する

古い設備では「THEN」の機能をサポートしていないものもありますが、「GOTO」でも機能を代替できます。

IF [ #100 LE 0 ] THEN #101 = 50.
				

上のプログラムは「#100が0以下なら、#101に50.を代入する」というものですが、「THEN」を使わない下のプログラムでも同じ機能を実現できます。

IF [ #100 LE 0 ] GOTO 100 (#100が0以下のならN100へ飛ぶ)
GOTO 200
N100
#101 = 50.
N200
				

上のプログラムはだいぶ長くなってしまいますが、下のプログラムであればもう少し短くできます。

IF [ #100 GT 0 ] GOTO 200 (#100が0より大きいならN200へ飛ぶ)
#101 = 50.
N200
				

お知らせ

当サイトのPDF版を作成しました。教育資料やリファレンスとして使用して頂ければと思います。

→ NCプログラムの教科書

上級編も作成しました。

→ NCプログラム上級編
メニュー
サブメニュー
NC旋盤
OSP(オークマ)
雑学
NCプログラマの為の数学
関連サイト