G-Code
3Dプリンタ(Ender 3)も CNC 3018 ProもG-codeというもので動いています。
3Dプリンタだと、
CAD(FreeCADやFusion360などなど):数値図面STL形式 ⇒ スライサー(Curaなど):G-Code ⇒ Arduino系制御ボードのファームウェア(Marlin・Octpas/Klipperなどなど)
で3Dプリンタが動く
CNCも
CAD(FreeCADやFusion360などなど):数値図面 ⇒ CAM(FreeCAD Path Fusion360CAMなどなど):G-Code ⇒ GRBLソフト(Candle, LazerGRBL, Lightburnなどなど)⇒ Arduino系制御ボードのファームウェア(GRBL 1.1などなど)
でレーザーエングレーバーや、CNCが動いています。
どちらもG-Codeという制御用のコマンド集で動いているんですが、時々、その中身をいじりたくなることもあり、G-Codeの中身のメモを作っておきます。
NISTのG-Code
G-Codeそのものは、NIST(National Institute of Standards and Technology:米国国立標準技術研究所)で標準化されているんですね。
https://reprap.org/wiki/G-code
G-Codeが、だいたい位置決めっぽいやつで、M-Codeがスピンドルやヘッドとかの動きをする感じですかね?
ファームウェアの実装がされているかどうかで、使えるG-Codeも違うようです。
3Dプリンタで、ベッドのレベリングを保存したりする時に使うM28も
Marlinは対応してるけど、Kilpperは??? grblも??? (バージョンで違うんだと思います)
ちょっと勉強がてらG-Codeを眺めるのに少し便利なスプレッドシート作って。。
こういうので、Curaで作ったやつとか。。FreeCADが吐き出すGcodeを眺めたりします。。
3D Printer (Firmware Marlin)
ここに対応しているG-Code・M-Codeの一覧があります。
https://marlinfw.org/meta/gcode/
ちなみに、ボードは、Creality純正 Ender-3 Silent Motherboard Kit 32 Bit / V4.2.7
ものすごい量のG-Code,M-Codeですね。
バージョンによって、対応しているものしていないものがありますね。
CNC3018Pro(Firmware grbl1.1)
https://github.com/gnea/grbl/wiki
ここにかなり詳しく掲載されています。
https://cnc-selfbuild.blogspot.com/2017/02/grbl11g.html
割りと少なめなんで、表にしておきました。
コード | 意味 |
G0, G1 | リニアモーション |
G2, G3 | 円弧とらせん状の動き |
G4 | 滞在する |
G10 L2, G10 L20 | 作業座標のオフセットを設定します |
G17, G18, G19 | 平面の選択 |
G20, G21 | 単位 |
G28, G30 | 事前定義された位置に移動します |
G28.1, G30.1 | 事前定義位置を設定します |
G38.2 | プロービング |
G38.3, G38.4, G38.5 | プロービング |
G40 | カッター半径補正モードオフ(のみ) |
G43.1, G49 | 動的ツール長オフセット |
G53 | 絶対座標を移動します |
G54, G55, G56, G57, G58, G59 | 作業座標系 |
G61 | パス制御モード |
G80 | モーションモードのキャンセル |
G90, G91 | 距離モード |
G91.1 | アークIJKの距離モード |
G92 | 座標オフセット |
G92.1 | 座標系オフセットをクリア |
G93, G94 | フィードレートモード |
M0, M2, M30 | プログラムの一時停止と終了 |
M3, M4, M5 | スピンドルコントロール |
M7* , M8, M9 | クーラントコントロール |
M56* | 駐車運動のオーバーライドコントロール |
僕のメインボードは、
GRBL 1.1J と GRBL 1.1 f って何がちがうんでしょ??
Laser mode $32=1 が効くか効かないかみたいですね。。
いろんなソフト・ファーム・制御ボードがあるので、ちょっと忘備録として
コメントを残していただけるとありがたいです