1. Componentes del archivo INI
Un archivo INI típico sigue un diseño bastante simple, que incluye;
-
comentarios
-
secciones
-
variables
Cada uno de estos elementos está separado en líneas individuales. Cada final de línea o el carácter de nueva línea crea un nuevo elemento.
1.1. Comentarios
Una línea de comentario se inicia con un ";" o una marca "#". Cuando el lector INI ve cualquiera de estas marcas al comienzo de una línea, el resto de la línea es ignorado por el software. Los comentarios se pueden usar para describir qué hará un elemento INI.
; Este es mi archivo de configuración de fresadora. # Configurado el 12 de enero de 2012
Los comentarios también se pueden usar para desactivar una variable. Esto hace más fácil elegir entre diferentes variables.
DISPLAY = axis # DISPLAY = touchy
En esta lista, la variable DISPLAY se establecerá en Axis porque el otro valor está comentado. Si alguien edita descuidadamente una lista como esta y deja dos de las líneas sin comentar, se utilizará la primera encontrada.
Tener en cuenta que dentro de una variable, los caracteres "#" y ";" no denotan comentarios:
INCORRECTO = valor # y un comentario # Comentario correcto CORRECTO = valor
1.2. Secciones
Las partes relacionadas de un archivo INI se separan en secciones. El nombre de una sección se encierra entre paréntesis cuadrados como este: [ESTA_SECCION]. El orden de las secciones no es importante. Las secciones comienzan en el nombre de sección y finalizan en el siguiente nombre de sección.
Las siguientes secciones son utilizadas por LinuxCNC:
-
[EMC]información general -
[DISPLAY]configuraciones relacionadas con la interfaz gráfica de usuario -
[FILTER]configuración de los programas de filtro de entrada -
[RS274NGC]configuración utilizada por el intérprete de código G -
[EMCMOT]configuraciones utilizadas por el controlador de movimiento en tiempo real -
[TASK]configuraciones utilizadas por el controlador de tareas -
[HAL]especifica archivos .hal -
[HALUI]comandos MDI utilizados por HALUI -
[APPLICATIONS]otras aplicaciones que iniciará LinuxCNC -
[TRAJ]configuraciones adicionales utilizadas por el controlador de movimiento en tiempo real -
[JOINT_n]variables de articulaciones individuales -
[AXIS_l]variables de eje individuales -
[KINS]variables de cinemáticas -
[EMCIO]configuración utilizada por el controlador de E/S
1.3. Variables
Una línea de variable se compone de un nombre de variable, un signo igual (=) y un valor. Todo, desde el primer carácter que no sea espacio en blanco después del = hasta el final de la línea, se pasa como valor, por lo que puedes incrustar espacios en símbolos de cadena si los deseas o los necesitas. Un nombre de variable a menudo es llamado palabra clave o keyword.
MACHINE = Mi máquina
Una línea variable puede extenderse a varias líneas con un caracter de barra diagonal inversa (\). Se permite un máximo de MAX_EXTEND_LINES (== 20). No debe haber espacios en blanco que sigan al carácter de barra invertida final.
Los identificadores de sección no pueden extenderse a varias líneas.
APP = sim_pin \ ini.0.max_acceleration \ ini.1.max_acceleration \ ini.2.max_acceleration \ ini.0.max_velocity \ ini.1.max_velocity \ ini.2.max_velocity
Los valores booleanos pueden ser uno de TRUE, YES o 1 para verdadero/activado y otro de FALSE, NO o 0 para false/desactivado. No son sensibles a mayúsculas.
Las siguientes secciones detallan cada sección del archivo de configuración, utilizando valores de muestra para las líneas de configuración.
Las variables que utiliza LinuxCNC siempre deben usar nombres de sección y nombres de variables como se muestra.
1.4. Secciones personalizadas y variables
La mayoría de las configuraciones de muestra utilizan secciones y variables personalizadas para poner todas las configuraciones en una ubicación para mayor comodidad.
Para agregar una variable personalizada a una sección LinuxCNC existente, simplemente incluye la variable en esa sección.
[JOINT_0] TYPE = LINEAR ... SCALE = 16000
Para introducir una sección personalizada con sus propias variables, agregar la sección y variables al archivo INI.
[PROBE] Z_FEEDRATE = 50 Z_OFFSET = 12 Z_SAFE_DISTANCE = -10
Para usar las variables personalizadas en tu archivo HAL, coloca la sección y el nombre de la variable en lugar del valor.
setp offset.1.offset [PROBE]Z_OFFSET setp stepgen.0.position-scale [JOINT_0]SCALE
|
Nota
|
El valor almacenado en la variable debe coincidir con el tipo especificado por el pin del componente. |
Para usar las variables personalizadas en el código G, usar la sintaxis de variable global #<_ini[sección]variable>. El siguiente ejemplo muestra una simple rutina touch-off del eje Z para una ruteadora o fresadora que utiliza una placa de sonda.
G91 G38.2 Z#<_ini[probe]z_safe_distance> F#<_ini[probe]z_feedrate> G90 G1 Z#5063 G10 L20 P0 Z#<_ini[probe]z_offset>
1.5. Inclusión de archivos
Un archivo INI puede incluir el contenido de otro archivo usando una directiva #INCLUDE.
#INCLUDE archivoEl nombre del archivo se puede especificar como:
-
un archivo en el mismo directorio que el archivo INI
-
un archivo relativo al directorio de trabajo
-
un nombre de archivo absoluto (comienza con /)
-
un nombre de archivo relativo al directorio de usuario (comienza con ~)
Se admiten varias directivas #INCLUDE.
#INCLUDE joint_0.inc #INCLUDE ../parallel/joint_1.inc #INCLUDE below/joint_2.inc #INCLUDE /home/myusername/myincludes/display.inc #INCLUDE ~/linuxcnc/myincludes/rs274ngc.inc
Las directivas #INCLUDE son admitidas solo con un nivel de expansión (un archivo incluido no puede incluir archivos adicionales). La extensión de archivo recomendada es .inc. No utilice una extensión de archivo .ini para archivos incluidos.
2. Secciones del archivo INI
2.1. Sección [EMC]
-
VERSION = 1.1- La versión del formato de esta configuración. Cualquier otro valor distinto de 1.1 hará que se ejecute el verificador de configuración e intente actualizar la configuración al nuevo estilo de configuración ejes/articulaciones. -
MACHINE = Mi máquina- Este es el nombre del controlador de la máquina, que se imprime en la parte superior de la mayoría de las interfaces gráficas. Puedes poner aquí lo que sea, siempre que lo hagas en una sola línea. -
DEBUG = 0- Nivel de depuración 0 significa que no se imprimirán mensajes cuando LinuxCNC esté ejecutándose desde una terminal. Las banderas de depuración generalmente son útiles solo para desarrolladores. Ver src/emc/nml_intf/debugflags.h para otras configuraciones. -
RCS_DEBUG = 1- Mensajes de depuración de RCS a mostrar. Imprime predeterminadamente solo errores (1) si los bits de EMC_DEBUG_RCS enDEBUGno están activos, de lo contrario imprime todo (-1). Usar este para seleccionar los mensajes de depuración de RCS. Ver en src/libnml/rcs/rcs_print.hh todas las banderas de MODE. -
RCS_DEBUG_DEST = STDOUT- Donde sacar los mensajes RCS_DEBUG (NULL, STDOUT, STDERR, FILE, LOGGER, MSGBOX). -
RCS_MAX_ERR = -1- Número después del cual ya no se reportarán mas errores RCS (-1 = infinito). -
NML_FILE = /usr/share/linuxcnc/linuxcnc.nml- Establecer si se quiere usar un archivo de configuración NML no predeterminado.
2.2. Sección [DISPLAY]
Los diferentes programas de interfaz de usuario utilizan diferentes opciones, y no todas las opciónes son compatibles con todas las interfaces de usuario. Hay varias interfaces como AXIS, GMOCCAPY, Touchy, QtDragon y Gscreen de QtVCP. AXIS es una interfaz para usar con computadora y monitor normales. Touchy es para usar con pantallas táctiles. GMOCCAPY se puede usar en ambos tipos y también ofrece muchas conexiones para controles de hardware. Las descripciones de las interfaces se encuentran en la sección Interfaces del manual de usuario.
-
DISPLAY = axis- The file name of the executable providing the user interface to use. Prominent valid options are (all in lower case):axis,touchy,gmoccapy,gscreen,tklinuxcnc,qtvcp,qtvcp qtdragonorqtvcp qtplasmac. -
POSITION_OFFSET = RELATIVE- El sistema de coordenadas (RELATIVEoMACHINE) a mostrar en el DRO cuando se inicia la interfaz de usuario. El sistema de coordenada RELATIVE refleja los offsets de coordenadas G92 y G5x vigentes en cada momento. -
POSITION_FEEDBACK = COMMANDED- El valor de coordenadas (COMMANDEDoACTUAL) a mostrar en el DRO cuando se inicia la interfaz de usuario. En AXIS esto se puede cambiar desde el menú "Ver". La posición COMMANDED es la posición solicitada por LinuxCNC. La posición ACTUAL es la posición retroalimentada de los motores si se tiene retroalimentacion como la mayoría de los servosistemas. Por lo general, se utiliza el valor COMMANDED. -
DRO_FORMAT_MM = %+08.6f- Ajusta el formato DRO predeterminado en modo métrico (normalmente 3 decimales y 6 dígitos rellenados con espacios a la izquierda). El ejemplo anterior rellenará con ceros, mostrará 6 dígitos decimales y forza mostrar un signo + para números positivos. El formateo sigue la práctica de Python: https://docs.python.org/2/library/string.html#format-specification-mini-language. Se generará un error si el formato no puede aceptar un valor de punto flotante. -
DRO_FORMAT_IN = % 4.1f- Ajusta el formato DRO predeterminado en modo imperial (normalmente 4 decimales, y 6 dígitos rellenados con espacios a la izquierda). El ejemplo anterior mostrará solo un dígito decimal. El formato sigue la práctica de Python: https://docs.python.org/2/library/string.html#format-specification-mini-language . Se generará un error si el formato no puede aceptar un valor de punto flotante. -
CONE_BASESIZE = .25- Override the default cone/tool base size of .5 in the graphics display. Valid values are between 0.025 and 2.0. -
DISABLE_CONE_SCALING = TRUE- Any non-empty value (including "0") will override the default behavior of scaling the cone/tool size using the extents of the currently loaded G-code program in the graphics display. -
MAX_FEED_OVERRIDE = 1.2- El ajuste máximo de alimentación que puede seleccionar el usuario. 1.2 significa 120% de la velocidad de alimentación programada. -
MIN_SPINDLE_OVERRIDE = 0.5- El ajuste mínimo del husillo que el usuario puede seleccionar. 0.5 significa el 50% de la velocidad programada del husillo. (Esto se usa para establecer la velocidad mínima del husillo.) -
MIN_SPINDLE_0_OVERRIDE = 0.5- El ajuste mínimo del husillo que el usuario puede seleccionar. 0.5 significa el 50% de la velocidad programada del husillo. (Esto se usa para establecer la velocidad mínima del husillo). En una máquina de múltiples husillos habrá entradas para cada número de husillo. Solo lo usan interfases de usuario basadas en Qtvcp. -
MAX_SPINDLE_OVERRIDE = 1.0- El ajuste máximo del husillo que el usuario puede seleccionar. 1.0 significa el 100% de la velocidad programada del husillo. -
MAX_SPINDLE_0_OVERRIDE = 1.0- El ajuste máximo de alimentación que el usuario puede seleccionar. 1.2 significa 120% de la velocidad de alimentación programada. En una máquina de múltiples husillos habrá entradas para cada número de husillo. Solo lo usan interfases de usuario basadas en QtVCP. -
DEFAULT_SPINDLE_SPEED = 100- Las RPM predeterminadas del husillo cuando se inicia en modo manual. Si esta configuración no está presente, el valor predeterminado es 1 RPM para AXIS y 300 RPM para GMOCCAPY.-
obsoleta - Usar en cambio la sección [SPINDLE_n]
-
-
DEFAULT_SPINDLE_0_SPEED = 100- Las RPM predeterminadas del husillo en modo manual. En una máquina con múltiples husillos habrá entradas para cada número de husillo. Solo usado por interfases de usuario basadas en QtVCP.-
obsoleta - Usar en cambio la sección [SPINDLE_n].
-
-
SPINDLE_INCREMENT = 200- Incremento utilizado al hacer clic en los botones de aumento/disminución. Utilizada sólo por las interfaces basadas en QtVCP.-
obsoleta - Usar en cambio la sección [SPINDLE_n].
-
-
MIN_SPINDLE_0_SPEED = 1000- Las RPM mínimas que pueden seleccionarse manualmente. En máquinas con múltiples husillo habrá entradas para cada número de husillo. Usada sólo por interfaces de usuario basadas en QtVCP.-
obsoleta - Usar en cambio la sección [SPINDLE_n].
-
-
MAX_SPINDLE_0_SPEED = 20000- Las RPM máximas que se pueden seleccionar manualmente. En una máquina con múltiples husillos habrá entradas para cada número de husillo. Solo usada por interfaces de usuario basadas en QtVCP.-
obsoleta - Usar en cambio la sección [SPINDLE_n].
-
-
PROGRAM_PREFIX = ~/linuxcnc/nc_files- La ubicación predeterminada para archivos de código G, subrutinas nombradas y códigos M definidos por el usuario. Se busca en el directorioPROGRAM_PREFIXantes que en los directorios listados en[RS274]SUBROUTINE_PATHy[RS274]USER_M_PATH. -
INTRO_GRAPHIC = emc2.gif- La imagen que se muestra en la pantalla de inicio. -
INTRO_TIME = 5- El tiempo máximo a mostrar la pantalla de inicio, en segundos. -
CYCLE_TIME = 0.05- Tiempo de ciclo de despliegue de la GUI. Dependiendo de la pantalla, puede ser un segundos o ms (de preferencia ms). A menudo es la tasa de actualización en vez de el tiempo de espera entre actualizaciones. Si no se configura correctamente el tiempo de actualización, puede que la pantalla no responda o se vea entrecortada. Un valor de 100 ms (0.1 s) es una configuración común, aunque en un rango entre 50 - 200 ms (.05 - .2 s) puede ser usable. Un CPU con poca energía puede ver mejoras con un valor más alto. Normalmente el valor predeterminado esta bien. -
PREVIEW_TIMEOUT = 5- Tiempo de espera (en segundos) para cargar la previsualización gráfica de código G. Actualmente, sólo AXIS. -
HOMING_PROMPT = TRUE- Any non-empty value (including "0") will enable showing a prompt message with homing request, when the Power On button is pressed in AXIS GUI. Pressing the "Ok" button in prompt message is equivalent to pressing the "Home All" button(or the Ctrl-HOME key). -
FOAM_W = 1.5- Establece la altura de espuma W. -
FOAM_Z = 0- Establece la altura de espuma Z. -
GRAPHICAL_MAX_FILE_SIZE = 20- El tamaño más grande (en mega bytes) que se mostrará gráficamente. Si el programa es más grande que esto, se mostrará una caja delimitada. Predeterminadamente, ésta configuración está a 20 MB o 1/4 de la memoria del sistema, lo que sea más bajo. Un valor negativo se interpreta como ilimitado.
|
Nota
|
GladeVCP y PyVCP utilizan los siguientes elementos [DISPLAY], consulte la sección Incrustando una pestaña del capítulo GladeVCP o el Capítulo PyVCP para más información. |
-
EMBED_TAB_NAME = GladeVCP demo -
EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID\} -u ./gladevcp/hitcounter.py ./gladevcp/manual-example.ui -
DEFAULT_LINEAR_VELOCITY = .25- La velocidad predeterminada para trotes lineales, en unidades máquina por segundo. -
MIN_VELOCITY = .01- El valor más bajo aproximado del control deslizante de trote. -
MAX_LINEAR_VELOCITY = 1.0- La velocidad máxima para trotes lineales, en unidades de máquina por segundo. -
MIN_LINEAR_VELOCITY = .01- El valor más bajo aproximado del deslizante de trote. -
DEFAULT_ANGULAR_VELOCITY = .25- La velocidad predeterminada para trotes angulares, en unidades máquina por segundo. -
MIN_ANGULAR_VELOCITY = .01- El valor más bajo aproximado del deslizante de trote angular. -
MAX_ANGULAR_VELOCITY = 1.0- La velocidad máxima para trotes angulares, en unidades de máquina por segundo. -
INCREMENTS = 1 mm, .5 in, ...- Define los incrementos disponibles para trotes incrementales. Los INCREMENTS se pueden usar para ajustar los valores predeterminados. Los valores pueden ser números decimales (p. ej. 0.1000) o números fraccionarios (p. ej. 1/16), opcionalmente seguidos por una unidad (cm, mm, um, inch, in o mil). Si no se especifica una unidad, se supone la unidad de máquina. Las distancias métricas e imperiales se pueden mezclar: INCREMENTS = 1 inch, 1 mil, 1 cm, 1 mm, 1 um es una entrada válida. -
GRIDS = 10 mm, 1 in, ...- Define los valores preestablecidos para las líneas de cuadrícula. El valor se interpreta de la misma manera queINCREMENTS. -
OPEN_FILE = /ruta/completa/a/archivo.ngc- El archivo que se mostrará en la gráfica de vista previa cuando se inicie AXIS. Una cadena en blanco "" no cargará ningún archivo en el arranque. GMOCCAPY no usará esta configuración, ya que ofrece una entrada correspondiente en su página de configuración. -
EDITOR = gedit- El editor que se usará al seleccionar Archivo> Editar para editar código G desde el menú de AXIS. Esto debe configurarse para que este elemento de menú trabaje. Otra entrada válida esgnome-terminal -e vim. Esta entrada no se aplica a GMOCCAPY ya que esta GUI tiene un editor integrado. -
TOOL_EDITOR = tooledit- El editor que se utilizará al editar la tabla de herramientas (por ejemplo, al seleccionar "Archivo > Editar datos de herramienta …" en AXIS). Otras entradas validas songedit,gnome-terminal -e vimygvim. Esta entrada no se aplica a GMOCCAPY ya que esta GUI tiene un editor integrado. -
PYVCP = /archivo.xml- El archivo de descripción del panel PyVCP. Ver el << cha:pyvcp,capítulo PyVCP >> para más información. -
PYVCP_POSITION = BOTTOM- La ubicación del panel PyVCP en la interfaz de usuario AXIS. Si se omite esta variable, el panel pasará por defecto al lado derecho. La única alternativa valida esBOTTOM. Ver el << cha:pyvcp,Capítulo PyVCP >> para más información. -
LATHE = 1- Cualquier valor no vacío (incluido "0") hace que Axis utilice el "modo torno" con una vista superior y con Radio y Diámetro en el DRO. -
BACK_TOOL_LATHE = 1- Cualquier valor no vacío (incluido "0") hace que Axis utilice el "modo torno de herramienta trasera" con el eje X invertido. -
FOAM = 1- Cualquier valor no vacío (incluido "0") hace que Axis cambie la visualización para el modo cortador por espuma. -
GEOMETRY = XYZABCUVW- Controla la vista previa y el backplot de movimiento giratorio. Este elemento consiste en una secuencia de letras de eje, opcionalmente precedidas por un signo "-":-
Las letras X,Y,Z especifican la traslación a lo largo de la coordenada nombrada.
-
Las letras A,B,C especifican rotación alrededor de los correspondientes ejes X, Y, Z.
-
Las letras U,V,W especifican traslación a lo largo de los ejes relacionados X, Y, Z.
-
Cada letra especificada debe ocurrir en
[TRAJ]COORDINATESpara que tenga efecto. -
Un caracter especial "-" precediendo a cualquier letra invierte la dirección de la operación.
-
Las operaciones de traslación y rotación se evalúan de derecha a izquierda. De tal manera que usar
GEOMETRY=ZYZBCespecifica una rotación C seguida de una rotación B seguida por traslaciones Z, Y, X. El ordenamiento consecutivo de letras de traslación es inmaterial. -
La cadena apropiada de GEOMETRY depende de la configuración de la máquina y de las cinemáticas usadas para controlarla. El orden de las letras es importante. Por ejemplo, rotar alrededor de C y luego B es diferente que rotar alrededor de B y luego C.
-
Las rotaciones se aplican predeterminadamente con respecto al origen de máquina. Ejemplo:
GEOMETRY=CXYZprimero traslada al punto de control X, Y, Z y luego realiza una rotación C alrededor del eje Z centrado en el origen de máquina. -
Ejemplo de traslación UVW:
GEOMETRY=XYZUVWprovoca mover UVW en el sistema de coordenadas de la herramienta y mover XYZ en el sistema de coordenadas del material. -
Las máquinas de corte de espuma (
FOAM = 1) deben especificar "XY;UV" o dejar el valor en blanco aunque este valor se ignore actualmente en el modo de cortador de espuma. Una versión futura puede definir qué significa ";", pero si lo hace "XY;UV" significará lo mismo que el predeterminado para espuma actual. -
Experimental: Si se incluye el signo de exclamación (
!) en la cadena GEOMETRY, muestra los puntos para las rotaciones A, B, C respecto a los offsets X, Y, Z establecidos por los códigos G5x, G92. Ejemplo: UsandoGEOMETRY = !CXZpara una máquina con[TRAJ]COORDINATES=XZC. Esta provisión aplica sólo para gráficos en vivo (previsualizaciones de código G deben hacerse con offsets G5x, G92 cero. Esto se puede facilitar configurando offsets en programas sólo cuando la tarea se ejecuta como se indica en #<_task> == 1. Si existen offsets distintos de cero en el arranque por persistencia, se debe poner en cero los offsets y recargar la vista previa.
NotaSi no se incluye [DISPLAY]GEOMETRYen el archivo INI, un predeterminado es proporcionado por el programa GUI[DISPLAY]DISPLAY(típicamente "XYZABCUVW"). -
-
ARCDIVISION = 64- Establece la calidad de la vista previa de los arcos. Los arcos se previsualizan dividiéndolos en una serie de líneas rectas; un semicírculo se divide en ARCDIVISIÓN partes. Los valores más grandes dan una vista previa más precisa, pero tardan más tiempo en cargar y dan como resultado una pantalla más lenta. Los valores más pequeños dan una vista previa menos precisa, pero tarda menos tiempo en cargar y puede resultar en un despliegue más rápido. El valor predeterminado de 64 significa que un círculo de hasta 3 pulgadas se mostrará con precision de 1 mil (.03%). -
MDI_HISTORY_FILE =- El nombre del archivo de historial MDI local. Si no se especifica, AXIS guardará el historial MDI en .axis_mdi_history en el directorio de usuario. Esto es útil si tiene múltiples configuraciones en una computadora. -
JOG_AXES =- El orden en que se asignan las teclas de trote a las letras del eje. Las flechas izquierda y derecha se asignan a la letra del primer eje, arriba y abajo a la segunda, página arriba/página abajo a la tercera, y corchetes izquierdo y derecho a la cuarta. Si no se especifica, el valor predeterminado se determina a partir de los valores de[TRAJ]COORDINATES,[DISPLAY]LATHEy[DISPLAY]FOAM. -
JOG_INVERT =- Para cada letra de eje, se invierte la dirección del trote. El valor predeterminado es "X" para tornos y en blanco en el resto.NotaLa configuración de JOG_AXESyJOG_INVERTse aplican al trote modo universal por letra de eje de coordenadas y están vigentes mientras se encuentra en modo universal después de un homing exitoso. Cuando se opera en modo articulación anterior al homing, las teclas de trote del teclado se asignan en una secuencia fija: izquierda/derecha: joint0, arriba/abajo: joint1, página arriba/ página abajo: joint2, corchete izquierdo/derecho: joint3 -
USER_COMMAND_FILE = mycommands.py- El nombre de un archivo Python opcional, específico de configuración originado por la GUI AXIS en lugar del archivo específico del usuario~/.axisrc.
|
Nota
|
El siguiente elemento [DISPLAY] es utilizado únicamente por la interfaz TKLinuxCNC. |
-
HELP_FILE = tklinucnc.txt- Ruta al archivo de ayuda.
2.3. Sección [FILTER]
AXIS y GMOCCAPY tienen la capacidad de enviar archivos cargados a través de un programa de filtro. Este filtro puede hacer cualquier tarea deseada: algo tan simple como asegurarse el archivo termina con M2, o algo tan complicado como detectar si la entrada es una imagen de profundidad y generar código G para fresar la forma definida. La sección [FILTER] del archivo INI controla cómo trabajan los filtros. Primero, para cada tipo de archivo, escribe una línea PROGRAM_EXTENSION. Luego, especifica el programa a ejecutar para cada tipo de archivo. Este programa recibe como primer argumento el nombre del archivo de entrada, y debe escribir código RS274NGC en la salida estándar. Esta salida es lo que se mostrará en el área de texto, se previsualizará en el área de pantalla y será ejecutado por LinuxCNC cuando se ordene.
-
PROGRAM_EXTENSION = .extensión Descripción
Si su postprocesador genera archivos en mayúsculas, es posible que desee agregar la siguiente linea:
PROGRAM_EXTENSION = .NGC Postprocesador XYZ
Las siguientes líneas agregan soporte para el convertidor de imagen a código G incluido con LinuxCNC.
PROGRAM_EXTENSION = .png,.gif,.jpg # Imagen de profundidad de escala de grises png = image-to-gcode gif = image-to-gcode jpg = image-to-gcode
Un ejemplo de un convertidor de código G personalizado ubicado en el directorio linuxcnc.
PROGRAM_EXTENSION = .gcode 3D Printer gcode = /home/mill/linuxcnc/convert.py
|
Nota
|
El archivo de programa asociado con una extensión debe tener la ruta completa al programa o estar ubicado en un directorio que se encuentre en la ruta del sistema. |
También es posible especificar un intérprete:
PROGRAM_EXTENSION = .py Python Script py = python
De esta manera se puede abrir cualquier script de Python y su salida es tratada como código G. Un script de ejemplo de este tipo está disponible en nc_files/holecircle.py. Este script crea código G para perforar una serie de agujeros a lo largo de una circunferencia. Hay muchos generadores más de código G en el sitio Wiki de LinuxCNC https://wiki.linuxcnc.org/.
Los filtros de Python deben usar la función de impresión para enviar el resultado a AXIS.
Este programa de ejemplo filtra un archivo y agrega un eje W para que coincida con el eje Z. Depende de que haya un espacio entre cada palabra de eje para que funcione.
#!/usr/bin/env python3 import sys def main(argv): openfile = open(argv[0], 'r') file_in = openfile.readlines() openfile.close() file_out = [] for line in file_in: # print(line) if line.find('Z') != -1: words = line.rstrip('\n') words = words.split(' ') newword = '' for i in words: if i[0] == 'Z': newword = 'W'+ i[1:] if len(newword) > 0: words.append(newword) newline = ' '.join(words) file_out.append(newline) else: file_out.append(line) for item in file_out: print("%s" % item) if __name__ == "__main__": main(sys.argv[1:])
-
FILTER_PROGRESS=%d
Si se establece la variable de entorno AXIS_PROGRESS_BAR, entonces las líneas escritas a stderr de la forma de arriba establecen la barra de progreso de AXIS en el porcentaje dado. Esta característica debería ser utilizada por cualquier filtro que se ejecute por un tiempo prolongado.
2.4. Sección [RS274NGC]
-
PARAMETER_FILE = myfile.var- El archivo ubicado en el mismo directorio que el archivo INI que contiene los parámetros utilizados por el intérprete (guardado entre ejecuciones). -
ORIENT_OFFSET = 0- Un valor float agregado al parámetro R de una operación M19 Orientar husillo. Se usa para definir una posición cero arbitraria independientemente de la orientación de montaje del codificador. -
RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92 G94 G97 G98- Una cadena de códigos NC que con la que se inicializa el intérprete. Esto no es un sustituto para especificar códigos G modales en la parte superior de cada archivo NGC, porque los códigos modales de las máquinas difieren, y pueden ser cambiados por el código G interpretado anteriormente en la sesión. -
SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs- Especifica una lista separada por dos puntos (:) de hasta 10 directorios a buscar cuando se especifican subrutinas de un solo archivo en código G. Se busca en estos directorios después de buscar[DISPLAY] PROGRAM_PREFIX(si está especificado) y antes de buscar[WIZARD]WIZARD_ROOT(si se especifica). Se busca en las rutas en el orden que están listadas. Se usa el primer archivo de subrutina coincidente encontrado en la búsqueda. Los directorios se especifican en relación con el directorio actual para el archivo INI o como rutas absolutas. La lista no debe contener espacios en blanco intermedios. -
G64_DEFAULT_TOLERANCE =n (Predeterminado: 0) Valor P predeterminado para G64 si P no es llamado. -
G64_DEFAULT_NAIVETOLERANCE =n (Predeterminado: 0) Valor Q predeterminado para G64 si Q no es llamado. -
CENTER_ARC_RADIUS_TOLERANCE_INCH =n (Predeterminado 0.00005) -
CENTER_ARC_RADIUS_TOLERANCE_MM =n (Predeterminado 0.00127) -
USER_M_PATH = myfuncs:/tmp/mcodes:experimentalmcodes- Especifica una lista de directorios separados por dos puntos (:) para funciones definidas por el usuario. Los directorios se especifican relativos al directorio actual del archivo INI o como rutas absolutas. La lista no debe contener espacios en blanco intermedios.Se realiza una búsqueda para cada posible función definida por el usuario, típicamente (M100-M199). El orden de búsqueda es:
-
[DISPLAY]PROGRAM_PREFIX(si se especifica) -
Si no se especifica
[DISPLAY]PROGRAM_PREFIX, busca en la ubicación predeterminada: nc_files -
Luego busca en cada directorio de la lista
[RS274NGC]USER_M_PATH.El primer ejecutable M1xx encontrado en la búsqueda se usa para cada M1xx.
NotaEl número máximo de directorios USER_M_PATHse define en tiempo de compilación (typ:USER_DEFINED_FUNCTION_MAX_DIRS == 5). -
-
INI_VARS = 1(Predeterminado: 1)
Permite que los programas de código G lean valores del archivo INI usando el formato #<_ini[sección]nombre>. Ver parámetros del código G. -
HAL_PIN_VARS = 1(Predeterminado: 1)
Permite que los programas de código G lean los valores de los pines HAL usando el formato #<_hal[elemento HAL]>. El acceso a esta variable es de solo lectura. Consultar parámetros de código G para obtener más detalles y una advertencia importante. -
RETAIN_G43 = 0(Predeterminado: 0)
Cuando está configurado, puede activar G43 después de cargar la primer herramienta, y luego despreocuparse de eso durante el transcurso del programa. Cuando usted finalmente descargue la última herramienta, el modo G43 es cancelado. -
OWORD_NARGS = 0(Predeterminado 0)
Si esta función está habilitada, una subrutina llamada puede determinar el número de parámetros posicionales reales pasados al inspeccionar el parámetro#<n_args>. -
NO_DOWNCASE_OWORD = 0(Predeterminado: 0)
Conservar mayúsculas y minúsculas en los nombres de palabra O dentro de los comentarios si está configurado, permite leer elementos HAL en mayúsculas y minúsculas en comentarios estructurados como(debug, #<_hal[ElementoConMayMin]). -
OWORD_WARNONLY = 0(Predeterminado: 0)
Advertir en lugar de error en caso de errores en las subrutinas O-word. -
DISABLE_G92_PERSISTENCE = 0(Predeterminado: 0) Permite limpiar el offset G92 automáticamente al iniciar la configuración. -
DISABLE_FANUC_STYLE_SUB = 0(Predeterminado: 0) Si hay alguna razón para desactivar subrutinas Fanuc asignarle 1. -
G73_PECK_CLEARANCE = .020 (default: Metric machine: 1mm, imperial machine: .050 inches) Chip breaking back-off distance in machine units
-
G83_PECK_CLEARANCE = .020 (default: Metric machine: 1mm, imperial machine: .050 inches) Clearance distance from last feed depth when machine rapids back to bottom of hole, in machine units.
|
Nota
|
Las seis opciones anteriores fueron controladas por la máscara de bits
|
|
Nota
|
[WIZARD]WIZARD_ROOT es una ruta de búsqueda válida, pero el asistente no se ha implementado por completo y los resultados de su uso son impredecibles. |
-
LOG_LEVEL = 0- Especifica el nivel de registro en bitácora (predeterminado: 0) -
LOG_FILE = file-name.log
Para especificar el archivo a usar para registrar datos de bitácora. -
REMAP=M400 modalgroup=10 argspec=Pq ngc=myprocedure- Ver el capítulo Extensión de código G por remapeo para más detalles. -
ON_ABORT_COMMAND=O <on_abort> call- Ver el capítulo Extensión de código G por remapeo para más detalles.
2.5. Sección [EMCMOT]
Esta es una sección personalizada y LinuxCNC no la utiliza directamente. Muchas configuraciones utilizan valores de esta sección para cargar el controlador de movimiento. Para obtener más información sobre el controlador de movimiento, ver la sección Movimiento.
-
EMCMOT = motmod- El nombre del controlador de movimiento generalmente se usa aquí. -
BASE_PERIOD = 50000- El período de tarea Base en nanosegundos. -
SERVO_PERIOD = 1000000- Este es el período de tarea "Servo" en nanosegundos. -
TRAJ_PERIOD = 100000- Este es el período de la tarea Planificador de trayectoria en nanosegundos. -
COMM_TIMEOUT = 1.0- Número de segundos para esperar a Motion (la parte en tiempo real del controlador de movimiento) para acusar recibo de mensajes desde Task (la parte en tiempo no-real del controlador de movimiento). -
HOMEMOD =alternate_homing_module [home_parms=value] La variable HOMEMOD es opcional. Si se especifica, usa un módulo (construido por el usuario) en lugar del predeterminado (homemod). Los parámetros del módulo (home_parms) pueden incluirse si los soporta el módulo especificado. La configuración puede ser anulada desde la línea de comandos usando la opción -m ($ linuxcnc -h).
2.6. Sección [TASK]
-
TASK = milltask- Especifica el nombre de la tarea ejecutable. La tarea ejecutable hace varias cosas, como-
Comunicar con la interfaz de usuario por medio de NML,
-
comunicar con el planificador de movimiento en tiempo real por medio de memoria compartida no-HAL, y
-
interpretar código G. Actualmente sólo hay una tarea ejecutable que tiene sentido para el 99.99% de los usuarios: milltask.
-
-
CYCLE_TIME = 0.010- El período, en segundos, en el que se ejecutará TASK. Este parámetro afecta el intervalo de sondeo cuando se espera que se complete el movimiento, cuando se ejecuta una instrucción de pausa y al aceptar un comando desde la interfaz de usuario. Por lo general, no es necesario cambiar este número.
2.7. Sección [HAL]
-
HALFILE = example.hal- Ejecuta el archivo example.hal al arranque.Si se especifica
HALFILEvarias veces, los archivos se interpretan en el orden en que aparecen en el archivo INI. Los archivos HAL son descriptivos, la ejecución de lo descrito en el archivo se dispara por hilos a los que se les cuelgan funciones, no al leer el archivo HAL. Casi todas las configuraciones tendrán al menos unHALFILE, y los sistemas paso a paso suelen tener dos de estos archivos, uno que especifica la configuración paso a paso genérica (core_stepper.hal) y uno que especifica los pines de la máquina (xxx_pinout.hal).Los archivos HAL especificados en la variable
HALFILESse encuentran con una búsqueda. Si el archivo nombrado se encuentra en el directorio que contiene el archivo INI, se utiliza. Si el archivo nombrado no se encuentra en este directorio de archivos INI, se realiza una búsqueda utilizando una biblioteca de sistema de archivos HAL.Si se arranca LinuxCNC con el script
linuxcncusando la opción "-H`_nombredirectorio_", se prepone el nombre de directorio especificado a la búsqueda descrita arriba, de tal manera que se busca primero en _nombredirectorio_. La opción "-H` nombredirectorio" puede ser especificada mas de una vez, los directorios se preponen en orden.Un HALFILE también se puede especificar como una ruta absoluta (cuando el nombre comienza con un caracter /). Las rutas absolutas no son recomendables ya que su uso puede limitar la reubicación de configuraciones.
-
HALFILE = texample.tcl[arg1 [arg2] …] - Ejecuta el archivo tcl texample.tcl al inicio con arg1, arg2, etc. como lista argv. Los archivos con un sufijo .tcl son procesados como se indica arriba, pero son procesados por haltcl. Ver el capitulo HALTCL para más información. -
HALFILE = LIB:sys_example.hal- Ejecuta el archivo de la biblioteca de sistema sys_example.hal al inicio. El uso explícito del prefijo LIB: provoca el uso de la biblioteca del sistema HALFILE sin buscar en el directorio de archivos INI. -
HALFILE = LIB:sys_texample.tcl[arg1 [arg2 …]] - Ejecuta el archivo de biblioteca de sistema sys_texample.tcl al inicio. El uso explícito del prefijo LIB: provoca el uso de la biblioteca del sistema HALFILE sin buscar en el directorio de archivos INI.
Elementos de HALFILE especifican archivos que cargan componentes HAL y hacen conexiones de señales entre pines de componente. Los errores más comunes son
-
omisión de la sentencia addf necesaria para agregar funciones de componente a un hilo,
-
especificación incompleta de señal (red).
La omisión de las sentencias addf requeridas es casi siempre es un error. Las señales generalmente incluyen una o más conexiones de entrada y una sola salida (pero ambas no son estrictamente necesarias). Se proporciona un archivo de biblioteca de sistema para verificar estas condiciones e informar a stdout y en una ventana emergente de GUI:
HALFILE = LIB:halcheck.tcl [nopopup]
|
Nota
|
La línea LIB:halcheck.tcl debería ser la última [HAL]HALFILE. Especificar la opción nopopup para suprimir el mensaje emergente y permitir el inicio inmediato. Las conexiones realizadas con un POSTGUI_HALFILE no serán verificadas. |
-
TWOPASS = ON- Utilice el procesamiento de dos pasos para cargar componentes HAL. Con el procesamiento TWOPASS, las líneas[HAL]HALFILEse procesan en dos pasadas. En el primer pase (pass0), se leen todos los HALFILES y se acumulan múltiples apariciones de comandos loadrt y loadusr. Estos comandos de carga acumulados se ejecutan al final de pass0. Esta acumulación permite especificar más de una vez líneas de carga para un componente dado (siempre que los nombres names= utilizados sean únicos en cada uso). En el segundo pase (pass1) los HALFILES son releídos y todos los comandos, excepto los comandos de carga ejecutados previamente, son ejecutados. -
TWOPASS = nodelete verbose- La funcionalidadTWOPASSse puede activar con cualquier cadena no nula que incluya las palabras clave verbose y nodelete. La palabra clave verbose provoca la impresión de detalles en la salida estándar. La palabra clave nodelete preserva archivos temporales en /tmp.
Para obtener más información, ver el capítulo HAL TWOPASS.
-
HALCMD = _comando_- Ejecuta comando como un solo comando HAL. Si se especificaHALCMDvarias veces, los comandos se ejecutan en el orden en que aparecen en el archivo INI. Las líneasHALCMDse ejecutan después de todas las líneasHALFILE. -
SHUTDOWN = shutdown.hal- Ejecuta el archivo shutdown.hal cuando se sale de LinuxCNC. Dependiendo de los controladores de hardware utilizados, esto puede permitir configurar salidas a valores definidos cuando LinuxCNC sale normalmente. Sin embargo, ya que no se garantiza que este archivo será ejecutado (por ejemplo, en el caso de un bloqueo de la computadora) no es un reemplazo para una cadena de parada de emergencia adecuada u otras protecciones contra fallos de software. -
POSTGUI_HALFILE = example2.hal- Ejecuta example2.hal después de que la GUI haya creado sus pines HAL. Algunas GUI crean pines HAL y admiten el uso de un archivo HAL postgui para usarlos. Las GUI que admiten archivos HAL postgui incluyen Touchy, AXIS, Gscreen y GMOCCAPPY.
Ver la sección PyVCP con AXIS para más información. -
HALUI = halui- Agrega los pines de la interfaz de usuario de HAL.
Para mas información, ver el capítulo Interfaz de usuario HAL.
2.8. Sección [HALUI]
-
MDI_COMMAND = G53 G0 X0 Y0 Z0- Se puede ejecutar un comando MDI utilizandohalui.mdi-command-00. Incremente el número para cada comando que se enumera en la sección [HALUI]. También es posible iniciar subrutinas.MDI_COMMAND = o<tu-subrutina> CALL [#<tu-variable>]
2.9. Sección [APPLICATIONS]
LinuxCNC puede iniciar otras aplicaciones antes de que se inicie la GUI especificada. Las aplicaciones se pueden iniciar después de un retraso especificado para permitir acciones dependientes de la GUI (como crear pines HAL específicos de GUI).
-
DELAY = _valor_- Segundos de espera antes de comenzar otras aplicaciones. Puede ser necesario un retraso si una aplicación tiene dependencias en acciones[HAL]POSTGUI_HALFILEo pines HAL creados por GUI (predeterminadoDELAY= 0). -
‘APP =` appname [arg1 [arg2 …]]’ - Aplicación que se iniciará. Esta especificación se puede incluir varias veces. El nombre de la aplicación puede ser dado explícitamente como un nombre de archivo especificado absoluto o especificado con tilde (primer carácter es / o ~), un nombre de archivo relativo (los primeros caracteres del nombre de archivo son ./), o como un archivo en el directorio INI. Si no se encuentra ningún archivo ejecutable usando estos nombres, se utiliza la ruta de búsqueda del usuario para encontrar la aplicación.
Ejemplos:-
Simular las entradas a los pines HAL para prueba (usando sim_pin, una GUI simple para configurar entradas a parámetros, pines desconectados o señales sin escritores):
APP = sim_pin motion.probe-input halui.abort motion.analog-in-00
-
Invocar halshow con una lista de observación previamente guardada. Como LinuxCNC establece el directorio de trabajo al directorio del archivo INI, puedes hacer referencia a los archivos en ese directorio (ejemplo: my.halshow):
APP = halshow my.halshow
-
Alternativamente, se podría especificar un archivo de lista de observación identificado con un nombre de ruta completo:
APP = halshow ~/saved_shows/spindle.halshow
-
Abrir halscope usando una configuración previamente guardada:
APP = halscope -i my.halscope
-
2.10. Sección [TRAJ]
|
Aviso
|
El nuevo Planificador de trayectoria (TP) está activado de forma predeterminada. Si no tiene configuraciones TP en su sección [TRAJ] - LinuxCNC por defecto hace: |
La sección [TRAJ] contiene parámetros generales para el módulo de planificación de trayectoria en motion.
-
ARC_BLEND_ENABLE = 1- Activa el nuevo TP. Si se establece en 0, TP utiliza mezcla parabólica (1 segmento adelantado). (Predeterminado: 1). -
ARC_BLEND_FALLBACK_ENABLE = 0- Recurrir opcionalmente a mezclas parabólicas si la velocidad estimada es más rápida. Sin embargo, esta estimación es aproximada y parece que deshabilitarlo proporciona un mejor rendimiento (Predeterminado: 0). -
ARC_BLEND_OPTIMIZATION_DEPTH = 50- Profundidad de anticipación en cantidad de segmentos.Para ampliar esto un poco, se puede elegir este valor de forma algo arbitraria. Aquí hay una fórmula para estimar cuánta profundidad se necesita para una configuración determinada:
# n = v_max / (2.0 * a_max * t_c) # dónde: # n = profundidad de optimización # v_max = velocidad máxima del eje (UU/seg) # a_max = aceleración máxima del eje (UU/seg) # t_c = período servo (segundos)Por lo tanto, una máquina con una velocidad máxima del eje de 10 IPS, una aceleración máxima de 100 IPS2, y un período servo de 0.001 s necesitaría:
10 / (2.0 * 100 * 0.001) = 50 segmentos para alcanzar siempre la velocidad máxima a lo largo del eje más rápido.
En la práctica, afinar este número no es tan importante, ya que la anticipación rara vez necesita toda la profundidad a menos que se tengan muchos segmentos muy cortos. Si durante la prueba se notan ralentizaciones extrañas y no se puede averiguar de dónde vienen, primero intentar aumentar esta profundidad usando la fórmula anterior.
Si aún se ven ralentizaciones extrañas, pueden deberse a que se tienen segmentos cortos en el programa. Si este es el caso, intentar agregar una pequeña tolerancia para la detección Naive CAM. Una buena regla general es esta:
# min_length ~= v_req * t_c # dónde: # v_req = velocidad deseada en UU/seg # t_c = servo período (segundos)Si deseas recorrer una ruta a 1 IPS = 60 IPM, y tu período servo es de 0.001 segundos, entonces cualquier segmento más corto que min_length ralentizará la trayectoria. Si configuras la tolerancia Naive CAM a aproximadamente esta longitud mínima, los segmentos demasiado cortos se combinarán para eliminar este cuello de botella. Por supuesto, establecer la tolerancia demasiado alta significa grandes desviaciones de ruta, por lo que debes jugar un poco para encontrar un buen valor. Como consejo, comienza con 1/2 de min_length, luego continúa ajustando según sea necesario. *
ARC_BLEND_GAP_CYCLES = 4- Qué tan corto debe ser el segmento anterior antes de que el planificador de trayectorias lo consuma.A menudo, una combinación de arco circular dejará segmentos de línea cortos entre mezclas. Como la geometría tiene que ser circular, no podemos mezclar toda una línea si la siguiente es un poco más corta. Puesto que el planificador de trayectoria tiene que tocar cada segmento al menos una vez, significa que segmentos muy pequeños ralentizarán las cosas significativamente. Mi solución a esto es "consumir" el segmento corto haciéndolo parte del arco de mezcla. Ya que la línea + mezcla es un segmento, no tenemos que reducir la velocidad para alcanzar el segmento muy corto. Probablemente, no necesitarás tocar esta configuración. *
ARC_BLEND_RAMP_FREQ = 20- Esta es una frecuencia de corte para usar velocidades en rampa.Velocidad en rampa en este caso solo significa aceleración constante sobre el segmento entero. Esto es menos óptimo que un perfil de velocidad trapezoidal, ya que la aceleración no está maximizada. Sin embargo, si el segmento es lo suficientemente corto, no hay tiempo suficiente para acelerar mucho antes de alcanzar el segmento siguiente. Recordemos los segmentos de línea corta de los ejemplos anteriores. Como son líneas, no hay aceleración en esquinas, así que somos libres de acelerar hasta la velocidad solicitada. Sin embargo, si esta línea está entre dos arcos, entonces tendrá que desacelerar rápidamente de nuevo para estar dentro de la velocidad máxima del siguiente segmento. Esto significa tener un pico de aceleración y luego un pico de desaceleración, causando un gran tirón, para muy poco aumento de rendimiento. Esta configuración es una forma de eliminar este tirón para segmentos cortos.
Básicamente, si un segmento se completa en menos tiempo que 1 / ARC_BLEND_RAMP_FREQ, no nos molestamos con un perfil de velocidad trapezoidal en ese segmento, y usaríamos aceleración constante. (Ajustar
ARC_BLEND_RAMP_FREQ = 1000es equivalente a usar siempre aceleración trapezoidal, si el bucle servo es de 1 kHz).Se puede caracterizar el peor caso de pérdida de rendimiento comparando la velocidad que alcanza un perfil trapezoidal contra la rampa:
# v_ripple = a_max / (4.0 * f) # donde: # v_ripple = velocidad promedio "perdida" debido a la rampa # a_max = aceleración máxima del eje # f = frecuencia de corte del INIPara la máquina mencionada, la ondulación para una frecuencia de corte de 20 Hz es 100 / (4 * 20) = 1.25 IPS. Esto parece alto, pero ten en cuenta que es solo una estimación del peor de los casos. En realidad, el perfil de movimiento trapezoidal está limitado por otros factores, como la aceleración normal o velocidad solicitada, por lo que la pérdida de rendimiento real debería ser mucho menor. Aumentar la frecuencia de corte puede sacar más rendimiento, pero hace que el movimiento sea más duro debido a discontinuidades de aceleración. Un valor en el rango de 20 Hz a 200 Hz debería ser razonable para comenzar.
Finalmente, ninguna cantidad de ajustes acelerará una trayectoria de herramienta con muchas esquinas pequeñas y estrechas, ya que estás limitado por la aceleración en las esquinas.
-
SPINDLES = 3- El número de husillos a soportar. Es imperativo que este número coincida con el parámetro "num_spindles" pasado al módulo motion. -
COORDINATES = X Y Z- Los nombres de los ejes que se controlan. Solo son válidos X, Y, Z, A, B, C, U, V, W. En código G solo se aceptan ejes nombrados enCOORDINATES. Está permitido escribir un nombre de eje más de una vez (p. ej. X Y Y Z para una máquina de pórtico). Para las cinemáticas trivkins comunes, los números de articulación se asignan en secuencia de acuerdo con el parámetro trivkins coordinates=. Por tanto, para trivkins coordinates = xz, la articulación 0 corresponde a X y la articulación 1 corresponde a Z. Consulte la página de manual de cinemáticas ($ man kins) para obtener información sobre trivkins y otros módulos de cinemáticas. -
LINEAR_UNITS =<unidades> - Especifica las unidades máquina para ejes lineales. Las opciones posibles son milímetros o pulgadas. Esto no afecta las unidades lineales en código NC (las palabras G20 y G21 hacen esto). -
ANGULAR_UNITS =<unidades> - Especifica las unidades máquina para ejes de rotación. Las opciones posibles son deg, degree (360 por círculo), rad, radian (2*π por círculo), grad o gon (400 por círculo). Esto no afecta las unidades angulares de código NC. En RS274NGC, las palabras A, B y C siempre se expresan en grados. -
DEFAULT_LINEAR_VELOCITY = 0.0167- La velocidad inicial para trotes de ejes lineales, en unidades máquina por segundo. El valor que se muestra en AXIS equivale a unidades máquina por minuto. -
DEFAULT_LINEAR_ACCELERATION = 2.0- En máquinas con cinemáticas no triviales, la aceleración utilizada para trotes "teleop" (espacio cartesiano), en unidades máquina por segundo al cuadrado. -
MAX_LINEAR_VELOCITY = 5.0- La velocidad máxima para cualquier eje o movimiento coordinado, en unidades máquina por segundo. El valor mostrado es igual a 300 unidades por minuto. -
MAX_LINEAR_ACCELERATION = 20.0- La aceleración máxima para cualquier eje o movimiento coordinado, en unidades máquina por segundo cuadrado. -
PLANNER_TYPE = 0- Selects the trajectory planner type: 0 = trapezoidal (default), 1 = S-curve with jerk limiting. S-curve planning is only active whenPLANNER_TYPE = 1ANDMAX_LINEAR_JERK > 0. -
MAX_LINEAR_JERK = 0.0- The maximum jerk (rate of change of acceleration) for coordinated moves, in machine units per second cubed. When set to 0 (default), jerk limiting is disabled. When greater than 0 andPLANNER_TYPE = 1, enables S-curve trajectory planning. -
DEFAULT_LINEAR_JERK = 0.0- The default jerk value for coordinated moves, in machine units per second cubed. When set to 0,MAX_LINEAR_JERKis used. -
POSITION_FILE =position.txt - Si se establece en un valor no vacío, las posiciones articulares se almacenan entre ejecuciones en este archivo. Esto permite que la máquina comience con las mismas coordenadas que tenía en el apagado. Esto supone que no hubo movimiento de la máquina mientras estuvo apagada. Si no se establece, las posiciones no se almacenan y comenzará en 0 cada vez que se inicie LinuxCNC. Esto puede ayudar en máquinas pequeñas sin interruptores casa. Si usa la interfaz de resolver de Mesa, este archivo se puede usar para emular codificadores absolutos y eliminar la necesidad de homing (sin pérdida de precisión). Ver la página de manual de hostmot2 para más detalles. -
NO_FORCE_HOMING = 1- El comportamiento predeterminado es que LinuxCNC fuerce al usuario a iniciar la máquina antes de ejecutar cualquier programa o comando MDI. Normalmente, solo se permite trotar antes de homing. Para configuraciones usando cinemáticas de identidad, establecerNO_FORCE_HOMING = 1permite al usuario hacer movimientos MDI y ejecutar programas sin homing previo de la máquina. Interfaces que usen cinemáticas de identidad sin capacidad de búsqueda de home necesitarán tener esta opción establecida en 1.
|
Aviso
|
LinuxCNC no sabrá tus límites de carrera de articulación cuando se usa |
-
HOME = 0 0 0 0 0 0 0 0 0- Se necesita una posición de inicio mundial para los módulos de cinemáticas que calculan las coordenadas mundiales usando kinematicsForward() al cambiar de modo articular a teleop. Pueden especificarse hasta nueve valores de coordenadas (X Y Z A B C U V W), los elementos finales no utilizados pueden omitirse. Este valor solo se usa para máquinas con cinemáticas no triviales. En máquinas con cinemáticas triviales (fresadoras, tornos, varios tipos de pórtico) este valor se ignora. Nota: la configuración sim de hexapod requiere un valor distinto de cero para la coordenada Z. -
TPMOD =alternate_trajectory_planning module [tp_parms=value]
La variableTPMODes opcional. Si se especifica, usa un módulo especificado (construido por el usuario) en lugar del predeterminado (tpmod). Los parámetros del módulo (tp_parms) pueden incluirse si los soporta el módulo especificado. La configuración puede anularse desde la línea de comandos usando la opción -t ($ linuxcnc -h). -
NO_PROBE_JOG_ERROR = 0- Permite omitir la verificación de recorrido de sonda al hacer trote manual. -
NO_PROBE_HOME_ERROR = 0- Permite omitir la verificación de recorrido de sonda cuando homing esta en progreso.
2.11. Sección [KINS]
-
JOINTS = 3- Especifica el número de articulaciones (motores) en el sistema. Por ejemplo, una máquina trivkins XYZ con un solo motor para cada eje tiene 3 articulaciones. Una máquina de pórtico con un motor en cada uno de los dos ejes, y dos motores en el tercer eje, tiene 4 articulaciones. (Esta variable de configuración puede ser utilizada por una interfaz gráfica de usuario para establecer el número de articulaciones (num_joints) especificado en el módulo de movimiento (motmod).) -
KINEMATICS = trivkins- Especifica un módulo de cinemáticas para el módulo motion. Las GUIs pueden usar esta variable para especificar la línealoadrten archivos HAL para el módulo motmod. Para obtener más información sobre los módulos de cinemáticas, consulte la página de manual:$ man kins.
2.12. Sección [AXIS_<letra>_]
La <letra> especifica una de: X Y Z A B C U V W
-
TYPE = LINEAR- El tipo del eje, ya seaLINEARoANGULAR. Requerido si este eje no es de un tipo predeterminado. Los tipos predeterminados de eje son X,Y,Z,U,V,W = LINEAR y A,B,C = ANGULAR. Esta configuración entra en vigencia con la GUI AXIS pero hay que considerar que otras GUIs pueden manejar las cosas de diferente manera. -
MAX_VELOCITY = 1.2- Velocidad máxima para este eje en unidades máquina por segundo. -
MAX_ACCELERATION = 20.0- Aceleración máxima para este eje en unidades máquina por segundo al cuadrado. -
MAX_JERK = 0.0- Maximum jerk for this axis in machine units per second cubed. Used when S-curve trajectory planning is enabled. When set to 0 (default), no per-axis jerk limiting is applied. -
MIN_LIMIT = -1000- El límite mínimo (límite suave) para el movimiento del eje, en unidades máquina. Cuando se excede este límite, el controlador aborta el movimiento del eje. El eje debe haber sido llevado a casa antes de queMIN_LIMITentre en vigor. Para un eje giratorio (tipo A,B,C) con rotación ilimitada sinMIN_LIMITpara ese eje en la sección[AXIS_<letra>]` se usa un valor de -1e99. -
MAX_LIMIT = 1000- El límite máximo (límite suave) para el movimiento del eje, en unidades de máquina. Cuando se excede este límite, el controlador aborta el movimiento del eje. El eje debe haber sido llevado a casa antes de que MAX_LIMIT entre en vigor. Para un eje giratorio (tipo A,B,C) con rotación ilimitada sinMAX_LIMITpara ese eje en la sección[AXIS_<letra>]se usa un valor de 1e99. -
WRAPPED_ROTARY = 1- Cuando se establece en 1 para una articulación ANGULAR, la articulación se moverá 0-359.999 grados. Los números positivos moverán la articulación en una dirección positiva y los números negativos moverán la articulación en la dirección negativa. -
LOCKING_INDEXER_JOINT = 4- Este valor selecciona una articulación para usar un indexador de bloqueo para el eje <letra> especificado. En este ejemplo, la articulación es 4, que correspondería al eje B para un sistema XYZAB con cinemáticas trivkins (identidad). Cuando se establece, un movimiento G0 para este eje iniciará un desbloqueo con el pinjoint.4.unlocky luego espera el pinjoint.4.is-unlocked. Luego mueve la articulación a velocidad rápida para esa articulación. Después del movimiento,joint.4.unlockserá falso y el movimiento esperará a quejoint.4.is-unlockedse vuelva falso. No se permite mover otras articulaciones al mover un articulación rotativa bloqueada. Para crear los pines de desbloqueo, use el parámetro motmod:unlock_joints_mask=jointmask
Los bits jointmask son: (LSB) 0: articulación0, 1: articulación1, 2: articulación2, …
Ejemplo:
loadrt motmod ... unlock_joints_mask = 0x38crea pines de desbloqueo para articulaciones 3,4,5. -
OFFSET_AV_RATIO = 0.1- Si no es cero, este elemento permite el uso de pines HAL de entrada para compensaciones de eje externas:axis.<letra>.eoffset-enable axis.<letra>.eoffset-count axis.<letra>.eoffset-scale
Consultar el capítulo: Offsets externos de ejes para información de su uso.
2.13. Secciones [JOINT_<número>]
<número> especifica el número de articulación 0 … (no_articulaciones-1) El valor de no_articulaciones lo establece [KINS]JOINTS=.
Las secciones [JOINT_0], [JOINT_1], etc. contienen parámetros generales para los componentes individuales en el módulo de control de articulaciones. Los nombres en la sección comienzan a numerarse en 0 y llegan hasta el número de articulaciones especificado en la entrada [KINS]JOINTS menos 1.
Típicamente (para sistemas que usan cinemáticas trivkins, hay correspondencia 1:1 entre una articulación y una letra de eje de coordenadas):
-
JOINT_0 = X
-
JOINT_1 = Y
-
JOINT_2 = Z
-
JOINT_3 = A
-
JOINT_4 = B
-
JOINT_5 = C
-
JOINT_6 = U
-
JOINT_7 = V
-
JOINT_8 = W
Otros módulos de cinemáticas con cinemáticas de identidad están disponibles para admitir configuraciones con conjuntos parciales de ejes. Por ejemplo, usando trivkins con coordenadas=XZ, las relaciones articulación-eje comunes son:
-
JOINT_0 = X
-
JOINT_1 = Z
Para obtener más información sobre los módulos cinemáticos, consultar la página de manual de kins (en una terminal de UNIX teclee man kins).
-
TYPE = LINEAR- El tipo de articulación, ya seaLINEARoANGULAR. -
UNITS = INCH- Si se especifica, esta configuración anula la configuración relacionada[TRAJ] UNITS, por ejemplo,[TRAJ]LINEAR_UNITSsi elTYPEde esta articulación esLINEAR,[TRAJ]ANGULAR_UNITSsi elTYPEde esta articulación esANGULAR. -
MAX_VELOCITY = 1.2- Velocidad máxima para esta articulación en unidades máquina por segundo. -
MAX_ACCELERATION = 20.0- Aceleración máxima para esta articulación en unidades máquina por segundo al cuadrado. -
MAX_JERK = 0.0- Maximum jerk for this joint in machine units per second cubed. Used when S-curve trajectory planning is enabled. When set to 0 (default), no per-joint jerk limiting is applied. -
BACKLASH = 0.0000- Holgura mecánica en unidades de máquina. El valor de holgura mecánica se puede utilizar para compensar pequeñas deficiencias en el hardware utilizado para conducir una articulación. Si se agrega holgura a una articulación y utiliza generador de pasos,STEPGEN_MAXACCELdebe aumentarse de 1.5 a 2 veces del valor deMAX_ACCELERATIONpara la articulación. La compensación de holgura excesiva puede causar sacudidas en el eje a medida que cambia de dirección. Si se especifica un COMP_FILE para un eje no se utiliza BACKLASH. -
COMP_FILE =file.extension - El archivo de compensación consiste en un mapa de información de posición para la articulación. Los valores del archivo de compensación están en unidades máquina. Cada conjunto de valores está en una línea separado por un espacio. El primer valor es el valor nominal (la posición ordenada). El segundo y tercer valor dependerá de la configuración deCOMP_FILE_TYPE. Los puntos entre valores nominales están interpolados entre los dos nominales. Los archivos de compensación deben comenzar con el mínimo nominal y estar en orden ascendente hasta el mayor valor de los nominales. Los nombres de archivo distinguen entre mayúsculas y minúsculas y pueden contener letras y/o números. Actualmente, el límite dentro de LinuxCNC es de 256 tripletes por eje.Si se especifica
COMP_FILEpara un eje,BACKLASHno se utiliza. -
COMP_FILE_TYPE = 0o1' - Especifica el tipo de archivo de compensación. El primer valor es la posición nominal (ordenada) para ambos tipos. + Se debe especificar un `COMP_FILE_TYPEpara cadaCOMP_FILE.-
Tipo 0: El segundo valor especifica la posición real a medida que se mueve el eje en la dirección positiva (valor creciente). El tercer valor especifica la posición real a medida que el eje se mueve en la dirección negativa (valor decreciente).
Ejemplo de tipo 0-1.000 -1.005 -0.995 0.000 0.002 -0.003 1.000 1.003 0.998 -
Tipo 1: El segundo valor especifica el offset positivo del nominal mientras se va en la dirección positiva. El tercer valor especifica el offset negativo del nominal mientras se va en una dirección negativa.
Ejemplo de tipo 1-1.000 0.005 -0.005 0.000 0.002 -0.003 1.000 0.003 -0.004
-
-
MIN_LIMIT = -1000- El límite mínimo para el movimiento del eje, en unidades máquina. Cuando se alcanza este límite, el controlador aborta el movimiento del eje. Para un eje rotativo con rotación ilimitada, al no tenerMIN_LIMITpara ese eje en la sección[JOINT_N], se usa el valor -1e99. -
MAX_LIMIT = 1000- El límite máximo para el movimiento del eje, en unidades máquina. Cuando se alcanza este límite, el controlador aborta el movimiento del eje. Para un eje rotativo con rotación ilimitada que no tieneMAX_LIMITpara ese eje en la sección[JOINT_N], se usa el valor 1e99.
|
Nota
|
Para cinemáticas identidad, la configuraciones |
|
Nota
|
Las configuraciones |
-
MIN_FERROR = 0.010- Este es el valor en unidades máquina que el eje puede desviarse de la posición ordenada a muy bajas velocidades. Si MIN_FERROR es más pequeño que FERROR, los dos producen una rampa de puntos de disparo de error. Se podría pensar esto como un gráfico donde una dimensión es velocidad y la otra el error de seguimiento permitido. A medida que la velocidad aumenta, la cantidad de error de seguimiento también aumenta hacia el valorFERROR. -
FERROR = 1.0-FERRORes el error de seguimiento máximo permitido, en unidades máquina. Si la diferencia entre la posición ordenada y la detectada excede esta cantidad, el controlador deshabilita los cálculos servo, establece todas las salidas a 0.0, y desactiva los amplificadores. SiMIN_FERRORestá presente en el archivo INI, se utilizan los errores de seguimiento de velocidad proporcional. Aquí el error de seguimiento máximo permitido es proporcional a la velocidad, conFERRORaplicando a la velocidad rápida establecida por[TRAJ]MAX_VELOCITY, y proporcionalmente errores de seguimiento más pequeños para velocidades más bajas. El error de seguimiento máximo permitido siempre será mayor queMIN_FERROR. Esto evita pequeños errores de seguimiento para ejes estacionarios al abortar inadvertidamente el movimiento. Pequeños errores de seguimiento siempre estarán presentes debido a vibración, etc. -
LOCKING_INDEXER = 1- Indica que la articulación se utiliza como indexador con bloqueo.
2.13.1. Homing
Estos parámetros están relacionados con Homing; para una mejor explicación leer el capítulo Configuración de homing.
-
HOME = 0.0- La posición a la que irá la articulación al finalizar la secuencia homing. -
HOME_OFFSET = 0.0- La posición articular del interruptor casa o pulso índice, en unidades máquina. Cuando se encuentra el punto casa durante el proceso homing, esta es la posición asignada a ese punto. Al compartir interruptores de casa y límite y usar una secuencia casa que deje el interruptor casa/límite en el estado alternado, el offset de casa puede ser utilizado para definir la posición del interruptor casa para que sea diferente de 0 si se desea que la posición casa sea 0. -
HOME_SEARCH_VEL = 0.0- Velocidad de homing inicial en unidades de máquina por segundo. El signo indica la dirección de recorrido. Un valor de cero significa asumir que la ubicación actual es la posición casa de la máquina. Si la máquina no tiene interruptores de casa querremos dejar este valor en cero. -
HOME_LATCH_VEL = 0.0- Velocidad de homing en unidades máquina por segundo a la posición de enclavamiento del interruptor casa. El signo indica la dirección del recorrido. -
HOME_FINAL_VEL = 0.0- Velocidad en unidades de máquina por segundo desde la posición de enclavamiento a la posición casa. Si se deja en 0 o no se incluye en la articulación, se usa la velocidad rápida. Debe ser un número positivo. -
HOME_USE_INDEX = NO- Si el codificador utilizado para esta articulación tiene un pulso índice, y la tarjeta de movimiento tiene provisión para esta señal, se puede configurar en YES. Cuando es YES, se afectará el tipo de patrón de casa utilizado. Actualmente no se puede hacer casa en índice con motores a pasos, a menos que se use StepGen en modo de velocidad y PID. -
HOME_INDEX_NO_ENCODER_RESET = NO- Usar YES si el codificador utilizado para esta articulación no restablece su contador cuando se detecta un pulso índice después de validar el pin HALindex_enablede la articulación. Aplicable solo paraHOME_USE_INDEX = YES. -
HOME_IGNORE_LIMITS = NO- Cuando se usa el interruptor de límite también como interruptor casa, esto debe establecerse en YES. Cuando se establece en YES, el interruptor de límite para esta articulación se ignora durante homing. Debe configurar su homing para que al final del movimiento a casa el interruptor casa/límite no esté en el estado alterno; se recibirá un error de interruptor de límite después de mover a casa. -
HOME_IS_SHARED =<n> - Si la entrada casa es compartida por más de una articulación, hacer <n> igual a 1 para evitar que se inicie homing si uno de los interruptores compartidos está ya está cerrado. Establecer <n> en 0 para permitir el homing si un interruptor está cerrado. -
HOME_ABSOLUTE_ENCODER = 0|1|2- Usado para indicar que la articulación usa un codificador absoluto. A una petición de homing, el valor de la articulación actual se establece en el valorHOME_OFFSET. Si la configuraciónHOME_ABSOLUTE_ENCODERes 1, la máquina hace el movimiento final habitual al valorHOME. Si la configuraciónHOME_ABSOLUTE_ENCODERes 2, no se realiza ningún movimiento final. -
HOME_SEQUENCE =<n> - Se utiliza para definir la secuencia "Home Todos". <n> debe comenzar en0o1o-1. Se pueden especificar secuencias adicionales con números crecientes de 1 en 1 (en valor absoluto). No se permite saltar números de secuencia. Si se omite unaHOME_SEQUENCE, la articulación no será homeada por la función "Home Todos". Se puede llevar a casa a más de una articulación al mismo tiempo especificando el mismo número de secuencia para más de una articulación. Se utiliza un número de secuencia negativo para diferir el movimiento final para todas las articulaciones que tienen ese número de secuencia (negativo o positivo). Para obtener información adicional, consulte: HOME_SEQUENCE. -
VOLATILE_HOME = 0- Cuando se habilita (se establece en1), esta articulación no se llevará a casa si la alimentación de la máquina está apagada o si E-Stop está encendido. Esto es útil si la máquina tiene interruptores casa y no tiene retroalimentación de posición, como una máquina controlada por paso y dirección.
2.13.2. Servos
Estos parámetros son relevantes para las articulaciones controladas por servos.
|
Aviso
|
Las siguientes son entradas de archivos INI personalizadas que se pueden encontrar en un archivo INI de muestra o en un archivo generado por asistente. Estos no son utilizados por el software LinuxCNC. Solo están ahí para poner todas las configuraciones en un solo lugar. Para más información sobre entradas de archivo INI personalizadas ver la subsección Secciones y variables personalizadas . |
Los siguientes elementos pueden ser utilizados por un componente PID y se supone que la salida es en voltios.
-
DEADBAND = 0.000015- Qué tan cerca es suficiente para considerar al motor en posición, en unidades de máquina.Esto a menudo se establece en una distancia equivalente a 1, 1.5, 2, o 3 conteos de codificador, pero no hay reglas estrictas. Las configuraciones más holgadas (grandes) permiten menos hunting (caza) de servos a expensas de una menor precisión. Las configuraciones más estrictas (pequeñas) intentan una mayor precisión a expensas de más hunting. ¿Es realmente más preciso si también es más incierto? Como regla general, es bueno evitar si puede, o al menos limitar, el hunting de servos.
Ten cuidado de ir por debajo de 1 cuenta de codificador, ya que puedes crear una situación en la que tu servo no estará feliz en ningún lugar. Esto puede ir más allá de hunting (lento) a nervous (rápido), e incluso squealing (estrepitoso), que es fácil de confundir con la oscilación causada por una afinación incorrecta. Es mejor perder un conteo o dos al principio, hasta que hayas realizado una afinación burda por lo menos.
Ejemplo de cálculo de unidades máquina por pulso de codificador a usar al decidir el valor de
DEADBAND:
-
BIAS = 0.000- Esto es utilizado por hm2-servo y algunos otros. BIAS es una cantidad constante que se agrega a la salida. En la mayoría de los casos, debe dejarse en cero. Sin embargo, a veces puede ser útil para compensar servoamplificadores, o para equilibrar el peso de un objeto que se mueve verticalmente. BIAS se desactiva cuando el bucle PID está desactivado, al igual que todos los demás componentes de la salida. -
P = 50- La ganancia proporcional para el servo. Este valor multiplica el error entre la posición ordenada y la real en unidades máquina, lo que resulta en una contribución a la tensión calculada para el amplificador del motor. Las unidades en la ganancia P son voltios por unidad máquina, p. ej.
-
I = 0- La ganancia integral para el servo. El valor multiplica el error acumulativo entre la posición ordenada y la real en unidades máquina, lo que resulta en una contribución a la tensión calculada para el amplificador de motor. Las unidades en la ganancia I son voltios por unidad máquina por segundo, p. ej.,
-
D = 0- La ganancia derivativa para el servo. El valor multiplica la diferencia entre el error actual y los anteriores, lo que resulta en una contribución a la tensión calculada para el amplificador del motor. Las unidades en la ganancia D son voltios por unidad de máquina por segundo, p. ej.,
-
FF0 = 0- Ganancia de avance de orden 0. Este número es multiplicado por el posición ordenada, lo que resulta en una contribución a la tensión calculada para el amplificador del motor. Las unidades en la ganancia FF0 son voltios por unidad máquina, p. ej.,
-
FF1 = 0- La ganancia de avance de 1er orden. Este número es multiplicado por el cambio en la posición ordenada por segundo, lo que resulta en una contribución al voltaje calculado para el amplificador del motor. Las unidades en la ganancia FF1 son voltios por unidad máquina por segundo, p. ej.,
-
FF2 = 0- La gganancia de avance de 2do orden. Este número es multiplicado por el cambio en la posición ordenada por segundo por segundo, lo que resulta en un contribución a la tensión calculada para el amplificador del motor. Las unidades en la ganancia FF2 son voltios por unidad máquina por segundo por segundo, p. ej.,
-
OUTPUT_SCALE = 1.000 -
OUTPUT_OFFSET = 0.000Estos dos valores son los factores de escala y el offset para la salida de la articulación al amplificador del motor.
El segundo valor (offset) se resta de la salida calculada (en voltios), y se divide por el primer valor (factor de escala), antes de ser escrito en los convertidores D/A. Las unidades de los valores de escala están en voltios verdaderos por voltios de salida DAC. Las unidades del valor de offset está en voltios. Estos se pueden usar para linealizar un DAC. Específicamente, al escribir salidas, LinuxCNC primero convierte la salida deseada en unidades cuasi-SI a valores brutos de actuador, p. ej., voltios para un amplificador DAC. Esta escala se parece a:
El valor de la escala se puede obtener analíticamente haciendo un análisis de unidades, es decir, las unidades son [unidades SI de salida]/[unidades de actuador]. Por ejemplo, en una máquina con un amplificador de modo de velocidad tal que 1 voltio da como resultado una velocidad de 250 mm/seg.
Tener en cuenta que las unidades del offset están en unidades máquina, p. ej., mm/s, y se restan previamente de las lecturas del sensor. El valor para este offset se obtiene al encontrar el valor de tu salida que produce 0.0 para la salida del actuador. Si el DAC está linealizado, este offset es normalmente 0.0.
La escala y el offset también se pueden usar para linealizar el DAC, resultando en valores que reflejan los efectos combinados de la ganancia del amplificador, no linealidad del DAC, unidades DAC, etc.
Para hacer esto, seguir este procedimiento.
-
Cree una tabla de calibración para la salida, alimentando el DAC con el voltaje deseado y midiendo el resultado.
-
Hacer un ajuste lineal de mínimos cuadrados para obtener los coeficientes a, b tales como
-
Tenga en cuenta que queremos una salida en bruto de modo que nuestro resultado medido sea idéntico a la salida ordenada. Esto significa
-
-
Como resultado, los coeficientes a y b del ajuste lineal pueden ser utilizados como la escala y el offset para el controlador directamente.
La siguiente tabla es un ejemplo de mediciones de voltaje.
Tabla 1. Mediciones del voltaje de salida Bruto Medido -10
-9.93
-9
-8.83
0
-0.03
1
0.96
9
9.87
10
10.87
-
-
MAX_OUTPUT = 10- El valor máximo para la salida de la compensación PID que se escribe en el amplificador del motor, en voltios. El valor calculado de salida está sujeto a este límite. El límite se aplica antes de escalar a unidades de salida en bruto. El valor se aplica simétricamente tanto al lado positivo como al negativo. -
INPUT_SCALE = 20000- En configuraciones de muestra -
ENCODER_SCALE = 20000- En configuraciones construidas con PnCconf
Especifica el número de pulsos que corresponde a un movimiento de una unidad máquina como se establece en la sección [TRAJ]. Para una articulación lineal, una unidad máquina será igual a la configuración de LINEAR_UNITS. Para una articulación angular, una unidad es igual a la configuración en ANGULAR_UNITS. Un segundo número, si se especifica, se ignora. Por ejemplo, en un codificador de 2000 cuentas por revolución, y una transmisión de 10 revoluciones por pulgada y unidades deseadas en pulgadas, tenemos:
2.13.3. Motores a pasos
Estos parámetros son relevantes para las articulaciones controladas por motores a pasos.
|
Aviso
|
Las siguientes son entradas de archivos INI personalizadas que se pueden encontrar en un archivo INI de muestra o un archivo generado por asistente. Estos no son utilizados por el software LinuxCNC y solo están ahí para poner todas las configuraciones en un solo lugar. Para más información sobre entradas de archivo INI personalizadas ver la subsección Secciones y variables personalizadas . |
Los siguientes elementos pueden ser utilizados por un componente StepGen.
-
SCALE = 4000- En configuraciones de muestra -
STEP_SCALE = 4000- En configuraciones construidas con PnCconf
Especifica el número de pulsos que corresponden a un movimiento de una unidad máquina como se establece en la sección [TRAJ]. Para sistemas paso a paso, esto es el número de pulsos de paso emitidos por unidad máquina. Para una articulación lineal una unidad de máquina será igual a la configuración de LINEAR_UNITS. Para una articulación angular una unidad es igual a la configuración en ANGULAR_UNITS. Para servo sistemas, este es el número de pulsos de retroalimentación por unidad máquina. Un segundo número, si se especifica, se ignora.
Por ejemplo, en un motor paso a paso de 1.8 grados con semipasos, y transmisión de 10 revoluciones por pulgada, y unidades de máquina deseadas en pulgadas, tendríamos:
|
Nota
|
Los archivos INI y HAL antiguos usaban INPUT_SCALE para este valor. |
-
ENCODER_SCALE = 20000(Opcionalmente utilizado en configuraciones construidas con PnCconf) - Especifica el número de pulsos que corresponden a un movimiento de una unidad máquina como se establece en la sección[TRAJ]. Para una articulación lineal, una unidad máquina será igual a la configuración deLINEAR_UNITS. Para una articulación angular, una unidad es igual a la configuración enANGULAR_UNITS. Un segundo número, si se especifica, se ignora. Por ejemplo, en un conteo de 2000 por revolucion de codificador, transmisión de 10 revoluciones por pulgada, y unidades deseadas en pulgadas, se tiene:
-
STEPGEN_MAXACCEL = 21.0- Límite de aceleración para el generador de pasos. Esto debería ser entre 1% y 10% más grande queMAX_ACCELERATIONde la articulación. Este valor mejora la afinación de "bucle de posición" de StepGen. Si has agregado compensación de holgura a una articulación, entonces esto debería ser 1.5 a 2 veces mayor queMAX_ACCELERATION. -
STEPGEN_MAXVEL = 1.4- Los archivos de configuración antiguos tienen también un límite de velocidad para el generador de pasos. Si se especifica, también debería ser entre 1% y 10% más grande queMAX_VELOCITYde la articulación. Pruebas posteriores han demostrado que el uso deSTEPGEN_MAXVELno mejora el ajuste del bucle de posición de StepGen.
2.14. Sección(es) [SPINDLE_<número>]
El <número> especifica el número de husillo 0 … (no_husillos-1)
El valor de no_husillos se configura en [TRAJ]SPINDLES=.
Predeterminadamente la velocidad máxima del husillo en avance y reversa es aproximadamente 2147483000 RPM.
Predeterminadamente la velocidad mínima del husillo en avance y reversa es 0 RPM.
Predeterminadamente el incremento es 100 RPM.
Se pueden modificar estos valores predeterminados configurando las variables INI siguientes:
|
Nota
|
Estas configuraciones son para el componente controlador de movimiento. Las pantallas de control pueden limitar estas configuraciones más adelante. |
-
MAX_VELOCITY = 20000- La velocidad máxima del husillo (en rpm) para el husillo especificado. Opcional. Esta también establece MAX_REVERSE_VELOCITY al valor negativo a menos que sea anulado. -
MIN_VELOCITY = 3000- La velocidad mínima del husillo (en rpm) para el husillo especificado. Muchos husillos tienen una velocidad mínima debajo de la cual no deberían trabajar. Cualquier comando de velocidad de husillo por debajo de este límite será /incrementado/ a este límite. -
MAX_REVERSE_VELOCITY = 20000- Esta configuración esta predeterminada aMAX_FORWARD_VELOCITY, si se omite. Se puede usar en casos donde la velocidad del husillo es limitada en reversa. Establecer en cero para husillos que no deban trabajar en reversa. En este contexto "max" se refiere a la magnitud absoluta de la velocidad del husillo. -
MIN_REVERSE_VELOCITY = 3000- Esta configuración es equivalente aMIN_FORWARD_VELOCITYpero para rotación inversa del husillo. Se predeterminará a MIN_FORWARD_VELOCITY si se omite. -
INCREMENT = 200- Establece el tamaño del paso para los comandos de incremento / decremento de velocidad del husillo. Esta puede tener un valor diferente para cada husillo. Esta configuración es efectiva con AXIS y Touchy pero nótese que algunas pantallas de control puede manejar las cosas de manera diferente. -
HOME_SEARCH_VELOCITY = 100- FIXME: homing de husillo aún no funciona. Establece la velocidad de homing (rpm) para el husillo. El husillo rotará a esta velocidad durante la secuencia de homing hasta que se localize el índice de husillo, punto al cual la posición del husillo se establecerá en cero. Nótese que no tiene sentido que la posición casa del husillo sea cualquier valor distinto a cero, y por lo tanto no hay forma de hacerlo. -
HOME_SEQUENCE = 0- FIXME: Homing del husillo aún sin funcionar controla donde en una secuencia de homing general ocurren las rotaciones de homing del husillo. Asigne cero aHOME_SEARCH_VELOCITYpara evitar rotación del husillo durante la secuencia de homing.
2.15. Sección [EMCIO]
-
TOOL_TABLE = tool.tbl- El archivo que contiene información sobre herramientas, descrito en el manual de usuario. -
DB_PROGRAM = db_program- Ruta a un programa ejecutable que gestiona información de herramientas. Cuando se especifica un DB_PROGRAM, se ignora una entrada TOOL_TABLE. -
TOOL_CHANGE_POSITION = 0 0 2- Especifica la ubicación XYZ a moverse al realizar un cambio de herramienta si se utilizan tres dígitos. Especifica la ubicación XYZABC cuando se usan 6 dígitos. Especifica la ubicación XYZABCUVW cuando se utilizan 9 dígitos. Los cambios de herramienta se pueden combinar. Por ejemplo, si combina la pinola con la posición de cambio, puede mover primero la Z y luego la X e Y. -
TOOL_CHANGE_WITH_SPINDLE_ON = 1- El husillo se dejará encendido durante el cambio de herramienta cuando el valor sea 1. Útil para tornos o máquinas donde se pone en el husillo el material y no la herramienta. -
TOOL_CHANGE_QUILL_UP = 1- El eje Z se moverá al cero de máquina antes del cambio de herramienta cuando el valor es 1. Esto es lo mismo que emitir unG0 G53 Z0. -
TOOL_CHANGE_AT_G30 = 1- La máquina se mueve al punto de referencia definido por los parámetros 5181-5186 para G30 si el valor es 1. Para obtener más información, consultar Parámetros de código G y Códigos G G30-G30.1. -
RANDOM_TOOLCHANGER = 1- Esto es para máquinas que no pueden volver a colocar la herramienta en la ranura donde fue tomada. Por ejemplo, máquinas que intercambian la herramienta en la ranura activa con la herramienta en el husillo.