¿Porque estamos hablando de g-code cuando en realidad todo el trabajo el sw de Cura? Pues básicamente porque para cada pieza se suelen hacer muchos ajustes en Cura que quedan guardados , al menos parcialmente, en estos ficheros ( y quizas no recordemos ) , por lo que es posible con los g-code deducir que ajustes se usaron en la obtención de esa pieza y con ello extrapolar la configuración usada.
Si conoce versiones anteriores de Cura , en efecto esta exportación de ajustes era posible a través del fichero g-code pero desgraciadamente en las versiones mas actuales ya NO es posible, pero no se preocupe, porque vamos a ver como podemos deducir mucha información de ajustes de Cura desde los ficheros .gcode sin instalar nada
Pues en efecto para deducir los ajustes de nos apoyaremos de gCodeViewer , sw en linea que es un visualizador y analizador visual de GCode que podemos usar en nuestro propio navegador funcionando por tanto en cualquier sistema operativo y en casi cualquier navegador moderno (chrome, ff, safari 6, opera, ie10 ).
Todo lo que necesitamos pues hacer es arrastrar su archivo * .gcode a la zona designada y podemos ya estudiar fácilmente el gcode.
Las características actuales incluyen:
- Visualización GCode en 2D, capa por capa
- Mostrar retractaciones y reinicios
- Mostrar velocidades de impresión / movimiento / retracción
- Mostrar solo parte de la capa, secuencia animada de impresión de capa
- Muestra dos capas simultáneamente para que pueda verificar los voladizos
- Ajuste el ancho de línea para simular la impresión más de cerca
Una vez cargado el fichero , el visor de Gcode i ntentará analizar los diámetros de boquilla y filamento de gcode, pero puede que no lo haga por lo que en ese caso, deberá configurarlo manualmente en la pestaña 'Información de la impresora'
Este programa pues nos permite analizar GCode: Tiempo de impresión, cantidad de plástico utilizado, altura de capa, etc. para todo el archivo y para una sola capa
Una funcionalidad interesante de este sw es que podemos hacer referencia a una parte visualizada en el archivo GCode :es decir, seleccionamos una parte determinada de la visualización 2D, cambiamos a la vista GCode y resaltará la lista de líneas responsables de la pieza visualizada
Este sw Multiplataforma, disponible en línea , t ambién funciona sin conexión localmente no carga el código g en ningún lado ni descarga nada excepto la aplicación en sí por lo que es una herramienta muy interesante para nuestro cometido
EJEMPLO INGENIERÍA INVERSA DE FICHEROS GCODE
Veamos como ejemplo analizar 4 ficheros g-code de 4 objetos diferentes laminados con diferentes versiones de Cura (Cura_SteamEngine 4.6.0,Cura_SteamEngine 4.6.1 y Cura_SteamEngine 4.4.1.)
Para ver mas fácilmente las diferencias del código gcode copiaremos en columnas diferentes de excel las primeras lineas obtenidas con el gcode analyzer
Como la impresora 3d ( una Geetech Prusa I3 pro w) es la misma , a grandes rasgos la información hasta la linea 12 no deberia ser demasiado relevante para este análisis ya que hace referencia a los movimientos máximos y mínimos de x, y , z, pero podemos en el código que hay grandes diferencias:
Estos parámetros como el lector conoce definen los desplazamientos maximos y minimos de los tres ejes , por lo que deberian coincidir en los cuatro casos , lo cual evidencia que podria haber errores en los dos primeros ejemplos
Especialmente interesante es tambien la linea 12 qeu nos diece con diferentes versiones de Cura (Cura_SteamEngine 4.6.0,Cura_SteamEngine 4.6.1 y Cura_SteamEngine 4.4.1.)
Bien y ahora desde la linea 12 ( versi9on de Cura ) hasta la linea 34 si veremos un bloque común , que es preciosamente el que definimos en cura para iniciar la impresora y que por tanto debería coincidir en las diferentes versiones:
Bueno este es un bloque comun ( el definido en cura como bloque inicial) ,pero a partir de esta linea segun la version puede haber diferencias
En este caso claramente se ha configurado el tipo de adherencia a la placa de impresion como skirt ( falda)
Y a partir de este bloque ya deberían localizarse los movimientos x,y, z según la pieza elegida y que por tanto dependerá de cada modelo
Bueno y ahora vamos al bloque final, que también es definido por Cura y por tanto debiera ser común en todas las versiones ;
Finalmente finalizado este bloque y esto es lo interesante esta comentado en metadatos todos los ajustes importantes realizados en cura ;
End of Gcode
;SETTING_3 {"global_quality": "[general]\\nversion = 4\\nname = Fine #2\\ndefini
;SETTING_3 tion = prusa_i3\\n\\n[metadata]\\nquality_type = normal\\ntype = qual
;SETTING_3 ity_changes\\n\\n[values]\\nlayer_height = 0.28\\nmaterial_bed_temper
;SETTING_3 ature = 70\\n\\n", "extruder_quality": ["[general]\\nversion = 4\\nna
;SETTING_3 me = Fine #2\\ndefinition = prusa_i3\\n\\n[metadata]\\nquality_type =
;SETTING_3 normal\\nposition = 0\\ntype = quality_changes\\n\\n[values]\\ninfil
;SETTING_3 l_pattern = grid\\ninfill_sparse_density = 50\\nmaterial_flow = 80\\n
;SETTING_3 material_print_temperature = 220\\noptimize_wall_printing_order = Tru
;SETTING_3 e\\nretraction_amount = 7\\nretraction_hop_enabled = True\\nroofing_l
;SETTING_3 ayer_count = 1\\nspeed_print = 50\\ntop_bottom_thickness = 1.2\\nwall
;SETTING_3 _thickness = 1.2\\n\\n"]}
Por desgracia no siguen el mismo orden en las diferentes versiones de cura, asi que tendremos que extraer de aqui el valor de lo diferentes campos despreciando la cadena SETTING_3 asi como eliminano los retornos de linea
{"global_quality": "[general]\\nversion = 4\\nname = Fine #2\\ndefinition = prusa_i3\\n\\n[metadata]\\nquality_type = normal\\ntype = quality_changes\\n\\n[values]\\nlayer_height = 0.28\\nmaterial_bed_temperature = 70\\n\\n", "extruder_quality": ["[general]\\nversion = 4\\nname = Fine #2\\ndefinition = prusa_i3\\n\\n[metadata]\\nquality_type =normal\\nposition = 0\\ntype = quality_changes\\n\\n[values]\\ninfill_pattern = grid\\ninfill_sparse_density = 50\\nmaterial_flow = 80\\nmaterial_print_temperature = 220\\noptimize_wall_printing_order = Tru
e\\nretraction_amount = 7\\nretraction_hop_enabled = True\\nroofing_layer_count = 1\\nspeed_print = 50\\ntop_bottom_thickness = 1.2\\nwall_thickness = 1.2\\n\\n"]}
De esto ya finalmente si los ordenamos en campos deducimos los parámetros ajustados:
Con esto claramente podemos pues deducir cuales fueron los parámetros que se ajustaron con esa pieza, así como si deseamos comparar con otros gcodes de otras piezas:
Como vemos , no todos los parámetros en Cura se ajustaron , lo cual queda muy evidenciado precisamente en esos valores claramente diferentes en las 4 columnas y que están en algunas piezas y en otras no
Por cierto para terminar este caso , los datos correspondientes a los dos primeros ejemplos la piezas delatan que no se pudieron imprimir correctamente por esa incorrecta parametrización de Cura
.
Campos de G Code RepRap
En esta sección se explican los campos que van precedidos por una letra. Los números en los campos son representados por nnn . Los Números de Ser pueden Enteros (enteros) (128) o Números racionales (12,42), dependiendo del contexto. Por ejemplo, la coordenada X puede ser entera ( X175 ) o racional ( X17.62 ), pero seleccione el extrusor número 2.76 sin sentido sentido.
Comentarios
Los comentarios en Gcode comienzan con punto y coma y terminan al final de la línea:
N3 T0 * 57; Esto es un comentario N4 G92 E0 * 67 ; Esto también lo es N5 G28 * 22
Los comentarios y espacios en blanco serán ignorados por su impresora RepRap. Es mejor quitarlos en el ordenador portátil antes de enviar el Gcode a tu impresora, ya que así se ahorra ancho de banda.
Comandos individuales
Comprobación
Ejemplo: N123 [... Código G aquí ...] * 71
Estos son el número de línea y la suma de verificación. El firmware RepRap comprueba la suma de comprobación con un valor calculado localmente y, si difieren, solicita una transmisión repetida de la línea del número dado.
Puede omitir ambos: RepRap seguirá funcionando, pero no hará la comprobación. Sin embargo, debes tener ambos o ninguno.
La suma de comprobación "cs" para una cadena de GCode "cmd" (incluido su número de línea) se calcula exorbitando los bytes en la cadena hasta y sin incluir el carácter * de la siguiente manera:
int cs = 0; para (i = 0; cmd [i]! = '*' & cmd [i]! = NULL; i ++) cs = cs ^ cmd [i]; cs & = 0xff; // Programación defensiva ...
y el valor se agrega como un entero decimal al comando después del carácter *.
El firmware RepRap espera que los números de línea aumenten en 1 cada línea, y si eso no sucede, se marca como un error. Pero puede restablecer el recuento utilizando M110 (ver más abajo).
Comandos G almacenados
El firmware RepRap almacena estos comandos en un buffer de anillo internamente para su ejecución. Esto significa que no hay retraso (apreciable) mientras se reconoce un comando y se transmite el siguiente. A su vez, esto significa que las secuencias de segmentos de línea se pueden trazar sin pausa entre uno y el siguiente. Tan pronto como se recibe uno de estos comandos almacenados, se reconoce y almacena localmente. Si el búfer local está lleno, el reconocimiento se retrasa hasta que haya espacio para el almacenamiento en el búfer disponible. Así es como se logra el control de flujo.
G0 y G1: mover
La especificación de firmware RepRap trata a G0 y G1 como el mismo comando, ya que es tan eficiente como no hacerlo. 2
La mayoría de los firmwares RepRap hacen cosas sutiles con los avances.
1. G1 F1500 2. G1 X50 Y25.3 E22.4
En el ejemplo anterior, establecemos el avance a 1500 mm / minuto en la línea 1, luego nos movemos a 50 mm en el eje X y a 25,3 mm en el eje Y mientras extruimos 22,4 mm de filamento entre los dos puntos.
1. G1 F1500 2. G1 X50 Y25.3 E22.4 F3000
Sin embargo, en el ejemplo anterior, establecemos una velocidad de avance de 1500 mm / minuto en la línea 1, luego hacemos el movimiento descrito anteriormente acelerando a una velocidad de avance de 3000 mm / minuto mientras lo hace. La extrusión se acelerará junto con el movimiento X e Y, por lo que todo permanecerá sincronizado.
La especificación RepRap trata el avance como simplemente otra variable (como X, Y, Z y E) para ser interpolada linealmente. Esto proporciona un control completo sobre la aceleración y desaceleración del cabezal de la impresora de tal manera que se garantiza que todo se mueva suavemente y que se extruya el volumen correcto de material en todos los puntos. 3
Para invertir la extrusora en una cantidad dada (por ejemplo, para reducir su presión interna mientras realiza un movimiento en el aire para que no gotee) simplemente use G0 o G1 para enviar un valor E que sea menor que la longitud extruida actualmente .
- Algunos firmwares permiten que RepRap active o desactive la "detección" de paradas finales durante un movimiento. Verifique con el firmware que esté utilizando para ver si son compatibles con la variable S de esta manera, ya que puede dañarse si asume incorrectamente. En el firmware Duet-dc42, el uso del parámetro S1 o S2 en una impresora delta hace que los parámetros XYZ se refieran a las posiciones individuales del motor de la torre en lugar de la posición del cabezal, y también permitan la detección de tope final si el parámetro es S1.
- En la especificación RS274NGC, G0 es Movimiento rápido , que se utilizó para moverse entre el punto actual en el espacio y el nuevo punto de la manera más rápida y eficiente posible, y G1 es Movimiento controlado , que se utilizó para moverse entre el punto actual en el espacio y el nuevo punto lo más preciso posible
- Es posible algunos firmwares no admitan establecer el avance en línea con un movimiento.
- La bifurcación zpl del firmware Duet implementa un parámetro adicional 'R1' para indicarle a la máquina que regrese a las coordenadas en las que originalmente se detuvo la impresión.
Algunas máquinas antiguas, CNC o de otro tipo, solían moverse más rápido si no se movían en línea recta. Esto también es cierto para algunas impresoras no cartesianas, como las impresoras delta o polares, que se mueven más fácil y más rápido en una curva.
G2 y G3: movimiento de arco controlado
1 El firmware Marlin puede alternar el soporte para estos Gcodes. Para habilitar el soporte, asegúrese de definir SCARA en el momento de la compilación, de lo contrario, se ignorarán los Gcodes.
G28: Mover al origen (Inicio)
Cuando el firmware RepRap recibe este comando, mueve todos los ejes (o los suministrados) de regreso a los topes extremos cero tan rápido como puede, luego retrocede un milímetro y lentamente retrocede a los puntos de activación del tope final cero para aumentar la precisión de la posición. Este proceso también se conoce como " Homing ".
Si agrega coordenadas, estas coordenadas se ignoran. Por ejemplo, G28 Z0.00
da como resultado el mismo comportamiento que G28 Z
.
Cuando se utiliza el firmware Duet-dc42 para controlar una impresora delta, cualquier comando G28 alojará las tres torres, independientemente de las letras XYZ.
G29: Sonda Z detallada
Sondea la cama en 3 o más puntos.
G30: Sonda Single Z
En su forma más simple, las sondas se acuestan en la ubicación XY actual.
Algunas implementaciones permiten un comportamiento más general: si se especifica un campo Pn, los valores sondeados X, Y y Z se guardan como punto n en la cama para calcular el plano de desplazamiento. Generalmente n es 0, 1 o 2. Si se especifican valores X, Y, o Z (por ejemplo, G30 P1 X20 Y50 Z0.3), esos valores se utilizan en lugar de las coordenadas actuales de la máquina. Un valor Z tonto (menor que -9999.0) hace que la máquina pruebe en el punto actual para obtener Z, en lugar de usar el valor dado. Si se especifica un campo S (por ejemplo, G30 P1 Z0.3 S), el plano del lecho se calcula para compensación y se almacena. La combinación de estas opciones permite que la máquina se mueva a puntos usando comandos G1, y luego sondee la cama, o que el usuario coloque la boquilla de manera interactiva y use esas coordenadas.El usuario también puede registrar esos valores y colocarlos en un archivo GCode de configuración para su ejecución automática.
La variante dc42 de RepRapFirmware utiliza el valor del parámetro S para especificar qué cálculo realizar. Si el valor es cero o no hay ningún valor después de la letra S, el plano de la cama se calcula y almacena como de costumbre. En una impresora delta, si el parámetro es 4, se realiza la autocalibración para determinar el radio delta, las correcciones de tope final y la altura de referencia. El número de coordenadas sondeadas debe ser 4, de las cuales las tres primeras deben estar frente a las torres X, Y y Z, respectivamente, y la cuarta debe estar en el centro de la cama.
G31: Informar el estado actual de la sonda
Cuando se usa por sí solo, esto informa si la sonda Z se activa o da el valor de la sonda Z en algunas unidades si la sonda genera valores de altura. Si se combina con un campo Z y P (ejemplo: G31 P312 Z0.7), esto establecerá la altura Z en 0.7 mm cuando el valor de la sonda Z alcance 312 cuando se envíe un comando G28 Z0 (cero eje Z). Luego, la máquina se moverá otros -0.7 mm en Z para colocarse en Z = 0. Esto permite que las sondas de medición sin contacto se acerquen pero no toquen la cama, y que se permita el espacio restante. Si la sonda es una sonda táctil y genera una señal simple de 0/1 apagado / encendido, entonces G31 Z0.7 le dirá a la máquina RepRap que está a una altura de 0.7 mm cuando se activa la sonda.
En el firmware Duet-dc42, se pueden definir parámetros G31 separados para los tipos de sonda 0, 1/2 y 3 (los tipos de sonda 1 y 2 comparten el mismo conjunto de parámetros). Para especificar para qué sonda está configurando los parámetros, envíe un comando M558 para seleccionar el tipo de sonda antes de enviar el comando G31.
El firmware Duet-dc42 admite parámetros adicionales S (temperatura del lecho en ° C a la cual el parámetro Z especificado es correcto, el valor predeterminado es la temperatura actual del lecho) y C (coeficiente de temperatura del parámetro Z en mm / ° C, cero predeterminado). Esto es útil para sondas ultrasónicas y otras que se ven afectadas por la temperatura.
Las versiones de firmware Duet-dc42 1.00b en adelante también permiten especificar los desplazamientos X e Y de la sonda Z en relación con el cabezal de impresión (es decir, la posición cuando se selecciona la herramienta vacía), agregando los parámetros X e Y. Esto le permite calcule las coordenadas de su sonda M557 en función de la geometría de la cama, sin tener que corregirlas para el desplazamiento de la sonda Z X e Y. También proporciona una compensación de cama más precisa.
G32: sondee Z y calcule el plano Z
Sondea el lecho en 3 o más puntos predefinidos (ver M557) y actualiza la matriz de transformación para la compensación de nivelación del lecho. Las versiones posteriores de RepRapFirmware ejecutan el archivo de macro bed.g si está presente en lugar de usar las coordenadas M557.
Comandos G sin búfer
Los siguientes comandos no están almacenados. Cuando se recibe uno, se almacena, pero no se reconoce al host hasta que se agota el búfer y luego se ejecuta el comando. Por lo tanto, el host hará una pausa en uno de estos comandos hasta que se haya completado. Las pausas breves entre estos comandos y cualquiera que pueda seguirlos no afectan el rendimiento de la máquina.
Ejemplo: G4 P200
En este caso, siéntate sin hacer nada durante 200 milisegundos. Durante los retrasos, el estado de la máquina (por ejemplo, las temperaturas de sus extrusoras) aún se conservará y controlará.
En Marlin y Smoothie, el parámetro "S" esperará unos segundos, mientras que el parámetro "P" esperará milisegundos. "G4 S2" y "G4 P2000" son equivalentes.
G10: Desplazamiento de herramienta
Ejemplo: G10 P3 X17.8 Y-19.3 Z0.0 R140 S205
Esto establece el desplazamiento de la herramienta (o en implementaciones anteriores de extrusión de cabeza) 3 (desde el P3) a los valores X e Y especificados. También puede poner un valor Z distinto de cero, pero esto generalmente es una mala idea a menos que las herramientas sean cargadas y descargadas por algún tipo de cambiador de herramientas. Cuando todas las herramientas están en la máquina a la vez, todas deben configurarse a la misma altura Z.
Recuerde que cualquier parámetro que no especifique se establecerá automáticamente en el último valor para ese parámetro. Eso generalmente significa que desea establecer explícitamente Z0.0.
El valor R es la temperatura de espera en o C que se utilizará para la herramienta, y el valor S es su temperatura de funcionamiento. Si no desea que la herramienta tenga una temperatura diferente cuando no esté en uso, configure ambos valores de la misma manera. Vea el código T (herramienta de selección) a continuación. En herramientas con múltiples calentadores, las temperaturas para todos ellos se especifican así: R100.0: 90.0: 20.0 S185.0: 200.0: 150.0.
El estándar NIST G-code menciona un parámetro L adicional, que se ignora.
Este comando está sujeto a discusión .
Tenga en cuenta que Marlin y Smoothie usan G10 / G11 para ejecutar un movimiento de retracción / no retracción. La versión RepRapPro de Marlin admite G10 para el desplazamiento de la herramienta.
G20: Establecer unidades en pulgadas
Ejemplo: G20
Las unidades de ahora en adelante están en pulgadas.
G21: establecer unidades en milímetros
Ejemplo: G21
Las unidades de ahora en adelante están en milímetros. (Este es el valor predeterminado de RepRap).
G90: Establecer en posicionamiento absoluto
Ejemplo: G90
Todas las coordenadas a partir de ahora son absolutas en relación con el origen de la máquina. (Este es el valor predeterminado de RepRap).
G91: Establecer en posicionamiento relativo
Ejemplo: G91
Todas las coordenadas a partir de ahora son relativas a la última posición.
G92: Establecer posición
Ejemplo: G92 X10 E90
Permite la programación del punto cero absoluto, restableciendo la posición actual a los valores especificados. Esto establecería la coordenada X de la máquina en 10 y la coordenada de extrusión en 90. No se producirá movimiento físico.
Un G92 sin coordenadas restablecerá todos los ejes a cero.
Comandos M y T sin búfer
Ejemplo: M0
La máquina RepRap finaliza los movimientos que quedan en su búfer, luego se apaga. Todos los motores y calentadores están apagados. Se puede volver a iniciar presionando el botón de reinicio en el microcontrolador maestro. Ver también M1, M112.
Ejemplo: M1
La máquina RepRap finaliza los movimientos que quedan en su búfer, luego se apaga. Todos los motores y calentadores están apagados. Todavía se pueden enviar códigos G y M, el primero de los cuales lo despertará nuevamente. Ver también M0, M112.
M3: Husillo encendido, en sentido horario (CNC específico)
Ejemplo: M3 S4000
El husillo se enciende con una velocidad de 4000 RPM.
M4: Husillo encendido, en sentido antihorario (CNC específico)
Ejemplo: M4 S4000
El husillo se enciende con una velocidad de 4000 RPM.
M5: Husillo apagado (CNC específico)
Ejemplo: M5
El husillo está apagado.
M7: Refrigerante de niebla activado (CNC específico)
Ejemplo: M7
El refrigerante de niebla está encendido (si está disponible)
M8: Refrigerante de inundación activado (específico de CNC)
Ejemplo: M8
El refrigerante de inundación está encendido (si está disponible)
M9: Refrigerante apagado (específico del CNC)
Ejemplo: M9
Todos los sistemas de refrigerante están apagados.
M10: Vacío activado (específico de CNC)
Ejemplo: M10
Sistema de aspiración de recolección de polvo encendido.
M11: Vacío desactivado (CNC específico)
Ejemplo: M11
Sistema de aspiración de recolección de polvo apagado.
M17: activar / alimentar todos los motores paso a paso
Ejemplo: M17
M18: deshabilitar todos los motores paso a paso
Ejemplo: M18
Inhabilita los motores paso a paso y permite que el eje se mueva 'libremente'.
M20: Lista de tarjeta SD
Ejemplo: M20
Todos los archivos en la carpeta raíz de la tarjeta SD se enumeran en el puerto serie. Esto da como resultado una línea como:
ok Archivos: {SQUARE.G, SQCOM.G,}
La coma final es opcional. Tenga en cuenta que los nombres de los archivos se devuelven en mayúsculas, pero cuando se envían al comando M23 (a continuación) deben estar en minúsculas. Esto parece ser una función del software SD. Imagínate...
El firmware Duet-dc42 devuelve los nombres de archivo (largos) en el caso correcto. Si el parámetro S2 está presente, la lista de archivos se devuelve en formato JSON, como una matriz única llamada "archivos". El parámetro opcional P especifica el directorio a listar, por defecto en el directorio / gcodes.
M21: inicializar tarjeta SD
Ejemplo: M21
La tarjeta SD se inicializa. Si se carga una tarjeta SD cuando la máquina está encendida, esto sucederá de manera predeterminada. La tarjeta SD debe inicializarse para que funcionen las otras funciones SD.
M22: liberar tarjeta SD
Ejemplo: M22
La tarjeta SD se libera y se puede extraer físicamente.
M23: seleccione el archivo SD
Ejemplo: M23 filename.gco
El archivo especificado como filename.gco (se admite la convención de nomenclatura 8.3) está listo para imprimir.
El firmware Duet-dc42 admite nombres de archivo largos y formato 8.3.
M24: Iniciar / reanudar impresión SD
Ejemplo: M24
La máquina imprime desde el archivo seleccionado con el comando M23.
M25: Pausa impresión SD
Ejemplo: M25
La máquina detiene la impresión en la posición actual dentro del archivo seleccionado con el comando M23.
M26: establecer la posición SD
Ejemplo: M26
Establecer la posición SD en bytes (M26 S12345).
M27: informe del estado de impresión SD
Ejemplo: M27
Informe el estado de impresión SD.
M28: Comience a escribir en la tarjeta SD
Ejemplo: M28 filename.gco
El archivo especificado por filename.gco se crea (o se sobrescribe si existe) en la tarjeta SD y todos los comandos posteriores enviados a la máquina se escriben en ese archivo.
M29: deja de escribir en la tarjeta SD
Ejemplo: M29 filename.gco
El archivo abierto por el comando M28 se cierra y todos los comandos posteriores enviados a la máquina se ejecutan normalmente.
M30: eliminar un archivo en la tarjeta SD
Ejemplo: M30 filename.gco
filename.gco se elimina.
M31: tiempo de salida desde el último inicio de M109 o tarjeta SD a serie
Ejemplo: M31
La respuesta se ve así:
eco: 54 min, 38 seg
M32: seleccione el archivo e inicie la impresión SD
(Se puede usar al imprimir desde la tarjeta SD)
Ejemplo: M32 filename.gco
tba disponible en marlin (14/6/2014)
Usado por algunas variantes del firmware Marlin. Propósito desconocido.
Usado por algunas variantes del firmware Marlin. Propósito desconocido.
M36: devolver información del archivo
Ejemplo: M36 filename.gco
Devuelve información para el archivo de tarjeta SD especificado en formato JSON. Una respuesta de muestra es:
{"err": 0, "size": 457574, "height": 4.00, "layerHeight": 0.25, "filament": [6556.3], "generateBy": "Slic3r 1.1.7 el 09/11/2014 a las 17 : 11: 32 "}
El campo "err" es cero si tiene éxito, distinto de cero si no se encontró el archivo o se produjo un error al procesarlo. El campo "tamaño" siempre debe estar presente si la operación fue exitosa. La presencia o ausencia de otros campos depende de si se pueden encontrar los valores correspondientes leyendo el archivo. El campo "filamento" es una matriz de las longitudes de filamento requeridas de cada carrete. El tamaño está en bytes, todos los demás valores están en mm. Los campos pueden aparecer en cualquier orden y pueden estar presentes campos adicionales.
M37: Modo Simulación
Usado para cambiar entre el modo de impresión y el modo de simulación. El modo de simulación permite la electrónica calcular un tiempo de impresión preciso, teniendo en cuenta las velocidades máximas, aceleraciones, etc., que están configuradas.
M37 S1 entra en modo de simulación. Ningún código G o M funcionara, pero el tiempo que llevarían a ser ejecutados si serán tomados en cuenta para el cálculo final.
M37 S0 Venta de modo simulación.
M37 sin el parámetro S devuelve el tiempo que ha llevado a calcular la simulación, desde que se introdujo el comando M37 S1, hasta el momento actual (si el modo de simulación aún permanece en ejecución) o el punto en el cual la simulación ya acabó (Si el modo simulación ya no está activo).
M40: expulsar
Si su máquina RepRap puede expulsar las partes que ha construido fuera de la cama, este comando ejecuta el ciclo de expulsión. Esto generalmente implica enfriar la cama y luego realizar una secuencia de movimientos que eliminan las partes impresas. Las posiciones X, Y y Z de la máquina al final de este ciclo no están definidas (aunque se pueden encontrar utilizando el comando M114, qv).
Ver también M240 y M241 a continuación.
Ejemplo: M41
Si la máquina RepRap estaba creando un archivo desde su propia memoria, como una tarjeta SD local (a diferencia de un archivo que se le transmitía desde una computadora host), esto vuelve al principio del archivo y lo ejecuta nuevamente. Entonces, por ejemplo, si su RepRap es capaz de expulsar partes de su plataforma de construcción, puede configurarlo para que se imprima en un bucle y se ejecutará y se ejecutará. Úselo con precaución: las únicas cosas que lo detendrán son:
- Cuando presionas el botón de reinicio,
- Cuando se agota el material de construcción (si su RepRap está configurado para detectar esto), y
- Cuando hay un error (como una falla del calentador).
M42: Detener en material agotado / Cambiar pin de E / S
Ejemplo: M42
Si su RepRap puede detectar cuándo se agota su material, esto decide el comportamiento cuando eso sucede. Los ejes X e Y se ponen a cero (pero no Z), y luego la máquina apaga todos los motores y calentadores. Debe presionar Restablecer para reactivar la máquina. En otras palabras, se estaciona y luego ejecuta un comando M0 (qv).
M42 en Marlin / Sprinter
Ejemplo: M42 P7 S255
M42 conmuta un pin de E / S de uso general. Use M42 Px Sy para establecer el pin x en el valor y, al omitir Px se usará el LEDPIN.
M42 en teaCup
Innecesario. Los dispositivos de uso general se manejan como un calentador, ver M104 .
M43: espera sobre material agotado
Ejemplo: M43
Si su RepRap puede detectar cuándo se agota su material, esto decide el comportamiento cuando eso sucede. Los ejes X e Y se ponen a cero (pero no Z), y luego la máquina apaga todos los motores y calentadores, excepto el lecho calentado, cuya temperatura se mantiene. La máquina seguirá respondiendo a los comandos de código G y M en este estado.
M80: ATX encendido
Ejemplo: M80
Enciende la fuente de alimentación ATX del modo de espera al modo completamente operativo. Sin operación en electrónica sin modo de espera.
Nota : algunos firmwares, como Teacup , manejan el encendido / apagado automáticamente, por lo que esto es redundante allí. Consulte también el cableado de RAMPAS para activar / desactivar ATX
M81: apagado ATX
Ejemplo: M81
Apaga la fuente de alimentación ATX. Contraparte de M80.
M82: establecer extrusora en modo absoluto
Ejemplo: M82
hace que el extrusor interprete la extrusión como posiciones absolutas.
Este es el valor predeterminado en repetidor.
M83: Establecer extrusora en modo relativo
Ejemplo: M83
hace que el extrusor interprete los valores de extrusión como posiciones relativas.
M84: detener espera inactiva
Ejemplo: M84
Detenga la espera de ralentí en todos los ejes y extrusoras. En algunos casos, la espera inactiva provoca ruidos molestos, que se pueden detener desactivando la espera. Tenga en cuenta que al deshabilitar la espera inactiva durante la impresión, obtendrá problemas de calidad. Esto se recomienda solo entre o después de printjobs.
En Marlin, M84 también se puede usar para configurar o deshabilitar el tiempo de espera inactivo. Por ejemplo, "M84 S10" dejará inactivos los motores paso a paso después de 10 segundos de inactividad. "M84 S0" deshabilitará el tiempo de espera inactivo; los steppers permanecerán encendidos independientemente de la actividad.
M92: Establecer axis_steps_per_unit
Ejemplo: M92 X <newsteps> Sprinter y Marlin
Permite la programación de pasos por unidad de eje hasta que los componentes electrónicos se restablecen para el eje especificado. Muy útil para la calibración.
M98: Macro / Subprograma de llamadas
Ejemplo: M98 Pmymacro.g
Ejecuta la macro en el archivo mymacro.g. En los Códigos G convencionales para máquinas CNC, el parámetro P normalmente se refiere a un número de línea en el propio programa (P2000 ejecutaría la Macro comenzando en la línea O2000, por ejemplo). Para RepRap, que casi siempre tiene algún tipo de dispositivo de almacenamiento masivo incorporado, simplemente se refiere al nombre de un archivo GCode que se ejecuta mediante la llamada G98. Ese archivo GCode no necesita terminar con un M99 (retorno) ya que el final del archivo automáticamente produce un retorno. Por lo general, es una buena idea comenzar una macro con una instrucción M120 (Push) y finalizarla con una instrucción M121 (Pop), las llamadas macro qv generalmente no pueden anidarse o ser recursivas; es decir, no puede llamar a una macro desde una macro (aunque algunas implementaciones pueden permitir esto).
M99: Regresar de Macro / Subprograma
Ejemplo: M99
Vuelve de una llamada M98.
En desuso: enfrentamientos con el código G estándar M98 anteriorM98: Obtener axis_hysteresis_mm
Ejemplo: M98
Informe los valores de histéresis actuales en mm para todos los ejes.
Propuesto para Marlin
En desuso: enfrentamientos con el código G estándar M99 anteriorM99: Establecer axis_hysteresis_mm
Ejemplo: M99 X <mm> Y <mm> Z <mm> E <mm>
Permite la programación de la histéresis del eje. Poleas mecánicas, engranajes y roscas pueden tener histéresis cuando cambian de dirección. Es decir, una cierta cantidad de pasos ocurren antes de que ocurra el movimiento. Puede medir cuántos mm se pierden por histéresis y establecer sus valores con este comando. Cada vez que un eje cambia de dirección, se agregarán estos mm adicionales para compensar la histéresis.
Propuesto para Marlin
M101: Encienda el extrusor 1 (Adelante), Deshacer retracción
M101 en el firmware
Si hay un extrusor de CC, enciéndalo. De lo contrario, deshaga la retracción del filamento, lo que significa que la extrusora está lista para la extrusión. Complemento a M103.
M101 en otros firmwares
Obsoleto. Con respecto a la retracción del filamento, ver M227, M228, M229.
M102: Encienda el extrusor 1 (reversa)
Obsoleto.
M103: apague todos los extrusores, retracción del extrusor
M103 en el firmware
Si hay un extrusor de CC, apáguelo. De lo contrario, retraiga el filamento con la esperanza de evitar el babeo de la boquilla. Complemento a M101.
M103 en otros firmwares
Obsoleto. Con respecto a la retracción del extrusor, ver M227, M228, M229.
M104: Establecer la temperatura del extrusor
Ejemplo: M104 S190
Ajuste la temperatura del extrusor actual a 190 o C y regrese el control al host inmediatamente ( es decir, antes de que el extrusor haya alcanzado esa temperatura). El firmware Duet-dc42 también admite el parámetro T opcional (generado por slic3r) para especificar a qué herramienta se aplica el comando. Ver también M109.
Esto está en desuso porque las temperaturas deben establecerse utilizando los comandos G10 y T (qv).
M104 en el firmware de la taza de té
En el firmware de la taza de té, M104 se puede usar adicionalmente para manejar todos los dispositivos que usan un sensor de temperatura. Admite el parámetro P adicional, que es un índice basado en cero en la lista de sensores en config.h. Para dispositivos sin sensor de temperatura, consulte M106 .
Ejemplo: M104 P1 S100
Ajuste la temperatura del dispositivo conectado al segundo sensor de temperatura a 100 ° C.
M105: Obtenga la temperatura del extrusor
Ejemplo: M105
Solicite la temperatura del extrusor actual y la base de construcción en grados Celsius. Las temperaturas se devuelven a la computadora host. Por ejemplo, la línea enviada al host en respuesta a este comando se ve así:
ok T: 201 B: 117
La expansión / generalización de M105 se considerará utilizando el parámetro S1 como se indica en Pronterface I / O Monitor
En Repetier también puede agregar X0 para obtener valores sin procesar:
M105 X0 ==> 11: 05: 48.910: T: 23.61 / 0 @: 0 T0: 23.61 / 0 @ 0: 0 RAW0: 3922 T1: 23.89 / 0 @ 1: 0 RAW1: 3920
Extensión Duet-dc42
El firmware Duet-dc42 devuelve una respuesta con formato JSON si se incluye el parámetro S2 o S3. Esto es utilizado por el panel de control de pantalla táctil. La respuesta comprende un único objeto JSON, sin anidamiento de objetos o matrices. Es similar al objeto devuelto por la solicitud de estado de la interfaz web, pero se omiten algunos campos. Aquí hay una respuesta de muestra cuando se usa S2:
{"estado": "I", "calentadores": [25.0,29.0,28.3], "activo": [- 273.1,0.0,0.0], "en espera": [- 273.1,0.0,0.0], "hstat" : [0,2,1], "pos": [- 11.00,0.00,0.00], "extr": [0.0,0.0], "sfactor": 100.00, "efactor": [100.00,100.00], "herramienta": 1, "sonda": "535", "fanRPM": 0, "referenciado": [0,0,0], "fracción_impresa": 0.572}
El significado de estos campos es:
estado: I = inactivo, P = imprimiendo desde la tarjeta SD, S = detenido (es decir, necesita un reinicio), C = ejecutando el archivo de configuración calentadores: temperaturas actuales del calentador, numeradas según la máquina (normalmente, el calentador 0 es la cama) activo: temperaturas activas de los calentadores en espera: temperaturas en espera de los calentadores hstat: estado de los calentadores, 0 = apagado, 1 = en espera, 2 = activo, 3 = falla pos: las posiciones X, Y y Z del cabezal de impresión extr: las posiciones de las extrusoras sfactor: el factor de velocidad actual (ver comando M220) efactor: los factores de extrusión actuales (ver comando M221) herramienta: el número de herramienta seleccionado. Cero generalmente significa que no se seleccionó ninguna herramienta. sonda: la lectura de la sonda Z fanRPM: el ventilador de enfriamiento RPM Homed: el estado de los ejes X, Y y Z (o torres en un delta). 0 = el eje no ha sido dirigido por lo que la posición no es confiable, 1 = el eje ha sido dirigido por lo que la posición es confiable. fracción_impresa: la fracción del archivo que se está imprimiendo actualmente que se ha leído y procesado al menos parcialmente.
La respuesta cuando se usa S3 comprende estos campos más algunos adicionales que generalmente no cambian (por ejemplo, el nombre de la máquina y las longitudes de los ejes) y, por lo tanto, no es necesario buscarlos con tanta frecuencia. En particular, el nombre de la máquina se devuelve en la variable "myName".
Los campos pueden estar en cualquier orden en la respuesta. Otras implementaciones pueden omitir campos y / o agregar campos adicionales.
M106: ventilador encendido
Ejemplo: M106 S127
Encienda el ventilador de enfriamiento a media velocidad.
El parámetro obligatorio 'S' declara el valor PWM (0-255). M106 S0 apaga el ventilador. En algunas implementaciones, pwm se especifica mediante una fracción real: M106 S0.7.
M106 en firmware Duet
El firmware Duet-dc42 también admite un parámetro I opcional. Si este parámetro está presente y es mayor que cero, la salida del ventilador de enfriamiento se invierte. Esto hace que la salida del ventilador de enfriamiento sea adecuada para alimentar la entrada PWM de un ventilador de 4 cables a través de un diodo. Si el parámetro está presente y es cero o negativo, la salida no se invierte. Si el parámetro no está presente, el estado invertido / no invertido permanece sin cambios. El valor predeterminado en el encendido no está invertido.
Si se pasa el parámetro 'R' cuando se utiliza el firmware Duet-zpl (0,96 g +), se establecerá el último valor de ventilador conocido. Si se pasa el parámetro 'S' junto con 'R', el firmware no restablecerá el último valor conocido del ventilador. Esto puede ser útil para los archivos de macro de cambio de herramienta.
M106 en firmware de TeaCup
Además de lo anterior, el firmware de Teacup utiliza M106 para controlar dispositivos generales. Admite el parámetro P adicional, que es un índice basado en cero en la lista de calentadores / dispositivos en config.h.
Ejemplo: M106 P2 S255
Encienda el dispositivo # 3 a toda velocidad / potencia.
Nota : Al encender un calentador equipado con sensor de temperatura con M106 y M104 al mismo tiempo, el control de temperatura anulará el valor dado en M106 rápidamente.
M107: ventilador apagado
Obsoleto. Utilice M106 S0 en su lugar.
M108: Establecer la velocidad del extrusor
Establece la velocidad del motor de la extrusora. (Desaprobado en el firmware actual, ver M113)
M109: Establecer la temperatura del extrusor y esperar
M109 en teaCup
Innecesario. Para imitar el comportamiento de Marlin, use M104 seguido de M116 .
M109 en Marlin, Sprinter (puerto ATmega), Duet
Ajuste la temperatura del calentador del extrusor en grados centígrados y espere a que se alcance esta temperatura.
Ejemplo: M109 S185
El firmware Duet-dc42 también admite el parámetro T opcional (generado por slic3r) para especificar a qué herramienta se refiere el comando (ver más abajo).
M109 en Sprinter (puerto 4pi)
Parámetros: S (opcional), establece el valor de temperatura objetivo. Si no se especifica, espera la temperatura establecida por M104 . R (opcional), establece el valor máximo del rango de temperatura objetivo.
Ejemplo: M109 S185 R240 // establece la temperatura del extrusor en 185 y espera que la temperatura esté entre 185 y 240.
Si tiene varias extrusoras, use el parámetro T o P para especificar qué extrusora desea configurar / esperar.
Otra forma de hacer esto es usar G10 .
M110: Establecer número de línea actual
Ejemplo: M110 N123
Establezca el número de línea actual en 123. Por lo tanto, la siguiente línea esperada después de este comando será 124.
M111: Establecer nivel de depuración
Ejemplo: M111 S6
Establezca el nivel de información de depuración transmitida al host en el nivel 6. El nivel es el OR de tres bits:
#define DEBUG_ECHO (1 << 0) #define DEBUG_INFO (1 << 1) #define DEBUG_ERRORS (1 << 2)
Por lo tanto, 6 significa enviar información y errores, pero no repetir los comandos. (Este es el valor predeterminado de RepRap).
Para el firmware que admite Ethernet e interfaces web, M111 S9 activará la información de depuración web sin cambiar ninguna otra configuración de depuración, y M111 S8 la desactivará. La depuración web generalmente significa que las solicitudes HTTP se reflejarán en la interfaz USB, al igual que las respuestas.
Ejemplo: M253
M112: parada de emergencia
Ejemplo: M112
Cualquier movimiento en progreso se termina inmediatamente, luego RepRap se cierra. Todos los motores y calentadores están apagados. Se puede volver a iniciar presionando el botón de reinicio en el microcontrolador maestro. Ver también M0 y M1.
M113: Establecer extrusor PWM
Ejemplo: M113
Configure el PWM para el extrusor seleccionado actualmente. Por sí solo, este comando configura RepRap para usar el potenciómetro incorporado en la placa del controlador del extrusor para configurar el PWM para la potencia de pasos del extrusor seleccionado actualmente. Con un campo S:
M113 S0.7
hace que el PWM se establezca en el valor S (70% en este caso). M113 S0 apaga el extrusor, hasta que se envía un comando M113 que no sea M113 S0.
M114: Obtener posición actual
Ejemplo: M114
Esto hace que la máquina RepRap informe sus coordenadas X, Y, Z y E actuales al host.
ok C: X: 0.00 Y: 0.00 Z: 0.00 E: 0.00Por ejemplo, la máquina devuelve una cadena como:
X: 0.00 Y: 0.00 RZ: 0.00 LZ: 0.00 Cuenta X: 0.00 Y: 0.00 RZ: 41.02 LZ: 41.02En Marlin, los primeros 3 números son la posición del planificador. Las otras posiciones son las posiciones de la función paso a paso. Esto ayuda a depurar un error de función paso a paso anterior.
M115: Obtenga la versión de firmware y las capacidades
Ejemplo: M115
Solicite la versión de firmware y las capacidades del microcontrolador actual Los detalles se devuelven a la computadora host como clave: pares de valores separados por espacios y terminados con un salto de línea.
datos de muestra del firmware:
ok PROTOCOL_VERSION: 0.1 FIRMWARE_NAME: FiveD FIRMWARE_URL: http% 3A // reprap.org MACHINE_TYPE: Mendel EXTRUDER_COUNT: 1
Este código M115 se implementa de manera inconsistente y no se debe confiar en que exista o que se envíe correctamente en todos los casos. Una implementación inicial se comprometió a svn para el firmware FiveD Reprap el 11 de octubre de 2010. Actualmente se está discutiendo el trabajo para definir más formalmente las versiones de protocolo (octubre de 2010).
Ejemplo: M116
Espere a que todas las temperaturas y otras variables que cambian lentamente lleguen a sus valores establecidos. Ver también M109.
La versión de firmware Duet-dc42 0.78c y posterior admite un parámetro P opcional, que se utiliza para especificar un número de herramienta. Si este parámetro está presente, entonces el sistema solo espera que las temperaturas asociadas con esa herramienta lleguen a sus valores establecidos. Esto es útil durante los cambios de herramienta, para esperar a que la nueva herramienta se caliente sin necesariamente esperar que la anterior se enfríe por completo.
M117: Obtener posición cero
Ejemplo: M117
Esto hace que la máquina RepRap informe las coordenadas X, Y, Z y E en pasos no mm al host que encontró cuando tocó por última vez el cero se detiene para esos ejes. Es decir, cuando pone a cero X, se registra la coordenada x de la máquina cuando llega al tope final de X. Este valor debería ser 0, por supuesto. Pero si la máquina se ha desviado (por ejemplo, bajando pasos), entonces no será así. Este comando le permite medir y diagnosticar tales problemas. (E se incluye para completar. Normalmente no tiene un tope final).
M117 en Marlin, Smoothie y Duet-dc42: Mostrar mensaje
Ejemplo: M117 Hola Mundo
Esto hace que el mensaje dado se muestre en la línea de estado en una pantalla LCD adjunta. El comando anterior mostrará Hello World.
M118: Negociar características
Ejemplo: M118 P42
Este código M es para pruebas futuras. NO firmware o hostware soporta esto en este momento. Se utiliza junto con la palabra clave FEATURES de M115.
M119: Obtener estado de fin de carrera
Ejemplo: M119
Devuelve el estado actual de las paradas finales X, Y, Z configuradas. Tiene en cuenta cualquier configuración de 'tope final invertido', por lo que uno puede confirmar que la máquina está interpretando los topes finales correctamente.
M120: empujar
Empuje el estado de la máquina RepRap en una pila. Exactamente qué variables se empujan depende de la implementación (al igual que la profundidad de la pila, una profundidad típica podría ser 5). Sin embargo, un mínimo razonable podría ser
- Avance actual, y
- Si los movimientos (y la extrusión por separado) son relativos o absolutos
Recupere el último estado empujado a la pila.
M122: diagnosticar
El envío de un M122 hace que RepRap transmita información de diagnóstico, por ejemplo, a través de un enlace serie USB.
M123: valor del tacómetro
El envío de un M123 hace que RepRap transmita valores de tacómetro de filamento de todas las extrusoras.
M124: parada inmediata del motor
Inmediatamente detiene todos los motores.
M126: válvula abierta
Ejemplo: M126 P500
Abra la válvula del extrusor (si tiene una) y espere 500 milisegundos para que lo haga.
M127: Válvula de cierre
Ejemplo: M127 P400
Cierre la válvula del extrusor (si tiene una) y espere 400 milisegundos para que lo haga.
M128: Extrusora Presión PWM
Ejemplo: M128 S255
Valor PWM para controlar la presión interna del extrusor. S255 es presión total.
M129: presión del extrusor desactivada
Ejemplo: M129 P100
Además de establecer la presión del extrusor en 0, puede desactivar la presión por completo. P400 esperará 100 ms para hacerlo.
M130: establecer el valor PID P
Ejemplo: M130 P 0 S 8.0 # Establece el factor 0 P del calentador en 8.0
Teacup puede controlar varios calentadores con controles PID independientes. Para el valor predeterminado que se muestra en https://github.com/Traumflug/Teacup_Firmware/blob/master/config.default.h , el calentador 0 es el extrusor (P0) y el calentador 1 es la cama (P1).
Las unidades proporcionales PID de la taza de té están en pwm / 255 cuentas por trimestre C, por lo que para convertir de cuentas / C, dividiría por 4. Por el contrario, para convertir de cuenta / qC a cuenta / C, multiplique por 4. En el ejemplo anterior, S = 8 representa un Kp = 8 * 4 = 32 cuentas / C.
M131: establecer el valor PID I
Ejemplo: M131 P 1 S 0.5 # Establece el factor 1 del calentador en 0.5
Las unidades integrales PID de Teacup están en pwm / 255 cuentas por (cuarto C * cuarto de segundo), por lo que para convertir de cuentas / qCqs, dividirías por 16. Por el contrario, para convertir de cuentas / qCqs a cuentas / Cs, multiplica por 16. En el ejemplo anterior, S = 0.5 representa un Ki = 0.5 * 16 = 8 cuentas / Cs.
M132: establecer el valor PID D
Ejemplo: M132 P 0 S 24 # Establece el factor 0 D del calentador en 24.0
Las unidades derivadas PID de Teacup están en pwm / 255 cuentas por (cuarto de grado por 2 segundos), por lo que para convertir de cuentas / C, dividirías por 4. Por el contrario, para convertir de cuenta / qC a cuenta / C, multiplica por 8. En el ejemplo anterior, S = 24 representa un Kd = 24 * 8 = 194 cuentas / (C / s).
M133: Establecer valor límite de PID I
Ejemplo: M133 P 1 S 264 # Establece el valor límite del calentador 1 I en 264
Las unidades de límite integral PID de la taza de té están en cuartos-C * cuartos de segundos, por lo que para convertir de Cs, multiplicaría por 16. Por el contrario, para convertir de qC * qs a C * s, divida por 16. En el ejemplo anterior, S = 264 representa un límite integral de 16.5 C * s.
M134: Escribir valores PID en EEPROM
Ejemplo: M134
M135: Establecer intervalo de muestra PID
Ejemplo: M135 S300
Configure el PID para medir temperaturas y calcule la potencia para enviar a los calentadores cada 300 ms.
M136: Imprimir configuración PID al host
Ejemplo: M136 P1 # calentador de impresión 0 parámetros PID para alojar
M140: temperatura del lecho (rápido)
Ejemplo: M140 S55
Ajuste la temperatura del lecho de construcción a 55 o C y regrese el control al host inmediatamente ( es decir, antes de que el lecho haya alcanzado esa temperatura). Hay un campo R opcional que establece la temperatura de espera de la cama: M140 S65 R40.
M141: Temperatura de la cámara (rápida)
Ejemplo: M141 S30
Ajuste la temperatura de la cámara a 30 o C y regrese el control al host inmediatamente ( es decir, antes de que la cámara haya alcanzado esa temperatura).
M142: Presión de mantenimiento
Ejemplo: M142 S1
Ajuste la presión de mantenimiento de la cama a 1 bar.
La presión de mantenimiento está en bar. Para hardware que solo tiene retención de encendido / apagado, cuando la presión de retención es cero, apague la retención, cuando la presión de retención sea mayor que cero, encienda la retención.
M143: temperatura máxima de final caliente
Ejemplo: M143 S275
Ajuste la temperatura máxima del hot-end a 275C
Cuando la temperatura del hot-end excede este valor, tome contramedidas, por ejemplo, una parada de emergencia. Esto es para evitar daños por calor.
M144: espera junto a tu cama
Ejemplo: M144
Cambie la cama a su temperatura de espera. M140 lo devuelve a su temperatura activa; no es necesario ningún argumento para ese uso de M140.
M160: número de materiales mezclados
Ejemplo: M160 S4
Este comando ha sido reemplazado por el comando de definición de herramienta M563 (ver más abajo).
Establezca el número de materiales, N, que el extrusor actual puede manejar con el número especificado. El valor predeterminado es 1.
Cuando N> = 2, entonces el campo E que controla la extrusión requiere N valores separados por dos puntos ":" después de esto así:
M160 S4 G1 X90.6 Y13.8 E2.24: 2.24: 2.24: 15.89 G1 X70.6 E0: 0: 0: 42.4 G1 E42.4: 0: 0: 0
La segunda línea se mueve directamente al punto (90.6, 13.8) extruyendo un total de 22.4 mm de filamento. La relación de mezcla para el movimiento es 0.1: 0.1: 0.1: 0.7.
La tercera línea retrocede 20 mm en X extruyendo 42,4 mm de filamento.
La cuarta línea no tiene efecto físico.
M190: Espere a que la temperatura de la cama alcance la temperatura objetivo
Ejemplo: M190 S60
Esto esperará hasta que la temperatura de la cama alcance los 60 grados, imprimiendo la temperatura del extremo caliente y la cama cada segundo.
M200: Establecer el diámetro del filamento / Obtener estado final
Sin parámetros, se carga la grilla predeterminada, y con la extensión especificada se intenta cargar la grilla especificada. Si no está disponible no modificará la cuadrícula actual. Si Z se guardó con el archivo de cuadrícula, cargará la Z guardada con la cuadrícula.
M200 Dm.mmm establece el diámetro del filamento en m.mmm milímetros. Se utiliza con la 'calibración volumétrica' y el código G generado para un filamento ideal de 1.128 mm de diámetro, que tiene un volumen de 1 mm ^ 3 por milímetro. La intención es poder generar un código g independiente del filamento.
M201: establecer la aceleración máxima de impresión
Ejemplo: M201 X1000 Y1000 Z100 E2000
Establece la aceleración que los ejes pueden hacer en unidades / segundo ^ 2 para los movimientos de impresión. Para mantener la coherencia con el resto del movimiento del Código G, esto debería estar en unidades / (minuto ^ 2), pero eso da números realmente tontos y uno puede perderse en todos los ceros. Entonces para esto usamos segundos.
M202: establecer la aceleración máxima de desplazamiento
en unidades / s ^ 2 para movimientos de desplazamiento (M202 X1000 Y1000) ¡¡Sin usar en Marlin !!
M203: establecer la velocidad de avance máxima
Ejemplo: M203 X6000 Y6000 Z300 E10000
Establece los avances máximos que su máquina puede hacer en mm / min.
M204: establecer la aceleración predeterminada
S movimientos normales T el filamento solo se mueve (M204 S3000 T7000) im mm / seg ^ 2 también establece el tiempo mínimo del segmento en ms (B20000) para evitar la falta de amortiguación y la velocidad mínima de avance M20
M205: configuración avanzada
velocidad mínima de desplazamiento S = durante la impresión T = solo desplazamiento, B = tiempo mínimo de segmento X = máximo tirón xy, Z = máximo tirón Z, E = máximo tirón E
M206 Marlin - Establecer desplazamiento de inicio
Ejemplo: M206 X10.0 Y10.0 Z-0.4
Los valores especificados se agregan a la posición final cuando se hace referencia a los ejes. Lo mismo se puede lograr con un G92 justo después del recorrido de referencia (G28, G161).
Con el firmware Marlin, este valor se puede guardar en EEPROM con el comando M500.
Un comando similar es G10, la alineación de estos dos está sujeta a discusión .
Con Marlin 1.0.0 RC2, un valor negativo para z eleva (!) Su cabezal de impresión.
Repetidor M206 - Establecer el valor de eeprom
M206 T [tipo] P [pos] [Sint (largo) [Xfloat] Establecer el valor de eeprom
Ejemplo: M206 T3 P39 X19.9
Establece Jerk en 19.9
M207: calibre el eje z detectando la longitud máxima z
Ejemplo: M207
Después de colocar la punta de la boquilla en la posición que espera que se considere Z = 0, emita este comando para calibrar el eje Z. Realizará una rutina de referencia del eje az y calculará la distancia recorrida en este proceso. El resultado se almacena en EEPROM como z_max_length. Para utilizar este método de calibración, la máquina debe estar utilizando un tope Z MAX.
Este procedimiento suele ser más confiable que los ajustes mecánicos de un tope Z MIN.
NOTA: Marlin y Smoothie definen M207 como "establecer la longitud de retracción S [mm positivo] F [avance mm / min] Z [elevación / salto adicional], permanece en mm independientemente de la configuración de M200"
M208: Establecer el recorrido máximo del eje
Ejemplo: M208 X250 Y210 Z180
Los valores especificados establecen los límites del software para el desplazamiento del eje en la dirección positiva.
Con el firmware Duet-dc42, en una impresora cartesiana también puede usar este comando para especificar límites de software para el desplazamiento del eje en la dirección negativa, agregando el parámetro S1. Los límites de eje que establece también son las posiciones asumidas cuando se activa un tope final.
NOTA: Marlin / Smoothie define M208 como "recuperación de conjunto = longitud de retracción S [mm positivo excedente al M207 S *] F [avance mm / seg]"
M209: habilitar retracción automática
Ejemplo: M209 S1
Este valor booleano S 1 = verdadero o 0 = falso permite la detección de retracción automática si la rebanadora no era compatible con G10 / 11: cada movimiento normal de solo extrusión se clasificará como retracción según la dirección.
M210: Establecer velocidades de avance de referencia
Ejemplo: M210 X1000 Y1500
Establezca los avances utilizados para el retorno a los valores especificados en mm por minuto.
M211: Deshabilitar / Habilitar paradas finales de software
El valor booleano S 1 = habilitar o 0 = deshabilitar controla el estado del extremo del software.
El valor booleano X, Y o Z 1 = tope final máximo o 0 = tope final mínimo selecciona el tope final que se controla.
Ejemplo: M211 X1 Y1 Z1 S0
Deshabilita los extremos de X, Y, Z max
Ejemplo: M211 X0 S1
Habilita la parada final de X min.
Ejemplo: M211
Imprime el estado actual de las paradas finales de software.
M220: Establecer porcentaje de anulación del factor de velocidad
Ejemplo: M220 S80
S <factor en porcentaje> - establece el porcentaje de anulación del factor de velocidad
M221: Establecer porcentaje de anulación del factor de extrusión
Ejemplo: M221 S70
S <factor en porcentaje> - establece el porcentaje de anulación del factor de extrusión
M226: Pausa iniciada por Gcode
Ejemplo: M226
Inicia una pausa de la misma manera que si se presiona el botón de pausa. Es decir, la ejecución del programa se detiene y la impresora espera la interacción del usuario. Esto coincide con el comportamiento de M1 en el estándar NIST RS274NGC G-code y M0 en el firmware Marlin.
M227: Activar inversión automática y cebado
Ejemplo: M227 P1600 S1600
P y S son pasos.
"Invertir y cebar" significa que el filamento del extrusor se retrae cierta distancia cuando no está en uso y se empuja hacia adelante la misma cantidad antes de volver a usarlo. Esto ayudará a evitar el babeo de la boquilla del extrusor. El firmware de Teacup implementa esto con M101 / M103.
M228: Deshabilitar reversa automática y cebado
Ejemplo: M228
Ver también M227.
M229: Habilitar inversión automática y cebado
Ejemplo: M229 P1.0 S1.0
P y S son rotaciones de tornillo extrusor. Ver también M227.
M230: Deshabilitar / Habilitar espera para cambio de temperatura
Ejemplo: M230 S1
S1 Desactivar espera para cambio de temperatura S0 Activar espera para cambio de temperatura
M240: arranque del motor de la cinta transportadora / eco apagado
Ejemplo: M240
La cinta transportadora permite comenzar la producción en masa de una pieza con un reprap.
El eco puede controlarse en algunos firmwares con M111
M241: Detener el motor de la cinta transportadora / eco activado
Ejemplo: M241
El eco puede controlarse en algunos firmwares con M111
M245: Iniciar enfriador
Ejemplo: M245
Se utiliza para enfriar piezas / calentar el lecho después de la impresión para quitar fácilmente las piezas después de imprimir
M246: detener el refrigerador
Ejemplo: M246
M251: Mida los pasos Z desde la parada de referencia (impresoras Delta)
M251 S0 - Restablecer, S1 - Imprimir, S2 - Almacenar en longitud Z (también EEPROM si está habilitado)
(Esta es una característica única de Repetier-Firmware)
M280: establecer la posición del servo
(Marlin, Repetidor M340 )
M280 - establece la posición del servo absoluta. P: índice de servo, S: ángulo o microsegundos (Marlin)
M300: reproducir sonido de pitido
Uso: M300 S <frecuencia Hz> P <duración ms>
Ejemplo: M300 S300 P1000
Reproduzca un pitido, úselo para notificar eventos importantes como el final de la impresión. También es compatible con el firmware duet-dc42 a través de la sonda en el panel de control de la pantalla táctil adicional.
M301: establecer parámetros PID
Ejemplo: M301 P1 I2 D3; Marlin (solo extremo caliente; ver M304 para PID de cama) Ejemplo: M301 P1 I2 D3 C5 H1 B20 W127; RepRapFirmware Ejemplo: M301 P1 I2 D3 T0.2 H1 B20 W127 S0.8; Duet-dc42 Ejemplo: M301 S0 P30 I10 D10; Smoothie (S0 es 0 para el hotend, y 1 para la cama, pueden aplicarse otros números a su configuración, dependiendo del orden en que declare los módulos de control de temperatura)
Establece valores proporcionales, integrales y derivados para hot end. El valor C se refiere a una velocidad de extrusión. El valor T es el PWM adicional aproximado (en una escala de 0 a 255) necesario para mantener cada temperatura adicional de 1C, que se usa para preajustar el acumulador I cuando se cambia completamente el encendido / apagado del calentador a PID. H es el número del calentador, predeterminado 1 (es decir, el primer calentador del extrusor).
El firmware Duet-dc42 interpreta un término P negativo como indicativo de que se debe usar el control de bolsa en lugar de PID (no se recomienda para el extremo caliente, pero está bien para H0, que es el calentador de la cama). El factor S está diseñado para permitir que se realice una corrección por un cambio en la potencia del calentador y / o el voltaje de la fuente de alimentación sin tener que cambiar todos los demás parámetros. Por ejemplo, un factor S de 0.8 significa que la salida final del controlador PID debe escalarse a 0.8 veces el valor estándar, lo que compensaría un calentador que es un 25% más potente que el estándar o un voltaje de suministro de 12.5 % más alto que el estándar.
Implementación alternativa
Ejemplo: M301 W125
Consulte M130, M131, M132, M133 para ver los códigos de Teacup para configurar los parámetros PID.
M302: permitir extrusiones en frío
Esto le dice a la impresora que permita el movimiento del motor del extrusor, cuando el hotend no está a la temperatura de impresión
Ejemplo: M302
Cuando se utilizan los firmwares Duet-zpl o Duet-dc42, ejecutar M302 solo informará el estado actual de extrusión en frío. Para permitir o denegar extrusiones / retracciones en frío, ejecute "M302 P1" o "M302 P0".
M303: ejecutar el ajuste PID
La sintonización de PID se refiere a un algoritmo de control utilizado en algunas repeticiones para ajustar el comportamiento de calentamiento para los extremos calientes y las camas calentadas. Este comando genera valores proporcionales (Kp), integrales (Ki) y derivados (Kd) para el hotend o bed (E-1). Envíe el código apropiado y espere a que la salida actualice el firmware.
Uso final caliente:
M303 S <temperatura> C <ciclos>
Uso de la cama:
M303 E-1 C <ciclos> S <temperatura>
Ejemplo:
M303 C8 S175
La sintaxis de Smoothie, donde E0 es el primer módulo de control de temperatura (generalmente el extremo caliente) y E1 es el segundo módulo de control de temperatura (generalmente la cama):
M303 E0 S190
M304: Establecer parámetros PID - Cama
Ejemplo: M304 P1 I2 D3; establecer kP = 3, kI = 2, kD = 3 Ejemplo: M301 P1 I2 D3 T0.7 H0 B20 W127; Duet-dc42 firmware Ejemplo: M304; Parámetros de informe
Establece valores proporcionales, integrales y derivados para la cama. El firmware Duet-dc42 interpreta un término P negativo como indicativo de que se debe usar el control de la bolsa en lugar del PID. En el firmware Duet-dc42, este comando es idéntico al M301, excepto que el parámetro H (número de calentador) está predeterminado en cero.
M305: Establecer parámetros de termistor y ADC
Establece los parámetros para la medición de temperatura. Compatible con la versión RepRapPro de Marlin, RepRapFirmware de 0.78c y firmware Duet-dc42.
Ejemplo: M305 P1 T100000 R1000 B4200
Esto le dice al firmware que para el calentador 1 (parámetro P: 0 = lecho calentado, 1 = primer extrusor) la resistencia del termistor 25C (parámetro T) es 100Kohms, la resistencia de la serie del termistor (parámetro R) es 1Kohms, el termistor beta (parámetro B ) es 4200. Todos los parámetros que no sean P son opcionales. Si solo se proporciona el parámetro P, se muestran los valores existentes.
Además, el firmware Duet-dc42 admite una funcionalidad de corrección ADC y una función de selección de termistor.
Ejemplo: M305 P1 T100000 R1000 B4200 H14 L-11 X2
Aquí la corrección de ADC de extremo alto (parámetro H) es 14, la corrección de ADC de extremo bajo (parámetro L) es -11 y la entrada del termistor n. ° 2 se usa para medir la temperatura del calentador n. ° 1.
M306: establecer el desplazamiento inicial calculado a partir de la posición del cabezal de herramienta
Ejemplo: M306 Z0
Los valores especificados se agregan a la posición final de parada calculada cuando se hace referencia a los ejes. El valor calculado se deriva de la distancia del cabezal de la herramienta desde el punto cero del eje actual.
El usuario normalmente colocaría el cabezal de la herramienta en el punto cero del eje y emitiría el comando M306.
Este valor se puede guardar en EEPROM con el comando M500 (como valor M206).
Implementado en Smoothieware
M320: Activar nivel automático (repetidor)
(Solo repetidor)
M321: Desactivar nivel automático (repetidor)
(Solo repetidor)
M322: restablecer matriz de nivel automático
Ejemplo: M322 S1
El parámetro S1 es obligatorio.
(Solo repetidor)
M340: controla los servos
(Solo repetidor , Marlin ver M280 )
M340 P <servoId> S <pulseInUS> / ServoID = 0..3 pulseInUs = 500..2500
Los servos están controlados por un ancho de pulso normalmente entre 500 y 2500 con 1500 ms en la posición central. 0 apaga el servo.
M355: enciende / apaga las luces de la carcasa
M355 S1
M355 S0
M355
Cada llamada o cambio en el menú LCD envía un cambio de estado para el software de alojamiento conectado como
Luces del estuche encendidas La caja se apaga Sin luces de caja
M360: informe de configuración de firmware
Este comando ayuda al software de alojamiento a detectar detalles de configuración, que el usuario necesitaría ingresar de otra manera. Debería reducir el tiempo de configuración considerablemente si es compatible.
M360
Config: Baudrate: 250000 Config: InputBuffer: 127 Configuración: NumExtruder: 2 Configuración: MixingExtruder: 0 Configuración: HeatedBed: 0 Configuración: Tarjeta SD: 1 Configuración: Fan: 1 Configuración: LCD: 1 Configuración: SoftwarePowerSwitch: 1 Configuración: XHomeDir: -1 Config: YHomeDir: -1 Configuración: ZHomeDir: -1 Configuración: Soporte G10G11: 1 Config: SupportLocalFilamentchange: 1 Config: CaseLights: 0 Configuración: ZProbe: 1 Config: Autolevel: 0 Configuración: EEPROM: 1 Configuración: PrintlineCache: 24 Configuración: JerkXY: 30.00 Configuración: JerkZ: 0.30 Config: RetractionLength: 3.00 Config: RetractionLongLength: 13.00 Config: RetractionSpeed: 40.00 Configuración: RetractionZLift: 0.00 Config: RetractionUndoExtraLength: 0.00 Configuración: RetractionUndoExtraLongLength: 0.00 Config: RetractionUndoSpeed: 0.00 Configuración: XMin: 0.00 Configuración: YMin: 0.00 Configuración: ZMin: 0.00 Configuración: XMax: 250.00 Configuración: YMax: 150.00 Configuración: ZMax: 90.00 Configuración: X Tamaño: 250.00 Configuración: Y Tamaño: 150.00 Configuración: Z Tamaño: 90.00 Config: XPrintAccel: 250.00 Configuración: YPrintAccel: 250.00 Configuración: ZPrintAccel: 100.00 Configuración: XTravelAccel: 250.00 Configuración: YTravelAccel: 250.00 Configuración: ZTravelAccel: 100.00 Config: PrinterType: Cartesian Configuración: MaxBedTemp: 120 Config: Extr.1: Jerk: 50.00 Config: Extr.1: MaxSpeed: 100.00 Config: Extr.1: Aceleración: 10000.00 Config: Extr.1: Diámetro: 0.00 Config: Extr.1: MaxTemp: 220 Config: Extr.2: Jerk: 50.00 Config: Extr.2: MaxSpeed: 100.00 Config: Extr.2: Aceleración: 10000.00 Config: Extr.2: Diámetro: 0.00 Config: Extr.2: MaxTemp: 220
Códigos de calibración SCARA (Morgan)
Para facilitar la calibración de Reprap Morgan, se utilizan los siguientes códigos M para configurar la máquina
M360: Mover a la posición Theta de 0 grados
Los brazos se mueven a una posición donde el brazo de dirección Theta es paralelo al borde superior de la plataforma. Luego, el usuario calibra la posición moviendo los brazos con los botones de desplazamiento en software como pronterface hasta que esté perfectamente paralela. El uso de M114 mostrará la compensación de calibración que luego se puede programar en la unidad usando M206 (compensación inicial) X representa Theta.
Smoothieware: M360 P0 tomará la posición actual como paralela al borde de la plataforma y almacenará el desplazamiento en el desplazamiento de ajuste de referencia (M666) No se necesita más interacción del usuario.
M361: Moverse a la posición Theta de 90 grados
Theta se mueve a 90 grados con el borde de la plataforma. El usuario calibra utilizando brazos de desplazamiento para colocar exactamente 90 grados. Los pasos por grado se pueden leer con M114 y programar con M92. X representa a Theta. Programe Y (Psi) al mismo valor inicialmente. Recuerde repetir M360 después de ajustar los pasos por grado.
Smoothieware: M360 P0 aceptará la posición actual como 90 grados al borde de la plataforma. Se calculan nuevos pasos por ángulo y se ingresan en la memoria (M92). No se requiere ninguna otra interacción del usuario, excepto para rehacer M360.
M362: Mover a la posición Psi 0 grados
Los brazos se mueven a Psi 0 grados. Verificar solo después de otras calibraciones Theta
M363: Mover a la posición Psi 90 grados
Los brazos se mueven a Psi 90 grados. Verificar solo después de otras calibraciones Theta
M364: Mover a la posición de 90 grados Psi + Theta
Mueva los brazos para formar un ángulo de 90 grados entre los brazos Psi internos y externos. Calibre moviéndose hasta que el ángulo sea exactamente 90 grados. Lea con M114 y calibre el valor en el desplazamiento inicial M206. Psi está representado por Y.
Smoothieware: M364 P0 aceptará la posición actual como 90 grados entre los brazos. El desplazamiento se almacena como un ajuste de compensación (M666) y no se requiere más interacción del usuario, excepto para guardar todos los cambios a través de M500
M365: factor de escala SCARA
Ajuste la escala XY y Z ingresando el factor. El 100% de escala (predeterminado) está representado por 1
M370: nivel de cama manual Morgan - mapa claro
Borre el mapa y prepárese para la calibración Uso:
M370 M370 X <divisiones> Y <divisiones>
Sin parámetros, el valor predeterminado es X5 Y5 (25 puntos de calibración) Al especificar parámetros, se recomiendan números desiguales.
M371: pasar a la siguiente posición de calibración
Mover a la siguiente posición para la calibración. El usuario mueve la cama hacia el hotend hasta que solo toca
M372: registrar el valor de calibración y pasar a la siguiente posición
Se registra la posición de la cama y la máquina se mueve a la siguiente posición. Repita hasta que todas las posiciones programadas
M373: modo de calibración del nivel final del lecho
Finalice el modo de calibración y habilite la matriz de corrección z. No guarda la matriz actual
M374: Guardar cuadrícula de calibración
Guarda la cuadrícula de calibración. (Smoothieware) Uso:
M374
M374 <extensión de archivo> Z
Sin parámetros, la cuadrícula se guarda en el archivo de cuadrícula predeterminado que se carga en el arranque El parámetro especifica la extensión del archivo de cuadrícula, útil para archivos de cuadrícula especiales, como una superficie de impresión especial, como una placa de impresión extraíble. La adición de Z guardará adicionalmente el desplazamiento de referencia M Z6 Z en el archivo de cuadrícula
M375: matriz de visualización / matriz de carga
Mostrar la matriz de calibración de nivel de lecho (Marlin) Cargar archivo de matriz de cuadrícula (Smoothieware)
M375
M375 <extensión de archivo>
Sin parámetros, se carga la grilla predeterminada, y con la extensión especificada se intenta cargar la grilla especificada. Si no está disponible no modificará la cuadrícula actual. Si Z se guardó con el archivo de cuadrícula, cargará la Z guardada con la cuadrícula.
M400: espera a que finalicen los movimientos actuales
Termina todos los movimientos actuales y, por lo tanto, borra el búfer. Eso es idéntico a G4 P0
.
Ejemplo: M400
M420: Establecer colores RGB como PWM
Uso: M420 R <PWM rojo (0-255)> E <PWM verde (0-255)> B <PWM azul (0-255)>
Ejemplo: M420 R255 E255 B255
Establezca el color de sus LED RGB que están conectados a pines habilitados para PWM. Tenga en cuenta que el color verde está controlado por el valor E en lugar del valor G debido a que el código G es un código primario que no se puede anular.
M540: configurar la dirección MAC
Ejemplo: M540 P0xBE: 0xEF: 0xDE: 0xAD: 0xFE: 0xED
Establece la dirección MAC de RepRap. Esto debe hacerse antes que cualquier otro comando de red. La dirección MAC es seis números hexadecimales de un byte separados por dos puntos. El prefijo 0x es opcional en revisiones de firmware posteriores.
M550: Establecer nombre
Ejemplo: M550 PGodzilla
Establece el nombre de RepRap en (en este caso) Godzilla. El nombre puede ser cualquier cadena de caracteres imprimibles, excepto ';', que aún significa comenzar a comentar.
M551: Establecer contraseña
Ejemplo: M551 Pmy-palabra-muy-secreta
En máquinas que necesitan una contraseña para activarlas, establezca esa contraseña. El código 'P' no es parte de la contraseña. Tenga en cuenta que, dado que esto se envía de forma clara, no ofrece (ni pretende) ofrecer un nivel de seguridad muy alto. Pero en las máquinas que están (digamos) en una red, evita que los usuarios no autorizados puedan jugar sin hacer nada. La contraseña puede contener caracteres imprimibles, excepto ';', que aún significa comenzar a comentar.
M552: establecer dirección IP
Ejemplo: M552 P192.168.1.14
Establece la dirección IP de la máquina RepRap en (en este caso) 192.168.1.14. Es posible que sea necesario reiniciar antes de usar la nueva dirección IP. Si no se especifica ningún campo P, esto hace eco de la dirección IP existente configurada. Si S0 se agrega así: M552 S0 P192.168.1.14 la red está deshabilitada.
M553: Establecer máscara de red
Ejemplo: M553 P255.255.255.0
Establece la máscara de red de la máquina RepRap en (en este caso) 255.255.255.0. Es posible que sea necesario reiniciar antes de usar la nueva máscara de red. Si no se especifica ningún campo P, esto hace eco de la máscara de red existente configurada.
M554: Establecer puerta de enlace
Ejemplo: M554 P192.168.1.1
Establece la dirección IP de la puerta de enlace de la máquina RepRap en (en este caso) 192.168.1.1. Es posible que sea necesario reiniciar antes de utilizar la nueva dirección IP de la puerta de enlace. Si no se especifica ningún campo P, esto refleja la dirección IP de la puerta de enlace existente configurada.
M555: Establecer compatibilidad
Ejemplo: M555 P1
Para el firmware que puede hacerlo, establece el firmware en un modo donde su entrada y (especialmente) salida se comporta exactamente como otro firmware establecido. El valor del argumento P es:
M556: compensación del eje
Ejemplo: M556 S100 X0.7 Y-0.2 Z0.6
Aunque con cuidado y ajuste, se puede configurar un RepRap con sus ejes en ángulo recto entre sí dentro de la precisión de la máquina, ¿quién quiere molestarse con cuidado y ajuste cuando el problema puede ser resuelto por el software? Esto le dice al software las tangentes de los ángulos entre los ejes de la máquina obtenidos al imprimir y luego medir una pieza de prueba. El parámetro S (100 aquí) es la longitud de un triángulo a lo largo de cada eje en mm. Las figuras X, Y y Z son el número de milímetros del lado corto del triángulo que representa cuán fuera de verdad es un par de ejes. La figura X es el error entre X e Y, la figura Y es el error entre Y y Z, y la figura Z es el error entre X y Z. Los valores positivos indican que el ángulo entre el par de ejes es obtuso, negativo agudo.
M557: Establecer punto de sonda Z
Ejemplo: M557 P1 X30 Y40.5
Establezca los puntos en los que se sondeará la cama para compensar que su plano esté ligeramente fuera de la horizontal. El valor P es el índice del punto (los índices comienzan en 0) y los valores X e Y son la posición para mover la extrusora 0 a la sonda. Una implementación debe permitir un mínimo de tres puntos (P0, P1 y P2). Esto solo registra las coordenadas del punto; en realidad no hace el sondeo. Ver G32.
M558: Establecer tipo de sonda Z
Ejemplo: M558 P0 X1 Y0 Z1
La sonda AZ puede ser un interruptor, un sensor de proximidad IR o algún otro dispositivo. Esto selecciona cuál usar. P0 indica que no hay una sonda Z presente. P1 proporciona una sonda IR no modulada, o cualquier otro tipo de sonda que emule una sonda IR no modulada (la salida de la sonda es una señal analógica que aumenta al disminuir la altura de la boquilla por encima del lecho). Si hay una señal de control en la sonda, se activa cuando el tipo de sonda es P1. P2 especifica una sonda IR modulada, donde la modulación es ordenada directamente por el firmware de la placa principal utilizando la señal de control a la sonda. P3 selecciona una sonda Z alternativa llevando la señal de control a la sonda baja. P4 selecciona un interruptor (en el Duet, este debe estar conectado a los pines del extremo E0).
Los parámetros X, Y y Z especifican si cada eje usa la sonda Z para referencia o no. Si el parámetro no es cero, la sonda Z se usa para dirigir ese eje. si el parámetro es cero, el interruptor de final de carrera para ese eje se usa para el recorrido de referencia. Ver también G31 y G32.
El firmware Duet-dc42 admite un parámetro R adicional, que especifica el canal de modulación. El canal 0 (predeterminado) usa el pin de modulación de sonda Z estándar en Duet 0.6. El canal 1 selecciona el pin de modulación de sonda Z alternativo en el Duet 0.7.
Las versiones de firmware Duet-dc42 1.00e en adelante admiten el parámetro adicional H. Esto especifica la altura de inmersión desde la cual se realiza el sondeo en respuesta a un comando G30 cuando el parámetro P está presente, o un comando G32.
M559: subir archivo de configuración
Ejemplo: M559
Si RepRap lo admite, esto carga un archivo que se ejecuta al reiniciar para configurar la máquina. Este archivo generalmente es un archivo de código G especial. Después de enviar M559, el archivo debe enviarse, terminando con un M29 (qv).
M560: subir archivo de página web
Ejemplo: M560
Para RepRaps que tienen soporte web y que pueden ser manejados por un navegador web, esto carga el archivo que es la página de control para RepRap. Después de enviar M560, el archivo (generalmente un archivo HTML) debe enviarse, terminado por la cadena
<! - ** EoF ** ->
. Claramente, esa cadena no puede existir en el cuerpo del archivo, pero se puede poner al final para facilitar este proceso. Esto no debería ser una restricción demasiado grave ...
M561: Establecer transformación de identidad
Ejemplo: M561
Esto cancela cualquier ajuste del plano de la cama como resultado del sondeo (o cualquier otra cosa) y hace que la máquina se mueva en el sistema de coordenadas del usuario.
M562: error de reinicio de temperatura
Ejemplo: M562 P2
Restablezca una falla de temperatura en el calentador / sensor 2. Si RepRap se apagó y bloqueó un calentador porque detectó una falla, esto restablecerá la condición de falla y le permitirá usar el calentador nuevamente. Obviamente para ser utilizado con precaución. Si la falla persiste, se bloqueará nuevamente después de que haya emitido este comando. P0 es la cama; P1 el primer extrusor, y así sucesivamente.
M563: definir una herramienta
Ejemplo: M563 P3 D0: 5: 6 H1: 3
Las herramientas son generalmente (aunque no necesariamente) extrusoras. El campo P especifica el número de herramienta. Los números de herramienta pueden tener cualquier valor entero positivo y 0. El campo D especifica las unidades utilizadas por la herramienta; en este caso, las unidades 0, 5 y 6. La unidad 0 es la primera unidad de la máquina después de las unidades de movimiento (generalmente X, Y y Z). Si no hay campo D, la herramienta no tiene unidades. El campo H especifica los calentadores de la herramienta; en este caso, los calentadores 1 y 3. El calentador 0 suele ser el lecho caliente (si lo hay), por lo que el primer calentador del extrusor suele ser 1. Si no hay campo H, la herramienta no tiene calentadores.
Las herramientas se manejan utilizando múltiples valores en el campo E de los comandos G1, cada uno de los cuales controla la unidad correspondiente en el campo D anterior, de la siguiente manera:
G1 X90.6 Y13.8 E2.24: 2.24: 15.89 G1 X70.6 E0: 0: 42.4
La primera línea se mueve directamente al punto (90.6, 13.8) extruyendo un total de 2.24 mm de filamento de ambas unidades 0 y 5 y 15.98 mm de filamento de la unidad 6.
La segunda línea retrocede 20 mm en X extruyendo 42,4 mm de filamento desde la unidad 6.
Normalmente, un comando M563 es seguido inmediatamente por un comando G10 para establecer las compensaciones y temperaturas de la herramienta.
Está permitido que diferentes herramientas compartan algunas (o todas) de sus unidades y calentadores. Entonces, por ejemplo, puede definir dos herramientas con hardware idéntico, pero que solo funcionan a diferentes temperaturas.
Si utiliza el comando M563 con un valor P para una herramienta que ya se ha definido, esa herramienta se redefine utilizando los nuevos valores que proporcione.
El firmware Duet-dc42 admite una forma adicional del comando M563. El comando:
M563 S1
significa agregar 1 (el valor del parámetro S) a todos los números de herramienta que se encuentran en el resto del flujo de entrada actual (por ejemplo, el archivo actual si el comando se lee desde un archivo en la tarjeta SD), o hasta un nuevo comando M563 de Este formulario se ejecuta. El propósito de esto es proporcionar compatibilidad entre el firmware Duet, en el que los números de herramienta generalmente comienzan en 1, y programas como slic3r que asumen que las herramientas están numeradas desde cero.
M564: ejes límite
Ejemplo: M564 S0
Permitir movimientos fuera del volumen de impresión, o no. Si el parámetro S es 0, puede enviar códigos G para conducir el RepRap fuera de su volumen de trabajo normal, e intentará hacerlo. Cuidado con el usuario ... Si establece el parámetro S en 1, RepRap no pensará fuera de la caja. El comportamiento predeterminado es S = 1.
M565: Establecer desplazamiento de sonda Z
Ejemplo: M565 X3 Y4.5 Z-2.37
Ajuste el desplazamiento desde la punta del extrusor hasta la posición de la sonda. Los valores X, Y y Z son el delta entre el extrusor y la posición real de disparo de la sonda. Si el punto de activación de la sonda está debajo del extrusor (típico), el desplazamiento Z será negativo. Esto solo registra el desplazamiento del punto; en realidad no hace el sondeo. Ver G32.
M566: Establecer cambio de velocidad instantáneo permitido
Ejemplo: M566 X20 Y20 Z2 E10
Evite una limitación del algoritmo de algunos firmwares, que no puede calcular los tiempos de paso para un inicio permanente. Teacup Firmware y Smoothieware no tienen esta limitación, por lo que M566 es obsoleto allí.
M566 establece las velocidades en mm / minuto que los ejes pueden hacer desde un inicio permanente. Si un algoritmo de aceleración comienza un movimiento con una velocidad cero en otros firmwares y luego acelera a partir de eso, puede dar problemas cuando se usa la velocidad inicial cero para calcular un paso de tiempo entre pulsos paso a paso al principio: el paso de tiempo termina siendo infinito. Entonces, estos sistemas tienen pequeñas velocidades iniciales para comenzar. Esto los establece.
La variante dc42 de RepRapFirmware no tiene la limitación, sino que utiliza este parámetro para determinar el cambio de velocidad máximo permitido de cada motor en las curvas.
M567: Establecer relaciones de mezcla de herramientas
Ejemplo: M567 P2 E0.1: 0.2: 0.1: 0.6
El ejemplo establece la relación de mezcla para la herramienta 2 (el valor P). Cuando se activa la mezcla (ver M568), solo se deben enviar valores E individuales en un comando G1 (cualquier valor E adicional se ignorará, pero no es ilegal):
G1 X20 E1.3
Esto se moverá a X = 20 extruyendo una longitud total de filamento de 1.3 mm. La primera unidad de la herramienta 2 extruirá 0.1 * 1.3 mm, la segunda 0.2 * 1.3 mm y así sucesivamente. Las proporciones no tienen que sumar 1.0, el cálculo realizado es como se acaba de describir. Pero es mejor si lo hacen.
Ver también M568.
M568: activar / desactivar las relaciones de mezcla de herramientas
Ejemplo: M568 P2 S0
Active / desactive las relaciones de mezcla automáticas para la herramienta 2. Si el parámetro S es 0, la mezcla se desactiva; si no es cero, está activado.
Después de desactivar el comando, las instrucciones G1 deben enviar tantos valores E como la herramienta tenga unidades:
G1 X20 E0.2: 0.4: 0.166: 0.3
El estado apagado es el predeterminado.
M569: establecer valores de dirección del eje
Ejemplo: M569 P0 S1
Establezca el valor de control para el variador especificado por P que lo envía hacia adelante al valor dado en el campo S. Después de enviar el ejemplo, enviar un 1 a X (unidad 0) lo hará avanzar, enviar un 0 lo hará retroceder. Obviamente para ser utilizado con extrema precaución ...
M570: establecer el tiempo de espera del calentador
Ejemplo: M570 S120
Después de encender un calentador, espere 120 segundos para que se acerque a la temperatura establecida. Si lleva más tiempo que esto, marque una falla del calentador.
M571: Establecer salida en extrusión
Ejemplo: M571 S0.5
Esto activa una salida cada vez que se realiza la extrusión y la desactiva cuando finaliza la extrusión. La salida podría controlar un ventilador o un agitador o cualquier otra cosa que necesite funcionar justo cuando está ocurriendo la extrusión. El parámetro S establece el valor de PWM en la salida. 0.0 está apagado; 1.0 está completamente encendido.
M572: Establecer o informar la compensación de elasticidad del extrusor
Ejemplo: M572 P3 S0.06
Esto establece el tiempo de compensación en segundos (parámetro S) para la elasticidad del extrusor Bowden para la unidad especificada (parámetro P). Compatible con el firmware Duet-dc42. Tiene un efecto similar al factor EXTRUDER_ADVANCE_K en el firmware de Marlin. Normalmente, la compensación debe aplicarse solo a las unidades de extrusión (unidades 3 y superiores).
M573: Informe calentador PWM
Ejemplo: M573 P1
Esto proporciona un promedio de funcionamiento (usualmente más de cinco segundos) del PWM al calentador especificado por el campo P. Si conoce el voltaje del suministro y la resistencia del calentador, esto le permite calcular la potencia que va al calentador.
M574: configuración de final de carrera establecida
Ejemplo: M574 X1 Y2 Z0 S1
Esto define el tipo de interruptor de fin de carrera o sensor óptico que tiene la impresora para cada eje: 0 = ninguno, 1 = extremo bajo, 2 = extremo alto. El parámetro opcional S define si la entrada de fin de carrera está activa alta (S1, la predeterminada) o baja (S0). Diseñado para su uso con placas que proporcionan una entrada de tope final único para cada eje que puede usarse para un tope final alto o bajo, como el Duet. Compatible con el firmware Duet-dc42. En las impresoras delta, los parámetros XYZ se refieren a las torres y los topes finales normalmente deberían ser de gama alta.
M575: establecer parámetros de comunicación serie
Ejemplo: M575 P1 B57600 S1
Esto establece los parámetros de comunicación del canal de comunicaciones en serie especificado por el parámetro P. P0 especifica la interfaz serial principal (típicamente un puerto USB, o serial-over-USB), mientras que P1 especifica un puerto serial auxiliar (por ejemplo, el puerto usado para conectar un PanelDue). El parámetro B es la velocidad de transmisión requerida (este parámetro generalmente se ignora si el puerto es un verdadero puerto USB). El parámetro S es un mapa de bits de características. El bit más bajo, si se establece, especifica que solo los comandos que incluyen una suma de verificación válida se deben aceptar desde este canal de comunicaciones.
M665: establecer configuración delta
Ejemplo: M660 L250 R160 S200 (Marlin), M660 L250 R160 B80 H200 (Duet-dc42)
Establezca las variables de calibración delta. L = longitud de la barra diagonal, R = radio delta, S = segmentos por segundo, B = radio del lecho de impresión, H = altura de la boquilla sobre el lecho cuando se dirige después de permitir las correcciones del tope final.
No creo que sea una buena idea tener dos implementaciones diferentes para el mismo código G, y también cuestiono el valor práctico de especificar el radio del lecho de impresión al definir una configuración delta, ya que muchas impresoras delta usan una impresión cuadrada o rectangular cama. Entonces, quizás deberíamos apegarnos al comando definido por Marlin como la definición de este comando, y usar un comando diferente o un conjunto de comandos para definir la forma y el tamaño de la cama de impresión. - AndrewBCN ( charla ) 23:10, 31 de enero de 2015 (PST)
M666: Ajuste el ajuste del tope final
Ejemplo M666 X-0.1 Y + 0.2 Z0
Establece ajustes delta finales.
M906: Establecer corrientes del motor
Ejemplo: M906 X300 Y500 Z200 E350
Establece las corrientes para enviar a los motores paso a paso para cada eje. Los valores están en miliamperios.
M909: establecer microstepping
Ejemplo: M909 X3 Y5 Z2 E3
Establezca el valor de microstepping para cada uno de los steppers. En Canjear, esto se implementa como un valor 2 ^, por lo que
M909 X2 establece micropasos en el eje X en 2 ^ 2 = 4,
M909 Y3 establece microstepping en el eje Y en 2 ^ 3 = 8, etc.
M998: solicitud de reenvío de línea
Ejemplo: M998 P34
Solicite un reenvío de la línea 34. En algunas implementaciones, el código de manejo de entrada sobrescribe el código G entrante con esto cuando detecta, por ejemplo, un error de suma de verificación. Luego lo deja al intérprete GCode para solicitar el reenvío.
M999: reiniciar después de ser detenido por error
Ejemplo: M999
G: Lista todos los códigos G
Ejemplo: G
Esto enumera todos los códigos G implementados en el firmware con descripción y lo envía de vuelta al host.
(Nota: esto se ha implementado en Canjear , por lo que es solo una propuesta)
M: Lista todos los códigos M
Ejemplo: M
Esto enumera todos los códigos M implementados en el firmware con descripción y lo envía de vuelta al host.
(Nota: esto se ha implementado en Canjear , por lo que es solo una propuesta)
T: Seleccionar herramienta
Ejemplo: T1
Seleccione la herramienta (o en el extrusor de implementaciones anteriores) número 1 para construir.
La secuencia seguida es:
- Configure la herramienta actual a sus temperaturas de espera especificadas por G10 (ver arriba),
- Configure la nueva herramienta a sus temperaturas de operación especificadas por G10 y espere a que todas las temperaturas se estabilicen,
- Aplique cualquier desplazamiento X, Y, Z para la nueva herramienta especificada por G10,
- Usa la nueva herramienta.
Seleccionar una herramienta inexistente (100, por ejemplo) solo hace el Paso 1. anterior. Es decir, deja todas las herramientas en su estado de espera. Por supuesto, puede usar el comando G10 de antemano para establecer la temperatura de espera en cualquier cosa que desee.
Tenga en cuenta que es posible que desee moverse a una posición de estacionamiento antes de ejecutar un comando T para permitir que el nuevo extrusor alcance la temperatura mientras no está en contacto con la impresión. Es aceptable que el firmware aplique un pequeño desplazamiento [por convención (-1 mm x número de herramienta) en Y] a la posición actual cuando se ingresa la secuencia anterior para permitir que los cambios de temperatura surtan efecto justo fuera de la posición de estacionamiento. Cualquier compensación de este tipo debe, por supuesto, deshacerse cuando finalice el procedimiento.
Si el valor Z cambia en los desplazamientos y la herramienta se mueve hacia arriba, entonces el movimiento Z se realiza antes de que X e Y se muevan. Si Z se mueve hacia abajo, X e Y se hacen primero.
Algunas implementaciones (por ejemplo, RepRapFirmware) le permiten especificar macros de código G de cambio de herramienta. Normalmente hay tres especificados (cualquiera de los cuales no puede contener comandos si se desea) que se ejecutan en este orden:
- Acciones para hacer con la herramienta anterior antes de su lanzamiento: nombre de macro: tfreeN.g donde N es el número de herramienta;
- (Se lanza la herramienta antigua);
- Acciones para hacer con la nueva herramienta antes de seleccionarla: nombre de macro: tpreN.g donde N es el número de herramienta;
- (Se selecciona una nueva herramienta); y
- Acciones para hacer con la nueva herramienta después de seleccionarla: nombre de macro: tpostN.g donde N es el número de herramienta.
Con tales implementaciones no hay que esperar la estabilización de la temperatura. Eso se puede lograr con un M116 en cualquiera de las macros, por supuesto.
Después de un reinicio, las herramientas no comenzarán a calentarse hasta que se seleccionen. Puede ponerlos todos a su temperatura de espera seleccionándolos por turnos, o dejarlos apagados para que solo se enciendan si / cuando los usa por primera vez. Los comandos M0, M1 y M112 los apagan a todos. Por supuesto, puede apagarlos todos con el comando M1 y luego volver a encenderlos. No olvides también encender la cama caliente (si la hay) si usas ese truco.
La numeración de herramientas puede comenzar en 0 o 1, dependiendo de la implementación. Algunas implementaciones (aquellas que usan el comando M563 para definir herramientas) permiten al usuario especificar números de herramientas, por lo que con ellas puede tener las herramientas 17, 99 y 203 si lo desea. Los números negativos no están permitidos.
Códigos de configuración EEPROM propuestos
BREVEMENTE: cada RepRap tiene una serie de parámetros físicos que deben ser persistentes, pero fácilmente configurables, como pasos de extrusión / mm, varios valores máximos, etc. Estos parámetros están actualmente codificados en el firmware, por lo que un usuario tiene que modificar, recompilar y vuelva a actualizar el firmware para cualquier ajuste. Estas configuraciones pueden almacenarse en la EEPROM de MCU y modificarse a través de algunos códigos M.
M500: almacenar parámetros en EEPROM
Guardar los parámetros actuales en EEPROM. La bifurcación zpl del firmware Duet implementa esto y permite pasar "S1", por lo que los parámetros modificados se pueden guardar automáticamente en EEPROM.
En Canjear, cualquier parámetro establecido a través de códigos G / M que sea diferente de lo que se lee de los archivos de configuración, se almacena de nuevo en la configuración local. Por ejemplo, la configuración de la corriente paso a paso y el microstepping a través de M906 y M907 seguido de M500 actualizarán /etc/redeem/local.cfg.
M501: leer parámetros de EEPROM
Establezca los parámetros activos a los almacenados en la EEPROM. Esto es útil para revertir parámetros después de experimentar con ellos.
M502: vuelve a la "configuración de fábrica" predeterminada.
Este comando restablece todos los parámetros ajustables a sus valores predeterminados, como se establece en el firmware. Esto no restablece ningún parámetro almacenado en la EEPROM, por lo que debe seguirse con M501 si desea hacerlo.
M503: configuración de impresión
Este comando le pide al firmware que responda con la configuración de impresión actual almacenada en EEPROM. La salida de respuesta incluye los comandos del Código G para producir cada configuración. Por ejemplo, los valores de Pasos por unidad se muestran como un comando M92.
Respuestas de la máquina RepRap a la computadora host
xx [número de línea para reenviar] [T: 93.2 B: 22.9] [C: X: 9.2 Y: 125.4 Z: 3.7 E: 1902.5] [Puede haber alguna depuración u otra información aquí]Toda la comunicación está en caracteres ASCII imprimibles. Los mensajes enviados de regreso a la computadora host son terminados por una nueva línea y se ven así:
Okay rs !!xx puede ser uno de:
ok significa que no se ha detectado ningún error.
rs significa reenviar, y es seguido por el número de línea para reenviar.
!! significa que se ha detectado una falla de hardware. La máquina RepRap se apagará inmediatamente después de enviar este mensaje.
Los valores T: y B: son la temperatura del extrusor seleccionado actualmente y el lecho, respectivamente, y solo se envían en respuesta a M105. Si tales temperaturas no existen (por ejemplo, para una extrusora que funciona a temperatura ambiente y no tiene un sensor ), se devuelve un valor por debajo del cero absoluto (-273 o C).
C: significa que las coordenadas siguen. Esos son los valores X: Y: etc. Estos solo se envían en respuesta a M114 y M117.
// Esta es alguna información de depuración u otra información en una línea por sí sola. Se puede enviar en cualquier momento.La máquina RepRap también puede enviar líneas que se vean así:
Dichas líneas siempre estarán precedidas por // .
// action: comandoEn la última versión de Pronterface y pronto Octoprint un comentario especial del formulario:
se permite enviar desde el firmware, el comando actualmente se puede pausar, reanudar o desconectar, lo que ejecutará esos comandos en el host. Como este también es un comentario, otros hosts simplemente ignorarán estos comandos.
OkayLa respuesta más común es simplemente:
comienzoCuando la máquina arranca, envía la cadena.
una vez al host antes de enviar cualquier otra cosa. Esto no debe ser reemplazado o aumentado por números de versión y similares. M115 (ver arriba) los solicita.
Todo esto significa que cada línea enviada por RepRap a la computadora host, excepto la línea de inicio, tiene un prefijo de dos caracteres (uno de ok , rs , !! o // ). La máquina nunca debe enviar una línea sin dicho prefijo.
1. El firmware Marlin 1.0.0 Gen6 no sigue la regla de dos caracteres. 'rs' es en realidad 'Reenviar' y '!!' es 'Error' Líneas de ejemplo:
- Error: el número de línea no es la línea actual + 1. Última línea: 7
- Reenviar: 8
- Escribir en el archivo: print.gco
- Terminado de guardar el archivo.
- Archivo abierto: print.gco Tamaño: 22992
- Archivo seleccionado
¿Cuándo en el código base se produjo este cambio y qué otros firmwares se ven afectados?
2. El firmware Duet-dc42 responde a algunos comandos con una cadena de respuesta en formato JSON, terminada por una nueva línea. Esto permite que las revisiones de firmware posteriores incluyan información adicional sin molestar a los clientes (p. Ej., Paneles de control con pantalla táctil) que no lo esperan, y que las respuestas se describan por sí mismas para que el cliente no se confunda si las respuestas se retrasan o pierden. Los comandos afectados son: