【grbl】Gコード参考資料

Gコードはメーカーによって方言(フォーマットやコマンドの意味が異なる)があります.
grblで使えるGコードはLinuxCNCのGコードのサブセットとなっています.しかしいくつかLinuxCNCとは異なるGコードも含まれています.

当トピックにてGrbl1.1にて使えるGコードの内容を説明しています.

詳細なGコードの意味・使い方を調べる際は以下のリンクが参考になります.

英語

日本語

ソースコード
この辺を読むとgrblのGコードの処理が示されています.

またCNC xPRO v5ではgrblをベースにしたgrbl-esp32というファームウェアを使用しています。
エラーやパラメータが一部拡張されています。
https://github.com/bdring/Grbl_Esp32

「いいね!」 1

grbl1.1で使えるGコード一覧(https://github.com/gnea/grbl/wiki より)

Gコード 概要
G0, G1 直線移動
G2, G3 円弧・ヘリカル
G4 ドゥエル(タイマー)
G10 L2, G10 L20 ワーク座標系設定
G17, G18, G19 平面指定
G20, G21 単位指定(mm or inch)
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 円弧中心指定モード変更
G92 座標系オフセット
G92.1 座標系オフセットをリセット
G93, G94 送り速度モード(インバースタイム送り or 毎分送り)
M0, M2, M30 プログラム停止,終了
M3, M4, M5 スピンドルコントロール
M7* , M8, M9 クーラントコントロール
M56* パーキングモーション
T0~T255 工具交換
(〇〇〇〇) コメント
;〇〇〇〇 コメント

*はデフォルトで無効なコマンド.

Grblのレーザーモード($32)を有効にしているとM3M4の内容が変わります.

G0

位置決め・早送り

フォーマット

G0 X◯◯ Y◯◯ Z◯◯
パラメータ 説明
X 目的地のX座標(省略可)
Y 目的地のY座標(省略可)
Z 目的地のZ座標(省略可)

説明

位置決め用の送りです.
現在地と目的地を直線で繋ぐように動くとは限らないので切削時に用いる動作指令ではありません.

送り速度は指定できません.
GrblではG0での送り速度はパラメーターの$110$111$112に従います.

G1

直線補間

フォーマット

G1 X◯◯ Y◯◯ Z◯◯ F◯◯
パラメータ 説明
X 目的地のX座標(省略可)
Y 目的地のY座標(省略可)
Z 目的地のZ座標(省略可)
F 目的地までの送り速度(同じ場合2回目以降省略可)

説明

加工用の送りです.
現在地と目的地を直線で繋ぐように動きます.

GrblではF(送り速度)を一度も指定しないとerror:22(Undefined feedrate)となります.

G2

円弧補間(時計回り)

フォーマット

円弧中心指定のフォーマット
  • G17(XY平面)指定時(デフォルト)
G2 X◯◯ Y◯◯ Z◯◯ I◯◯ J◯◯ F◯◯
  • G18(XZ平面)指定時
G2 X◯◯ Y◯◯ Z◯◯ I◯◯ K◯◯ F◯◯
  • G19(YZ平面)指定時
G2 X◯◯ Y◯◯ Z◯◯ J◯◯ K◯◯ F◯◯
円弧半径指定のフォーマット
G2 X◯◯ Y◯◯ Z◯◯ R◯◯ F◯◯
パラメータ 説明
X 目的地のX座標
Y 目的地のY座標
Z 目的地のZ座標
I 現在地からの円弧中心までのX相対座標値
J 現在地からの円弧中心までのY相対座標値
K 現在地からの円弧中心までのZ相対座標値
R 円弧半径
F 目的地までの送り速度(同じ場合2回目以降省略可)

説明

加工用の送りです.
現在地と目的地を円弧で繋ぐように動きます.
指定平面以外の座標はヘリカルの動作です.

予めG17(XY平面),G18(XZ平面),G19(YZ平面)の指定をする必要があります.
指定しない場合G17(XY平面)が有効です.

Grblでは無効な位置を指定するとerror:33がでます.

G3

円弧補間(反時計回り)

回転方向が逆になるだけでG2と同じです.

G4

ドゥエル(タイマー・一時停止)

フォーマット

G4 P◯◯
パラメータ 説明
P 一時停止する時間(秒)

説明

軸の移動動作を一時停止します.
スピンドルやクーラントは停止しません.

GrblではPを負の値を指定するとerror:4(Value < 0)となります.
またGrblではPは秒数であり,ミリ秒指定ではありません.

G4 P2.5

2.5秒停止します.

G10

ワーク座標系(作業原点設定)

フォーマット

機械座標上にて作業原点位置を指定(L2)
G10 L2 P◯◯ X◯◯ Y◯◯ Z◯◯
現在座標をワーク座標系上の座標値にて指定(L20)
G10 L20 P◯◯ X◯◯ Y◯◯ Z◯◯
パラメータ 説明
X X座標(省略可)
Y Y座標(省略可)
Z Z座標(省略可)
P 座標系番号
P番号 座標系
0 現在使っている座標系
1 座標系1(G54)
2 座標系2(G55)
3 座標系3(G56)
4 座標系4(G57)
5 座標系5(G58)
6 座標系6(G59)

説明

ワーク座標系(作業原点)を設定します.

GrblではデフォルトでG54の座標系が使われます.
GrblではG10はL2とL20のみ有効です.

ワーク座標系は$#にて以下のように確認できます.

[G54:X座標,Y座標,Z座標]
[G55:X座標,Y座標,Z座標]
...
[G59:X座標,Y座標,Z座標]

デフォルトではどの座標系も(0,0,0)ですが,一度ワーク座標系をセットするとEEPROMに保存されるため,電源を切っても保存されます.
リセットする場合は機械原点をワーク座標系とするよう指定する必要があります.

G10 L2 P0 X0 Y0 Z0; 今使っているワーク座標系の原点を機械原点とする

G17

XY平面指定

フォーマット

G17

説明

XY平面を指定します.

モーダルな指令なので一度指令を送信した後は変更するまで有効です.

Grblでは電源投入時のデフォルトです.


G18

YZ平面指定

フォーマット

G18

説明

YZ平面を指定します.

モーダルな指令なので一度指令を送信した後は変更するまで有効です.


G19

YZ平面指定

フォーマット

G19

説明

YZ平面を指定します.

モーダルな指令なので一度指令を送信した後は変更するまで有効です.

G20

単位指定(inch;インチ)

フォーマット

G20

説明

Gコードの座標指定をインチで指定したい場合に使用します.
モーダルな指令なので一度指令を送信した後は変更するまで有効です.


G21

単位指定(mm;ミリメートル)

フォーマット

G21

説明

Gコードの座標指定をミリメートルで指定したい場合に使用します.

Grblではデフォルトで有効です.
モーダルな指令なので一度指令を送信した後は変更するまで有効です.

G28

リファレンス点復帰

フォーマット

G28 X◯◯ Y◯◯ Z◯◯
パラメータ 説明
X 経由するX座標(省略可)
Y 経由するY座標(省略可)
Z 経由するZ座標(省略可)

説明

G28.1にて設定された座標に移動します.
その際にG28で示したXYZの座標を通ってからG28.1で指定された点へ移動します.

設定されていない場合は原点に機械原点に復帰します.

Grblでは設定されたリファレンス点は$#のコマンドにて確認可能です


G30

リファレンス点復帰

フォーマット

G30 X◯◯ Y◯◯ Z◯◯
パラメータ 説明
X 経由するX座標(省略可)
Y 経由するY座標(省略可)
Z 経由するZ座標(省略可)

説明

G30.1にて設定された座標に移動します.
G28と同じです.

G28.1

リファレンス点設定

フォーマット

G28.1 X◯◯ Y◯◯ Z◯◯
パラメータ 説明
X X座標(省略可)
Y Y座標(省略可)
Z Z座標(省略可)

説明

G28にて移動する座標を設定します.
指定する座標値はワーク座標系の座標値です.
指令送信後は指定した位置へ移動します.

座標値を省略した場合,現在座標がG28.1にセットされます.

Grblでは設定されたリファレンス点は$#のコマンドにて確認可能です


G30.1

リファレンス点設定

フォーマット

G30.1 X◯◯ Y◯◯ Z◯◯
パラメータ 説明
X X座標(省略可)
Y Y座標(省略可)
Z Z座標(省略可)

説明

G30にて指定した座標に移動します.
G28.1と同じです.

G38.2

プロービング.(接触すると停止,失敗するとアラーム版)

フォーマット

G38.2 X◯◯ Y◯◯ Z◯◯ F◯◯
パラメータ 説明
X X座標(省略可)
Y Y座標(省略可)
Z Z座標(省略可)
F 送り速度

説明

プローブを当てにいくときの指令です.失敗(接触しなかった or 最初から接触している)場合はアラーム(Alarm:4 or Alarm:5 Probe fail)が発生します.(ロックされアンロックするまで操作できなくなります)

指定する座標値はワーク座標系の座標値です.プローブの向かう方向を指定します.
工具を相対座標にて設定する場合は以下のようにG90G91を用います.

G91
G38.2 Z-1 F10;現在位置からzに-1mm移動する
G90

プロービングに成功すると以下のフォーマットでメッセージが返されます.

[PRB:停止位置のX座標,停止位置のY座標,停止位置のZ座標:成功(1)or失敗(0)]

また$#コマンドにて最後のプロービングの結果を確認できます.


G38.3

プロービング.(接触すると停止,失敗してもアラーム発生しない版)

フォーマット

G38.3 X◯◯ Y◯◯ Z◯◯ F◯◯
パラメータ 説明
X X座標(省略可)
Y Y座標(省略可)
Z Z座標(省略可)
F 送り速度

説明

G38.2と同じですが,失敗してもアラームは発生しません.

G38.4

プロービング.(接触した状態から接触が失われると停止,失敗するとアラーム版)

フォーマット

G38.4 X◯◯ Y◯◯ Z◯◯ F◯◯
パラメータ 説明
X X座標(省略可)
Y Y座標(省略可)
Z Z座標(省略可)
F 送り速度

説明

プローブを離す際に検知したい場合の指令です.
失敗した場合はアラームが発生します.(ロックされアンロックするまで操作できなくなります)

指定する座標値はワーク座標系の座標値です.プローブの離れる方向の座標を指定します.
工具を相対座標にて設定する場合は以下のようにG90G91を用います.

G91
G38.2 Z1 F10;現在位置からzに+1mm移動する
G90

プロービングに成功すると以下のフォーマットでメッセージが返されます.

[PRB:停止位置のX座標,停止位置のY座標,停止位置のZ座標:成功(1)or失敗(0)]

また$#コマンドにて最後のプロービングの結果を確認できます.


G38.5

プロービング.(接触が失われると停止,失敗してもアラーム発生しない版)

フォーマット

G38.5 X◯◯ Y◯◯ Z◯◯ F◯◯
パラメータ 説明
X X座標(省略可)
Y Y座標(省略可)
Z Z座標(省略可)
F 送り速度

説明

G38.4と同じですが,失敗してもアラームは発生しません.

G40

工具径補正キャンセル

フォーマット

G40

説明

Grblでは常に工具径補正がオフになっているため必要ありません.
(生成されるNCプログラムの最初にG40が書かれていることが多いためサポートしているようです)

G43.1

動的工具長補正

フォーマット

G43.1 Z◯◯
パラメータ 説明
Z Z座標オフセット量

説明

この指令以後は指定量分,座標をオフセットして動作します.
工具が摩耗するなど工具の長さが変更される場合に,NCプログラムを変更せず座標を変更する際に用います.

Grblでは$#のコマンドを入力すると以下のように補正量を確認できます.

[TLO:◯◯]

またXやYの値を指定するとerror:37(Invalid gcode)が発生します.

G0 Z2; Z2へ移動
G43.1 Z0.5; 0.5mmオフセット
G0 Z3; このとき機械座標系ではZ3.5となっています.

G49

工具長補正キャンセル

フォーマット

G49

説明

G43.1の工具長補正をキャンセルします.

G53

機械座標系指定

フォーマット

G53 G0 or G1 X◯◯ Y◯◯ Z◯◯

説明

ワンショットのGコードです.(使うたびに指令する必要があります。)
直後のG0G1を機械座標系(機械原点を加工原点としたワーク座標系)で動かします.

G53 G0 X10 Y20; ワーク座標系に関係なく機械座標系のX10 Y20へ移動
G0 X20 Y20; ワーク座標系のX20 Y20へ移動
G53 
G0 X10 Y20; 別の行(ブロック)となるとG53の影響範囲から抜けるためワーク座標系のX10 Y20へ移動してしまう

G54

座標系1指定

フォーマット

G54

説明

使っている座標系を座標系1へ切り替えます.
モーダルな指令なので一度指令を送信した後は変更するまで有効です.

Grblでは電源投入時のデフォルトです.


G55

座標系2指定

フォーマット

G55

説明

使っている座標系を座標系2へ切り替えます.


G56

座標系3指定

フォーマット

G56

説明

使っている座標系を座標系3へ切り替えます.


G57

座標系4指定

フォーマット

G57

説明

使っている座標系を座標系4へ切り替えます.


G58

座標系5指定

フォーマット

G58

説明

使っている座標系を座標系5へ切り替えます.


G59

座標系6指定

フォーマット

G59

説明

使っている座標系を座標系6へ切り替えます.

G61

イグザクトパスモード

フォーマット

G61

説明

Grblでは常にイグザクトパスモードとなっているため,呼び出す必要はありません.