NCプログラムのマクロを説明(ファナック編)
上のプログラムは #1が5より小さい間はDO~ENDまでのプログラムを繰返します。 #1=#1+1 このブロックはマクロプログラムはよく使う形です。 数学ではありえない数式ですが、マクロプログラムでは「#1に1を足して#1を書き換える」という意味になります。#1=#1+1のブロックを読み込むたびに #1は1ずつ増えていき、 5 になると 条件式 [ #1 LT 5 ]を満たさなくなるので繰り返し部分を抜けてM30でプログラムエンドになります。
WHILE文 でできること
1. 識別子は何度でも使えます。 WHILE [ … ] DO 1 . . . END1 : WHILE [ … ] DO 1 . . . END1 : 識別子を変える必要はありません。
2. DO-END を重ねて使うことできます。 識別子を使い分けて3重まで可能になります。 : WHILE [ … ] DO 1 WHILE [… ] DO 2 WHILE [ … ] DO 3 . . . END 3 END 2 END 1 : 重ねる場合は同じ識別子のDO~ENDの中に他の識別子DO~ENDをすっぽり入れます。
3. D O~END の間からの分岐はできます。 : WHILE [ … ] DO 1 IF [ … ] GOTO 10 ← DO~END抜ける END1 N10 ← ここへ : GOTO文で繰返しから抜けさせることができます。
WHILE文 でで きないこと
1. DO~END の間への分岐はできません。 : GOTO 1 WHILE [ … ] DO 1 N1 . . . ←エラー END1 :
2. 識 別番号の違うDO~ENDを交差させることはできません。 : WHILE [ … ] DO 1 WHILE [ … ] DO 2 END1 ←エラー END2 ←エラー : 上の例の場合、識別番号 DO2~END2 の間にEND1 があります。 このような使い方はできません。
マクロプログラムの練習
- 加工径 φ35の穴、深さ50
- 穴位置 X0 Y0
- 工具 φ20エンドミル
変数は3つ使います。固定サイクルの R, Q, Z と同じと思ってください。
- #18 レファレンス点
- #17 切込量
- #26 最終加工高さ
プログラムの説明#18にR点を設定しています。#18に切込み量を増やしていき、#26を超えると IF文 で強制的に#18を#26に定義します。#18と#26が等しい場合は DO-ENDを抜けてプログラムエンドです。加工高さは初回が 0.2 (2.2-2) で円弧加工を行い -1.8 , -3.8 ,と2㎜ずつ切込み、-47.8 , -49.8と続き#18が -51.8になると IF THEN が働いて -50 になります。#18と#26が等しくなり繰返しを抜けます。
このように 初期値(#18)に増分値(#17)を加えて、最終値(#26)になるまで繰返す ようにします。
実践的なカスタムマクロ
上のマクロプログラムでは毎回コピーして穴径などを変更して使わなければなりません。そこでサブプログラムに登録しておき(カスタムマクロ)、マクロ呼び出し (G65 G66) で使えば便利になります。自分でGコードをつくる感覚です。
練習のマクロプログラムをベースにカスタムマクロを作ります。メインプログラムから引数を設定すればいろいろな穴径、深さに対応できるようになります。G65 P500 R2.2 Q2. Z-50. I50. J7.5 F200 (マクロ呼び出し)
O1 (MAIN PROGRAM)G0 G90 G54 X0 Y0G43 Z100. H1S1000 M3G65 P500 R2.2 Q2. Z-50. I50. J7.5 F200M30
O500 (MACRO ENKO)(#18 R) (#17 Q) (#26 Z)(#4 I/NIGE TAKASA)(#5 J/ENKO)(#9 F/OKURI)IF [ #18 EQ #0 ] GOTO 9999 ( R/ NOT SET)IF [ #26 EQ #0 ] GOTO 9999 ( Z/ NOT SET)IF [ #4 EQ #0 ] GOTO 9999 ( I/ NOT SET)IF [ #5 EQ #0 ] GOTO 9999 ( J/ NOT SET)IF [ #5 LE 0 ] GOTO 9999 ( J/ LE 0)IF [ #18 LE #26 ] GOTO 9999 ( R LE Z ERROR)IF [ #4 LT #18 ] GOTO 9999 ( I LT R ERROR)IF [ #17 EQ 0 ] THEN #17=#0IF [ #17 NE #0 ] THEN #17=ABS [ #17 ]#12=#18 (R/ SAVE)G0 Z#4 (NIGE TAKASA)Z#18WHILE [#18 GT #26] DO 1IF [ #17 NE #0 ] THEN #18=#18-#17IF [ #17 EQ #0 ] THEN #18=#26IF [ #18 LT #26 ] THEN #18=#26G1 Z#18 F#9G91 Y#5 (ENKO)G3 J-#5Y-#5G90END 1G0 Z#4#18=#12(R/ MODOSU)M99N9999M0 (ALARM)GOTO 9999
マクロで使う変数
G65でアドレスIとJ を使います。 必ずIはJより前に入力してください 。
ローカル変数アドレス説明引数のない場合#18Rレファレンス点エラー※#17Q切り込み量Zの位置で一回加工、下に詳細あります#26Z最終加工高さエラー※#4I逃げ高さエラー※#5J円弧半径エラー※#9F送り速度モーダルFコードに従う#12 引数Rの保存用※エラー処理について
- エラーの条件
- R、Q、Z、I、Jのいずれかの引数がない。
- J円弧半径が 0 以下の数値。
- I 逃げ高さ よりR点が大きい。
- R点よりZ最終高さが大きい。
切込み量の処理について
切り込み量のブロック意味IF [ #17 EQ 0 ] THEN #17=#0#17(Q)が 0 のとき、#17を空(#0)にする#17が空の場合と同じ処理にするためIF [ #17 NE #0 ] THEN #17=ABS [ #17 ]#17が空でないとき、#17は正の数値にする負の数値だと誤作動するためIF [ #17 NE #0 ] THEN #18=#18-#17#17が空でないとき、加工高さ#18に切込み量を増やすIF [ #17 EQ #0 ] THEN #18=#26#17が空のときは、加工高さ#18をZの値#26に設定するモーダルマクロ呼び出し(G66)について
G66 P500 R2.2 Q2. Z-50. I7.5 I90. F200G90 X0 Y0 ←最初はG66で引数を読込んでO500を実行するX40. Y30. ←2回目以降は引数の再読込みはしないG67
まとめ NCプログラムのマクロについて
マクロプログラムには変数、演算機能、繰返しと分岐がありましたね。
基本的な文法を理解したら、簡単なマクロプログラムを作ってみてください。 変数を1つ使うだけでも十分マクロです。 サンプルのカスタムマクロも自分流にアレンジすると理解がより深まります。
マクロプログラムのシミュレーションしたい人へ、フリーソフトの「CAM13」紹介自宅の学習に最適です。64bit版と32bit版があるのでお使いのパソコンの仕様を確認してダウンロードしてください。CAM13(64bit版)CAM13(32bit版)
https://amzn.to/3k3dbhCNCマクロプログラムをもっと知りたい人への書籍紹介
https://amzn.to/2H7r4Nc https://amzn.to/31cVTqF関連記事
NCマクロ【正面フライスのサンプルプログラム】(ファナック編) NCプログラム入門「ファナック編」 ヘリカル加工のプログラムの作り方 マシニングセンタ-の円弧補間プログラムの作り方今回の記事はマシニングセンターのプログラムで初心者には少し分かりづらい円弧補間について説明をします。最後まで読むと、円弧補間プログラムをいろんな記述方法ができるようになります。IJを使った円弧補間円弧補間は回る方向でG2 、G3 の2つのG.
NCのプログラムをパソコンで作る方法この記事はNCのプログラムを機械に直接打ち込むの、結構つらい…。パソコンでNCのプログラム作ってみたいけどどうすれば? という人に読んでいただき記事です。 この記事でNCのプログラムをパソコンで作る方法がわかります。 また、パソコンでNCの.