オークマ(OSP)でマクロ(変数)を使ってサブプログラムを呼び出すときはPREGを使ってO番号を登録する

「PREG」の使い方

O1000
N1
VC51 = 6000
CALL O900

N2
VC101 = 1001
VC102 = 0
VC103 = 10
CALL O1111 Q36

N3
VC101 = 1002
VC102 = 0
VC103 = 20
CALL O1111 Q18

N4
VC101 = 1003
VC102 = 0
VC103 = 30
CALL O1111 Q12
M05
M09
G00 Z1000. M1
M30

O900

RTS

O1111
G11 X0 Y0 P[VC102]
CALL O=VC101
G10
VC102 = VC102 + VC103
RTS

O1001
G90 G00 X0 Y50.
Z1.
G01 Z-5. F2000.
Y40. F1000.
G00 Z1.
RTS

O1002
G90 G00 X0 Y30.
Z1.
G01 Z-5. F2000.
Y20. F1000.
G00 Z1.
RTS

O1003
G90 G00 X0 Y20.
Z1.
G01 Z-5. F2000.
Y10. F1000.
G00 Z1.
RTS

コードの概要

O1111は回転補正をかけるサブプログラム。

変数式によって繰り返し回数分、指定した角度を振り続ける。

角度ごとにパスのサブプログラムを実行する。

N2の場合、10°角度を振りO1001を呼び出す、10°角度を振りO1001を呼び出す…を36回繰り返す。

しかしこのコードだと、O1111でサブプログラムを呼ぶときにアラームで機械が止まってしまう。

PREGを使ってO番号の登録

対策として、「PREG」を使ってサブプログラムのO番号を登録する必要がある。

O1111
PREG O1001,O1002,O1003

G11 X0 Y0 P[VC102]
CALL O=VC101
G10
VC102 = VC102 + VC103
RTS

「PREG」の後に使用するサブプログラムのO番号を入力する。

「,」で区切って複数のO番号を登録する。

これで登録したO番号のサブプログラムを読み込むことができる。

登録数が多いとプログラムを開けない

O番号を登録しすぎると(10個が上限かな?)メインプログラムを開くことができない。

そんな場合は「PREG」を複数使用する。

O1111
PREG O1001,O1002,O1003,O1004,O1005,O1006,O1007,O1008,O1009,O1010
PREG O1011,O1012,O1013,O1014,O1015,O1016,O1017,O1018,O1019,O1020
PREG O1021,O1022,O1023,O1024,O1025

G11 X0 Y0 P[VC102]
CALL O=VC101
G10
VC102 = VC102 + VC103
RTS

このように「PREG」を複数使用することでO番号の登録数を増やすことができる。

まとめ

変数を使ってサブプログラムを呼び出すときは、「PREG」を使って呼び出したいサブプログラムのO番号を登録する。

1個の「PREG」に登録できるO番号は10個(多分)。

サブプログラムをたくさん使う場合は、「PREG」を複数使う。