#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が出てきたら、「今の機械では必要ない」と割り切って大丈夫でしょう。