製造現場の叫び?!


マシニングセンタが我が社にきてから早二年、最近ではめっきり稼働率が落ち込んでいる。
その原因はなんだろう?もちろん、仕事量の少なさもありますが、汎用フライス盤+簡易NCがついた 大阪機工のらくらくミルがあるからなのです。
単品加工はらくらくミルを使った法が楽なのです。
部品個数が10個以下で、一段取りで加工しなくていいもの、または個数1個の, 一般的な部品加工なら威力を発揮します。
らくらくミルは決まった切削パターン、たとえば円弧、長穴、四角穴、などがあり, どの加工も刃物の動きが、実にすばらしいです。
「このパターンまねできないかなぁ。」
と日ごろから思っていたところ,2週間ほど私が加工する仕事が なくなったので、(仕事がないことは大問題ですが。) カスタムマクロを作ってみようと思い作ることにしました。

わが社のマシニングセンタは、またまた大阪機工の、VM5というやつでNC装置はファナックの16iです。
値段は安くて剛性はあり、今までトラブルもなく安定した機械なのですが、
余分な機能を省きコストを下げているらしく、NCの機能はオプションで補強しなければならないもので、
我が社も裕福でないから節約?して、円弧、長穴、等のパターンを買わなかったのです。
ちなみにカスタムマクロもオプションですがいずれパターンを作ろうと思い購入。しかし、購入後、数ヶ月がたち、
「もう少し楽にならないかなぁ」と思い。浜松合同のナスカ2D、CAD、CAMを購入しました。(CAMに興味があったので)
けれども、一般的な加工の場合、CAD、CAM使うよりパソコンにプログラムを手で入力した方が早くて期待されたほど効果がなかった。
(注 複雑な2次元の加工の場合はナスカ2Dは威力を発揮します。実際に助けられたことあります。
ただ我が社の仕事内容がどちらかというと多段取りの旋盤+フライス仕事がおおいから、一面の加工数が少ない
のです。それとほとんどが図面で注文が来るので、CAD図も自分で書かないとならないのです。)

一年前ぐらいまではそれでも、まとまった数の仕事(20個から100個)はあったけど去年の秋ぐらいからは、
どこか(中国かな?)にいってしまい、いまは試作か修理、特に修理仕事が多くなってきました。
いずれにせよ、パターン作ってマシニングセンタをもうちっとうごかさなくちゃ!


手始めになににしようか?と考えて、コーナーC面のパターンでも作ろうと思いたち制作にはいりました。

必ずダウンカットになる。 荒削りの時、工具径より切削幅が広いとき繰り返し追い込んでいく。 荒削りの時、切り込み回数を指定できる。 仕上げは追い込み無し加工深さ1回での加工になる。

記号の意味

動作開始点X座標 Xmm
動作開始点Y座標 Ymm
工具直径 Bmm
荒削りか仕上げか C (荒=1、仕上=2)
X方向加工寸法 Imm(+、−どちらでも良い)
Y方向加工寸法 Jmm(+、−どちらでも良い)
加工上面Z座標  Fmm
  加工深さ     Hmm
仕上げ代 Qmm
荒加工回数 T回
送り速度 Mmm/min
このプログラム名をO8015とする。
(ファナックは番号の頭にOを使う)
メインプログラムより呼び出すときG65を使い

G65P8015X_Y_B_C_I_J_F_H_Q_T_M_;

を使います。 マクロ文に慣れている人はわかると思いますが,
引数という取り扱い方法をします。

X=#24 Y=#25 B=#2 C=#3 I=#4 J=#5 F=#9 H=#11 Q=#17 T=#20 M=#13

ファナックの場合#**がマクロ変数です。 今回は上記のような引数を使います。


ファナックの場合、たしか#1から#33に引数が指定されていたと思います。 #100から#149までが電源を切るとクリアする変数です。 私の場合、計算は#100から#149を使います。別に#1から#33 で引数として使ってない変数はつかえますが、区別したかったのでそうします。
らくらくミルのパターンを目標にやってるせいなのか、または、使い勝手がいいからなのかすごくここまでにているかな? でもらくらくミルのパターンはこのマクロの動きにアップカットとダウンカットの指定ができるのです。


ここから、マシニングセンタを動かすための座標値の計算式を作ります。

上の図は何をしたいのかというとI=#4の数値とJ=#5の数値から aとbの寸法を出すことをやっています。
aとbの寸法を出すことにより仕上げの工具中心座標がわかります。

I,Jよりa,bをもとめる時にアークタンジェントを使っている。 これによりi,jが同じ符号の時は+、違う符合の時はー、となる。 1.+I,+J 2.-I,-J 3 +I-J 4-I+J に値を入れてみて計算してみたら数値は同じで符号が変わるだけだったので、 後々符号で混乱するのを避けるために I,Jを最初に絶対値にしておくことにしました。
#140=ABS[#4]
#141=ABS[#5]
#100=ATAN[#141]/[#140]
ここでa点からh点までの座標値を表す式を作ってみます。
#24,#25は動作開始点のX,Y座標値です。
(-I,-J)
a点
Xa=#111=#24+#4-#105+#106
Ya=#112=#25+#103
b点
Xb=#113=#24+#103
Yb=#114=#25+#5-#108+#109
(+I,+J)
c点
Xc=#115=#24+#4+#105-#106
Yc=#116=#25-#103
d点
Xd=#117=#24-#103
Yd=#118=#25+#5+#108-#109
(-I,+J)
e点
Xe=#113
Ye=#118
f点
Xf=#111
Yf=#116
(+I,-J)
g点
Xg=#117
Yg=#114
h点
Xh=#115
Yh=#112

#4、#5のかわりに#140、#141でもいいのですが今回はこうしました。 ここまでで仕上げ切削可能な座標値がでます。

荒加工の準備

荒加工の時、工具直径が切削幅(#120)より小さいとき繰り返し追い込みを するための回数を出します。

#120=ABS[#4]*sin[#100](切削幅)
#121=#120/#2/0.8 (切削幅/工具径の80%)
#122=FUP[#121] (小数点以下繰り上げ)
後述しますが繰り返しのカウントをするため
#124=#122
とします。
そして仕上げ座標から工具半径のピッチで加工するとして
#123=#124-1となる。この辺の事がこのプログラムを作っている時、混乱していたのです。 が、見直しすると最終的には仕上げの座標で加工するので切削幅÷工具径で出した回数より1回少なく なるのです。当初は工具径(mm)×かかり率(%)で荒削り加工をするつもりが結局工具半径ピッチ になっていたということです。

荒削り座標の式を作る
(+X-Y)
#130=#117
#131=#114+#109*#123
#132=#115-#106*#123
#133=#112
(+X+Y)
#130=#115-#106*#123
#131=#116
#132=#117
#133=#118-#109*#123
(-X-Y)
#130=#111+#106*#123
#131=#112
#132=#113
#133=#114+#109*#123
(-X+Y)
#130=#113
#131=#118-#109*#123
#132=#111+#106*#123
#133=#116


荒加工回数

Z方向の切り込み回数を出すために#125=#11/#20としますこれは(加工深さ÷加工回数)で 加工回数1回あたりのzの切り込み量を示すものです。
これも繰り返しのカウントのために#126=#125として#126で荒加工回数を確認している。