プロトコル

Twinwright 独自カーネルは、Grbl 1.1 シリアルプロトコルで通信し、現在の Grbl 送信ソフトが使う拡張にも対応しています。Grbl 用に書かれた送信ソフトは、このカーネルでも動作します。動作を確認した送信ソフトとその設定は、G コード送信ソフトにあります。

接続

接続先方法
Studio のツインこのコンピューターの TCP ポート 2323。送信ソフトは同時に 1つだけ接続できます。
MC-1ネイティブ USB ポート。シリアルポート(Windows では COM*n*)として使います。ボーレートは関係ありません。送信ソフトが指定を求める場合は 115200 を使ってください。送信ソフトが DTR をオンにすると、コントローラが応答します。

行と応答

リアルタイムコマンド

リアルタイムコマンドは単一のバイトです。コントローラは、行の途中であっても、届いた時点で直ちに処理します。リアルタイムコマンドはどの行にも含まれず、ok も返りません。

バイトコマンド動作
0x18(Ctrl-X)リセットすべてを直ちに停止し、キューにあるものを消去します。軸が動いている間にリセットすると ALARM:3 が発生します。原点復帰をやり直してください。非常停止中は受け付けません。
0x03(Ctrl-C)リセット(非常停止中)Ctrl-X と同じ動作で、非常停止中でも受け付けます。
0x19(Ctrl-Y)ストップ軸は減速して停止し、キューに残っている行は破棄されます。位置は保たれ、アラームは発生しません。
ESC、続けて 0x14再起動自分で再起動できるボードで、コントローラを再起動します。
?ステータスレポートステータスレポートを 1回返します。
0x80(または 0x05)ステータスレポートステータスレポートを 1回返します。ただし、自動レポートがオンの間は返しません。
0x87フルステータスレポートすべてのフィールドを含むステータスレポートを 1回返します。
~、0x81サイクルスタートフィードホールド、安全扉、M0/M1、工具交換のあとで再開します。
!、0x82フィードホールド軸は減速して停止し、そのまま保持されます。ジョグ中はジョグをキャンセルします。
0x83パーサの状態$G と同じく、モーダル状態を報告します。
0x84安全扉扉が開いたときと同じ動作をします。ホールドし、パーキングが設定されていればパーキングします。
0x85ジョグキャンセルジョグを終了し、キューに残っているジョグの行を破棄します。
0x88オプショナルストップM1 による一時停止のオン/オフを切り替えます。
0x89シングルブロックシングルブロックのオン/オフを切り替えます。
0x8Bハンドルモードハンドル(手動パルス発生器)が接続されている場合:そのモードを切り替えます。接続されていなければ無視されます。
0x8C自動レポート$481 で間隔が設定されている場合に、自動ステータスレポートのオン/オフを切り替えます。設定されていなければ無視されます。
0x90送りオーバーライド 100 %
0x91、0x92送りオーバーライド +10 %、−10 %範囲:10–200 %。
0x93、0x94送りオーバーライド +1 %、−1 %範囲:10–200 %。
0x95、0x96、0x97、0x98早送りオーバーライド100 %、50 %、25 %、5 %。
0x99主軸オーバーライド 100 %
0x9A、0x9B主軸オーバーライド +10 %、−10 %範囲:10–200 %。
0x9C、0x9D主軸オーバーライド +1 %、−1 %範囲:10–200 %。
0x9E主軸停止フィードホールド中のみ:主軸を停止し、または再び始動します。
0x9Fソフト非常停止直ちに停止し、非常停止のアラームを発生させます。
0xA0クーラント(フラッド)フラッドクーラントのオン/オフを切り替えます。
0xA1クーラント(ミスト)ミストクーラントのオン/オフを切り替えます。
0xA3工具交換完了手動の工具交換を確認します。

コントローラは、これ以外の制御バイトと、コマンドが割り当てられていない 0x80–0xBF のバイトを破棄します。

起動メッセージと識別情報

電源投入後と、リセットのたびに、コントローラは次の行を送ります。

Grbl 1.1f ['$' or '$HELP' for help]

送信ソフトは、「Grbl」で始まる行を再起動と見なします。

$I は次の行を返し、最後に ok を返します。

行内容
[VER:Twinwright 1.1f.<date>:<text>]プロトコルのバージョンとそのビルド日。<text> は $I=<text> で保存した文字列です。
[OPT:…]オプションの文字、プランナのブロック数(100)、受信バッファ(1024)。
[NEWOPT:…]オプション名:ENUMS、RT+ または RT-($39)、HOME、ES、MPG、LATHE、REBOOT、TC、SS(主軸同期)、SED、RTC、SD、FS、YM。
[FIRMWARE:Twinwright]ファームウェアの名前。
[SIGNALS:…]ボードが持つ制御入力を、文字で表したもの。
[NVS STORAGE:…]設定の保存先。
[DRIVER:…]、[DRIVER VERSION:…]、[DRIVER OPTIONS:…]、[BOARD:…]ボードの情報。
[KERNEL:<version>+<build>]コントローラのバージョンとビルド:リリースのコミット、または dev。
[KNCAP:…]ボードの機能(下記)。
[PLUGIN:…]送信ソフトが認識する名前で示した機能:主軸インバータ用の MODBUS と HUANYANG VFD。

ボードの機能:KNCAP

[KNCAP:] は、key=value の組をカンマで区切って並べた 1行です。キーは末尾に追加されるだけで、意味が変わることはありません。行は位置ではなくキーで読んでください。欠けているキーは「不明」を意味します。

キー値意味
portteensy41、stm32h7、stm32f4、twin、host、sim、unknownコントローラのどのビルドか。
pv数値コントローラのポートインターフェースのバージョン。
view数値コントローラの状態ビューのバージョン。
spindlevfd、pwm、none主軸インバータ:Modbus、PWM 出力、またはなし。
encoder0、1主軸エンコーダが取り付けられています。
sd0、1ボードに SD カードスロットがあります。
mpg0、2ハンドルのポート。モード番号で示します。
auxdi/do/ai/ao補助入出力:デジタル入力、デジタル出力、アナログ入力、アナログ出力。
axes文字軸。たとえば XYZ。
probe0、1プローブ入力。MC-1 では、ツールセッターもこの入力を使います。
linkusb、uart、tcp、none送信ソフトとの接続。usb は、DTR がオンになると応答する USB シリアルポートです。

シャドーモードでは、実機とそのツインの間で [KERNEL:] と [KNCAP:] を比較します(実機とシャドーモードを参照)。

ステータスレポート

ステータスレポートは、?、0x80、0x87 の後に返ります。自動レポートがオンの場合($481、0x8C)は、コマンドなしでも自動的に返ります。次のような 1行です。

<Idle|MPos:0.000,0.000,0.000|Bf:100,1023|FS:0,0|Pn:XYZ>

先頭は状態です。

続くフィールドは、$10 と状況によって変わります。

フィールド意味
MPos: または WPos:機械位置またはワーク位置($10 のビット 0)。
Bf:プランナの空きブロック数、受信バッファの空きバイト数。
Ln:実行中のブロックの行番号。
FS:送り速度、指令した主軸回転数、ドライバが報告する回転数。オンとオフだけの主軸は F: を報告します。フィードホールド中は送り速度が 0 になります。
Pn:アクティブな入力:リミットは軸の文字、P プローブ、D 安全扉、H フィードホールド、S サイクルスタート、R リセット、E 非常停止。
WCO:ワーク座標オフセット:数回のレポートごとに、また変更の後に。
Ov:送り、早送り、主軸のオーバーライド(%):数回のレポートごとに、また変更の後に。
A:アクセサリ:S または C は主軸の時計回りまたは反時計回り、F はフラッド、M はミスト。
Sl:主軸インバータの負荷。
DTG:軸が停止するまでの残り距離($10 のビット 13)。
H:原点復帰済みかどうか。
T:工具交換中の工具。
TLR:基準工具長が設定されています($TLR)。
MPG:ハンドルが制御権を持っている(1)か、持っていない(0)か。
In:直近の M66 の結果。
WCS:、Sc:、D:ワーク座標系、スケーリング、旋盤の直径モード(フルレポート)。
AR、AR:自動レポートがオフ、またはオンでその間隔(フルレポート)。
FW:ファームウェアの名前(フルレポート)。
SD:コントローラのファイルシステムから実行しているプログラムの進み具合。

コントローラが送るその他の行

行タイミング
ALARM:Nアラーム。N の値はアラームコードにすべて載っています。
[MSG:…]メッセージ:コントローラ自身のもの、またはプログラムの (MSG,…)、(PRINT,…)、(DEBUG,…)。
[GC:…]モーダル状態。$G または 0x83 の後。$10 のビット 9 を立てると、変更のたびに 1回。
[PRB:x,y,z:1]プローブが作動した点と、接触したか(1)しなかったか(0)。
[TLO:…]工具長補正。
[PARAM:n=value]$#=n の後。
[G54:…] … [G59.3:…]、[G28:…]、[G30:…]、[G92:…]、[T:…]$# の後:オフセット、保存された位置、工具テーブル。
>line:ok、>line:error:N起動時に、スタートアップ行($N0、$N1)を実行しました。

$ コマンド

コントローラ自身も、$HELP Commands で一覧を表示します。

コマンド動作
$、$HELP、$HELP <group>ヘルプ、コマンド一覧、設定グループ(詳細付き)。
$$、$<n>、$<n>=<value>、$$=<n>、$+すべての設定、1つの設定、その設定の変更、1つの設定の詳細、すべての設定をもう一度。
$SED=<n>設定を説明します。
$#、$#=<n>、$#=<name>オフセット、プローブの結果、保存された位置、1つのパラメータ。
$Gモーダル状態。
$I、$I+、$I=<text>コントローラの識別情報(上記)、すべての情報、テキストを識別情報とともに保存。
$N、$N0=<line>、$N1=<line>スタートアップ行の表示と保存。
$Cチェックモード:G コードは検査され、軸は何も動きません。リセットで終了します。
$Xアラームの後でロックを解除します。
$H、$HX、$HY、$HZ全軸または 1軸の原点復帰。
$J=<G-code>ジョグ。
$B、$S、$Oブロックスキップ、シングルブロック、オプショナルストップ:オンまたはオフ。
$SLPスリープ。
$TLR、$TPW直近のプロービングを基準工具長として採用する。新しい工具をタッチプレートで測定する。
$RST=$、$RST=#、$RST=*設定を MC-1 の工場出荷時の値に戻す(原点復帰とリミットが有効、MC-1 のストローク)、オフセットを消去する、その両方とスタートアップ行。
$EA、$EAG、$EE、$EEG、$EG、$ES、$ESG、$ESH、$E*アラーム、エラーコード、設定グループ、設定を、行または CSV で一覧表示します。
$SPINDLES、$SPINDLESH主軸の一覧。
$PINS、$PINSTATE、$PORTSボードのピン、補助入出力、シリアルポート。
$LIM、$HSS、$LEVリミット入力、原点スイッチ、直近の入力イベント。
$RTC、$RTC=<date and time>コントローラの時計(ISO 8601)。
$REBOOTコントローラを再起動します。
$F、$F+、$F=<file>、$F<=<file>、$FRコントローラのファイルシステム上のプログラムを一覧表示する、1つ実行する、1つ送り返す、最初からやり直す。
$FD=、$FMD=、$FRD=、$FF=yes、$FI、$FM、$FU、$CWD=、$PWD削除、フォルダーの作成または削除、フォーマット、情報、マウント、アンマウント、作業フォルダー。

すべての設定は設定にあります。