グラハムによるクレジット
GrblベースのルーターでのGコードとは何か、その動作原理、機能、読み取り、修正、そして必要に応じて簡単なプログラムを書く方法についてのガイドです。これはGコードの書き方のチュートリアルではなく、基本的な紹介を目的としています。
多くのチュートリアル、紹介、説明がありますが、それらは多くの異なるルーターをカバーする広範な説明が多く、Grblがサポートしていない多くのコマンドも含まれています。このガイドはGrblベースのシステムを使用するユーザーを対象としています。
V1.0からの変更点
- フォーマットが「ブログ」スタイルに改訂されました。流行していると言われています!
- 回転軸(4軸またはA軸)が追加されました。
- いくつかの小さな語句の修正と訂正。
- いくつかの大きな語句の修正、追加セクション、訂正、および明確化。これらのルーターで2年半遊んだ結果、どれだけ変わったかが驚きです!
Gコードとは
ルーターは、スピンドルの動きや速度などを制御するための一連のコマンドであるGコード(幾何学コード、1950年代後半に最初に開発されました、それは60年以上前のことです!)を理解します。これは複数の標準で定義されています(https://en.wikipedia.org/wiki/G-code)が、標準に厳密に従うメーカーはほとんどいません。CNC(コンピュータ数値制御)機械のメーカーはコアコンセプトを使用しましたが、独自の拡張と実装を開発しました。したがって、現在では特定のルーターに依存する一連のガイドラインのようなものです。英語の方言のように、すべての単語が同じ意味を持つわけではなく、すべての意味が同じ単語を使用するわけではありません。
Gコードは、ルーターに「少し左に行け、速くしろ、少し右に行け、下に行け、遅くしろ」などの指示を与える一連の命令です。最も良いアナロジーは、3次元エッチ・ア・スケッチのノブを回すときに人間の脳が手に送る指示のようなものです!
CAMソフトウェアが生成したツールパスをGコードに変換すると、それはルーターが理解するGコード方言に特化したポストプロセッサを通過します。一部のソフトウェアはポストプロセッサを選択できるように設計されており、他のソフトウェアは機械の設定に依存していますが、プロセスは同じです。間違ったポストプロセッサや機械を選択すると、Gコードがルーターに送信されたときに問題やエラーが発生します。
Grblとは何ですか?
Simen Svale Skogsrudが2009年に最初にGrblを書いたとき、彼はそれをコンピュータマウスの大きなバージョンにちなんで名付けました。それは小さくて便利で、設計されたこと以外はほとんど何もしません。彼に聞くと、それは「gerbil」と発音されます。
これはルーターマザーボード上で動作するソフトウェアで、基本的にGコードコマンドを受け取り、それらをモーターの動きや速度を制御する電気インパルスに変換します。Grblは無料で使用できるオープンソースソフトウェアです。
このガイドはGrblバージョン1.1に基づいていますが、このリリースには多くのバリアントがあります。執筆時点では、使用している可能性が高い圧倒的に一般的なバージョンです。特定のGrblバージョンがビルドされるときには、ビルダーが指定しなければならないオプションがいくつかあり、これがいくつかの機能を変更する可能性がありますが、ここでは圧倒的に一般的なものを含めています。
過去数年間で、Grblが動作するプラットフォームは変更されました。もともとはメモリが限られた8ビットArduinoプロセッサ用に設計されていましたが、現在では32ビットプロセッサで動作するバージョンが一般的です。しかし、基本的なGコードは同じですが、他の機能が追加されています。
Grblはビットを動かすためのコマンドや設定を変更するコマンドも理解します。また、進行状況や何が起こっているかを報告します。これらはGコードフレームワークの外側にありますが、このガイドでも説明されています。
ルーターは、通常PCやオフラインコントローラーなどのデバイスから、シリアル通信リンクを介してこれらのコマンドを1行またはブロックずつ受信します。注意:Grblベースのシステムでは、オフラインコントローラーは通常USB接続と同じシリアルポートを使用し、異なるケーブルとソケットを使用します。これが、オフラインコントローラーとUSB接続を同時にアクティブにできない理由の一つです。もう一つの理由は、信頼性のために、コマンドの別々のソースを同時に実行することができないということです。
注意:Grblはステッピングモーター、スピンドルモーター、レーザーなどを制御するための出力を使用するマイクロプロセッサ上で動作します。また、リミットスイッチ、ドアスイッチなどを接続するための入力も多数あります。ルーターメインボードがこれらの入力と出力を公開していないか、何も接続されていない場合、その機能の使用は無意味になります。明らかな例は、リミットスイッチ、安全ドアオープン入力、クーラント/エアアシスト制御出力の使用です。Grblがこれらをサポートしていても、接続されていなければ何も機能しません。
使用しているGrblのオプションは、ボードの製造元が選択したビルドオプションと使用しているバージョンに依存します。
Gコードファイル形式
これは非常にシンプルなテキストファイルで、任意のテキストエディタで表示および編集できます。ファイル拡張子は.nc、.txt、.tap、.gcなど様々ですが、ファイルの種類が異なるのは、ファイルを作成するソフトウェアによって設定され、読み取るソフトウェアによって認識されるためです。ファイルの内容は常に同じです。
しかし、(常に「しかし」があります!)テキストファイルには多くの標準があります。最も重要なのは各行の終わりがどのようにマークされるかです。異なるオペレーティングシステムは異なる形式のテキストファイルを使用します。最も一般的な形式はUnix/MacとWindows形式です。Unix/Macでは、LF文字(\n)だけです。Windowsでは、CRとLFの2文字のシーケンス(\r\n)です。
Grblは両方を認識しますが、Gコード送信機やオフラインコントローラーは特定の形式のみを認識する場合があります。
Gコードファイルの一般的な(ただし非常に広範な)規約は次のとおりです:
- ファイルが何をするか、どのように設定するかを説明するコメントヘッダー。(通常、使用するビットを調べる必要があるときには省略されます)
- 基本モードの設定。通常、ファイルの上部で一度設定されますが、いつでも変更できます。ただし、ファイルが途中でミリ単位からインチ単位に切り替わることはほとんどありません。
- 速度と送り速度を伴う移動
- プログラムの終了、単に停止するか、ビットをどこかに移動させるかのいずれかです。
Gコード行/ブロック形式
ファイル形式とは別に、各行はどのように見えるのでしょうか?行はGコードブロックとも呼ばれます。
行を処理するとき、まずGrblはすべてのスペースとタブ文字を無視し、すべての文字を大文字に変換し、空行を無視します。したがって、次のすべては同じように処理されます:
- G1 X4 Y7
- G1X4Y7
- G1X4 Y 7
- g 1x 4 Y7
コマンドとパラメータは通常、文字の後に数字が続きます。たとえば、Gは一般的なコマンドで、その後に数値が続きます。0は位置移動を示します。数字は新しいコマンド文字が見つかるまでのすべての桁から変換されるため、次のすべては同じように処理されます:
- G1
- G01
- G01.0
- G000001
- g 0 00 1
(スペースが削除され、文字が大文字に変換されることを覚えておいてください)
コマンドは、パラメータが共有されていないか、互いに競合しない限り、同じ行に指定できます。行に表示される順序は重要ではありません。明らかな競合は、切削移動(G1)と非切削移動(G0)を同じ行に配置することです。まるでドリル軍曹が「左足を前に出せ」と叫んでいるようです。したがって、次のすべては同じ効果を持ちます:
- G90G20G0X1
- G20 G90 G0 X1
- X1 G20 G90 G0
- G90 G0 G20 X1
コメント
Gコードには2種類のコメントがあります。‘;’は行の残りの部分がコメントであることを示します。
コメントは丸括弧内にも配置できます。コメントは‘(‘で始まり、最初に見つかる‘)’または行の終わりで終了します。
ネストされたコメント(例: (これはコメント(コメント)です))はサポートされていません。最初の‘)’がコメントを終了し、その後の‘and so is this)’は通常通り処理されますが、有効なGコードではないためエラーが発生します。しかし、‘G0 (positioning move) X3 (move 3mm)’のようなものは有効であり、‘G0 X3’として処理されます。
丸括弧内で‘;’コメントを使用して行の残りをコメントアウトしようとしないでください。それは元のコメントの一部として無視されます!
モーダルコマンドと非モーダルコマンド
モーダルコマンドはモードを設定します。モードは明示的に変更されるまで、すべての後続のコマンドに対して記憶されます。非モーダルコマンドは、それが含まれている行にのみ適用され、後続の行には記憶されません。
たとえば、Snnnはスピンドル速度をnnnに設定します。これはモーダルコマンドなので、変更されるまで記憶されます。
したがって:
G1 X1 Y1 S1000
G1 X2 Y2 S1000
そして
G1 X1 Y1 S1000
G1 X2 Y2
そして
S1000
G1 X1 Y1
G1 X2 Y2
は同じ動作をします。
移動タイプのG1、G0...もモーダルコマンドなので
G1 X1 Y1 S1000
X2 Y2
も2行目に対してG1モードを記憶します。
Grblが起動またはリセットされると、すべてのモードのデフォルトが設定され、読み込まれます。
永続的なコマンドとパラメータ
変更された一部の値は、オンボードEEPROMに保存されます。これはすべての$設定と同じです。これらの値は、リセットや電源サイクル後も持続します。これは便利ですが、何が起こっているのかを理解していないと煩わしいこともあります。
これはモーダルコマンドと値とは異なり、保存されますが、リセットや電源サイクル時にデフォルト値にリセットされます。
永続的な位置は、機械座標を使用して保存されるため、正確な機械原点を設定するためにホーミングサイクルが実行されたかどうかに依存します。コマンドが他の座標を使用する場合、それらは保存される前に機械座標に変換されます。これらは一貫した機械ゼロ位置でのみ意味を持ちます。つまり、ルーターにリミットスイッチがあり、ホーミングサイクルが実行されている場合です。リミットスイッチがない場合やホーミングを実行しない場合、結果はランダムになります。機械ゼロ位置は、ルーターが最後に電源を入れた時やリセットされた時のXYZ座標になります。
機械のホーム位置を変更すると、これには$23や$27などのホーミングパラメータの変更が含まれます。これらの保存された値は正しくなくなります。また、スピンドルモーターをレーザーに変更するなど、機械座標ゼロポイントには影響しませんが、機械ゼロ位置での「ビット」の実際の位置が変更されます。
次のコマンドパラメータは永続的です:
- G10 L2 絶対機械座標を使用して保存された原点オフセットを設定します。
- G10 L20 現在の位置からのオフセット