ポストプロセッサファイルの編集前に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 ポスト情報
- 概要編
- 構成編
- 変数
- グローバルセクション
- 関数
- NCプログラム仕様検討
- onOpen( )
- onSection( ) No1
- onSection( ) No2
- onSectionEnd( ) & onClose( )
コメント