【オークマ(OSP)】CALL O=VC変数で止まる原因と対策|PREGの使い方を解説

NCコード

↓↓この記事はこんな人におすすめ↓↓

  • マクロ使い始めたけど、CALL O=VC変数で止まった人
  • 「PREG」って単語が初耳だった人
  • 現場で同じようなことで詰まってる人

マシニングセンタでマクロプログラムを書くときに、
「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個まで、必要なら複数行に分ける

  • 冒頭にまとめて書くとミスを防げる