NCマクロでいう「変数」は、数値を一時的に保持するための入れ物です。
FANUC系では # の後ろに番号を付けて参照します(例:#1、#500、#1000)。
1) 変数の種類
変数は番号によって用途と変数の値が消えるタイミングが分かれます
| 分類 | 番号帯(例) | 主な用途 | 値が消えるタイミング(目安) |
|---|---|---|---|
| ローカル変数 | #1 ~ #33 |
「その場だけ」使う一時値(計算途中、分岐用フラグなど) | プログラム終了でクリア |
| コモン変数(揮発) | #100 ~ #199 |
作業用(プログラム中で少し長めに使い回す) | 電源OFFや初期化等でクリア |
| コモン変数(保持) | #500 ~ #999 |
電源OFF後も残したい値(寸法、補正、管理用カウンタ等) | 機械仕様に依存(保持設定次第) |
| システム変数 | #1000 ~ |
機械状態の参照(座標やモーダルなど) | 機械仕様に依存 |
読みやすさ改善:番号帯の暗記よりも、「一時(ローカル)→ 作業用(揮発)→ ずっと残す(保持)」の順で使い分けを決めると迷いが減ります。
2) #[ ]:式で「参照先の番号」を作る
変数番号を固定で書くだけでなく、#[ ] を使うと「参照する変数番号」を式で作れます。
例えば #[2*5] は #10 を参照しているのと同じ意味になります。
例:#[ ] を使った「間接参照」
(例1) #[2*5] は #10 と同じ
#10 = 123.
#1 = #[2*5] (=> #1 = 123.)
(例2) 番号を変数で切替(#500 + i を参照)
#500 = 10.
#501 = 20.
#502 = 30.
#20 = 2 (i=2)
#2 = #[500 + #20] (=> #2 = #502 = 30.)
3) 変数でNC指令をパラメータ化する(置き換え例)
加工で使う値(開始位置、ピッチ、回数…)を変数にすると、役割が明確になり、プログラムを再利用しやすくなります。
例:数値を変数へ集約して、指令側を読みやすくする
(パラメータ定義)
#1 = 10. (X)
#2 = 5. (Y)
#3 = [1/10] (Z)
(指令側は変数だけにする)
G01 X#1 Y#2 Z#3
4) 現場での使い分けのコツ
- 一時値(計算途中・分岐用)はローカル(
#1~)に寄せる - 同一プログラム内で何度も使う作業用は揮発コモン(
#100~)でまとめる - 段取り値や「次回も使う管理値」は保持コモン(
#500~)へ。ただし運用ルール(誰がいつ初期化するか)を先に決める - システム変数(
#1000~)は装置依存が大きいので、使う前に必ず対象機の仕様を確認する
次回は「プログラム呼び出し(G65/G66)と引数」へ進み、変数を“外から渡す”考え方を扱います。