G65マクロ呼び出し・ローカル変数・無条件分岐GOTOを使って刻印加工の作業を紹介します。

コード意味区分グループ

コード 意味 区分 グループ
G65 マクロ呼出 O 00

使い方
G65 P__ L__ A__ B__ C__(ABCは引数指定)

引数指定・変数・演算

引数指定

G65マクロ呼び出しのブロックに任意のアドレスの後ろに数値を指令することで変数に数値を指令することができます。
引数指定には
引数指定Ⅰと引数指定Ⅱがあり、今回は引数指定Ⅰを使います。

引数指定Ⅰ引数指定Ⅱアドレスと変数番号


G65 P11 A3.0 X5.0 Y10.0 Z-1.0
とした場合、上のリンク先にある引数指定Ⅰの表に合わせると

  • Aは#1なので#1を指令した場合は3.0の数値になります。
  • Xは#24なので#24を指令した場合は5.0の数値になります。
  • Yは#25なので#25を指令した場合は10.0の数値になります。
  • Zは#26なので#26を指令した場合は-1.0の数値になります。

数値を代入するということになります。

必要なアドレスのみ指令をして使用します。
指令の無いアドレスは空状態になります。

変数

今回はローカル変数を使います。

ローカル変数は各マクロプログラム内で使用する変数です。

変数の種類 変数の番号
ローカル変数 #1~#33
コモン変数 #100~#199
#500~#999
システム変数 #1000~

演算

一般の算術式と同じように演算指令を使ってプログラムします。
カスタムマクロ・演算指令一覧

今回は比率で作成した座標と乗算を使いマクロプログラム作成します。

刻印加工に使う文字の座標作成

刻印加工に使う文字の座標を作成します。
今回はチャックの生爪に加工をした径の刻印加工をするので
1234567890.~Φ
のマクロプログラムを作成します。

マクロプログラムの作成

1mmの枠を作り、それを目安に文字を作成します。
(CADに入っているフォントを使いました。)

この座標でXYの移動指令をG91インクリメンタルでZの移動指令をG90アブソリュートで作成します。
(メインプログラムをO1000マクロプログラムをO1001)
刻印加工説明用マクロプログラム

このプログラムのXとYの移動指令に変数と演算を加えます。
(置換機能を使って加えました)

X__ Y__ を
X[#__*__] Y[#__*__]にします。

NCプログラムをマクロプログラムへ変更

メインプログラムの作成

ヘッダー部分とフッター部分は省略します。

刻印加工用マクロメインプログラム

赤枠部
G54 G90 G00 X0 Y0 ;
で文字加工開始位置を指令します。

青枠部
G65 P1001 W10.0 ;
でマクロプログラムを呼び出します。

G65 マクロプログラム呼び出し(ワンショット)
P1001 呼び出すプログラムナンバー
W7.0 刻印加工の文字の幅と高さ

メインプログラムで指令をするときに分かりやすいように幅(width)ということでW(#23)にしました。

同じように違う数字も作成します。

CAD1mm角に1の文字をモデリング

無条件分岐GOTOを使って文字の選択

無条件分岐GOTOを使ってマクロプログラム内でプログラムの流れを変えます。

GOTO __ GOTO に続く数値を指令することで
プログラムの読み込み位置を
指令した数値のシーケンスナンバーに移動させることができます。

無条件分岐GOTOを使ったNCプログラムの流れ
無条件分岐GOTOを使ったマクロプログラムの説明
(見やすくするために文字数を減らしたプログラムになっていて加工はできません)

マクロプログラム構成

O1001 (プログラムナンバー)
GOTO#__ (指令したシーケンスナンバーへ移動)

N1(1) (1の文字を加工するプログラム)
1の文字を加工する加工プログラム
GOTO99 (N99のシーケンスナンバーへ移動)

N2(2) (2の文字を加工するプログラム)
2の文字を加工する加工プログラム
GOTO99 (N99のシーケンスナンバーへ移動)

長くなるので、ほかの文字は省略します

N99 (メインプログラムへ移動するプログラム)
M99 (メインプログラムへ移動)

メインプログラム

G54 G90 G00 X0 Y0 ;
G65 P1001 W10.0 I__ ;

先ほど作ったプログラムにI__を入力して加工するシーケンスナンバーを指令します。
(番号(number)なのでNにしようとしたのですがNは使えないので適当にIにしました。)

G54 G90 G00 X0 Y0 ;
G65 P1001 W10.0 I2.0 ;にした場合の流れは

G54 G90 G00 X0 Y0 ; (G54のX0 Y0へ移動)
G65 P1001 W10.0 I2.0 ; (O1001のプログラムへ移動)
↓(O1001のプログラムへ移動)

O1001 (プログラムナンバー)
GOTO#4 ; (メインプログラムでIに2.0を指令したので#4は2.0になりN2へ移動)
↓(N1を飛ばしてN2へ移動)

N2(2) ;
G91 G00 X[#23*0.165] Y[#23*0] ;
G90 Z1.0 ;
G01 Z-0.1 F__ ;
長くなるので加工プログラムは省略します
GOTO99 ;
↓(ほかのプログラムを飛ばしてN99へ移動)

N99 ;
M99 ; (メインプログラムへ移動)

このようになりX0 Y0の位置に2の文字を加工します。

メインプログラムで刻印加工深さを指令

加工箇所に合わせて加工深さをメインプログラムで変更できるようにします。

マクロプログラムの変更

加工深さを指令する
G01 Z-0.1 F200 ;

G01 Z#26 F200 ;
に変更します。
マクロプログラムZを変数#26で指令

メインプログラム

G65 P1001 W10.0 I2.0 Z-__ ;
先ほど作ったプログラムにZ-__を入力して加工する深さを指令します。

Zの指令なので分かりやすくアドレスもZ(#26)にしました。

例えばメインプログラムをZでなくYにして
G65 P1001 W10.0 I2.0 Y-__ ;
にして
マクロプログラムを#25にしてもZの加工深さ指令になります。
G01Z #25 F200

アドレスの入力を忘れた場合、変数は空の状態なので何も指令しないとなります。
このプログラムでZの指令をしなかった場合はZ1.0の位置で加工が進みます。


後程、テキスト、画像、動画を追加投稿しますm(__)m