マシニングセンタでマクロプログラムを書くときに、
「CALL O=VC101」と書いたらアラームが出て機械が止まった…
そんな経験はありませんか?
この記事では、なぜエラーになるのか、その原因と解決方法を
初心者向けに分かりやすく解説します。
特に「PREG」の役割を理解すると、
変数でサブプログラムを呼ぶときに悩まなくなります。
例えばこんな感じのコード
O1000
N1
VC101 = 1001
VC102 = 0
VC103 = 10
CALL O1111 Q36
M30
O1111
G11 X0 Y0 P[VC102]
CALL O=VC101
G10
VC102 = VC102 + VC103
RTS
O1001
G00 X10.Y20.
Z3.
G01 Z-3. F500.
X-10.
G00 Z5.
RTS
サブプログラムO1111で、角度を振りながらO1001を呼び出す…っていう流れ。
例えば10度ずつ回して36回繰り返すから、360度ぐるっと一周加工するみたいなやつですね。
この「CALL O=VC101」で、機械が止まったんですよ。え、何がアカンの?ってなりました。
なぜアラームになるのか?
CALL O=VCでサブプログラムを呼び出すときは、必ず PREG を使って「このプログラムを事前に登録しますよ」と宣言する必要があります。
PREGを入れずにCALL O=VCを書いてしまうと、機械側は「そんなプログラム知らない」と判断し、アラームを出して動作を止めてしまいます。
つまり、原因は「呼び出し先を登録していないこと」 にあります。
PREGの正しい書き方
O1111
PREG O1001,O1002,O1003
これで O1001~O1003 までのサブプログラムが登録されます。
ただし注意点があります。
1行で登録できるのは 最大10個まで です。
それ以上登録したい場合は、次のように複数行に分けて書きましょう。
O1111
PREG O1001,O1002,O1003,O1004,O1005,O1006,O1007,O1008,O1009,O1010
PREG O1011,O1012,O1013,O1014,O1015,O1016,O1017,O1018,O1019,O1020
現場でよくある失敗と対策
実際の加工現場でよくある失敗は、以下のようなケースです。
-
PREGの書き忘れ
→ 加工開始前にアラームが出て、段取り時間が無駄になる。 -
登録漏れ
→ 加工中にエラー停止し、最悪の場合はワークや工具を破損してしまう。
こうしたトラブルを防ぐには、プログラム冒頭で必要なPREGをまとめて記述する習慣 をつけるのが一番の対策です。
まとめ
-
CALL O=VCでサブプログラムを呼ぶときはPREGが必須
-
PREGは「事前登録」という意味
-
1行につき最大10個まで、必要なら複数行に分ける
-
冒頭にまとめて書くとミスを防げる