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

例:

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

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

  単純呼び出し (G65)

G65 P... L...;

"G65 P ・・・L ・・・<

引数指定

>; " と指定することにより,P で指定されたプロ

グラム番号が割り当てられたマクロプログラムが L 回呼び出され実行されます。

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

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

モーダル呼び出し指令はマクロプログラムを呼び出すモードを設定します。指定さ れたマクロプログラムは,指定された条件が満足されると呼び出され実行されま す。

• "G66 P ・・・L ・・・<

引数指定

>; " と指定することで,マクロプログラムを

呼び出すためのモードが設定されます。一旦このブロックが実行されると,P で指定されたプログラム番号が割り当てられたマクロプログラムが,移動指令 の完了後に

L

回呼び出され実行されます。

引数が指定されていると,マクロプログラムの単純呼び出しの場合と同様に,

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

• G67 は G66 モードをキャンセルします。引数が指定されている場合は,どの引

数よりも前に G66 を指定しなければなりません。G66 が指定されている場合 は,対応する同じプログラム中に G67 も指定しなければなりません。

表 4.9 P および L 指令

アドレス 説明 桁数

P

プログラム番号 5 桁

L

反復回数 9 桁

4.10

モーダル呼び出し条件

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

移動指令の実行後 G66 G67

  モーダル呼出し (G66) の多重化

モーダル呼出しモードでは,移動指令が実行される度に指定マクロプログラムが呼 び出され実行されます。同一プログラム中で複数の G66 が指定されると,最初に 指定された

G66

指令は次に指定された

G66

指令によって呼び出されるマクロプロ グラムの実行中にだけ有効となります。このため,後の

G66

によって呼び出され たマクロプログラム中の移動指令が実行された後で,前の G66 で指定されたマク ロプログラムが実行されることになります。言い換えると,マクロプログラムは最 後に指定されたものから順番に実行されます。

プログラミング例 G66 P9400;

G00 X10.;

G66 P9500;

G00 Z20.;

G67;

G67;

G00 Z30.;

9400.mpf;

G00 X40.;

G00 Z50.;

M99;

9500.mpf;

G00 X60.;

G00 Z70.;

M99;

   •    •    •

プログラムの実行順序

G66 P9400;

G00 X10.;

G66 P9500;

G00 Z20.;

G67;

G67;

G00 Z30.;

   ・    ・    ・

9400.mpf;

G00 X40.;

G00 Z50.;

M99;

9500.mpf;

G00 X60.;

G00 X70.;

M99;

軸移動指令の実行後

9400.mpf;

G00 X40.;

G00 Z50.;

軸移動指令の実行後

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

ません。

  引数指定

「引数指定」とは,マクロプログラム中で使用されるローカル変数に「実数を割り 当てる」ことを意味しています。引数指定にはタイプ I とタイプ

II の 2 つがありま

す。これらのタイプは必要に応じて組合わせることもできます。

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

表 4-11

  アドレスとシステム変数の関係(タイプ 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

つの変数は,他のシステム変数とは異なり,必ず配列インデックスを指定