【FANUC】#5001~#5004とは?古い機械で見つかるシステム変数の正体と使い道

#5001~#5004とは?古い機械で見つかるシステム変数

古いNC機械のプログラムを新しい機械に移行しているとき、見慣れないシステム変数「#5001~#5004」に遭遇しました。調べてみると、これはワーク座標系における現在位置を記録する変数でした。

  • #5001 = X座標

  • #5002 = Y座標

  • #5003 = Z座標

  • #5004 = 回転軸(4軸機用)

つまり、「ブロック終点での位置情報を変数として保持できる」という仕組みです。

使用例

実際のプログラム例を見てみましょう。

G90G00X-10Y10 (初期位置) 
#101=#5001 (X-10 を記憶) 
#102=#5002 (Y10 を記憶) 
#103=-3. (Z位置) 
#104=3. (Z切り込み量) 
#105=2 (繰り返し回数) 
#106=1002 (パス用サブプロ) 
M98P1001L#105 
M30 
O1001
G90G00X#101Y#102
G01Z#103F1000.
M98P#106
Z3.
#103=#103-#104
M99

O1002(パス用サブプロ) 
X100.
Y0.
X-10.
Y-10.
X100.
M99

サブプロ O1001 内では、記憶した位置(#101, #102)を使って毎回同じスタート地点に戻し、Zを徐々に切り込んでいくようにしています。

もし #101, #102 を記憶させていない場合、1回目(Z-3.)の加工が終わったX100.Y-10.で2回目(Z-6.)の加工がスタートするため、動きがおかしくなってしまう。

でも本当に必要?

実際に解析してみると、「#101=10.」「#102=-10.」と直接代入しても問題なく動作しました。
つまり、わざわざ #5001・#5002を使う必要性は薄い という結論に至りました。

おそらく、当時のプログラマが「加工開始点を自動で拾う仕組み」を意識していたのか、あるいは単純にクセで使っていたのかもしれません。

現代では不要な理由

今ではCAMでパスを自動生成すれば済みますし、プログラム容量も気にしなくてよくなりました。最新機では#5001~#5004を意識する必要はまずありません。

実際に私も、新しい機械への移行時にこれらの記述を削除しましたが、問題なく加工できています。

まとめ

  • #5001~#5004はワーク座標系での現在位置を保持するシステム変数

  • かつては繰り返し加工などに利用されていた

  • しかし現代の機械・CAM環境ではほぼ不要

  • 古いプログラムを解析するときに見かける程度

もし古いNCプログラムに#5001が出てきたら、「今の機械では必要ない」と割り切って大丈夫でしょう。