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を使用すると、下記のような振る舞いをします。
代入 | 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. |
ローカル変数予約語一覧
- ABS
- AND
- AG
- ARC
- ATAN
- ATAN2
- BCD
- BHC
- BIN
- CALL
- CLEAR
- COPY
- COPYE
- COS
- DA
- DB
- DC
- DEF
- DELETE
- DFIX
- DFUP
- DGRDX
- DGRDY
- DIN
- DRAW
- DROUND
- EIN
- EMPTY
- EQ
- EOR
- FA
- FB
- FC
- FIX
- FMILF
- FMILR
- FUP
- GE
- GOTO
- GRCI
- GRCV
- GRDX
- GRDY
- GRER
- GROF
- GRON
- GRSK
- GRST
- GT
- HA
- HB
- HC
- IF
- LAA
- LE
- LPRINT
- LT
- MITCAN
- MOD
- MODIN
- MODOUT
- MSG
- NE
- NOT
- OR
- PCIR
- PMIL
- PMILR
- RCIRI
- RCIRO
- RMILI
- RMILO
- RH
- ROUNT
- RP
- RQNFL
- RS
- RSQCO
- RSQRI
- RSQRO
- RSTRT
- RT
- RTMCR
- RTMDI
- RTI
- RTS
- SAVE
- SIN
- SPRINT
- SQRT
- SQRX
- SQRY
- TAN
- TLCO
- TLFR
- TLFOFF
- TLFON
- TLOK
- TN
- 当サイトのPDF版を作成しました。教育資料やリファレンスとして使用して頂ければと思います。
→ NCプログラムの教科書 - 上級編も作成しました。
→ NCプログラム上級編