SainSmart CNC(GRBL)用G-codeの作成メモ

先日購入した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です。

 


 

1sainsmart.nc

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

全458行。これは実際に動作確認しています。

最初の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軸に動き始めたので、原点の設定があるのかも。

 

iphoneF200.nc

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はプログラム終了ってことらしい。以降の処理が行われなくなるとのこと。最後に書くなら無くてもいい気がするけど、マシンによっては手動モードに切り替わるとか良いことがあるのかもしれません。

 

wheel.nc

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のパワー入りますね。

1sainsmart_relief.nc

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との違いはなんなんだろう。。。

 

dragon.nc

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の読み方

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

Updated: 2020年4月4日 — 10:36

コメントを残す

メールアドレスが公開されることはありません。