G-code/ja

From RepRap
Revision as of 15:35, 17 December 2019 by NewSpeak (talk | contribs) (Translate M40 command)
Jump to: navigation, search

このページは現在再翻訳中です。非常にデータが古いため、ベーシックなコード以外は 英語版 を確認するようにして下さい。

このページでは、RepRap の様々なファームウェアで使用されているGコードと、その働きを説明します。主となる目的は FFF 方式を使った積層造形です。プリントヘッドの移動に使われるコードは NIST により RS274NGC Gコード スタンダード に準拠しています。したがって、RepRapファームウェアはCNCミリングマシンなどの用途に対しても、非常に有用なものとなっています。Wikipedia の Gコードの記事 (英語) もご参照ください。

3Dプリンターへ使うGコードの準備方法には、いくつかの異なる方法があります。1つは Slic3rSkeinforgeCura などの スライスプログラムを使う方法です。これらのプログラムでは、インポートされたCADモデルをレイヤー状にスライスし、それぞれのレイヤーで必要なGコードを出力します。スライサープログラムは、3Dモデルをプリント部品へと変えるのにもっとも簡単な方法ですが、柔軟性に問題を抱えることもあります。Gコードを生成するほかの方法としては、Mecode のような低級ライブラリを使う方法があります。これらのライブラリーでは、ツールパスによって精密なコントロールを行うため、通常のスライスプログラムには適さない、複雑なプリントを行うときには非常に便利です。また、当然ながら、Gコードを自分で書いて3Dプリンターを制御することもできます。この方法は、プリンターの調整時などに、数本の線だけを出力したい、などというときには最も良い手段と言えるでしょう。

世界中には、たくさんの異なるファームウェアが存在します。その開発者たちは議論を交わしたり、誰かがしたことを調べずに新しい機能を実装してしまう傾向にあるため、長年にわたって開発されてきた3Dプリンター固有のコードには、たくさんの意味が持たされてしまっていることがあります。このページは、RepRapのマスターページです。このページの情報にしたがって全てのファームウェアがつくられていれば、同じコードを2つの異なる目的に使われることはなくなるはずです。したがって、新しい機能を開発するのであれば、まずここにコードを追加すればよいのです。とにかく、新しいコードは、このページに追加してから、実装してください。

ただ、残念なことに、人間の本質は変わりません。ベストと考えられる手順が、必ずしも従われるとは言い切れません。そのため、複数の機能がもたされるコードがいくつか出現してしまうことでしょう。もしそのようなことがあっても、このページに既に記載があり、その後から追加されたコードは、基本的には廃止されるか、変更される必要がある、というルールがあることを覚えておいてください。もちろん、後のインスタンスが優先される、技術的に素晴らしい理由があるという際には例外となります。実装日よりも、ここに追加された日の方が重要であることを覚えておいてください。

Contents

はじめに

通常、RepRapマシンに送信されるGコードは以下のようなものです。

 N3 T0*57
 N4 G92 E0*67
 N5 G28*22
 N6 G1 F1500.0*82
 N7 G1 X2.0 Y2.0 F3000.0*85
 N8 G1 X3.0 Y3.0*33

Gコードは、SDカード上のファイルにも保存することができます。RepRapのGコードを含んでいるファイルには、通常、.g.gco.gcodeなどの拡張子が与えられています。BFB/RapManへのファイルには、.bfbが使われています。ファイルに保存されているものや、スライサーによって生成されたGコードは、以下のようなものとなっているでしょう。

G92 E0
G28
G1 F1500
G1 X2.0 Y2.0 F3000
G1 X3.0 Y3.0

これらの記号や数字、その他のコードの意味は、以下にて説明されています。

スライサーソフトウェアは、Gコードファイルの最初と最後の行に、プリントの前後に行う特殊な操作を行うためのコードを追加します。(オプションとされているものもあります。) 特殊な操作の例としては、オートレベリング、ヒートベッドやホットエンドの加熱/冷却、ウージング(oozing) によるフィラメント切れを防ぐためのノズルの清掃機能、スタートアップ動作、システム電源の ON/OFF、部品の排出機能などが挙げられます。より詳細な情報は、Start GCode routinesEnd GCode routines ページをご覧ください。

特定のGコードが、どのファームウェアで実装されているのかを確認しやすくするため、コマンドの説明欄には以下のような表が設けられています。

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
Yes Automatic No Partial Experimental Deprecated ??? ??? ??? ??? Yes Partial

それぞれのフィールドの意味は以下の通りです。

Yes

全ての機能をサポートしていることを表します。

Partial または Experimental

部分的に機能をサポートしていることを表します。
この場合には、ファームウェアのソースコードをそれぞれのブランチから確認したり、メインボードに設定されているスイッチを切り替える必要があったりします。
Automatic
この機能はファームウェアが自動的に処理することを表しています。したがって、このコマンドを送信する必要はありません。
例えば、Teacupファームウェアでの電源の on/off(M80/M81) に関するGコードがこれに相当します。
???
ファームウェアがこのGコードをサポートしているかが不明なことを表します。
もしあなたがプリンターを販売する予定があるのであれば、生産する前にこの機能をテストする必要があります。

No

ファームウェアがこの機能をサポートしていないことを表します。
Deprecated
ファームウェアがこのGコードを廃止したことを表します。
ファームウェアの作者は、Gコードを廃止する際には、このページ上のGコードに廃止することを記載し、(必要であるならば) 回避策を提示してください。また、そのコードがサポートされていた最後のバージョンも必ず記載してください。

フィールド

RepRap の Gコードはスペースや改行などで区切られる、フィールドの数々によって構成されています。これらのフィールドは、コマンドやパラメータ、その他の特別な目的として、ファームウェアによって識別されます。フィールドは、直後に数字が続く1文字の特定の文字や、数字を持たない1文字(フラグ) によって構成されます。フィールドの文字にはそれぞれ意味があり、それらはこの節の末尾にあるリストから確認できます。数字は、状況に応じて 整数 (例: 128) または 小数 (例: 12.42) で指定されます。例えば、X軸座標には 整数 である X175 や、少数である X17.62 などを割り当てることができます。しかし、エクストルーダー番号などに 2.76 などといった小数が使われないことは明らかです。このページでは、フィールドの数字は nnn というプレースホルダーによって表されます。

RepRapFirmwareでは、複数の数値をパラメーターとして割り当てることのできるコマンドがいくつか存在します。この場合、数値の区切りとしてコロンを使用します。通常、これはマルチエクストルーダー環境において、エクストルーダーを指定するために使用されます。それぞれのエクストルーダーには特定の数値が与えられており、この値を指定せずに1つの数値のみを入力すると、そのパラメーターにしたがって全てのエクストルーダーが動作します。

文字 意味
Gnnn ある点に移動させるなどの、Gコードにおけるスタンダードなコマンドです。
Mnnn 冷却ファンを起動するなどの、RepRap が独自に定義したコマンドです。
Tnnn nnnの番号のツールを選択します。RepRapでは通常、この"ツール"は一つまたは複数のエクストルーダーに取り付けられたノズルを意味します。
Snnn パラメータを指定するコマンドです。秒で指定される時間や、温度、モーターにかける電圧などに使われています。
Pnnn パラメータを指定するコマンドです。ミリ秒で指定される時間や、PIDチューニング における比例定数 (Kp) などに使われています。
Xnnn X軸座標コマンドです。通常は移動先を指定するために使われます。数値は整数でも少数でも構いません。
Ynnn Y軸座標コマンドです。通常は移動先を指定するために使われます。数値は整数でも少数でも構いません。
Znnn Z軸座標コマンドです。通常は移動先を指定するために使われます。数値は整数でも少数でも構いません。
U,V,W さらなる軸に向けての座標コマンドです。(RepRapFirmware)
Innn パラメータを指定するコマンドです。円弧移動時の X-オフセットや、PIDチューニング における時間積分の誤差の変化率 (Ki) などに使われています。
Jnnn パラメータを指定するコマンドです。円弧移動時の Y-オフセットなどに使われています。
Dnnn パラメータを指定するコマンドです。PIDチューニング における直径や、導関数 (Kd) などに使われています。
Hnnn パラメータを指定するコマンドです。PIDチューニング において、ヒーター番号として使われています。
Fnnn 1分間あたりのフィードレートです。mmで指定します。(プリントヘッドの移動速度)。
Rnnn パラメータを指定するコマンドです。温度を指定するために使用されています。
Qnnn パラメータを指定するコマンドです。現在は使用されていません。
Ennn 押し出されるフィラメントの長さ (mm) です。X,Y,Zと同様に指定しますが、消費されるフィラメントの長さが指定されます。
Nnnn ライン番号です。通信エラーが起きたときに再送信を要求するために使われます。
*nnn チェックサムです。通信エラーをチェックするために使用されます。

大文字/小文字の区別

NISTによるオリジナルのGコードスタンダードでは、Gコードを扱うプログラムに対し、大文字/小文字の区別をつけないことを要求しています。(コメント内の文字は除く) しかしながら、全ての3Dプリンターのファームウェアがこれに準拠しているわけではなく、大文字で書かれたコマンド文や変数のみしか認識しないものもあります。

大文字/小文字の区別を要求しないことで知られるファームウェア
RepRapFirmware version 1.19 とそれ以降 (引用文を除く)
大文字/小文字の区別を要求することで知られるファームウェア
RepRapFirmware version 1.18 とそれ以前

引用文

RepRapFirmwareでは、いくつかのコマンドが 引用文 をサポートしています。これを使うと、スペースやセミコロンなどの通常は使用することのできない文字を、ファイル名やWiFiパスワードなどに変数として使用することができます。引用文は、ダブルクオーテーション " によって区切られます。引用文中にダブルクオーテーションを使う必要がある場合には、ダブルクオーテーションを二度入力してください。

使用例

ここでは、MYROUTER というSSIDと、ABCxyz;" 123 というパスワードをWiFiネットワークリストに追加する例を示します。

この場合には、以下のようなコマンドを入力します。

M587 S"MYROUTER" P"ABCxyz;"" 123"

もし小文字を使えないファームウェアを使っている場合には、以下のコマンドを入力します。

M587 S"MYROUTER" P"ABC'X'Y'Z;"" 123"

コメント

Gコードのコメントは、セミコロン (;) から始まり、改行コードで終わります。

N3 T0*57 ; これがコメントです
N4 G92 E0*67
; これもまたコメントとして使えます
N5 G28*22

いくつかのファームウェアでは、CNC Gコードスタンダードに準拠し、コメントを括弧で区切っていることがあります。この場合には、括弧は同じ行内に収まっている必要があります。

(軸のホーミング)
G28 (ホーミングされる軸) X Y

RepRapプリンターでは、コメントやスペースは無視されます。ただし、これらはプリンターに送られる前にホストコンピューターによって取り除かれる方がよいでしょう。これにより、通信量を削減することができます。

特別なフィールド

N: 行番号

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
Yes Yes Yes Yes ??? ??? Yes Yes ??? ??? Yes Yes
N123

行番号が存在する場合、それは行の最初のフィールドでなければなりません。SDカードに保存されるGコードファイルでは、通常行番号は省略されています。

チェック機能がサポートされている場合、RepRap ファームウェアは、行番号が1行につき1ずつ増えることを予測します。この通りにならなかった場合には、エラーとしてフラグが立てられます。しかし、M110コマンド (以下を参照) を使うことでカウントをリセットすることができます。

Machinekitにおいては、Nを使用することには意味がなく、サポートはされていますが、推奨されません。

*: チェックサム

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
Yes Yes Yes Yes ??? ??? Yes ??? ??? ??? No Yes
*71

チェックサムが存在する場合、それは行の最後のフィールドでなければなりません。ただし、コメント文よりは先である必要があります。SDカードに保存されるGコードファイルでは、通常チェックサムは省略されています。

ファームウェアはチェックサムとローカルで計算された値を比較します。これらが異なる場合には、その行を再送信するよう要求します。

チェック機能

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
Yes Yes Yes Yes Yes ??? Yes ??? ??? ??? No Yes
N123 [...ここにGコードが書かれます...] *71

RepRapファームウェアは行番号とチェックサムをチェックします。 これらを指定せずにコマンドを送ってもRepRapは動作しますが、チェックは行われません。これらは両方とも指定されているか、指定されていないかのどちらかである必要があります。 もし片方のみが存在している場合には、エラーとなります。

Gコード文字列 "cmd" (行番号も含む) のチェックサム "cs" は、以下のように、それぞれのバイトで排他的論理和計算が行われます。* や NULL文字 と一致すると、処理が終了します。

int cs = 0;
for(i = 0; cmd[i] != '*' && cmd[i] != NULL; i++)
   cs = cs ^ cmd[i];
cs &= 0xff;  // 防御的プログラミング

そして計算によって求められた値は、10進数の整数として、コマンドの* の後に追加されます。

バッファリング

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
Yes Yes ??? Yes ??? ??? Yes ??? ??? Yes Yes Yes

バッファリングがサポートされている場合には、RepRapファームウェアは、いくつかのコマンドを内部リングバッファに保存してから実行します。これはつまり、コマンドが確認され、次のコマンドが送信されるまでの間に (明確な) 遅延がなくなることを意味します。また、線分シーケンスが、それぞれの間を遅延なくプロットされるようになることを意味しています。バッファリングコマンドが受信されるとすぐに、これらは確認作業が行われ、ローカルに格納されます。ローカルバッファーが全て埋まってしまった場合、次のバッファーが利用できるストレージスペースができるまで、確認作業が遅延されます。これは フロー制御 の仕組みと同じです。

通常、次のような移動コマンドはバッファリングされます: G0-G3G28-G32 Teacup Firmware では、さらに他の設定コマンドもバッファリングします: G20, G21, G90, G91 これ以外の G, M, T コマンドについては、バッファリングされません。

特定のコード (M106 など) が正しい順序で実行されることを保証し、既に実行された移動コマンドがより前方のキューに追加されないようにするために、RepRapFirmware では、さらに内部キューを実装しています。

バッファリングされないコマンドは、受信される、バッファに格納されますが、バッファ内のその他のコマンドが全て実行されるまで、ホストに認識されません。したがって、これらのコマンド送る際には、ホストはそのコマンドが完了されるまで一時停止します。これらのコマンド間で行われる短いポーズは、マシンのパフォーマンスには影響しません。

Gコマンド

G0 & G1: 移動

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
  • G0 : 高速直線移動
  • G1 : 直線移動
使用方法
G0 Xnnn Ynnn Znnn Ennn Fnnn Snnn
G1 Xnnn Ynnn Znnn Ennn Fnnn Snnn
パラメータ
全てのパラメータを指定する必要はありませんが、最低でも一つのパラメータは指定する必要があります。
Xnnn X軸上における移動先の位置
Ynnn Y軸上における移動先の位置
Znnn Z軸上における移動先の位置
Ennn 開始地点と終了地点の間で押し出されるフィラメントの量
Fnnn 開始地点と終了地点の間のフィードレート (一分間あたりの値。指定されている場合にのみ適用。)
Snnn エンドストップに到達したことをチェックするフラグ (S1 でチェック、S0 で無視。S2 は後述の注意点を参照。デフォルトは S0 です。)1
G0 X12               ; X軸上の 12mm の位置に移動する
G0 F1500             ; フィードレートを 1500mm/分 に設定する
G1 X90.6 Y13.8 E22.4 ; 22.4mm のフィラメントを押し出しながら、X軸の 90.6mm、Y軸の 13.8mm の位置に移動する

RepRap Firmware では、G0G1 を同じコマンドとして扱う仕様となっています。これは同じコマンドとして扱わない場合と、効率が全く変わらないためです。2

ほとんどのRepRapファームウェアでは、フィードレートに対しては巧妙な動作を行います。

G1 F1500           ; フィードレートを 1500mm/分 に設定する
G1 X50 Y25.3 E22.4 ; 移動しながら、フィラメントを押し出す

上記の例では、先に 1500mm/分 のフィードレートに設定してから、2点間の間で 22.4mm のフィラメントを押し出しながら、X軸の 50mm、Y軸の 25.3mm に移動します。

G1 F1500                 ; フィードレートを 1500mm/分 に設定する
G1 X50 Y25.3 E22.4 F3000 ; 3000mm/分 まで加速する

対して、上記の例では、1500mm/分 のフィードレートに設定してから、同様に移動する点は同じですが、こちらの例では、3000 mm/m まで加速させます。全ての動作は同期しているので、X軸やY軸の動きに合わせて、フィラメントの押し出される量も加速します。

RepRapの仕様では、フィードレートは他のパラメータと同様、直線補間される変数として扱われます。これにより、プリントヘッドの加速と減速は、全てがスムーズに動くように完全に制御され、全ての位置で適切な量のフィラメントが出力されるようになります。3

一定の長さでエクストルーダーを巻き戻すには、単純に G0G1 コマンドとともに、既に押し出した長さより短い値の E を送りましょう。(例えば、移動中にノズルが空中に浮いてしまい、そのままでは溶けたフィラメントが垂れてしまうような状況で、内圧を下げるために使われます。)

注意点

1 いくつかのファームウェアでは、移動中のエンドストップ検知機能を有効化または無効化することができるようになっています。正しく設定されていない場合には、RepRapにダメージが及ぼされることがあります。したがって、どのファームウェアを使っている場合でも、この使い方と同様に S パラメーターがサポートされているかどうかを確認してください。RepRapFirmwareでは、デルタプリンターで S1 または S2 パラメータを使うと、XYZ パラメータがヘッドの位置ではなく、それぞれのタワーモーターの位置を参照するようになります。また、パラメータが S1 の場合には、エンドストップの検知機能が有効化されます。

2 RS274NGCの仕様では、G0高速移動 とされています。これは現在の位置から新しい位置へとできる限り速くかつ効率的に移動するために使われていました。また、G1制御移動 とされています。これは同様の移動をできる限り精密に行う目的で使われていました。

3 いくつかのファームウェアでは、移動コマンドと同時にインラインでフィードレートを設定することをサポートしていません。

4 RepRapFirmware では 'R1' という追加コマンドを提供しています。これは、以前にプリントをポーズした座標へ戻ることをマシンに指示するコマンドです。このパラメータが使われている場合で、軸のコマンドも同時に指定されている場合、ポーズした座標にオフセットが追加されます。(例: G1 R1 Z5)

いくつかの古いCNCやその他のマシンでは、直線移動でない場所でより速く移動することが可能となっていました。これは、デルタ型ポーラー型 プリンターなどの、曲面部で直接よりも速く動きやすい、非カーテシアンプリンターにも当てはまります。

G2 & G3: 円弧補間

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
No No Yes Yes1 Yes Yes No Yes ??? Yes Experimental Yes
使用方法
G2 Xnnn Ynnn Innn Jnnn Ennn Fnnn (時計回り円弧補間)
G3 Xnnn Ynnn Innn Jnnn Ennn Fnnn (反時計回り円弧補間)
パラメータ
Xnnn X軸上における移動先の位置
Ynnn Y軸上における移動先の位置
Innn X軸上における円弧中心の位置
Jnnn Y軸上における円弧中心の位置
Ennn 開始地点と終了地点の間で押し出されるフィラメントの量
Fnnn 開始地点と終了地点の間のフィードレート (一分間あたりの値。指定されている場合にのみ適用。)
G2 X90.6 Y13.8 I5 J10 E22.4

(中心点を X=現在のX座標+5, Y=現在のY座標+10) とし、開始地点と低質店の間で 22.4mm のフィラメントを押し出しながら、現在の点から移動先の点 (X=90.6, Y=13.8) に時計回りに移動する。)

G3 X90.6 Y13.8 I5 J10 E22.4

(中心点を X=現在のX座標+5, Y=現在のY座標+10) とし、開始地点と低質店の間で 22.4mm のフィラメントを押し出しながら、現在の点から移動先の点 (X=90.6, Y=13.8) に反時計回りに移動する。)

注意点

1Marlin Firmware では、デルタプリンタースカラープリンター に対しては実装されていません。

G4: 一時停止

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes

一定の時間、マシンを一時停止します。

パラメータ
Pnnn 停止する時間 ミリ秒で指定します。(Teacup では、P0を指定することでそれまでの命令がすべて実行されるまで待機します。)
Snnn 停止する時間 秒で指定します。(Repetier, Marlin, Smoothieware, RepRapFirmware 1.16 以降のみ。)
G4 P200

この場合、200ミリ秒の間、何もしないで待機します。この待機時間の間、マシンの状態 (例: エクストルーダーの加熱など) は保管、制御され続けます。

Marlin, Smoothie, RepRapFirmware では、"S" パラメータを与えると 秒 単位で待機し、"P" パラメータを与えると ミリ秒 単位で待機します。"G4 S2" と "G4 P2000" は等しいことになります。

G6: ステッピングモーターの直接移動

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
No No No No No No No, Use G1 S2 No No No No No

一つ、またはそれ以上のステッピングモーターを、補間や同期された動きのない状態で、ダイレクトに動かします。単位は長さ (例: DELTA> プリンター で mm または インチ の指定)、または角度 (SCARA プリンター) で指定します。このコマンドは、初期化動作や故障診断、キャリブレーションなどに便利なコマンドです。ただし、このコマンドは製品として販売されるものに対しては無効化することが強く勧められます。このような移動方法は、特にデルタボットにおいて危険性を秘めており、実装の際には、素早い往復動作やキャリッジの部品の損傷を防ぐため、動作制限を設定するべきです。

パラメータ
Annn ステッピングモーターAの位置または角度
Bnnn ステッピングモーターBの位置または角度
Cnnn ステッピングモーターCの位置または角度
R 相対移動フラグ
スカラプリンターの例
G6 A45     ; スカラープリンターのステッピングモーターAを45°の位置へ移動する
G6 B20 R   ; スカラープリンターのステッピングモーターBを反時計回りに20°移動する
デルタプリンターの例
G6 C10 R   ; デルタプリンターのキャリッジCを10mm上昇させる

G10: ツールのオフセット

対応状況 FiveD Teacup Sprinter Marlin Repetier Smoothie RepRapFirmware Machinekit MakerBot grbl Redeem MK4duo
No No No No No No Yes Yes ??? ??? No No
使用方法
G10 Pnnn Xnnn Ynnn Znnn Rnnn Snnn1
パラメータ
Pnnn ツール番号
Xnnn X軸オフセット
Ynnn Y軸オフセット
U,V,Wnnn U, V, W 軸のオフセット5
Znnn Z軸オフセット2
Rnnn スタンバイ温度
Snnn アクティブ温度
G10 P2 X17.8 Y-19.3 Z0.0

(ツール 2 (古いファームウェアではエクストルードヘッド) のオフセットを X, Y, Z それぞれ指定した値へ設定する)

G10 P1 R140 S205

(ツール 1 のスタンバイおよびアクティブ温度3を設定する)

パラメータを設定しなかった場合には、そのパラメーターに対して最後に設定された値が自動的に使われることを覚えておいてください。したがって、通常は Z0.0 が明示的に設定されることとなるでしょう。 RepRapFirmware will report the tool parameters if only the tool number is specified.

The precise meaning of the X, Y (and other offset) values is: with no offset this tool is at this position relative to where a tool with offset (0, 0, 0) would be. So if the tool is 10mm to the left of a zero-offset tool the X value would be -10, and so on.

The R value is the standby temperature in oC that will be used for the tool, and the S value is its operating temperature. If you don't want the tool to be at a different temperature when not in use, set both values the same. See the T code (select tool) below. In tools with multiple heaters the temperatures for them all are specified thus: R100.0:90.0:20.0 S185.0:200.0:150.0 .

See also M585.

Notes

1Marlin uses G10/G11 for executing a retraction/unretraction move. The RepRapPro version of Marlin supports G10 for tool offset. Smoothie uses G10 for retract and G10 Ln for setting workspace coordinates.

2It's usually a bad idea to put a non-zero Z value in as well unless the tools are loaded and unloaded by some sort of tool changer or are on indepedent carriages. When all the tools are in the machine at once they should all be set to the same Z height.

3If the absolute zero temperature (-273.15) is passed as active and standby temperatures, RepRapFirmware will only switch off the tool heater(s) without changing their preset active or standby temperatures. RepRapFirmware-dc42 does not support this setting.

4The NIST G-code standard mentions an additional L parameter, which is ignored (except in smoothie). This command is subject to discussion.

5Tool offsets are applied after any X axis mapping has been performed. Therefore if for example you map X to U in your M563 command to create the tool, you should specify a U offset not an X offset. If you map X to both X and U, you can specify both offsets.


以下のコンテンツは再翻訳中のコンテンツです。非常にデータが古いため、ベーシックなコード以外は 英語版 を確認するようにして下さい。

コマンド

G28: 原点に移動する(Move to Origin)

Support FiveD Teacup Sprinter Marlin Repetier
yes yes yes yes yes

例: G28

このコマンドは、RepRap機において、X, Y, Z座標が0の位置に戻す。これは、homingとして知られる処理である。 この処理を速く行うために、移動スピードは加速される。しかし、各座標が1mmのところまで戻るとゆっくりと移動し、その後、止まる。これは、より正確な位置に戻るために行われる。

もし、G28コマンドに座標を指定すると、指定された座標を0と扱われる。つまり、

G28 X0 Y72.3

は、XとZは0に戻るが、Yは0に戻らない。実際の座標は無視される。

G29-G32: Bed probing

G29 Detailed Z-Probe

probes the bed at 3 points.

G30 Single Z Probe

In its simplest form probes bed at current XY location.

Some implementations allow more general behaviour: if a Pn field is specified the probed X, Y, and Z values are saved as point n on the bed for calculating the offset plane. Generally n is 0, 1, or 2. If X, or Y, or Z values are specified (e.g. G30 P1 X20 Y50 Z0.3) then those values are used instead of the machine's current coordinates. A silly Z value (less than -9999.0) causes the machine to probe at the current point to get Z, rather than using the given value. If an S field is specfied (e.g. G30 P1 Z0.3 S) the bed plane is computed for compensation and stored. The combination of these options allows for the machine to be moved to points using G1 commands, and then probe the bed, or for the user to position the nozzle interactively and use those coordinates. The user can also record those values and place them in a setup GCode file for automatic execution.

G31 Report Current Probe status

When used on its own this reports whether the Z probe is triggered, or gives the Z probe value in some units if the probe generates height values. If combined with a Z and P field (example: G31 P312 Z0.7) this will set the Z height to 0.7mm when the Z-probe value reaches 312 when a G28 Z0 (zero Z axis) command is sent. The machine will then move a further -0.7mm in Z to place itself at Z = 0. This allows non-contact measuring probes to approach but not touch the bed, and for the gap left to be allowed for. If the probe is a touch probe and generates a simple 0/1 off/on signal, then G31 Z0.7 will tell the RepRap machine that it is at a height of 0.7mm when the probe is triggered.

In Duet-dc42 firmware, separate G31 parameters may be defined for probe types 0, 1/2, and 3 (probe types 1 and 2 share the same set of parameters). To specify which probe you are setting parameters for, send a M558 command to select the probe type before the G31 command.

Duet-dc42 firmware supports additional parameters S (bed temperature in degC at which the specified Z parameter is correct, default is current bed temperature), and C (temperature coefficient of Z parameter in mm/degC, default zero). This is useful for ultrasonic and other probes that are affected by temperature.

G32 Probe Z and calculate Z plane

probes the bed at 3 or 4 pre-defined points (see M557) and updates transformation matrix for bed leveling compensation.

バッファに格納されないGコマンド

The following commands are not buffered. When one is received it is stored, but it is not acknowledged to the host until the buffer is exhausted and then the command has been executed. Thus the host will pause at one of these commands until it has been done. Short pauses between these commands and any that might follow them do not affect the performance of the machine.

Teacup Firmware buffers G20, G21, G90 and G91.

G20: 単位をインチに指定する

例: G20

単位をインチに指定する

G21: 単位をインチに指定する

例: G21

単位をミリメートルに指定する (RepRapのデフォルトはミリメートルである)

G90: 絶対的な位置を設定(Set to Absolute Positioning)

例: G90

全ての座標は、マシンの原点からの絶対的な位置となる。(これはRepRapのデフォルトである)

G91: 相対的な位置を設定する(Set to Relative Positioning)

例: G91

全ての座標は、最後の位置の相対的な位置となる。

G92: 位置を指定する(Set Position)

例: G92 X10 E90

現在の座標を指定した値にリセットする。これは、原点に対して絶対座標を指定するプログラムを可能にする。 上記の例は、マシンのX座標を10、押出座標を90に設定する。物理的な移動は起きない。

座標を指定しないG92は、全ての軸を0にリセットする。

バッファに格納されないM及びTコマンド

M0: Stop

例: M0

RepRap機は、バッファの中のデータを残したまま、移動を終了してシャットダウンする。全てのモーター、ヒーターの電源はOFFとなる。マスターコントローラのリセットボタンを押すことによって、再度、開始される。M1, M112参照。

M1: スリープ(Sleep)

例: M1

RepRapマシンはバッファにデータを残したまま動作を終了し、シャッドダウンする。全てのモーター、ヒーターの電源がオフとなる。Gコード、Mコードは、まだ送信することができる。GコードもしくはMコードのどちらか最初のコマンドがRepRapマシンをスリープから復帰させる。M0, M112参照。

M3: スピンドルを時計回りでオンにする(Spindle On, Clockwise (CNC specific))

例: M3 S4000

4000RPMのスピードで、スピンドルをOnにする

M4: スピンドルを反時計回りでオンする(Spindle On, Counter-Clockwise (CNC specific))

例: M4 S4000

スピンドル(Spindle)を反時計回りでスピード4000RPMでオンする。

M5: Spindle Off (CNC specific)

例: M5

スピンドルをOffにする。

M7: ミストクーラントをオンにする(Mist Coolant On (CNC specific))

例: M7

(もし、利用できるならば、)ミストクーラントをオンにする

ミストクーラントは以下の映像。 https://www.youtube.com/watch?v=tXcSk3PkaHY

M8: フラッドクーラントをオンにする(Flood Coolant On (CNC specific))

例: M8 (もし利用できるならば、)フラッドクーラントをオンにする

フラッドクーラントは以下の映像。 https://www.youtube.com/watch?v=IkmbmzDuKnE

M9: クーラントをオフにする(Coolant Off (CNC specific))

例: M9

全てのクーラントシステムをオフにする

M10: バキュームをOnにする(Vacuum On (CNC specific))

例: M10

ゴミを取り除くバキューム(掃除機)システムをOnにする

M11: バキュームをOffにする(Vacuum Off (CNC specific))

例: M11

ゴミを取り除くバキューム(掃除機)システムをOffにする

M17: 全てのステッパーモーターの電源を入れる(Enable/Power all stepper motors)

例: M17

全てのステッパーモーターの電源を入れる or オンにする

ステッパーモーター http://simple.wikipedia.org/wiki/Stepper_motor

M18: 全てのステッパーモーターの電源をオフ or 回転をオフ(Disable all stepper motors)

例: M18

全てのステッパーモーターの電源をオフ or 回転をオフにする そして、(軸に自由に動作することを許可する???)

Disables stepper motors and allows axis to move 'freely.'

M20: SDカード上のファイルをリストアップする(List SD card)

例: M20

SDカードのルートフォルダの全てのファイルをリストアップしシリアルポートに対して出力する。 これは、以下のような出力となる。

ok Files: {SQUARE.G,SQCOM.G,}

最後のカンマはオプションである。ファイル名は大文字で出力される。 M23コマンドが送られたとき、ファイル名は小文字にしなければならない。

M21: SDカードの初期化(Initialize SD card)

例: M21

SDカードは初期化される。プリンタの電源がONになったときSDカードがロードされているならば、デフォルトで初期化が起こる。 SDカードは他のSDカードの機能を動作させるために初期化されなければならない。

M22: SDカードの取り外し(Release SD card)

例: M22

SDカードはリリースされ、物理的に取り外すことができる。

M23: SDカードからファイルを選択する(Select SD file)

例: M23 filename.gco

    M23 ファイル名

finename.gco(8.3 ファイル名の命名規則をサポートすること)として指定されたファイルを印刷するために選択する。。

M24: SDカード上のファイルからの印刷を開始もしくは再開する(Start/resume SD print)

例: M24

M23コマンドで選択されたファイルから印刷する

M25: SDカードからの印刷を一時停止する(Pause SD print)

例: M25

M23コマンドで選択されたファイルの現在の位置で、SDカードからの印刷を一時停止する。

M26: SDカードの位置を指定する(Set SD position)

例: M26

SDカードの位置をバイト単位で指定する。(M26 S12345).

M27: SDカードからの印刷のステータスをレポートする(Report SD print status)

例: M27

SDカードからの印刷のステータスをレポートする

M28: SDカードに書き込みを開始する(Begin write to SD card)

例: M28 filename.gco

    M28 ファイル名

指定されたファイル名のファイルがSDカード上に作成される。プリンタに送信された全てのコマンドがそのファイルに書き込まれる。

M29: SDカードに書き込む(Stop writing to SD card)

例: M29 filename.gco

    M29 ファイル名

M28コマンドでオープンしたファイルをクローズする。プリンタに送信された全てのコマンドは、 送信された順番に通常通り実行される。

M30: SDカード上のファイルを削除する(Delete a file on the SD card)

例: M30 filename.gco

    M30 ファイル名

filename.gcoを削除する。

M32: SDカードからファイルを選択し、SDカードからの印刷を開始する(Select file and start SD print)

例: M32 filename.gco M32 ファイル名

Marinで使用可能。

M40: エジェクト (Eject)

もしRepRapマシーンがビルドプレートからパーツを外しエジェクトできる場合、このコマンドはエジェクトサイクルを実行します。 これは通常、ベッドを冷却し部品を取り除く一連の動きを行います。 エジェクト動作終了時のX,Y及びZ位置は未定義となります。(ただし、M114コマンドを使用して現在の位置を取得することができます。q.v.) 関連するコマンド:M240 M241 も参照してください。

M41: Loop

Example: M41

If the RepRap machine was building a file from its own memory such as a local SD card (as opposed to a file being transmitted to it from a host computer) this goes back to the beginning of the file and runs it again. So, for example, if your RepRap is capable of ejecting parts from its build bed then you can set it printing in a loop and it will run and run. Use with caution - the only things that will stop it are:

  1. When you press the reset button,
  2. When the build material runs out (if your RepRap is set up to detect this), and
  3. When there's an error (such as a heater failure).

M42: Stop on material exhausted / Switch I/O pin

M42 in ???

Example: M42

If your RepRap can detect when its material runs out, this decides the behaviour when that happens. The X and Y axes are zeroed (but not Z), and then the machine shuts all motors and heaters off. You have to press reset to reactivate the machine. In other words, it parks itself and then executes an M0 command (q.v.).

M42 in Marlin/Sprinter

Example: M42 P7 S255

M42 switches a general purpose I/O pin. Use M42 Px Sy to set pin x to value y, when omitting Px the LEDPIN will be used.

M42 in Teacup

Not needed. General purpose devices are handled like a heater, see M104.

M43: Stand by on material exhausted

Example: M43

If your RepRap can detect when its material runs out, this decides the behaviour when that happens. The X and Y axes are zeroed (but not Z), and then the machine shuts all motors and heaters off except the heated bed, the temperature of which is maintained. The machine will still respond to G and M code commands in this state.