OSP(オークマ) - 変数

NCプログラムで使用する変数には、ローカル変数コモン変数システム変数の三種類があります。それぞれ特徴がありますので間違えないようにしましょう。

また、未定義変数の解釈のされ方についても解説していますので、一緒に覚えておきましょう。

プログラム初心者の方のために「変数講座」ページを作成いたしました。こちらはFANUC仕様となっていますが考え方は同じです。


変数の基礎知識

VC1 = 10. …①
VC2 = 20. + VC1	…②
VC1 = VC1 + VC2	…③
VC1 = VC1 + VC2	…④
				

変数に数値を代入する際は、変数を「=」の左側に、代入する数値を「=」の右側に記述します。「=」の左側には一つの変数しか記述できませんが、「=」の右側には数値と変数を組み合わせた計算式を入れることができます。

①では「VC1」に「10.」という数値が代入されます。

②では「20.」という数値と「VC1」に入っている数値(ここでは「10.」)を足した数値、つまり「30.」が「VC2」に代入されます。

③は左側にも右側にも「VC1」があります。この場合も②と同じで、「VC1」と「VC2」を足した数値(ここでは「10.」と「30.」を足した「40.」)が新たに「VC1」に代入されます。

④も③と同じく「VC1」と「VC2」を足した数値が「VC1」に代入されます。しかし③で「VC1」の数値が変わっていますから、③とは結果が異なります。「VC1」に入っている数値は「40.」、「VC2」に入っている数値は「30.」ですから、「VC1」には「70.」という数値が代入されます。

変数の中身は下記のように変化していきます。

VC1 = 10.	…①
(VC1 = 10. , VC2 = 空)

VC2 = 20. + VC1		…②
(VC1 = 10. , VC2 = 30.)

VC1 = VC1 + VC2	…③
(VC1 = 40. , VC2 = 30.)

VC1 = VC1 + VC2	…④
(VC1 = 70. , VC2 = 30.)
				

また、変数に入っている数値を「VC」以降の変数の番号として使用することもできます。この場合「VC [ 変数 ]」のように、変数を「[]」で括る必要があります。

VC11 = 20
VC [ VC11 ] = 300.
(VC20 = 300.)
				

ローカル変数

ローカル変数はメインプログラムとサブプログラムでそれぞれ独立している変数です。サブプログラムからメインプログラムのローカル変数を使用することはできません。その逆も同じですが、サブプログラム呼び出しの引数設定で使用する場合は、メインプログラムからサブプログラムのローカル変数に値を代入(引数の受け渡し)をすることができます。

ローカル変数は、予約語以外の4字以内で「=」の左辺に定義することにより設定でき、最大255個まで設定出来ます。変数名の先頭の2字は英字となり、タイプ1の先頭の英字はO,N,V,Pは使用出来ません。ローカル変数はNCリセットで消滅します。サブプログラム内のローカル変数はそのサブプログラムの実行が終了した時点で消滅します。

ローカル変数の予約語一覧はこのページの一番下に記載しました。

ローカル変数名
1文字目 2文字目 3、4文字目
タイプ1 英字 英字 英数字2字以内
タイプ2 P 英字 英数字2字以内

コモン変数

コモン変数は標準で「VC1〜VC200」までの200個、オプションで「VC1〜VC1000」の1000個の変数です。ローカル変数と違い、スケジュールプログラム、メインプログラム、マクロプログラムのどこからでも使用できる共通の変数です。

「VC1〜VC400」は設備の電源を切っても数値を保持しますが、「VC401〜VC1000」は電源を切るとクリアされます。

コモン変数は「VC [n]」という配列変数を使用することができます。nは数値になり添字と呼ばれます。

システム変数

システム変数はシステムによって用途が決まっている変数で、スケジュールプログラム、メインプログラム、サブプログラムのどこからでも使用出来ます。工具径補正値の変更や、座標値の読み込みなどを行うことができます。

制御装置別のシステム変数一覧」はこちらになります。

未定義変数(EMPTY)

未定義変数とは数値が代入されていない空の変数のことで、「EMPTY」で表します。

空の変数「EMPTY」を使用すると、下記のような振る舞いをします。

VC1 = EMPTYの場合
代入 「EMPTY」が代入されます
VC2 = VC1 → VC2 = EMPTY
算術演算 「0」と同じ振る舞いをします
VC2 = VC1 + 3 → VC2 = 3
比較 「EQ」と「NE」以外は「0」と同じ振る舞いをします
VC1 EQ 0 → 不成立
VC1 NE 0 → 成立
座標値 無視されます
G01 X = VC1 Y50. → G01 Y50.

ローカル変数予約語一覧


お知らせ

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

→ NCプログラムの教科書

上級編も作成しました。

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