G65, G66, G67(マクロ呼び出し)

G65, G66 は、マクロプログラムを呼び出して実行するのに使用します。

M98 などのサブプログラム呼び出しと異なる点は、引数を使って安全に数値を渡せることです。

G65 と G66 との違いは、G66 はキャンセルされるまで有効なモーダルなGコードであるのに対し、G65 は指令したブロックのみで有効なワンショットなGコードであることです。

G67 は G66 をキャンセルするのに使用します。G65 はワンショットなGコードなので、G67 を指令する必要はありません。


G65(マクロ呼び出し)の使い方

「G65 P_ L_ (引数);」の形で記述します。P は呼び出すマクロプログラム番号です。L はマクロプログラムを呼び出す回数で、省略すると1回だけ呼び出します。

引数はA 〜 Z で記述し、それぞれがローカル変数の#1 〜 #26 に対応していますが、使用できないアルファベットもあります。

引数の使用方法については「マクロ」のページに、マクロプログラムを使ったプログラム例は「変数口座5.マクロにして使い回す」などに掲載しています。

マクロプログラムを呼び出したあとに、マクロプログラムからメインプログラムに戻るときは、マクロプログラム内で M99 を指令します。

G65(マクロ呼び出し)の注意点

マクロプログラム内で M99 ではなく M02 や M30 を指令すると、そこでプログラムが終了します。

G66(マクロモーダル呼び出し)の使い方

「G66 P_ L_(引数);」の形で記述します。

基本的には G65 と同じですが、G66 では次のブロックにマクロプログラムを実行させる座標を指令します。その後、G67 でキャンセルされるまで、座標を指令するだけでマクロプログラムを実行します。

以下のプログラムは、プログラム番号 O1000 のマクロプログラムを使った G65 と G66 の使用例ですが、どちらも同じ動きをします。

(マクロプログラム)
O1000
Z-5.0
G91 G01 X#1 F300 ;
G02 I-#1 ;
G01 X-#1 ;
G90 G00 Z30.0 ;
M99 ;
				
(G65の使用例)
G90 G00 G54 X0 Y0 ;
G43 Z30.0 H1 ;
M3 S1000 ;
G65 P1000 A5.0 ; (X0 Y0 でマクロプログラム呼び出し)
X100.0 Y100.0 ;
G65 P1000 A5.0 ; (X100.0 Y100.0 でマクロプログラム呼び出し)
X200.0 Y200.0 ;
G65 P1000 A5.0 ; (X200.0 Y200.0 でマクロプログラム呼び出し)
 ・
 ・
				
(G66の使用例)
G90 G00 G54 X0 Y0 ;
G43 Z30.0 H1 ;
M3 S1000 ;
G66 P1000 A5.0 ; 
X0 Y0 ;      (X0 Y0 でマクロプログラム呼び出し)
X100.0 Y100.0 ;  (X100.0 Y100.0 でマクロプログラム呼び出し)
X200.0 Y200.0 ;  (X200.0 Y200.0 でマクロプログラム呼び出し)
G67 ;       (マクロモーダル呼び出しをキャンセル)
 ・
 ・
				

G66(マクロモーダル呼び出し)の注意点

マクロプログラム内に、G90 アブソリュート指令でのXY軸の移動がある場合は、マクロ呼び出し時のXY座標が意味をなさなくなることがあるので注意が必要です。

Gコードの詳細一覧
コード機能グループ
G00位置決め(早送り)01
G01直線補間
G02, G03円弧補間、ヘリカル補間
G04ドウェル00
G08高精度制御(先行制御)
G09イグザクトストップ
G10データ設定
G17, G18, G19平面指定02
G27原点復帰チェック00
G28機械原点復帰
G30第2原点復帰
G31スキップ機能
G40, G41, G42工具径補正07
G43, G44, G49工具長補正08
G52ローカル座標系設定00
G53機械座標系設定
G54 〜 G59ワーク座標系選択12
G60一方向位置決め00
G61イグザクトストップモード13
G62自動コーナオーバライド
G63タッピングモード
G64切削モード
G65, G66, G67マクロ呼び出しG65 = 00
G66, G67 = 14
G68, G69座標回転16
G90, G91アブソリュート指令、インクレメンタル指令03

お知らせ
メニュー
NC旋盤
サブメニュー
OSP(オークマ)
雑学
NCプログラマの為の数学
関連サイト