前回に続き、SainSmart Genmitsu CNC Router 3018-PROをG-codeで動かすためのメモです。
各種CAMソフトでNCデータ(G-code)を作成し、自在にCNCを動かすことを目標としており、前回はテストコードの中身をお勉強しました。今回は、Carbide Create、DeskProto、fusion360それぞれで作成したNCデータの中身を見ていきます。(動作確認は次回です)。
Carbide Create
このソフトは2D(2.5D)を扱うフリーで使えるCAMソフトです。開発元の会社ではShapeoko、NomadといったCNCを販売しており、それらのCNCに合わせたソフトですが、GRBLを使っているっぽいので使えると踏んでいます。
Carbide Create Simplified 2D CAD/CAM
https://carbide3d.com/carbidecreate/
出力時の設定は「Shapeoko 3」を選択しました。ちなみにこんなら螺旋状に指定の径の孔をあけるパスです。
%
(TOOL/MILL,0.1,0.05,0.000,0)
(FILENAME: )
()
G21
G90
G0X0.000Y0.000Z12.700
(TOOL/MILL,3.0000,0,1.0000,0.0)
M6 T10
M3 S6000
G0X-1.060Y-1.060
G0Z12.700
G1Z-1.270F203.2
G1X-1.203Y-0.893F254.0
X-1.285Y-0.772
X-1.358Y-0.639
X-1.407Y-0.523
~
X21.972Y-3.329
X21.818Y-3.182
G0Z12.700
G0Z12.700
G0Z12.700
M5
M30
(END)
最初の%は、何だろう?無視していいいかな。()のところはコメントですかね。G21は単位をmmにするコマンドです。G90は絶対位置でのモードに変更するコマンド。M6 T10でツールの交換。M3 S6000でスピンドルを回転。G0で位置決めして、G1で削り始める。途中からG1を省略して、XYを指定しています。最後はM5でスピンドルを終了して、M30でプログラム終了。
G21以外は前回見たコードばかりなので、全然動きそうですね。
DeskProto
DeskProtoは動作が軽くて、SainSmartのCNCが工作機ライブラリの中にあるので設定が楽でいいですね。フリー版で使えるのはX軸に平行に移動する走査線と呼ばれるツールパスです。
DeskProto offers CNC machining for non-machinists
https://www.deskproto.com/
%
G21
G90
G00 X-1.500 Y-1.500 Z5.000
G01 Z-15.000 F200 S6000 M3
G01 X101.789
G01 Y-1.167
G01 X89.500
G01 X89.167 Z-9.426
G01 X88.833 Z-8.726
G01 X88.500 Z-8.344
G01 X88.167 Z-8.077
~
G01 Y61.500
G01 X86.167
G01 X85.833 Z-10.000
G01 X14.167
G01 X13.833 Z-15.000
G01 X-1.500
G01 X101.789
G00 Z5.000
M5
M30
使われているコマンドはCarbide Createの時と同じ。1行ごとにコマンドが省略されずにあり、スペースがあるので見やすいです。
主に仕上げに使われるツールパスなので、良くてエンドミルの刃長までしか掘れません。なので、このCNCの場合はフリー版でできることは限られますかね。深さを段々になるように複数の3Dモデルを作って、出力したコードをつなげるなど工夫すれば良いかもしれませんが、それならfusion360を使う方が楽ですからね。
ちなみにDeskprotoに登録されているこのCNCの情報はこちら。
送り速度は1500mm/min、スピンドル回転速度は6000rpmが標準になってます。前回のテストコードでは、スピンドルの回転速度は1000rpmでした。確かスピンドルの速度は上げすぎると、電源供給が足りなくて軸が動かなくなったりするそうですが、こちらの動画(Youtube)では、同CNCをDeskProtoで回転速度6000rpmと設定して動かしているので、多分、大丈夫なんでしょう。
Using DeskProto CAM software on the Genmitsu CNC Engraver
粗削りから様々な仕上げツールパスが生成可能なフリーで使えるCAMとしては最強のソフトです。
Fusion 360 – オートデスク
https://www.autodesk.co.jp/products/fusion-360/overview
粗削り→等高線パスで側面の仕上げ→上の平坦部仕上げといった流れのツールパスを生成しました。一応これ、ペンを指しておくペンスタンドのつもりです。DeskProto+Carbide Createの合わせ技で作製した場合と、fusion360一括で生成した場合と比較をしようかなっと思って。
今回モデルはOnShapeという別の3DCADで作って、メッシュデータをインポートしましたが、Fusion360でモデルを作成すると、面の指定とかできて便利ですね。
NCプログラムの出力の設定はほぼデフォルトです。マシン名とかコメントはいくらか消しましたが。
(1001)
G90 G94
G17
G21
G28 G91 Z0
G90
(????2)
T2 M6
S6000 M3
G54
G0 X-54.443 Y-37.492
Z15
Z5
Z-9.4
G1 Z-9.7 F1000
X-54.441 Y-37.485 Z-9.767
X-54.435 Y-37.464 Z-9.83
X-54.427 Y-37.429 Z-9.887
X-54.415 Y-37.383 Z-9.935
X-54.401 Y-37.328 Z-9.97
X-54.385 Y-37.267 Z-9.992
X-54.368 Y-37.202 Z-10
G3 X-54.134 Y-35.569 I-7.419 J1.9
G1 Y-35.419
X-54.271 Y-34.71
X-54.343 Y-33.992
~
X-47.133 Y26.416
X-47.065 Y26.488
X-46.901 Y26.652
X-46.738 Y26.814
G3 X-47.043 Y27.307 I-0.219 J0.206
G1 X-47.107 Y27.287 Z-10.988
X-47.168 Y27.269 Z-10.965
X-47.222 Y27.253 Z-10.93
X-47.268 Y27.239 Z-10.882
X-47.302 Y27.229 Z-10.825
X-47.323 Y27.222 Z-10.762
X-47.33 Y27.22 Z-10.695
G0 Z15
G28 G91 Z0
G90
G28 G91 X0 Y0
G90
M5
M30
fusionは設定を細かくできるので、設定如何でG-codeも変わると思うんですけど、これまで見慣れないコマンドも出てきました。
G90の絶対値モード、G94は単位を毎分に指定するコマンドです。G17は加工する平面をXY面にしてするらしく、円弧移動(G2、G3)などと組み合わせで使用するらしい。G21も単位をmmに設定するコマンドで、G94と合わせて移動速度の単位をmm/minにします。
G28は機械原点に移動するコマンドで、その後のG91は相対置モードへの切り替えです。G28の機械原点回帰は、一旦、工具を安全な場所に逃がすために使われるコマンドで、軸と中間点を指定します。G28 Z0で、Z軸を原点に戻るように指定しており、0は一直線で移動する(中間点なし)ことを指定しています。G28の原点回帰は通常、G91相対置モードで使われるとのこと。G28 G91 Z0と書いてあるけど、検索してよく見るのはG91 G28 Z0で、工具の交換や切りくずの除去等のために、Z軸を退避させる一般的な方法らしい。それからその後、G90でまた絶対値モードに戻しています。
ところで、機械原点ってどこだろう?参考サイトによると、通常、X,Y,Zの各軸でプラス側の最大値に設定されるとのこと。つまり、機械の端っこを意味していると思われます。
GenmitsuCNCはユーザーが組み立てるので、正しい機械座標をGRBLが認識しようがない。仮に最初に正しい機械座標を設定する必要があるなら、さすがに組立マニュアルに書いてあるはず。多分ですけど、電源投入時の位置が0になるとか、そんな感じのような気がします。つまり、機械原点に戻れっというのは、作業領域を外れてぶつかってしまう気がしてなりません・・・。
コードの中で、なぜZ軸を退避させているかというとその後、T2 M6で工具の交換を命令しています。つまり、最初から工具をセットしておく場合は、退避や交換のコマンドは消しても良いですね。というか消さないと危険な気がする。
加工原点という言葉もよく出てきて、これはG-codeの中の原点。つまりは、G90 G0 X0 Y0 Z0で戻る場所です。加工原点からの距離で指定する座標系をワーク座標系と呼ぶらしい。M3でスピンドル回転させた後に続くG54というコードはワーク座標系を指定、つまりは加工原点を指定しています。G54~G59で6個の加工原点を設定できるみたいですけど、まぁ使わないですかね。
問題は加工原点をどうやって設定するかということです。オフラインコントローラーでG-codeを走らせた感触でいくと、開始時点の位置を加工原点としていたように思います。CNCソフト(CNCjs)で動かしたときに別の挙動をしたので、CNCソフトで加工原点を指定できるのかもしれません。
機械座標とワーク座標の関係
https://onefish-lure.com/2019/06/26/cnc-knowledge-kikaizahyou/
さて、G-codeの読み取りに戻って、あとは時にG3で円弧も駆使しながらも、基本G1を細かく指定して動いています。
今回、粗削り(負荷制御)から仕上げ(等高線)の移行する時も、特に工具の変更もなかったのでG0で位置移動しているだけでした。
最後にG28 G91 Z0でZ軸を退避させたのち、G28 G91 X0 Y0でX軸Y軸も機械原点に戻しているけど、こちらも削除したほうが良さそう。
M5でスピンドルを止めたのち、M30でプログラム終了です。
fusion360のコードで見慣れないコードは通常デフォルト設定されているため、他のソフトでは省略しているものが記述されているのがほとんどでした。
また、G28の機械原点への退避は、要注意なので、基本使わないほうが良さそうです。
なお、NCプログラムの設定で「G28 Safe retracts」のチェックを外せば出力されません。「Output M6」も必要ない場合は外した方が良さそうです。
余談ですけど、この画面、1366×768の解像度ではタスクバーを隠さないとOKボタンが押せないので、もう少し小さくしてほしい・・・。
工具交換や機械原点については、今後、実機で動作を確認しようかと思います。
そのほかは、共通のコードなので問題ないのではないかと印象でした。
実機で動かすのが楽しみです。続く!
<参考>
Gコード一覧表
https://alife-blog.com/technical-gcode-2/
NCプログラムの基礎知識 Gコード
https://nc-program.s-projects.net/g-code.html
最近GenmitsuCNCを購入し、FUSION360との組み合わせで切削による基板製作を始めた超初心者です。
切削→穴あけのための工具交換後の挙動が安定せず、退避時に加工途中のワークに干渉する(場合がある)現象に悩んでおりました。
本記事のおかげで、”G28 G91 Z0″が悪さをしていたことに気づくことができました。大変感謝しております。
自分用のメモみたいな記事(ばかり)ですが、お役に立ったようで良かったです。良い工作ライフを!