• 検索結果がありません。

4 章

4.10 マクロプログラム

4.10.2 マクロプログラム呼出し(G65,G66,G67)

4.10.2 マクロプログラム呼出し(G65,G66,G67)

マクロプログラムは普通は呼び出されてから実行されます。

マクロプログラムを呼び出すための手順を表 4-7 に示します。

単純呼出し (G65)

G65 P_L_;

"G65 P … L…<引数指定>; " と指定すると,P で指定されたプログラム番号のマク ロプログラムが呼び出され,L 回実行されます。

呼び出されるマクロプログラムに引数を渡す必要がある場合,その引数をこのブ ロックで指定できます。

モーダル呼出し(G66,G67)

モーダル呼出し指令は,マクロプログラムを呼び出す場合のモードを設定します。

指定されたマクロプログラムは,指定された条件が満足されると呼び出されて実 行されます。

• "G66 P ・・・L ・・・<引数指定>; " と指定することにより,マクロプログラ ムを呼び出すときのモードが設定されます。このブロックが一旦実行される と,移動指令が完了してから,P で指定されたプログラム番号のマクロプログ ラムが呼び出され,L 回実行されます。

引数が指定されると,マクロプログラムの単純呼出しの場合と同様に,呼び出 される度に引数がマクロプログラムに渡されます。引数のアドレスとローカル 変数の関係は単純呼出し(G65)の場合と同様です。

• G67 は G66 モードをキャンセルします。引数を指定するときには,全引数の前

に G66 を指定しなければなりません。G66 を指定するときは,同じプログラム

中に対応する G67 を指定しなければなりません。

表 4.7 マクロプログラム呼出し方法

呼出し方法 指令コード 備考

単純呼出し G65

モーダル呼出し (a) G66 G67 でキャンセル

表 4.8 P 指令と L 指令

アドレス 説明 桁数

P プログラム番号 5 桁

L 反復回数 9 桁

表 4.9 モーダル呼出し条件

呼出し条件 モード設定コード モードキャンセルコード

移動指令の実行後 G66 G67

引数指定

「引数指定」とは,マクロプログラム中で使用されるローカル変数に「実数を割り 当てる」ことを意味しています。引数指定にはタイプ I とタイプII の 2 つがあり ます。これらのタイプは必要に応じて組合わせることもできます。

アドレスとシステム変数の関係(タイプ I)

アドレスとシステム変数の関係(タイプ II)

I,J および K を使用する場合はその順番で指定しなければなりません。下表に示 した1~10の接尾辞はセット中で使用される順番を表すもので,実際の指令中に は書き込みません。

マクロ呼出しでは,アドレス I,J,K はブロック中に最高 10 回までプログラムで きるので,これらのアドレスについてはマクロプログラム内でシステム変数にア クセスするには配列インデックスを使用しなければなりません。これら 3 つのシ ステム変数のシンタックスはそれぞれ $C_I[..],$C_j[..],$C_K[..] となります。こ れらの値はプログラムされた順番で配列中に保存されます。

ブロック中にプログラムされたアドレス I,J,Kの数は,それぞれ変数

$C_I_NUM,$C_J_NUM および $C_K_NUM に保存されます。

これら 3 つの変数は,他のシステム変数とは異なり,必ず配列インデックスを指 定しなければなりません。サイクル呼出し(たとえば G81)の場合は必ず配列イ ンデックス 0 を使用しなければなりません。

例:N100 R10 = $C_I[0]

表 4.10 呼出し指令(タイプ I)用のアドレスと変数の関係および使用可能なアドレス アドレスと変数の関係 アドレスと変数の関係

タイプ I のアドレス システム変数 タイプ I のアドレス システム変数

A $C_A Q $C_Q

B $C_B R $C_R

C $C_C S $C_S

D $C_D T $C_T

E $C_E U $C_U

F $C_F V $C_V

H $C_H W $C_W

I $C_I[0] X $C_X

J $C_J[0] Y $C_Y

K $C_K[0] Z $C_Z

M $C_M

4.10.2 マクロプログラム呼出し(G65,G66,G67)

(注) I,J あるいは K が 2 セット以上指定された場合は,I/J/K の各 セットの順番は,変数番号がその順番で決定されるような順 番となります。

引数指定の例

引数を指定するときは,まずその前にマクロプログラム呼出しコードを指定しな ければなりません。引数を先に指定するとアラームになります。引数指定値はア ドレスとは関係なく符号と小数点が使用できます。

小数点が使用されていなければ,そのアドレスの通常の桁数に対応した小数点付 きの値として変数に保存されます。

表 4.11 呼出し指令(タイプ II)用のアドレスと変数の関係および使用可能なアドレス アドレスと変数の関係 アドレスと変数の関係

タイプ II のアドレス システム変数 タイプ II のアドレス システム変数

A $C_A K5 $C_K[4]

B $C_B I6 $C_I[5]

C $C_C J6 $C_J[5]

I1 $C_I[0] K6 $C_K[5]

J1 $C_J[0] I7 $C_I[6]

K1 $C_K[0] J7 $C_J[6]

I2 $C_I[1] K7 $C_K[6]

J2 $C_J[1] I8 $C_I[7]

K2 $C_K[1] J8 $C_J[7]

I3 $C_I[2] K8 $C_K[7]

J3 $C_J[2] I9 $C_I[8]

K3 $C_K[2] J9 $C_J[8]

I4 $C_I[3] K9 $C_K[8]

J4 $C_J[3] I10 $C_I[9]

K4 $C_K[3] J10 $C_J[9]

I5 $C_I[4] K10 $C_K[9]

J5 $C_J[4]

G65 P*** A10. C20. X30. Z40. I50. K60. J70. I80.;

1 セット 2 セット 3 セット

$C_I[2]: 80.

$C_J[1]: 70.

$C_K[0]: 60.

$C_I[0]: 50.

$C_Z: 40.

$C_X: 30.

$C_C: 20.

$C_A: 10.

DIN 規格言語 モード /ISO G コードモードでの マクロプログラムの実行

呼び出されたマクロプログラムは,DIN規格言語モードか ISO Gコードモードか のいずれかで実行されます。いずれのモードで実行されるかはマクロプログラム の最初のブロックで決定されます。PROC <プログラム名> インストラクションが マクロプログラムの最初のブロックに入っていれば DIN規格言語 モードに切り替 わります。入っていなければ ISO Gコードモードのままとなります。

DIN規格言語モードでマクロプログラムを実行すると,DEF インストラクション を使用することで,転送パラメータをローカル変数に保存できます。ISO Gコード モードでは転送パラメータをローカル変数に保存できません。

ISO Gコードモードで実行されているマクロプログラム内に転送パラメータを読込

むためには,G290 指令でまず DIN規格言語モードに切り換える必要があります。

マクロ呼出しを含むメインプログラム:

_N_M10_MPF:

N10 M3 S1000 F1000 N20 X100 Y50 Z33

N30 G65 P10 F55 X150 Y100 S2000 N40 X50

N50 ....

N200 M30

DIN規格言語 モードのマクロプログラム:

_N_0010_SPF:

PROC 0010 ; DIN規格言語 モードへの切換え N10 DEF REAL X_AXIS ,Y_AXIS, S_SPEED, FEED

N15 X_AXIS = $C_X Y_AXIS = $C_Y S_SPEED = $C_S FEED = $C_F N20 G01 F=FEED G95 S=S_SPEED

...

N80 M17

ISO Gコードモードでのマクロプログラム:

_N_0010_SPF:

G290 ; 転送パラメータを読込む必要があれば DIN規格言語 モードへ切り換える

N15 X_AXIS = $C_X Y_AXIS = $C_Y S_SPEED = $C_S FEED = $C_F N20 G01 F=$C_F G95 S=$C_S

N10 G1 X=$C_X Y=$C_Y G291 ; ISO モードへの切換え N15 M3 G54 T1

N20 ...

4.11.1 図形コピー(G72.1,G72.2)