Este es el manual de Studio 1.0.2, una versión anterior. El manual de la última versión

Documentación 1.0.2 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óndeCómo
El gemelo en StudioPuerto TCP 2323 de este equipo, un programa de envío a la vez.
El MC-1Su 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 ok o error: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), 0x03 o 0x85 (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.

ByteComandoQué hace
0x18 (Ctrl-X)ReinicioLo 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 activadaComo Ctrl-X; también se acepta mientras la parada de emergencia está activada.
0x19 (Ctrl-Y)ParadaLos 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 0x14RearranqueReinicia el controlador, en las placas que pueden reiniciarse por sí mismas.
?Informe de estadoUn informe de estado.
0x80 (o 0x05)Informe de estadoUn informe de estado, salvo mientras los informes automáticos están activados.
0x87Informe de estado completoUn informe de estado con todos los campos.
~, 0x81Inicio de cicloReanuda tras una retención de avance, la puerta, M0/M1 o un cambio de herramienta.
!, 0x82Retención de avanceLos ejes frenan hasta detenerse y quedan retenidos. Durante un desplazamiento manual (jog), lo cancela.
0x83Estado del analizadorInforma del estado modal, como hace $G.
0x84Puerta de seguridadActúa como la apertura de la puerta: retiene y, si el estacionamiento está configurado, estaciona.
0x85Cancelar desplazamiento manualTermina un desplazamiento manual y descarta las líneas de desplazamiento que siguen en cola.
0x88Parada opcionalActiva o desactiva las pausas de M1.
0x89Bloque a bloqueActiva o desactiva el bloque a bloque.
0x8BModo del volante electrónicoCon un volante conectado: cambia su modo. En caso contrario se ignora.
0x8CInformes automáticosActiva o desactiva los informes de estado automáticos, cuando $481 fija su intervalo. En caso contrario se ignora.
0x90Ajuste de avance 100 %
0x91, 0x92Ajuste de avance +10 %, −10 %Rango de 10–200 %.
0x93, 0x94Ajuste de avance +1 %, −1 %Rango de 10–200 %.
0x95, 0x96, 0x97, 0x98Ajuste de rápidos100 %, 50 %, 25 %, 5 %.
0x99Ajuste del husillo 100 %
0x9A, 0x9BAjuste del husillo +10 %, −10 %Rango de 10–200 %.
0x9C, 0x9DAjuste del husillo +1 %, −1 %Rango de 10–200 %.
0x9EParada del husilloSolo en una retención de avance: detiene el husillo o lo vuelve a poner en marcha.
0x9FParada de emergencia por softwareSe detiene de inmediato y genera la alarma de parada de emergencia.
0xA0Refrigeración, por chorroActiva o desactiva la refrigeración por chorro.
0xA1Refrigeración, por nieblaActiva o desactiva la refrigeración por niebla.
0xA3Cambio de herramienta terminadoConfirma 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–0xBF que 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íneaQué 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”.

ClaveValoresSignificado
portteensy41, stm32h7, stm32f4, twin, host, sim, unknownQué compilación del controlador es esta.
pvun númeroLa versión de la interfaz del port del controlador.
viewun númeroLa versión de la vista de estado del controlador.
spindlevfd, pwm, noneEl variador del husillo: Modbus, una salida PWM o ninguno.
encoder0, 1Hay un encoder del husillo montado.
sd0, 1La placa tiene una ranura para tarjeta SD.
mpg0, 2Un puerto de volante, indicado por su número de modo.
auxdi/do/ai/aoEntradas y salidas auxiliares: entrada digital, salida digital, entrada analógica, salida analógica.
axesletrasLos ejes, por ejemplo XYZ.
probe0, 1Una entrada de palpador. En el MC-1 también la usa el sensor de longitud de herramienta.
linkusb, uart, tcp, noneLa 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) y Hold:1 (frenando);
  • Door:0 (cerrada, lista para reanudar), Door:1 (detenido, aún abierta), Door:2 (abierta: reteniendo o estacionando) y Door:3 (cerrada, restableciendo);
  • Alarm.

Los campos que siguen dependen de $10 y de la situación:

CampoSignificado
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íneaCuándo
ALARM:NUna 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:NSe ejecutó una línea de inicio ($N0, $N1) al iniciar.

Comandos $

$HELP Commands los lista en el propio controlador.

ComandoQué 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.
$GEl 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.
$CModo de comprobación: se comprueba el código G y nada se mueve. Un reinicio lo termina.
$XDesbloquear tras una alarma.
$H, $HX, $HY, $HZHacer la referencia de todos los ejes o de uno solo.
$J=<G-code>Desplazamiento manual.
$B, $S, $OSalto de bloque, bloque a bloque, parada opcional: activar o desactivar.
$SLPSuspensión.
$TLR, $TPWTomar 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, $SPINDLESHLos husillos.
$PINS, $PINSTATE, $PORTSLos pines de la placa; las entradas y salidas auxiliares; los puertos serie.
$LIM, $HSS, $LEVLas entradas de límite, los interruptores de referencia, los últimos eventos de entrada.
$RTC, $RTC=<date and time>El reloj del controlador (ISO 8601).
$REBOOTReiniciar el controlador.
$F, $F+, $F=<file>, $F<=<file>, $FRListar 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=, $PWDEliminar, crear o quitar una carpeta, formatear, información, montar, desmontar, carpeta de trabajo.

Todos los ajustes están en Ajustes.