先日購入したSainSmart Genmitsu CNC Router 3018-PROをG-codeで動かすためのメモです。
このCNCは、Arduino上で動作するオープンソースのCNC制御のためのファームウェアGRBLで動いているCNCのため、他のGRBL製のCNCでも同様の事が言えるはず。
CAMソフトとしては、Carbide Create、DeskProto、fusion360を使ってG-codeを出力し、それぞれの動作確認をしようと思っていますが、今回はテストコードのお勉強です。
テストコード
本体に同封されているテストコードを見てみます。
1sainsmart.nc、iphoneF200.nc、wheel.nc、この3つは2Dで、1sainsmart_relief.nc、dragon.ncは3Dです。
G90 G1 Z5 F500 G1 X0 Y0 M03 S1000 G1 X9.95 Y9.1 G1 Z-0.2 F200 G1 X9.8 Y9.1 G1 X9.6 Y9.3 ~ G1 X2.127 Y2.4 G1 X1.688 Y2.405 G1 Z5 F500 M5
最初のG90は絶対位置で動作するモードにするコマンドです。基本デフォルトはこちらのモードなはず。
G1は直線移動のコマンド。G1 Z5 F500で、Z軸が5mmの所まで、移動速度500mm/minで移動するという事。移動速度はfeed rateで送り速度と呼ばれるようです。ちなみにz軸は上がプラスなので上がっている。おそらく速度は保存されて、以降指定しない場合は、500mm/minになる(はず)。
M03は、スピンドルを右回りでオンにする命令。回転速度をS1000で指定していて、1000rpmで回転させています。
G1 Z-0.2 F200で、ホームポジションを材料高さにしておけば、厚さ0.2mmの溝を送り速度200mm/minで削り始めます。
削り終われば5mmのとこまで上げて、M5でスピンドルを停止。これで完了。
文字なのでてっきり曲線で動いてるかと思っていたのですが、細かい直線で動いていたのか。
オフラインコントローラーで動作させた時は、最初にいた位置が原点(x0,y0)になりました。
PCからソフト(CNCjs)で動かした時は、x軸に動き始めたので、原点の設定があるのかも。
G90 G1Z3F200 M03 S1000 G0 X2.4349 Y10.0865 G1Z-0.2 G02 X3.0232 Y9.8437 I0. J-0.8343 G02 X3.2659 Y9.26 I-0.5806 J-0.5838 G02 X3.023 Y8.6756 I-0.8243 J-0. ~ G02 X36.5535 Y4.7002 I-5.8028 J-1.5232 G1 X36.5535 Y4.6998 G1Z3 G0 X0.000 Y0.000 M05 M02
全197行。文字ごとに改行があってわかりやすい。
最初の方は基本的に前と同じ。G1Z3F200とかスペース無くてもいいんですね。文字コードの相性等でエディタが読み込めてないだけかもしれませんが。ちなみにエディタはNotepad++で開きました。
ただこちらは掘り進むときは、G02で円弧も使っています。G2は時計回りの円弧、G3は反時計回りの円弧です。XとYは移動先の座標、IとJは中心の座標です。X-Z面のように、Z軸を使う場合はKを使います。
M05でスピンドルを停止した後、M02はプログラム終了ってことらしい。以降の処理が行われなくなるとのこと。最後に書くなら無くてもいい気がするけど、マシンによっては手動モードに切り替わるとか良いことがあるのかもしれません。
M3S1000
G0X3.140Y27.247Z1.000F10000
G1Z-2.000F10000
G1X3.342Y27.002F10000
X3.576Y26.776
X3.839Y26.577
~
X0.047Y25.000
G0Z1.000F10000
G0X0.000Y0.000F10000
M5
全673行。こちらは移動の一部にG0を使っています。G0とG1はどちらも直線移動ですが、G0は位置決めのための比較的早い移動、G1はミーリングのための速度制御した移動です。
G1での移動の書き方がこれまでのと違っていて、一度G1で直線指示したら後は連続でXとYを指定して動くみたい。こんな書き方も出来るんですね。
2mmの深さまで掘ってますが、送り速度はこれまでより速く10000mm/minです。
最後は原点に戻ってきて、スピンドルを止めています。
ここからは3D的な削り出し。どちらもX軸に並行移動しながら高さを変えて削り出していく、仕上げとして一般的なツールパスです。
ちなみにプレビューはCAMoticsというオープンソースのシミュレーターの画像です。G-codeでどんな形が出来るか確認できるので便利です。でも結構CPUのパワー入りますね。
T1M6 G0Z5.000 G0X0.000Y0.000S1000M3 G0X-19.971Y-6.449Z5.000 G1Z-2.000F12000.0 G1X-19.914 X20.027 Y-6.419 Y-6.389 X19.971 X-19.971 ~ Y6.418 Y6.448 X19.971 X-19.971 G0Z5.000 G0X0.000Y0.000 G0Z5.000 G0X0Y0 M30
全21037行。桁違いです。
T1M6という見慣れないコードから始まっています。T1はエンドミル等のツール(工具)の選択で、M6は取替えアクションのようです。交換機能がないCNCでは、工具の交換まで待つ状態になるらしい。再開(Resume)を指示すると動き出すとのことだけど、オフラインコントローラーだとどうなるんだろう。そもそも本当に待機するのか、検証が必要ですね。
例だとM6 T1と書くとのことですが、逆でもいいんですかね?その後のS1000M3の部分も逆だし。
プログラムの引数的な考えならば、M6T1、M3S1000ですけど、順次命令されるとすれば、工具を指定してから交換の指示T1M6、回転速度を指定してから回転を指示S1000M3の方が、合っているようにも思うし、どちらが行儀のよい記法なんでしょう?
その後、直線移動で削りにいって、送り速度は12000mm/minと速い。
最後はM30とは?こちらもプログラム終了って事らしい。M2との違いはなんなんだろう。。。
F300 G0Z7.000 G0X0.000Y0.000S1000M3 G0X-20.168Y-29.999Z7.000 G1Z-2.995 G1X-20.147 X20.168 Y-29.979 Y-29.939 X20.147 ~ Y29.958 Y29.998 X-20.147 X20.168 G0Z7.000 G0X0.000Y0.000 G0Z7.000 G0X0Y0 M30 M5
全180814行。
最初のF300だけで送り時間決めることもできるんですかね。送り時間を試行錯誤するときなんかは便利な書き方ですね。
最後、M30でプログラム終了した後にM5でスピンドルの停止?プログラム終了した後のコードも実行されるのか。M2では以降の処理が行われないとの説明だったような、、、その違いなのでしょうか?色々と検証が必要ですね。
次は、各種CAMソフトで出力したG-codeを見てみることにします。続く!
参考URL
CNCを知ろう:G-Codeの読み方
NCプログラムの基礎知識
https://nc-program.s-projects.net/m-code.html
G-code/ja – RepRap
https://reprap.org/wiki/G-code/ja#G2_.26_G3:_.E5.86.86.E5.BC.A7.E8.A3.9C.E9.96.93
https://www.facebook.com/groups/1961656704162824
ブログを紹介させていただきました