Fusion360 CAM ポストプロセッサ徹底解説・NCプログラム仕様検討

Fusion360 CAM ポストプロセッサ徹底解説・NCプログラム仕様検討

ポストプロセッサファイルの編集前にNCデータ仕様を検討します。
対象は、Fanuc系マシニングセンター用のNCプログラムで工具の自動交換に対応したデータをターゲットにしようと思っています。
今回もFusion360に標準でインストールされている「fanuc.cps」を参考に説明していきます。
まずは、適当な名前でコピーしておきましょう。
ここでは、「fanuc_new.cps」としました。

ポストプロセッサ構成

Fusion360 ポストプロセッサの構成については、以前の記事で描いてあるので、こちらも目を通しておくことをお勧めします。

Fusion360 CAM ポストプロセッサで、希望するNCプログラム構成に改造するには、次の4つの関数を編集する事になります。

① onOpen( )     ・ポスト処理開始時
② onSection( )    ・CAM定義の各セクションの開始時
③ onSectionEnd( )  ・各セクションの終了時
④ onClose( )    ・ポスト処理の終了時

ポストプロセッサは、この4つの関数を自動的に呼び出しながら処理します。
実際に編集を始める前に、希望するNCプログラムを出力させるには、この4つの関数とNCプログラムとの関係性を整理しておく必要があります。
再度、使用しているNCプログラムの構成を整理してみてください。
なるべく、4構成に整理する事を推奨します。
どの関数をどのように編集するかなど、作業がしやすくなります。

NCプログラム構成

NCプログラムの構成は、以前の記事で説明してあります。
こちらでも、4構成で説明していますので、構成に迷われた場合には参考にしてみてください。


4構成で整理すると、NCプログラムもポストの基本の関数も同じ構成数なので、各構成で整合性を持たせておきます。
まず全体的には、筆者は下記のような設定で考えています。

全体的な仕様としては、
・加工の始まりは、「%」「O番号」に続き、ワーク座標系指令も出力
・ワーク座標系は、最初に定義し、各セクション・工程では変更しない
・こうする事でワーク座標を変更する場合や多数個加工への対応が楽になります
・NCワードとワードはスペースで区切らない。(私の好み)
・基本的にシーケンス番号(N番号)は付加しない。
・ワーク座標系指令後、任意セクション(工程)へジャンプできる仕様とする
・そのため、各工程の始まりのみに、シーケンス番号を追加する
・各工程には、途中再開でも安全なように、退避やキャンセルコードを追加
・同様の理由で、次工程で同じ工具でも、とりあえず工具交換させる
・冷却コードは、飛び散り防止で工具回転の後に指令する。
・ただし、冷却水排出量を安定させるため、停止コード「G04」を追加
・各工程の終わりには、冷却・回転の停止、工具退避、キャンセルを行う
・単工程のみの加工も考慮して、各工程の最後に「M01」コードを出力
・加工終了時は、「M30」「%」で終了。

ポストとNCのすり合わせ

以上の仕様を、上記4つのエントリー関数に当てはめてみます。

① 加工始まり
 %
 O番号(コメント)
 (全工具情報)
 G90G00G17G40G80G49 (初期化コード)
 G54 (ワーク座標系指令)
 GOTO 1 (セクション・工程番号へジャンプ)

②セクション(工程)の始まり
N0001 (工程番号と同じシーケンス番号)
(工具情報)
G91G28Z0. (途中再開時の安全を考慮して工具退避)
G90G00G17 (とりあえずモーダルコードリセット)
T01 (工具番号)
M06 (行を分け工具交換、Tと同じ行ではNGな機種への対応)
G00G43Z30.H01 (工具長補正、この例では、T番号とH番号は同じ)
S2300M03 (スピンドル回転)
M08 (クーラントコード、飛び散り防止で回転の後で指令)
G04X10. (クーラントの安定を待つ、PとXでの指令あり)

ここから、エントリ関数以外の処理で、加工指令開始
加工位置へ位置決め後、加工に入る

③セクション(工程)の終了
M09 (クーラント停止)
M05 (主軸回転停止)
G91G28Z0. (リファレンス点へ退避)
G49 (工具長補正キャンセル)
G90G00G17 (モーダル情報リセット)
M01 (単工程再加工考慮、オプショナルストップ)

④ポスト処理終了
M30
%

エントリー関数の影響範囲確認

前回も書いてますが、4つのエントリー関数の影響範囲を知る事が、編集の近道です。
各関数の最初と最後に、「writeln( )」関数で、印をつけてみます。
具体的には、このように、わかりやすい文字列を追加します。

function onSection() {
   writeln("(---- onSection ----)");
    ・
    ・
   writeln("(---- End of onSection ----)");
}

筆者はこんな感じにしてみました。
ところで、関数のブロックの最初( { )と最後( } )を探すのは結構面倒です。
特に、「onSection( )」は300行以上あるので、矢印キーで追っていくのは大変です。
もし筆者お勧めの「VSCode」を使用しているなら、「Ctrl」+「Shift」+「\」のショートカットが便利です。

この機能を利用すれば、ブロックの最初と最後、どちらへも簡単にジャンプできます。

まずは、参考までに、サンプル用モデルを公開しておきます。

サンプルモデルは、こちらからダウンロードできます。

ポケット加工です。
3つのセクション(工程)構成です。
・1工程は、「T01」で負荷制御で荒加工。
  底面は仕上げますが、側面は「+0.5」の残り代
・2工程は、やはり「T01」での側面仕上げ加工
・3工程は、「T21」でのドリル加工
このCAMのポイントは、1,2工程で同じ工具を使っています
2工程目は、側面仕上げなので、全加工後、再度この工程のみ実行する可能性があります
この点も考慮して、ポストプロセッサを改造していきたいと思います。

では、印を出力するように編集した、ポスト「fanuc_new.cps」を実行

%
O1001 (TEST01)
(T1 D=12. CR=0. - ZMIN=-9.995 - FLAT END MILL)
(T21 D=6. CR=0. TAPER=140DEG - ZMIN=-16. - DRILL)
N10 G90 G94 G17 G49 G40 G80
N15 G21
(---- End of onOpen ----)
(---- onSection ----)
N20 G28 G91 Z0.
N25 G90
(3)
N30 T1 M06
(AP0.02D AE1D)
N35 T21
N40 S2300 M03
N45 G54
N50 M08
N55 G00 X-44.303 Y-9.527
N60 G43 Z30. H01
(---- End of onSection ----)
N65 G00 Z5.
N70 Z2.505
N75 G03 X-55.697 Y-9.904 Z1.88 I-5.697 J-0.188 F333.
・
・
N6445 X-39.768 Z0.205
N6450 G00 Z30.
(---- onSectionEnd ----)
(---- End of onSectionEnd ----)
(---- onSection ----)
(2D 7)
N6455 G00 X-37.2 Y11.2
(---- End of onSection ----)
N6460 Z30.
N6465 Z5.
N6470 G01 Z1. F333.
・
・
N6555 G19 G02 Y8.8 Z-8.78 K1.2
N6560 G00 Z30.
(---- onSectionEnd ----)
N6565 G17
(---- End of onSectionEnd ----)
(---- onSection ----)
N6570 M05
N6575 G28 G91 Z0.
N6580 G90
N6585 G49
(6)
N6590 M09
N6595 M01
N6600 T21 M06
(NSB-DRILL)
N6605 T1
N6610 S2650 M03
N6615 G54
N6620 M08
N6625 G00 X-40. Y15.
N6630 G43 Z30. H21
(---- End of onSection ----)
N6635 G00 Z5.
N6640 G98 G81 X-40. Y15. Z-16. R-5. F420.
・
・
N6660 G80
N6665 Z30.
(---- onSectionEnd ----)
(---- End of onSectionEnd ----)
(---- onClose ----)
N6670 M09
N6675 G28 G91 Z0.
N6680 G90
N6685 G49
N6690 G28 G91 X0. Y0.
N6695 G90
N6700 M30
%
(---- End of onClose ----)

このように出力されました。
上記の、すり合わせで検討した構成とは、少し違う結果です。
やはり、改造が必要ですね。

まとめ

ポストプロセッサのエントリー関数から、NCプログラムの構成を検討してみました。
現在マシニング加工をされている方は、すでにNCプログラム構成はできあがっていると思います。
しかし、そのNCプログラムをFusion360 ポストプロセッサで出力させる場合、ポストのエントリー関数に合わせて4構成で整理したほうが、改造がしやすくなります。
また4構成で整理しておくと、複数のマシニングセンターを使用する場合にコンバータソフトなど開発する場合でもやりやすくなります。
お時間あれば、一度検討してみてもいいと思います。
次回からはいよいよ実際に、希望のNCプログラムと、標準ポストが出力したデータを比較して、改造していきたいと思います。


Fusin360 ポスト情報


  1. 概要編
  2. 構成編
  3. 変数
  4. グローバルセクション
  5. 関数
  6. NCプログラム仕様検討
  7. onOpen( )
  8. onSection( ) No1
  9. onSection( ) No2
  10. onSectionEnd( ) & onClose( )

1 2 3 4 5 6 7 8 9 10

CAD/CAMカテゴリの最新記事

%d人のブロガーが「いいね」をつけました。