Fusion360が出力した、サンプルNCを個人的に検証してみました

Fusion360 のサンプルNC

前回、工場長濵谷さんから、Fusion360のCAMの説明がありサンプルNCデータが公開されました
http://a360.co/2fagabi
ターゲットとして、素材はスチールでファナック制御の汎用的なマシニングセンターだと仮定して検討してみたいと思います
あくまで、私の個人的な意見としてお考えください

シミュレーション

本当だったら、削りたいですが、そうも行かないのでシミュレーションでみてみます
私は、「TRYCUT2000」というシミュレーションを使用しています
トライカット
結構リーズナブルなソフトです。
確か、年間ライセンス:1万円 永久ライセンス:8万円 ぐらいです

とりあえず、トライカットにNCデータを入力してシミュレーションしてみます

特に問題なく、削れました。

ただし、荒加工のZ方向の取り代が0.5mmのようで、底面が仕上がっていない状態なので、仕上げの側面加工で食い込んだように見えています。
これはたぶん、サンプルなので底面仕上げを省略されただけの事でしょう(笑)
本来の加工であれば、・荒加工・底面仕上げ加工・側面仕上げ加工 の3工程にすると思います

HSM(high-speed-machining)荒加工

HSMは、HSC(high-speed-cutting)とか「Adaptive Clearing」とかとも呼ばれています
私はこの種のパスで削った事はないのですが、数年前から興味があり、情報だけは仕入れていました
実際の加工でも取り入れたかったのですが、会社的にはコストの面もありなかなか実行できていません
情報のみの知識で書き込みます
HSMは上の動画で狭い丸ポケットに入る箇所の加工を見ていただくと分かりやすいですが、トロコイド加工の進化系で、工具の横方向の切込み量が常に一定になる感じのパスです
ただ実際には、横切込み一定ではなく、工具が工作物と接触する角度を一定にするパスです
一般的なポケット加工は輪郭をオフセットしたような経路が広がっていくイメージが普通ですが、この削り方では狭い箇所に入り込む場合ワークに工具が全面に接触する、フル切削になってしまい、工具の負荷が著しく変化してしまいます
この『切削関与角・エンゲージ角』が一定になる事で工具負荷が一定になり加工が安定し工具寿命も延びるといわれているのが、HSMの特徴です
HSMの詳しい情報は、次の機会に紹介したいと思いますが
いずれにしても、このような良質なパスがFusion360で出せるのは、驚きです

では、NCデータを順に眺めてみましょう

Gコードにあまり馴染みがない方もいらっしゃると思いますので
説明もかねて、ちょっと長々と書きますので、興味ないかたは読み飛ばしてください。
こちらからダウンロードしたNCデータを参考にしてください
http://a360.co/2fagabi

(T1 D=10. CR=0. – ZMIN=-6. – FLAT END MILL)

  • 最初にコメント分で、工具径やコーナーR、種類などの情報がありいいですね
  • 特に、最終Z深さがあるのは、いいと思います。
  • 工具長が短くて、干渉した・・なんて事が少なくなります

N20 G28 G91 Z0.

  • とりあえず、Z軸のリファレンス点へ退避です。
  • ほとんどないとは思いますが、リファレンスが最上面より下側にある場合には注意が必要です

N30 T1 M06

  • 工具交換です
  • 最近はあまりないでしょうか?
  • 昔の機械は、TとM6を同じ一行でなくてはいけなかったり、別々でなくてはいけない機械もありました
  • 古い機械の場合には、調べておいたほうがいいです

N60 G43 Z15. H01

  • 工具長補正
  • 具体的にはZ15.に行く間に、H01の情報を元に工具長補正を完成させろ!ですね
  • このHの番号は、範囲以内であれば得に決まっていないのが(ユーザ任せ)トラブルになる場合があります
  • 通常は、T番号とH番号は同じで使う場合が多いと思いますが、会社によって違う場合もありますね
  • 他社のNCデータで加工する場合、この確認は重要です。
  • ハイデンハインの場合には、工具は番号・名前・径・長さなど、工具データテーブルで一括で管理されているので分かりやすいです
  • コントローラは工具交換した時点でこの工具データを参照しすぐに工具長補正を完成させます。工具長補正指令なんて必要ないです。ハイデンハインが使いやすいと感じる一つですね
  • 最近のマキノさんの制御機の工具データ画面は一括管理方式に近くなっています

N75 G01 Z1.05 F1800.

  • さぁ、いよいよ切込みに入っていきます
  • F1800のスピードに指定されています
  • ただ、この切込み動作と切り込んだ後、ポケットを広げていく動作で同じスピードです
  • やはり、無垢の素材に切り込む時とポケットを広げる時では加工負荷が違うので、送りは変更したいですね
  • ここは、Fusion360の機能で送りの変更が可能かどうか、調査が必要です

N80 G03 X1.027 Y4.637 Z0.529 I1.027 J4.638

  • 切込みは、螺旋で切り込んでいます
  • 半径がいくつの螺旋かは、IJの値で計算できます
  • 計算式は√((Iの値)*(Iの値) + (Jの値)*(Jの値))
  • 具体的には R = √((1.027*1.027)+(4.638*4.638)) = 4.75
  • 工具半径がR5.00なので、0.25の重なりですね。もう少し重ねたほうがいいような気もします

上のコードでもう一つ、気になる点があります

  • G03のコードなので、反時計回りの円弧補間ですが
  • X,Y,Z と3軸同時の指令なので、ファナック的にはヘリカル補間になります
  • ヘリカル補間はオプションの場合が多いので、動かない機械が出てきます
  • ちょっと、汎用性に問題があるかもしれません
  • ヘリカル補間での切込み動作の後は、直線補間での指令に変わっているので
  • このヘリカル補間も、すべてG01の直線補間に変更したほうがいいと思います
  • ここも、Fusion360の機能で螺旋切込みを直線補間にできるか?調べたほうがいいですね

N155 G01 X4.753 Y0.3

  • 螺旋切込みの後は、ほぼ直線補間で動いていますが
  • 所々、「G03」の円弧補間指令も出てきますね
  • まぁ、これは特には問題ないと思います

N3975 G00 Z15.

  • ここまでで、荒加工は終了し、一旦、Z15.に退避します

N3995 G43 Z15. H01

  • この指令は、ちょっと気になります
  • すでに、工具長補正が実行中ですが、再度、工具長補正をしようとしています
  • 問題ないかもしれませんが、機種によってはアラームをだしたり、最悪誤動作もあるかもしれません
  • このコードは出さないようにするか、
  • このコードの前に工具長補正キャンセルを行うか、
  • いちばんすっきりするのは、とりあえず荒工程終了という事で工具交換し、
  • 側面仕上工程という事で、再度工具交換からスタートするのがいいと思います
  • 後の行に「G41」の工具径補正がありますから、側面仕上工程が想定されます
  • 実際の加工を考えてみると、工具径補正で仕上げの場合、精度的な管理も必要になります
  • 精度を考えると、一度削った後、測定し、その結果に応じて補正を編集し再加工になります
  • その場合、加工工程は分割していたほうが、便利です

N4015 G18 G02 X12.5 Z-6. I1.

  • これは、面白いコードですね
  • G18のXZ平面指令で、Z方向へR1の円弧補間で進入しています
  • 底面にキズなどつけないための配慮だと思われます
  • 3D加工の場合は、螺旋で切り込んだりしますが、2D輪郭加工で
  • このパスを出すのは、ずいぶん気を使っていますね~
  • ただ、G18を使うか、G01の直線分割がいいのか?意見はわかれるところだと思います

N4115 G18 G03 X11.5 Z-5. K1.

  • これも同様に、XZ平面のR1円弧補間で底面より逃げています

ざっと眺めると、こんなところでしょうか?

Gコードにあまり馴染みがない方もいらっしゃると思い説明もかねて、ちょっと長々と書いてしまいました。

 

ポストプロセッサ

いろいろ、気になる点を書いてしまいましたが、サンプル出力としては十分だと思います
結局同じ機械メーカーで同じファナックでも(・・特にファナックは・・)機種により設定変更が必要な場合がよくあります
また、使う人によって、微妙に操作のさせ方が違う場合もあります
たとえば、工具交換後すぐにクーラントを出す人もいれば、ワークに近づいてから出したい人
スピンドルを回転させてから出す人、回転させる前から出したい人、いろいろだと思います
実際の形状を加工する経路の指令は、CAMの内部計算で決定しますが、補助的な動作を補うのが、ポストプロセッサの役目です

とりあえず、私の経験からいろいろ書いてしまいましたが

おそらくFusion360のCAMでの設定かポストプロセッサの編集で変更は可能なはずです
Fusion360は、ポストプロセッサも、ユーザーが自由に編集できそうですから
勉強すれば、自分好みのパスがだせるようになると思います

今回のサンプルで編集したい点と整理すると

  • 傾斜やヘリカルで切り込む時と通常の送り速度は変更したい
  • ヘリカル補間はオプションの場合もあるので、直線補間など汎用コードに変更可能か?
  • すでに工具長補正モード中の場合、再度工具長補正コードは出してほしくない

このあたりを編集してみたいですが・・・
ポストプロセッサ設定ファイル、ちょっと覗いてみましたが、結構複雑ですねぇ
かなり勉強が必要そうです。(汗;)

手打ちのG-codeでプリントしてみる Vol 2

とりあえず、手打ちのG-code でもプリントできたけど、

どうして、プリント上面があんなに凸凹になったのか?

たぶん、移動距離とフィレメントの押し出し量とスピードの関係が悪いのか?

家庭用とは、この程度なのか?

いろいろ考えていると、そっか!積層ピッチを0.1mmにしてた。

ピッチが小さいほうが、綺麗かな~ぐらいで、あまり考えずこれにしてた。

E指令の計算では、ノズル径φ0.4mmで計算してあるので、積層ピッチも0.2mmに

しなくては、いけないのかもしれない。修正してやってみよ。

G92 E0
M106
G1 Z0.40 F40
G1 X-30.00 Y30.00 E3.0 F800
G1 X-30.00 Y-30.00 E6.0
G1 X30.00 Y-30.00 E9.0
G1 X30.00 Y30.00 E12.0
;
G92 E0
G1 Z0.60 F40
G1 X-30.00 Y30.00 E3.0 F800
G1 X-30.00 Y-30.00 E6.0
G1 X30.00 Y-30.00 E9.0
G1 X30.00 Y30.00 E12.0
;
G92 E0
G1 Z0.80 F40
G1 X-30.00 Y30.00 E3.0 F800
G1 X-30.00 Y-30.00 E6.0
G1 X30.00 Y-30.00 E9.0
G1 X30.00 Y30.00 E12.0

すると、お~正解。上面も側面も結構綺麗。

厚みを測定してみると、約0.7mm ・・

う~ん、本当なら0.4mmになってほしかったけどね!

まぁ、前回より、ぜんぜんよくなった。

やっぱり、バランスは重要なのね~

それにしても、設定値でこれだけ変わるんだから、機械の動作精度はいいと思う。

他のプリンタでも、やってみたいね。

手打ちのG-codeでプリントしてみる

せっかく、G-code 編集できるようになったので、簡単な輪郭形状をプリントさせてみよう。

円柱が簡単でいいかな?

っと思って、G-code 書いてみたけど、PlashPrint は正常に描画しない。

う~ん、どうも、G2,G3 の円弧補間には対応していないみたいだねぇ。

しょうがないので、四角柱にしてみる

60×60×5mmの四角柱。

G-codeはこんな感じ

;start gcode
M118 X50.00 Y50.00 Z10.00 T0
M140 S0
M104 S210 T0
M107
G90
G28
M132 X Y Z A B
G1 Z50.00 F400
G161 X Y F3300
M6 T0
M907 X100 Y100 Z40 A80 B20
M108 T0
G1 X20.00 Y20.00 F1800
;preExtrude:0.20
G1 Z20.0 F400
G1 Z2.0 F100
G1 Z0.20 F40
;preExtruder:0.145L
G1 X-20.00 Y20.00 E6.0 F500
G1 X-20.00 Y-20.00 E12.0 F1000
G1 X20.00 Y-20.00 E18.0 F1000
G1 X20.00 Y20.00 E24.0 F1000
;
G92 E0.
G1 X30.00 Y30.00 E2.0 F1000
G1 X-30.00 Y30.00 E10.7
G1 X-30.00 Y-30.00 E19.4
G1 X30.00 Y-30.00 E28.1
G1 X30.00 Y30.00 E36.8
;start:0.05L
G92 E0
M106
G1 Z0.30 F40
G1 X-30.00 Y30.00 E3.0 F800
G1 X-30.00 Y-30.00 E6.0
G1 X30.00 Y-30.00 E9.0
G1 X30.00 Y30.00 E12.0
;
G92 E0
G1 Z0.40 F40
G1 X-30.00 Y30.00 E3.0 F800
G1 X-30.00 Y-30.00 E6.0
G1 X30.00 Y-30.00 E9.0
G1 X30.00 Y30.00 E12.0
;

;後はひたすら、Zを0.4~Z5.0まで変更して、コピーの連続

;
G92 E0
G1 Z5.00 F40
G1 X-30.00 Y30.00 E3.0 F800
G1 X-30.00 Y-30.00 E6.0
G1 X30.00 Y-30.00 E9.0
G1 X30.00 Y30.00 E12.0

;end
M107
G92 E0
G1 E-1.3 F1800
;end gcode
M104 S0 T0
G162 Z
G28 X Y
M132 X Y Z A B
G91
M18

終了。

FlashPrint にドロップすると、正常に描画されたので、プリント実行!

約10分。ちょっと、スピードが速いのか、後半すこし凸凹に動いてる

でも、とりあえず、正常にプリントできた

とりあえず、輪郭をぐるぐる積み上げただけ・・・

どれぐらいの、厚さになってるだろう?

ノギスで測ると、1.2mmぐらい

まぁ、こんなものなのかな??

やる人はあまりいないだろうけど、手打ちのG-code でプリントしてみました

FLASHFORGE Finder 水平だし用 G-code検討

Finder には水平だし機能があるから、あえて作る必要はないですが、先日作成したソフトを使ってセンサーを使わずに水平だしするようなG-code を試みてみました。

どんな風に動かしたいか・・・

  1. ヘッドをテーブルの左手前まで移動させ、テーブルを任意の高さまであげる
    たとえば、サンプルで作った20mmブロックをゲージとして使用する場合、指令値はZ+20mm
  2. ここで停止させ、20mmブロックに、調整ネジでヘッド先端を合わせる
  3. 次に、右手前まで、移動して停止
  4. ここでも、20mmブロックに合わせる
  5. X軸センター、Y軸一番奥へ移動して停止
  6. 同様に、20mmブロックに合わせる
  7. ホームポジションにもどり終了

こんな感じの、G-code を作りたい

G-code 的には簡単なので、すぐにできると思っていたけど、途中で停止するコードがわからない

NCコードの場合は、停止は、M0かM1なので、それでやってみたけど、それを読むと、その場所で停止しないで、ホームポジションまでもどって停止する。

う~ん、これじゃ、20mmブロックにヘッドを調整する事ができないなぁ~

ネット調べると、M25 や M226 でもいけそうだったけど、これも同様に動き

M116 もやってみたけど、このコードでは、センサーが出てきた。

ダメかぁ~

一箇所、ごとに、3個のプログラムにしなければだめかなぁ?

今日は、眠い。ここまで・・・

もし、ご存知のかたいらっしゃったら、教えてください

FLASHFORGE FlashPrint が吐き出した G-Code を覗いてみた。

NC工作機械のGコードは仕事でも携わってきたので
3DプリンターのG-codeにも興味がありテキストエディタで覗いてみた
テキストエディタでは、ヘッダー部分はたぶんバイナリデータなんだろうね?
文字化けの文字が並んでて、その後、G-code部分はテキストで出てくる
改行文字は通常のWindowsのテキストの「CR,LF」ではなく「LF」のみ・・
これは、FANUC系の工作機械と同じだね
なので、「メモ帳」では改行されないで、連続文字に見えるかもしれない
私の使ってる秀丸エディタは自動認識で正常に表示してくれた
さて、FLASHFORGE FINDER に同梱されていたサンプルデータ「20mm_Box.gx」
を覗いてみると、下記の感じ

;start gcode
M118 X15.00 Y15.00 Z10.00 T0
M140 S0
M104 S210 T0
M104 S0 T1
M107
G90
G28
M132 X Y Z A B
G1 Z50.00 F400
G161 X Y F3300
M6 T0
M907 X100 Y100 Z40 A80 B20
M108 T0
G1 X-15.00 Y15.00 F4800
;preExtrude:0.20
G1 Z.20 F400
;preExtruder0
G1 X-15.00 Y15.00 F4800
G1 X-15.00 Y-15.00 E4.3504 F1200
G1 X15.00 Y-15.00 E8.7009
G1 X15.00 Y15.00 E13.0513
G1 X-15.00 Y15.00 E17.4017

…実際のプリント動作指令

G1 X9.03 Y-9.06 E737.1908
G1 X9.06 Y-9.03 E737.1922
M107
;percent
G1 E735.8922 F1800
;end gcode
M104 S0 T0
G162 Z
G28 X Y
M132 X Y Z A B
G91
M18

G1やG90など、NC工作機械にも馴染みのコードもあるけど
主に機械の補助的機能を指令するMコードはあまり互換性がない
調べてみると下記サイトが見つかった
http://reprap.org/wiki/G-code

これみると
G00 位置決め(早送り)
G01 直線補間(切削送り)
G02 円弧補間・時計回り
G03 円弧補間・反時計回り
G04 ドウェル・一定時間停止
G28 機械原点復帰(指令軸のホームへ移動)
G90 絶対座標系(アブソリュート指令)
G91 相対座標系(インクレメンタル指令)
M06 工具交換
ここらは、NC機械と同じですね

プリンタ特有なのは
M118 ?よく分からない。プリントの最大値なのかな?
M140 ベット温度設定。これはFINDERではあまり関係なさそう
M104 エクストローダー温度設定。
M107 ファンOFF
M132 軸のオフセット設定?よく分からないが初期設定みないなものかな?
G161 指令軸の最小点に移動させる
G162 指令軸の最大点に移動させる
M907 軸のモータ電流設定?これもよく分からないがおまじない?
M108 エクストルーダ速度設定
M106 ファンON
M18 すべてのモーター無効(終了コード?)
E指令 フィレメントを押出す長さ指令(mm)
; 記号 コメント行
こんなところか。

まぁ、分からない指令は、おまじない的に書くとして
「G0」「G1」「G28」「G161」「G162」あたりの組合せで
ある程度の動作は、させられそうですね。
会社では新しいNC機械が入ってくると、ランニング運転用として
機械の最大最小付近を動作するようなNCデータを作成するのですが
そんなイメージのFINDER用G-Codeを作成してみたいと思います

っと思い、適当にテキストエディタでヘッダーの後にコードを編集し
そのデータを、FlashPrint へロードしてみたけど、読込んでくれない!

う~ん、たぶん、ヘッダー部分をエディタが壊したんだなぁ?
秀丸のバイナリモードで、オリジナルデータと壊れたデータを比べると
なるほど・・・
オリジナルの[0x00]ヌル文字が[0x20]スペース文字に変換されてた。
たぶんテキスト的には、ヌル文字なんて意味がないので
テキストエディタは勝手に変更しちゃうんだろうね
おそらくwindowsのメモ帳も同じような処理をするんじゃないかな?
これじゃ、テキストエディタでは、FlashPrintのG-codeの編集は無理!
そうなると、バイナリエディタで編集するしかないか?
と言う事でネットで探してみるとバイナリエディタ自体は
いろいろ見つかった。その一つを試してみると、
16進表示での編集になりそう。これでG-codeを入力するのには、
ちょっと面倒だなぁ
しょうがない、ヘッダーはバイナリのままで、G-code部分は
テキスト入力で、改行は「LF」にするプログラムを
暇つぶしに作ろうか~
使う人はあまりいないかもしれないけどね~
もしかすると、他のスライサーで出力したデータをコピペで
利用できるようになるかもしれない