OSP(オークマ) - サブプログラム呼び出し
プログラミングをするとき、同じパターンを繰り返し作ったり、他のプログラムをコピーして作成したりすることがあります。このようなときはサブプログラムとしてパターンを作成しておき、必要なときに呼び出せば、プログラムも見やすく、正確に作成することができます。
サブプログラムの呼び出し方は単純呼び出し機能(CALL)、軸移動呼び出し機能(MODIN,MODOUT)、G、Mコードマクロ機能の3種類があり、サブプログラムからメインプログラムに戻るには、RTSを使用します。
単純呼び出し機能 CALL
"CALL O_ Q_ (受け渡し変数)" の形式で、Oは呼び出すプログラム名、Qは繰り返し回数を設定します。Qは省略すると1回となります。受け渡し変数はサブプログラムで使用する変数の値を設定でき、[サブプログラムの変数=受け渡す値]の形式となります。
% O10 VC1=10. VC2=20. VC3=30. LC=100. CALL O20 LA=VC1 LB=VC2 LC=LC LD=VC3 M02 % % O20 (代入されている数値) (LA=10.) (LB=20.) (LC=100.) (LD=30.) RTS %
軸移動呼び出し機能 MODIN
"MODIN O_ Q_ (受け渡し変数)" の形式で、O、Q、受け渡し変数の使い方は、単純呼び出し機能と同じですが、MODOUTでキャンセルされるまでサブプログラム呼び出しを行います。
% O10 MODIN O20 X10. Y10. (O20呼び出し) X20. Y20. (O20呼び出し) X30. Y30. (O20呼び出し) MODOUT M02 % % O20 (処理) RTS %
軸移動呼び出し指令後、再度、軸移動呼び出し指令を行うことを多重軸移動呼び出しと言います。多重軸移動呼び出しは8重まで行うことができます。
% O10 MODIN O100 MODIN O200 X0 Y0 (O200呼び出し) MODOUT MODOUT M02 % % O100 X10. Y10. RTS % % O200 X20. Y20. (O100呼び出し) RTS %
G、Mコード機能
CALL、MODIN、MODOUTを使用する代わりに、Gコードを使用してもサブプログラム呼び出しを行うことができます。ただし、ユーザーサブプログラムを使用する場合は、Gコード、Mコードに対応するプログラム名をパラメータで設定する必要があります。
Gコードを使用する場合、"G_ (受け渡し変数)"の形式で、受け渡し変数で使用出来るアドレスは、G、M、N、Oを除いたアドレスキャラクタと拡張アドレスキャラクタです。
- ユーザーサブプログラム呼び出し
- G100 :MODOUTと同じ。
- G101〜G110:MODIN O_ と同じ。
- G111〜G120:CALL O_ と同じ。
- メーカーサブプログラム呼び出し
- G300 :MODOUTと同じ。
- G301〜G349:MODIN O_ と同じ。
- G350〜G399:CALL O_ と同じ。
Mコードを使用する場合、"M_" の形式で、受け渡し変数の設定は行いません。
- ユーザーサブプログラム呼び出し
- M201〜M210:CALL O_ と同じ。
- 当サイトのPDF版を作成しました。教育資料やリファレンスとして使用して頂ければと思います。
→ NCプログラムの教科書 - 上級編も作成しました。
→ NCプログラム上級編