マシニングセンタで裏座ぐりの加工をすることがあると思います。しかし、プログラムを毎回作るのは面倒ですよね。そんなときマクロプログラムで作っておくと、次回以降プログラミングがとても楽になります。
今回の記事は
- 裏座ぐり用のプログラムを毎回作るのは面倒だ!
- マクロプログラムを作りたいけど、どう作ればいいの?
そんな人のため、「機械加工歴20年のセドヤ」が裏座ぐりカッター用のマクロプログラムを紹介します。
最後まで読むと掲載してあるサンプルプログラムから自分好みのマクロプログラムを作れるようになります。
裏座ぐり加工する手順
最初にどのようなマクロにするかを決めます。マクロをプログラム登録しておき、裏座ぐり加工したいときに、各メインプログラムから G65又はG66 で呼び出して使うようにします。
どんな動きのマクロにするのかを決める
「裏座ぐりカッター用のマクロプログラム」と言っても具体的な動きを決めないと作れません。
今回の裏座ぐりカッターを使ったマクロの手順
- マクロのスタート位置は下穴中心
- 主軸をオリエンテーションして下穴に干渉しない位置へシフト
- 下穴に工具を挿入し加工スタート位置へ
- 工具を下穴中心へ
- 回転させて裏座ぐり加工
- 加工スタート位置へ戻る
- オリエンテーションして再び工具干渉のない位置へシフト
- 安全高さまで退避
- 下穴に中心に戻して終了
その他のマクロの仕様
- 回転は正転(M3)で加工
- G91(インクレメンタル指令)でシフト
※裏座ぐりカッターのシフト量は取扱説明書で必ず確認してください。 - 裏座ぐり加工で切りくずを短くするためのステップ機能
Q#17を入力したらステップし、未定義ならノンステップ - 下穴に工具が入った後の位置決めは早送りでは怖いので切削送りのF1000で移動
マクロの変数を決める
マクロで使う変数は以下の通りです。
ローカル変数 | アドレス | 説明 | 引数のない場合 (未定義) |
---|---|---|---|
#21 | U | X方向のシフト量 | 0が代入される |
#22 | V | Y方向のシフト量 | 0が代入される |
#18 | R | レファレンス点 | エラー |
#17 | Q | 切込み量 | ステップなし |
#26 | Z | 最終加工高さ | エラー |
#4 | I | 逃げ高さ | エラー |
#9 | F | 送り速度 | モーダルFコードに従う |
#28 | 引数Rの保存用 |
先に説明した手順に変数を当てはめると以下のようになります。
- マクロのスタート位置は下穴中心
- 主軸をオリエンテーションしてシフト(U#21,V#22)
- 下穴に工具を挿入し加工スタート位置へ(R#18)
- 下穴中心へ(U-#21,V-#22)
- 回転させて裏座ぐり加工(Z#26)
- 加工スタート位置へ戻る(R#18)
- オリエンテーションしてシフト(U#21,V#22)
- 安全高さまで退避(I#4)
- 下穴に中心に戻して終了(U-#21,V-#21)
※エラー処理について
誤作動を防ぐため入力ミスがあった場合アラームがでるようにします。
- エラーの条件
- U,V の両方が0
- R,Z,I のどれかが未定義
- I が R 又は Z より小さい
- R が Z よりが大きい
- エラーでアラームをだす方法
- システム変数 #3000に数字(1~99)を代入するとアラームがでます。
- 例)#3000=1(ERROR)
- ( ) 内のコメントがアラームメッセージとして表示されます。
裏座ぐり加工のサンプルプログラム
- メインプログラム O1
- サブプログラム O500 (マクロ)
- 裏座ぐりカッターシフト量
- X方向 0
- Y方向 50.4
- 安全高さ I 50
- 加工開始位置 R -30
- 座ぐり位置 Z -20
- 切込み量 Q 2
- 穴位置 2か所
- X100.Y100.
- X-50.Y-50.
サンプルプログラム
O1 (MAIN PROGRAM)
G0 G90 G54 X0 Y0
G43 Z100. H1
S200 M3
G66 P500 V5.04 R-30. Q2. Z-20. I50. F8
X100.Y100.
X-50.Y-50.
G67
M30
O500(MACRO/URAZAGURI.CUTTER)
(U#21 X.SHIFT)
(V#22 Y.SHIFT)
(R#18 R.TEN)
(Z#26 KAKOUTAKASA)
(Q#17 STEP)
(I#4 ANZEN.TAKASA)
(F#9 OKURI)
IF [#18 EQ #0] THEN#3000=1 ([R] NOT SET)
IF [#26 EQ #0] THEN#3000=1 ([Z] NOT SET)
IF [#4 EQ #0] THEN#3000=1 ([I] NOT SET)
IF [#18 GE #26] THEN#3000=1 ([R] GE [Z])
IF [ [#4LT#18] OR [#4LT#26] ] THEN#3000=1 ([I] LT [R/Z] ERROR)
IF [#9 EQ #0] THEN#9=#4109
IF [ #21 EQ #0] THEN#21=0
IF [ #22 EQ #0] THEN#22=0
IF [ [#21 EQ 0] AND [#22 EQ 0] ] THEN#3000=1 ([U] AND [V] NOT SET)
#28=#18 (R.COPY)
G1 G90 Z#4 F1000
M5
M19
G91 X[#21] Y[#22]
G90 Z#28
G91 X[-#21] Y[-#22]
G90
M3
WHILE [#28 LT #26] DO1
IF [#17 EQ #0] THEN#28=#26
IF [#17 NE #0] THEN#28=#28+ABS[#17]
IF [#28 GT #26] THEN#28=#26
G1 Z#28 F#9
IF [#28 EQ #26] GOTO10
G1 Z[#28-0.05] F1000
N10
END1
G1 Z#18 F1000
M5
M19
G1 G91 X[#21] Y[#22]
G90 Z#4
G91 X[-#21] Y[-#22]
G90 G0
F#9
M99
システム変数と演算子の説明
- IF [#18 EQ #0] THEN#3000=1 ([R] NOT SET)
- エラー処理のブロックです。#18が#0(未定義)のときアラームになりメッセージ「[R] NOT SET」が表示されます。
- IF [ [#4LT#18] OR [#4LT#26] ] THEN#3000=1 ([I] LT [R/Z] ERROR)
- IF文をOR演算子でつないでいます。
- もし#4が#18より小さいか、又は#4が#26より小さいときにアラーム「[I] LT [R/Z] ERROR」になります。どちらかの条件文が成立している場合にアラームとなります。
- IF [#9 EQ #0] THEN#9=#4109
- #4109 はシステム変数でFコード(送り速度)のモーダル情報です。
- #9 が未定義の場合、モーダルなFコードを#9に代入します。
- IF [ [#21 EQ 0] AND [#22 EQ 0] ] THEN#3000=1 ([U] AND [V] NOT SET)
- IF文をAND演算子でつないでいます。
- もし#21が 0 より小さく、なおかつ#22が 0 より小さいときアラーム「[U] AND [V] NOT SET」になります。両方の条件文が成立している場合にアラームとなります。
その他の不明点はこちら ⇓ 確認していただけます。
NCプログラムのマクロを説明(ファナック編)
主軸オリエンテーションが斜めの場合の対処法
主軸オリエンテーションで停止位置が斜めの場合があり、シフト方向をどうするか悩むと思います。
対処法は以下の3つです。
- 機械の仕様書でオリエンテーションの停止角度を確認する。
- ドライブキーを測定して角度を計算する。
- ピックインジケータで2点の距離を測定して三角比で計算できます。
- 見た目で干渉しないシフト量を決める。
例)ドライブキーの角度が55°でシフト量が5㎜の場合は以下のように計算します。
X = 5×COS[55] =2.868
Y = 5×SIN[55] =4.096
今回のマクロを使うとこうなります。
G66 P500 U2.868 V4.096 R-30. Q2. Z-20. I50. F8
※刃先の向きにより±を決めてください。
三角関数についてはこちら⇓
【三角関数】機械加工でよく使う計算方法を説明します
まとめ:NCマクロ【裏座ぐりカッターのプログラム例】
裏座ぐりカッター用のマクロを作る手順
- 裏座ぐり加工する手順を具体的を決める。
- マクロで使う変数を決める。
- エラー処理も考えておく。
- プログラミング。
- 動作確認。
いかがでしたか?
今回紹介した裏ザグリカッター用のマクロプログラムを理解したら、自分好みにアレンジしてみてください。
以上で終わりです。
最後まで読んでいただきありがとうございます。