ファナックGコードマクロプログラミング実践記
特急プログラミング講座上面フライス編
![](https://sangakuerg.com/jp/wp-content/uploads/2021/04/IMG_20210414_083626698-rotated.jpg)
平成元年より習得したコードですが、30年たった今でも通用しています!
沢山あるマクロプログラムを一つずつ公開してゆきますね。
森製機NC旋盤ファナック15T,0T
遠州マシニングセンターファナック11M,6M,0M
関東機械マシニングセンター三菱メルダス
OKKマシニングセンター、オークマNC旋盤を経て
現在DMG森製機製マシニングセンター
CMX1100V が愛機です。
前回の記事は端面切削でした。
考えてみると上面フライスが行程的には先でした。
角取りの基本はバイスに対して下と奥の壁を基準に一面ずつひいて
引いた面を奥の壁、引いた面を奥の壁と回してゆきます。
密着させる叩きの感触で精度ある品物を削る職人技です。
マシニングセンターを汎用機のように使う事がコンセプトです。
コンピュータのプログラミングがネックになっていますね。
便利になった道具の進化と共に人の知恵は退化しています。
32年前に覚えたことですが、加工段取りのスピードはいまだ衰え知らづです。
マクロプログラミングを上手に使いこなして、楽な加工ライフを送りましょう!
今回は少し長いです。
基本となる考え方ですので、ご自分の機械用途仕様に合わせて作ってみて下さい。
角取り工程1 フルバック、上面切削編
よく使う上面フライスです。
長手Xは右プラス、左マイナス奥行Yは奥がプラス、手前マイナスZは上下で上プラス下マイナス想定です
上面をひくプログラムなのですが、分岐を入れて少し複雑になりました。
![](https://sangakuerg.com/jp/wp-content/uploads/2022/02/IMG_20220225_223358894.jpg)
通常は四角いワークの右奥角が原点です。
様々なワークを効率よく荒取りする為に、原点はバイスの右角です。
刃物の走り方のイメージは右奥から左マイナス方向に一方向切削します。
マクロ本体
O5513(Z JYOUMEN FLISE)
N10( CUTTER, 80.000,T25 H25 D25)
100=FUP[#25/[#20*0.9]]
101=#25/#100(Y KIRIKOMI)
102=#24+#20+#4+#1
103=#100
104=#20/2+#4+#1
105=FUP[[#26+#2]/#6]
106=[#26+#2]/#105
107=#25/2.
IF[#25LE#20]GOTO 102 (AP I#4CLIA A#1XPULAS)
N101
G90G0X#104Y0
GOTO110
N102
G90G0X#104Y-#107
N110
Z#2( AP Z+B#2)
WHILE[#105GT0]DO1
WHILE[#105GT0]DO3
G91G1Z-#106F500
WHILE[#103GE0]DO2
G91G1X-#102F#9
G0Z0.5
X#102
Z-0.5
Y-#101
103=#103-1
END2
IF[#25LE#20]GOTO120
G90G0X#104Y0
105=#105-1
103=#100
END1
G90G0Z50.
M99
N120
G90G0X#104Y-#107
105=#105-1
103=#100
END3
G90G0Z50.
M99
Y方向は奥から手前に刃径の80%位切込みます。
Zは切込み量 Kづつ下りX-Yの動きを繰り返します。
分割繰り返しはWHILE文を使い、YもZも考え方は一緒です。
X ワーク左右の長さY ワーク奥から手前の長さY分割の考え方は
#100=Y/刃物径x0.9をFUPで切り上げます。
これで切削回数が決まりました。
#101=Y/#100 実質の移動量を求めます。
WHILE文の条件にこの#100切削回数を使って[#100 GT 0]とします。
意味は値が0より大きい、#100>0が成立しているあいだENDまでを繰り返すです。
移動命令の最後に#100=#100-1として、カウントダウンします。
[#100 GT 0]が成立tururの間WHILE以下ENDまでをくりかえし、不成立でEND以降に飛びます。
WHILE [#100 GT 0] DO 1;~END 1;
WHILE文のくくりは5重まで使えます。
今回はYとZに使うので2重です。
O5513最初の想定刃物は80パイのフルバックでした。
次に32パイのスロアウェイエンドミルを使うと不都合が出ました。
それらの対策で、いじっているうちに複雑になりました。
順に説明します。
計算式直後のIF分は、ワークの前後巾 Yのスタートポイントが刃物径より小さくて
一発で引く場合、Yの真ん中を走らせたかったので追加しました。
YがTより小さければシーケンスNo102からやれという命令文です。
N102で#107=#25/2としています、Yの半分ですね。
大きければ2回以上走るのでN101のY0から走ります。
その場合N102が邪魔なのでGOTO 110として N110へ飛ばします。
ここまでXYのアプローチが決まったので次はZのアプローチポイントです。
ZアプローチにはBの値がダイレクトに入ります。
WHILE文が2つ出てきました。
#105が0より大きいと言う条件です#105はZの回数です。
WHILEが2つの件は後で説明します。
つぎ Z-#106は一回目切り込みです。
次のWHILEは#103 Yの回数ですね。#103=#100にしている件も後で説明します。
次にようやくX切削です。
切削送りFの値が入ります。
#102はX.T.I.Aの和です#102=#24+#20+#4+#1
X#24は ワークのX方向の寸法
T #20ツール直径
I#4 クリアランス
A#1 原点がバイス角にしているため、バイスからはみ出している場合の寸法です。
#104アプローチポイントの時も、#20/2 ツール直径割る2
#4 I クリアランス
#1 A バイスからのはみ出し分の和を導きましたね。
![](https://sangakuerg.com/jp/wp-content/uploads/2022/02/IMG_20220225_085122297.jpg)
また、G91インクリメンタルで書いている理由は複数個ワークがある場合の想定です。
その場合座標系を変えてメインプログラムに記述します。
例
G54G0X0Y0;
G90G43Z50.H1S600M3;
Z10.M8;
G65P5513X150.Y120.A10.B2.Z1.I2.K2000T80.F300;
G90G0Z50.;
G55X0Y0;
G65P5513X150.Y120.A10.B2.Z1.I2.K2000T80.F300;
G90G0Z50.M9;
M5;
G91G28Z0;
G91G28X0Y0;
M30
または、
G66~~;
M98P333;
G67;
として
O333;
G54G0X0Y0;
G55G0X0Y0;
M99;
としても良いですね。
話を戻します。
Xはワークを抜けきります。抜けたあと、Zを上に0.5mm逃してG0でXを戻し、Z-0.5mm戻します。
Yの移動量#100に刃物径の90%でYを割り、分割回数をFUPできりあげます。
#101はYを分割回数で割、実際の移動量が入ります。
注意点として、刃物経路がワーク端ピッタリ走るときもあるので、ワークYの値を5mm程大きく入力するのが本マクロ使いこなしのコツです。
最後にY-#101が入ります。
そして#103=#103-1 回数をカウントダウンします。
ここで条件#103GE0 を判断してくりかえすか、END2以降にとびます。
最後Yが下がってから判断しますので、スタートポイントへ戻るときだけ、無駄な動きに見えます。
IF文を追加して無駄を無くすれば良いのですが、今後の課題とします。
コレで取代が少ない場合は終わります。Zの#105が複数回の場合、最初のWHILE文以下に戻ります。
DO1の所です。Z-#106下がりWHILE〜DO2のXY切削2回目がおこなわれます。
XY切削が終わり次のIF文では、ニ種類のアプローチポイントのどちらに戻るか判断します。
ワークの幅が刃物径よりも小さい時はワークの真ん中を走らせましたね。
N120 Y-#107へ戻します。
ワーク幅が刃物径より大きい場合IF文直下のY0へ戻してZの回数カウントダウン#105=#105-1します。
次の#103=#100は、XY切削に戻ったときの時点で、#103の値は先のX-Yサイクルでカウントダウンされたままです。
なので#100の初期値を代入します。このために計算値の#100を#103に置き換えて#100を温存していたのです。
これでおしまいなのですが、最後のIF文でIF[#25LE#20]GOTO 120~~END1~~N120~~とありますがN120に飛んだとき、コンピューターはEND1を読んでしまうのです。
エラーがでて、上手く行きません。
その解決方法が2行のWHILE[#105GT0]DO1、WHILE[#105GT0]DO3だったのです。
機械メーカーや同じ様な制御盤でも、パラメーターの設定で、動きが違います。
マクロは特に色々エラーがでます。一つずつ解決するしかありません。
苦労して組み上げると、メインプログラム一行で走ります。
仕事を早く終わらせて、時間に余裕を作りましょう!
![](https://sangakuerg.com/jp/wp-content/uploads/2022/02/IMG_20220225_091340369.jpg)
メインプログラム 例
ワークは 135x100x30
X135. Y30.A10.B50.Z-48.I2.K1000T32.F300
Aはバイス基準なので、バイスから5㎜位出ていますが、10mmとしました。
Iは安全クリアランス2㎜としました。A10とI2.でバイスから12mmスタートです。
Bもバイス基準のアプローチポイントです。バイスからでっぱり寸法50.を入力
Zですが、削りしろをK切込みで分割するのでマイナス入力になりました。到達ポイントです。
K想定切込み量で除算切り上げで割るのでこれより少ない切込み量になります。
T刃物径
F切削送りです。
O5555(MQ MEIN 5514-)
N20( JYUMEN, 32.000,T6 H6 )
M5
G91G30Z0M19T6
G91G30X0Y0
M1
M6
N21
G90G54G17G0X0Y0
G43Z100.H6S1000M3
Z60.M8
N22
G65P5513 X135. Y30. A10. B50. Z-48. I2. K1. T32. F250 *注
M9
M5
G91G28Y0Z0
G91G30X0
M30
![](https://sangakuerg.com/jp/wp-content/uploads/2022/02/IMG_20220225_085105853.jpg)
![](https://sangakuerg.com/jp/wp-content/uploads/2022/02/IMG_20220225_085122297-1.jpg)
バイスにアバウトにくわえられる
バイス基準の原点では適当にくわえられるメリットもあります。
Aは5mmですが、プログラムでは余裕を見て10㎜としています。
クリアランスIは2mmありますので、バイスから12mm以内でくわえればOKです。
80パイカッターのメイン
N40( CUTTER, FLUT TOP 80.000,T25 H25 )
M5
G91G30Z0M19T25
G91G30X0Y0
M1
M6
N41
G90G54G17G0X0Y0
G43Z50.H25S500M3
Z20.M8
N42
G65P5513 X135. Y100. A10. B10.Z-9.K2000T80.F300 *注
G90G0Z50.
M9
N100
M5
G91G28Y0Z0
G91G30X0
M30
今は電気式のプローブが装備されています。
原点を毎回ワーク原点をとっても苦になりませんが、
僕らの時代回転センサーでしたので、仕上げ以外はこのバイス原点アバウト切削で
時間を詰めました。
要はワーク寸法が出ていればよいのです。
黄色で示した早送りのアプローチには十分注意してくださいね。
ツイうっかりで衝突してしまうと、本末転倒、修理や確認に時間がかかります。
急がば回れとおふくろによく言われました。
今回は上面フライスマクロでした。
*注 BとZの表記
バイストップをZ0としています。
B が飛び出している総高さで、Z は目的の切削仕上がり高さです。
B はプラス入力で、Z はマイナス入力になってしまいました。
このあたりが自作マクロのわかりにくさです。
組んだ自分でも時間がたつと忘れて上手くいかない時があります。
自分で使う分には良いのですが、改善の余地ありですね。
すみませんが十分注意して参考にしてください。
質問などお気軽にしてくださいね。
ディスカッション
コメント一覧
まだ、コメントがありません