2017年12月02日

球型ボールエンドミルによる裏面取りの汎用的な方法

 以前に裏面取り用の工具をまとめた事がありますが、まだまだ裏面取り加工のプログラムは一般的でないのか、CAM によって対応状況に差があるように感じます。

 Mastercam なんかは比較的ツールパスが豊富なので、ライセンスさえあればワークに合わせて色んな方法でパスが作れるので何とかなる事は多いですが、それでも裏面取りの為の専用ツールパスがあるわけではありません。また HSMWorks の様な非力な CAM では裏面取りの様なアンダーカットの加工が苦手な感じ。

 特に曲面形状の裏面取りは CAM がきちんと対応していないと結構面倒です。

 そこでそういう裏面取りに対応していない3次元CAMでも出来そうな、球型のボールエンドミルを使った汎用的な方法を1つ紹介したいと思います。

手順

 まずは簡単なパイプの横穴の様なケース。

 とりあえず加工したいモデルの面取りを適当に作図します。

BackChamfer-01.png
図1 円筒横穴の裏面取り

 次に面取りフェースからオフセットサーフェスを作ります。オフセット量は加工に使う球型ボールの半径分になります。このサーフェスが球型ボールエンドミルの中心が通る所になります。

BackChamfer-02.png
図2 オフセットサーフェス

 オフセットサーフェス上にツールパスラインを作図するにはアイソパラメトリック曲線(UVカーブ)が利用出来ます。因みにSolidworksではスケッチツールの『面カーブ』コマンドを使います。

BackChamfer-03.png
図3 オフセットサーフェスのアイソパラメトリック曲線を抽出

糸面取りであればツールパスラインは中央に1本あれば良いですが、必要に応じて複数描いてもOKです。

 あとはこのカーブ上を工具が通る様に『3D輪郭』とか『トレース』とかのツールパスを作成しますと、こんな感じになります。

BackChamfer-anime.gif
図4 面取り加工の動き

 球型ボールエンドを使う利点としては、工具の向きが自由になる所が挙げられます。何らかの事情があって横穴の方から工具を突っ込む事が出来ない場合には別の方向から加工する事になりますが、工具の向きが変わっても球型ボールの中心が辿る経路は変わらないので作図は共通で行けます。

BackChamfer-front-anime.gif
図5 別の方向から
BackChamfer-L1.png
図6 形状が変わっても
BackChamfer-L2.png
図7 同じくオフセットして
BackChamfer-L4.png
図8 UV曲線抽出して必要に応じてアプローチを追加し
BackChamfer-Lanime.gif
図9 加工の動き

 如何でしょうか。工具は基本的に球型ボールエンドミル(場合によっては普通のボールエンドミルも)しか使えませんが、加工形状の制限は少なく、作図も比較的簡単な方だと思いますので、投影加工ではなく深さも3D曲線に沿って加工するツールパスがあれば大体どんなCAMでも作れそうな方法だと思います。因みに上のアニメーションGIFのツールパスは HSMXpress( HSMWorks の無料版で2.5Dまでの加工に対応)で作成しました。面沿いなどの3Dのツールパスが無くても可能という事です。

 今回は特に裏面取りの事例を取り上げましたが、この方法は別に裏面取りに限らず面沿い加工全般に適用可能です。例えば Fusion 360 の CAM は HSMWorks とほぼ同じものですが、HSMWorks にはある『面沿い』がありません。まぁもともと HSMWorks の面沿いはあまり出来が良くないので、そこらの問題があって移植されなかったのだと思いますが、面沿いが無いと何かと不便です。そういう時にもこの方法が利用出来ると思いますので、DIY界隈の方や CAM の吐き出すパスの品質に満足出来ない方は試して見て下さい。

タグ:バリ CAM

posted by antec at 15:07 | Comment(2) | CAD/CAM | このブログの読者になる | 更新情報をチェックする

2017年11月24日

メインサブ両対応

 相変わらずの需要がよく分からないNCマクロネタです。

 機械の段取り時に使う様なプログラムは、それを単体で直接動かしたい時もあれば、別のプログラムからサブプログラムとして呼び出したい時もあったりしますよね?無いですか?

 単体で動かすプログラムは最後M30かM2で終了させますが、サブプロとして利用する場合にはM99で終わらせないとメインプログラムに戻ってくれません。

 従ってそのようなメインプログラムにもサブプログラムにも成り得るプログラムでは、どちらの状態で実行されているか判断して終了のMコードを切り替えてやる必要があります。

 今回はそんな処理をするマクロの例を紹介します。

サンプル1

%
O1234 (SAMPLE PROGRAM 1)


#30 =99. (M99)
IF[#4000 NE #4115] GOTO9900
#30 =30. (M30)

N9900 (END OF PROGRAM)
M#30
%

解説1

 システム変数 #4000 はメインプログラム番号、#4115 はそのプログラム自体のプログラム番号が格納されている変数です。サブプロ実行中は #4115 にサブプログラム番号が入ります。従って #4000 と #4115 が同一か否かで、そのプログラムがメインプログラムとして実行されているのか、それともサブプログラムとして呼ばれているのかが判別出来ます。

 因みにMDIで動かした場合には #4000 は“空”(#0)です。

 M99/M30 はわざわざ変数を介さなくても直接指令すれば良さそうなもんですが、これにはちょっとした理由があります。機械のパラメータ設定によりますが、外部機器からプログラムを読み込む際にM99やM30があるとそこで読み込みが止まってしまう機械があります。その様な機械でプログラムの後半が欠落するのを防ぐため、直接指令するのを避けました。

サンプル2

 動作確認しておkと思ったら、世の中には #4000 が無い制御装置もあるみたいなので別の方法を考えました。

(SAMPLE PROGRAM 2)
#13 =#4113 (MODAL M CODE)


#30 =99. (M99)
IF[#13 EQ 98.] GOTO9900
#30 =30. (M30)

N9900 (END OF PROGRAM)
M#30

解説2

 システム変数 #4113 には直前に指令されたMコード番号が格納されています。

 プログラム先頭で #4113 を調べた場合、もしこのプログラムが別のプログラムから M98 にてサブプロ呼び出されていた場合には #4113 には 98 が入っている筈です。一方メインプログラムとして実行された場合には #4113 には 0 か 2 か 30 の何れかが入っていると思います(処理系依存)。

 この方法ではサブプログラム呼び出しではなく、G65 のマクロ呼び出しされた場合にそれを判別出来ません。FANUCなら #4012 (G65,G66,G67) のシステム変数にてマクロ呼出しされたかどうかを調べる事が出来ますが、ブラザーのNC (CNC-C00) では #4012 は G66,G67 しか返さないようで、G65で呼ばれたかどうかが判別出来ません。

おわり

 そんなのM98Pするだけのプログラム1個置いときゃ良いじゃん、なんて事は決して口にしてはいけません。


posted by antec at 23:39 | Comment(1) | 工作機械 | このブログの読者になる | 更新情報をチェックする

2017年11月18日

2号機

 先日またM140X2が入ってきました。X1と合わせると3台目。いつものように最初の立ち上げ作業は自分がやって、出来たら担当者に引き渡します。

 今回のちょっと新しい試みとしては、工具長測定の改良と、テーブル自動心出しの実装。

 テーブル自動心出しは自分が担当する方の機械でやってる事で、今までM140Xxには付けて無かったんかいという感じですが、これ標準で付いてくるBLUMのスタイラスが太短くて有効長が足りない為に、加工段取り状態で測る事が難しかったので放ったらかしにしていました。まぁ自分が使わない機械なんてそんなもんです。

 工具長測定はA軸の横っちょに付いてて、測定時にA軸を100度に倒して使います。一応カタログの名目は『工具折損検出装置』なので本来は工具長測定装置では無いのでしょうけど、測定マクロさえ作れば工具長測定も行う事が出来ます。

 因みにうちの場合はX1納入時の操作説明中に指導員の方がその場で工具長測定マクロを組みながら使い方を教えて下さりました。

 ここに使われているタッチセンサーはメトロールの『高精度MT-タッチスイッチ〔Pシリーズ〕』と思われますが(憶測)、センサー単体の公称繰り返し精度0.0005mmと比較すると、実運用上の測定精度がそこまで高くありません。

 測定精度が安定しない主な理由としては、機械の熱変異とA軸の繰り返し位置決め精度の影響ではないかと考えています。なので今回の改良点はその2点。具体的には

  • 基準工具によるキャリブレーション
  • 測定後にA軸を戻さない

 5軸のマシニングで精度を管理しようと思うと、主軸ゲージラインを基準にするのが一番良いと思っています。なので本来なら工具長は信頼性のあるツールプリセッタで測るのが良いと思っていますが、残念ながら弊社にはツールプリセッタが無いので、機内で工具長を測っています。

 機内での工具長測定の問題点は、熱変異等の影響によって測定値がいつも同じにならないという事が挙げられます。

 3軸のマシニングならその時加工に使う工具の長さが揃っていれば絶対値としては間違っていてもそれ程支障がありませんが、5軸の機械では回転軸との関係が狂ってしまうと致命的なので、ゲージラインからの寸法がいつでも正しく測れる事がとても重要なのです。

 そんな訳で、正確にゲージラインからの長さを測った基準工具にてキャリブレーションしてから工具を測るようにすると、機械原点から測定子までの距離が変化していても正しい工具長を測れるようになります。

 基準工具の注意点は、基準工具の長さ自体が温度変化で変わる事です。線膨張率を12e-6[/K]とすると、基準工具の長さが100mmあって温度変化が10℃あれば 12e-6*100*10=0.012mm となり、結構無視出来ない量。

 A軸の繰り返し位置決め精度の問題は、A軸を動かさなければ問題にならないだろうという安直な考えから、キャリブレーション時に測定姿勢へ位置決めしたら、あとはずっとそのままにしておけばA軸の繰り返し位置決め精度の影響は排除出来ると考えました。勿論キャリブレーションだけでなく、工具長を測った後もそのまま。従来は律儀に測定が終わったら水平に戻していましたが、どうせ工具長を測る時は人が付いているのだから別に戻す必要も無かったのかも。その方が何本か連続で測る時には時間短縮になるし。

 こんな程度の事でも十分良い精度で測れるようになったので、今後は初品から安定した寸法で加工出来るようになるんじゃないかと期待します。

 因みにC軸がZ軸に対してちょっと傾いているので(X軸方向に0.009/100、Y軸方向に0.002/100くらい)、テーブル中心をテーブルの根元付近で測ると、バイスの上に掴んだワークの位置で測った時と一致しません。

 同様にA軸もX軸と平行ではないので、テーブルの心出しと座標変換(G68.2のマクロ版)の両方でそこら辺の誤差を見込んだ補正を掛けています。

 多分CNC-C00のロータリフィクスチャオフセット機能ではそこらの問題には対応出来ないんじゃないかと思いますがどうでしょうか。

 因みに大抵の機械では工具長測定装置はテーブル側に付いているので、5軸テーブルの心出しを行った際に傾斜軸中心のZ値に連動して工具長測定の基準高さパラメータも更新するようにするだけでも、工具長測定の精度が結構向上します。こうする事でいちいち基準工具でキャリブレーションしなくてもそれなりには測れるので便利です。


posted by antec at 12:11 | Comment(0) | 工作機械 | このブログの読者になる | 更新情報をチェックする