Documentación Referencia
Protocolo
El núcleo propio de Twinwright habla el protocolo serie de Grbl 1.1, con las extensiones que usan los programas de envío Grbl actuales. Un programa de envío escrito para Grbl funciona con él. Los programas de envío que se han comprobado, y sus ajustes, están en Programas de envío de código G.
Conectar
| Dónde | Cómo |
|---|---|
| El gemelo en Studio | Puerto TCP 2323 de este equipo, un programa de envío a la vez. |
| El MC-1 | Su puerto USB nativo, un puerto serie (COM*n* en Windows). La velocidad en baudios no importa; use 115200 donde un programa de envío la pida. El controlador responde en cuanto el programa de envío activa DTR. |
Líneas y respuestas
- Fin de línea: una línea termina con LF o CR. Una pareja CR LF o LF CR cuenta una sola vez; dos LF son dos líneas.
- Respuestas: el controlador responde a cada línea con
okoerror:N, en el orden en que llegaron las líneas. Códigos de error lista todos los N. - Longitud de línea: hasta 256 caracteres. Una línea más larga se responde con
error:11. - Recuento de caracteres: el búfer de recepción tiene capacidad para 1024 bytes. Un programa de envío puede tener en tránsito esa cantidad de bytes sin respuesta.
Bf:en el informe de estado indica el espacio libre. - Planificador: 100 bloques.
Bf:indica también los bloques libres. - Líneas que esperan: en una retención de avance o con la puerta abierta, las líneas esperan en el búfer. Se responden en cuanto el ciclo vuelve a empezar. Un reinicio,
0x19(parada),0x03o0x85(cancelar el desplazamiento manual) descarta las líneas que aún esperan. - Tras un error: la siguiente línea de código G no se ejecuta y se responde con el mismo error. Así sigue hasta que llega un comando
$, una línea vacía o un reinicio.
Comandos en tiempo real
Un comando en tiempo real es un solo byte. El controlador actúa sobre él en cuanto llega, incluso en mitad de una línea. No forma parte de ninguna línea y no recibe ok.
| Byte | Comando | Qué hace |
|---|---|---|
0x18 (Ctrl-X) | Reinicio | Lo detiene todo de inmediato y vacía lo que está en cola. Un reinicio con los ejes en movimiento provoca ALARM:3: haga la referencia de nuevo. No se acepta mientras la parada de emergencia está activada. |
0x03 (Ctrl-C) | Reinicio, parada de emergencia activada | Como Ctrl-X; también se acepta mientras la parada de emergencia está activada. |
0x19 (Ctrl-Y) | Parada | Los ejes frenan hasta detenerse y se descartan las líneas que siguen en cola. Se conserva la posición y no se genera ninguna alarma. |
ESC, luego 0x14 | Rearranque | Reinicia el controlador, en las placas que pueden reiniciarse por sí mismas. |
? | Informe de estado | Un informe de estado. |
0x80 (o 0x05) | Informe de estado | Un informe de estado, salvo mientras los informes automáticos están activados. |
0x87 | Informe de estado completo | Un informe de estado con todos los campos. |
~, 0x81 | Inicio de ciclo | Reanuda tras una retención de avance, la puerta, M0/M1 o un cambio de herramienta. |
!, 0x82 | Retención de avance | Los ejes frenan hasta detenerse y quedan retenidos. Durante un desplazamiento manual (jog), lo cancela. |
0x83 | Estado del analizador | Informa del estado modal, como hace $G. |
0x84 | Puerta de seguridad | Actúa como la apertura de la puerta: retiene y, si el estacionamiento está configurado, estaciona. |
0x85 | Cancelar desplazamiento manual | Termina un desplazamiento manual y descarta las líneas de desplazamiento que siguen en cola. |
0x88 | Parada opcional | Activa o desactiva las pausas de M1. |
0x89 | Bloque a bloque | Activa o desactiva el bloque a bloque. |
0x8B | Modo del volante electrónico | Con un volante conectado: cambia su modo. En caso contrario se ignora. |
0x8C | Informes automáticos | Activa o desactiva los informes de estado automáticos, cuando $481 fija su intervalo. En caso contrario se ignora. |
0x90 | Ajuste de avance 100 % | |
0x91, 0x92 | Ajuste de avance +10 %, −10 % | Rango de 10–200 %. |
0x93, 0x94 | Ajuste de avance +1 %, −1 % | Rango de 10–200 %. |
0x95, 0x96, 0x97, 0x98 | Ajuste de rápidos | 100 %, 50 %, 25 %, 5 %. |
0x99 | Ajuste del husillo 100 % | |
0x9A, 0x9B | Ajuste del husillo +10 %, −10 % | Rango de 10–200 %. |
0x9C, 0x9D | Ajuste del husillo +1 %, −1 % | Rango de 10–200 %. |
0x9E | Parada del husillo | Solo en una retención de avance: detiene el husillo o lo vuelve a poner en marcha. |
0x9F | Parada de emergencia por software | Se detiene de inmediato y genera la alarma de parada de emergencia. |
0xA0 | Refrigeración, por chorro | Activa o desactiva la refrigeración por chorro. |
0xA1 | Refrigeración, por niebla | Activa o desactiva la refrigeración por niebla. |
0xA3 | Cambio de herramienta terminado | Confirma un cambio de herramienta manual. |
El controlador descarta los demás bytes de control y los bytes 0x80–0xBF que no tienen ningún comando.
- El texto UTF-8 de los comentarios y de los mensajes se lee como texto. Un byte de
0x80–0xBFque pertenece a uno de esos caracteres nunca se toma como un comando en tiempo real. $39=0(caracteres heredados en tiempo real desactivados):?,!y~son texto dentro de las líneas$y de los comentarios, y comandos en cualquier otro sitio. Con$39=1(el valor por defecto) son siempre comandos.
Bienvenida e identidad
Tras el encendido y tras cada reinicio, el controlador dice:
Grbl 1.1f ['$' or '$HELP' for help]
Los programas de envío toman una línea que empieza por “Grbl” como un reinicio.
$I responde con estas líneas y después ok:
| Línea | Qué dice |
|---|---|
[VER:Twinwright 1.1f.<date>:<text>] | La versión del protocolo y su fecha de compilación. <text> es lo que guardó $I=<text>. |
[OPT:…] | Letras de opciones, los bloques del planificador (100) y el búfer de recepción (1024). |
[NEWOPT:…] | Nombres de opciones: ENUMS, RT+ o RT- ($39), HOME, ES, MPG, LATHE, REBOOT, TC, SS (sincronización del husillo), SED, RTC, SD, FS, YM. |
[FIRMWARE:Twinwright] | El nombre del firmware. |
[SIGNALS:…] | Las entradas de control que tiene la placa, como letras. |
[NVS STORAGE:…] | Dónde se guardan los ajustes. |
[DRIVER:…], [DRIVER VERSION:…], [DRIVER OPTIONS:…], [BOARD:…] | La placa. |
[KERNEL:<version>+<build>] | La versión y la compilación del controlador: el commit de una versión publicada, o dev. |
[KNCAP:…] | Lo que tiene la placa (más abajo). |
[PLUGIN:…] | Funciones con el nombre con que las conocen los programas de envío: MODBUS y HUANYANG VFD para el variador del husillo. |
Lo que tiene la placa: KNCAP
[KNCAP:] es una línea de pares key=value, separados por comas. Las claves solo se añaden al final y nunca cambian de significado. Lea la línea por clave, no por posición. Una clave que falta significa “desconocido”.
| Clave | Valores | Significado |
|---|---|---|
port | teensy41, stm32h7, stm32f4, twin, host, sim, unknown | Qué compilación del controlador es esta. |
pv | un número | La versión de la interfaz del port del controlador. |
view | un número | La versión de la vista de estado del controlador. |
spindle | vfd, pwm, none | El variador del husillo: Modbus, una salida PWM o ninguno. |
encoder | 0, 1 | Hay un encoder del husillo montado. |
sd | 0, 1 | La placa tiene una ranura para tarjeta SD. |
mpg | 0, 2 | Un puerto de volante, indicado por su número de modo. |
aux | di/do/ai/ao | Entradas y salidas auxiliares: entrada digital, salida digital, entrada analógica, salida analógica. |
axes | letras | Los ejes, por ejemplo XYZ. |
probe | 0, 1 | Una entrada de palpador. En el MC-1 también la usa el sensor de longitud de herramienta. |
link | usb, uart, tcp, none | La conexión del programa de envío. usb es un puerto serie USB que responde en cuanto DTR está activo. |
El modo sombra compara [KERNEL:] y [KNCAP:] entre una máquina real y su gemelo (consulte Máquina real y modo sombra).
Informes de estado
Un informe de estado llega tras ?, 0x80 o 0x87. Con los informes automáticos activados ($481, 0x8C), llega también por sí solo. Es una sola línea:
<Idle|MPos:0.000,0.000,0.000|Bf:100,1023|FS:0,0|Pn:XYZ>
Primero va el estado:
Idle,Run,Jog,Home,Check(modo de comprobación),Sleep,Tool(un cambio de herramienta);Hold:0(retenido) yHold:1(frenando);Door:0(cerrada, lista para reanudar),Door:1(detenido, aún abierta),Door:2(abierta: reteniendo o estacionando) yDoor:3(cerrada, restableciendo);Alarm.
Los campos que siguen dependen de $10 y de la situación:
| Campo | Significado |
|---|---|
MPos: o WPos: | Posición de máquina o de pieza (bit 0 de $10). |
Bf: | Bloques libres del planificador, bytes libres del búfer de recepción. |
Ln: | El número de línea del bloque que se ejecuta. |
FS: | La velocidad de avance, la velocidad del husillo pedida y la velocidad que indica el variador. Un husillo que solo se enciende y se apaga muestra F:. En una retención de avance el avance es 0. |
Pn: | Entradas activas: los límites por letra de eje, P palpador, D puerta, H retención de avance, S inicio de ciclo, R reinicio, E parada de emergencia. |
WCO: | El decalaje de origen: cada pocos informes y después de un cambio. |
Ov: | Los ajustes de avance, de rápidos y del husillo, en %: cada pocos informes y después de un cambio. |
A: | Accesorios: S o C husillo en sentido horario o antihorario, F refrigeración por chorro, M refrigeración por niebla. |
Sl: | La carga del variador del husillo. |
DTG: | La distancia por recorrer, hasta que los ejes se detienen (bit 13 de $10). |
H: | Si la referencia está hecha o no. |
T: | La herramienta, durante un cambio de herramienta. |
TLR: | Hay una longitud de herramienta de referencia fijada ($TLR). |
MPG: | El volante tiene el control (1) o no (0). |
In: | El resultado del último M66. |
WCS:, Sc:, D: | El sistema de coordenadas de pieza, el escalado, el modo de diámetro de torno (informes completos). |
AR, AR: | Informes automáticos desactivados, o activados con su intervalo (informes completos). |
FW: | El nombre del firmware (informes completos). |
SD: | Hasta dónde ha llegado un programa que se ejecuta desde el sistema de archivos del controlador. |
Otras líneas que envía el controlador
| Línea | Cuándo |
|---|---|
ALARM:N | Una alarma. Códigos de alarma lista todos los N. |
[MSG:…] | Un mensaje: del propio controlador, o (MSG,…), (PRINT,…) o (DEBUG,…) de un programa. |
[GC:…] | El estado modal, tras $G o 0x83. Con el bit 9 de $10, una vez después de cada cambio. |
[PRB:x,y,z:1] | El punto donde se disparó el palpador, y si tocó (1) o no (0). |
[TLO:…] | La compensación de longitud de herramienta. |
[PARAM:n=value] | Tras $#=n. |
[G54:…] … [G59.3:…], [G28:…], [G30:…], [G92:…], [T:…] | Tras $#: los decalajes, las posiciones guardadas, la tabla de herramientas. |
>line:ok, >line:error:N | Se ejecutó una línea de inicio ($N0, $N1) al iniciar. |
Comandos $
$HELP Commands los lista en el propio controlador.
| Comando | Qué hace |
|---|---|
$, $HELP, $HELP <group> | Ayuda; los comandos; un grupo de ajustes con detalles. |
$$, $<n>, $<n>=<value>, $$=<n>, $+ | Todos los ajustes; un ajuste; cambiarlo; los detalles de un ajuste; todos los ajustes otra vez. |
$SED=<n> | Describir un ajuste. |
$#, $#=<n>, $#=<name> | Los decalajes, el resultado del palpado, las posiciones guardadas; un parámetro. |
$G | El estado modal. |
$I, $I+, $I=<text> | Qué es el controlador (arriba); todo; guardar un texto con él. |
$N, $N0=<line>, $N1=<line> | Mostrar o guardar las líneas de inicio. |
$C | Modo de comprobación: se comprueba el código G y nada se mueve. Un reinicio lo termina. |
$X | Desbloquear tras una alarma. |
$H, $HX, $HY, $HZ | Hacer la referencia de todos los ejes o de uno solo. |
$J=<G-code> | Desplazamiento manual. |
$B, $S, $O | Salto de bloque, bloque a bloque, parada opcional: activar o desactivar. |
$SLP | Suspensión. |
$TLR, $TPW | Tomar el último palpado como longitud de herramienta de referencia; medir la herramienta nueva en la placa de contacto. |
$RST=$, $RST=#, $RST=* | Los ajustes de fábrica de la MC-1 (referenciado y límites activados, sus recorridos); borrar los decalajes; ambos, y las líneas de inicio. |
$EA, $EAG, $EE, $EEG, $EG, $ES, $ESG, $ESH, $E* | Listar las alarmas, los códigos de error, los grupos de ajustes y los ajustes, como líneas o como CSV. |
$SPINDLES, $SPINDLESH | Los husillos. |
$PINS, $PINSTATE, $PORTS | Los pines de la placa; las entradas y salidas auxiliares; los puertos serie. |
$LIM, $HSS, $LEV | Las entradas de límite, los interruptores de referencia, los últimos eventos de entrada. |
$RTC, $RTC=<date and time> | El reloj del controlador (ISO 8601). |
$REBOOT | Reiniciar el controlador. |
$F, $F+, $F=<file>, $F<=<file>, $FR | Listar los programas del sistema de archivos del controlador, ejecutar uno, enviar uno de vuelta, empezar de nuevo. |
$FD=, $FMD=, $FRD=, $FF=yes, $FI, $FM, $FU, $CWD=, $PWD | Eliminar, crear o quitar una carpeta, formatear, información, montar, desmontar, carpeta de trabajo. |
Todos los ajustes están en Ajustes.