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.

Ejemplo de variable
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.

Ejemplo de variable con línea extendida
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
Variables booleanas

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.

Ejemplo de variable personalizada, asignando el valor LINEAR a la variable TYPE, y el valor 16000 a la variable SCALE.
[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.

Ejemplo de sección personalizada
[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.

Ejemplo de HAL
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.

Ejemplo de código G
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.

Formato #INCLUDE
#INCLUDE archivo

El 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.

Ejemplos de #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 en DEBUG no 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 qtdragon or qtvcp qtplasmac.

  • POSITION_OFFSET = RELATIVE - El sistema de coordenadas (RELATIVE o MACHINE) 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 (COMMANDED o ACTUAL) 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 directorio PROGRAM_PREFIX antes que en los directorios listados en [RS274]SUBROUTINE_PATH y [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

    Nota

    Los diferentes programas de interfaz de usuario utilizan diferentes opciones, y no todas las opciones son compatibles con todas las interfaces de usuario. Consulte el documento GUI AXIS para obtener detalles sobre AXIS. Consulte el documento GMOCCAPY para obtener detalles sobre GMOCCAPY.

  • 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 que INCREMENTS.

  • 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 es gnome-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 son gedit, gnome-terminal -e vim y gvim. 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 es BOTTOM. 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 "-":

    1. Las letras X,Y,Z especifican la traslación a lo largo de la coordenada nombrada.

    2. Las letras A,B,C especifican rotación alrededor de los correspondientes ejes X, Y, Z.

    3. Las letras U,V,W especifican traslación a lo largo de los ejes relacionados X, Y, Z.

    4. Cada letra especificada debe ocurrir en [TRAJ]COORDINATES para que tenga efecto.

    5. Un caracter especial "-" precediendo a cualquier letra invierte la dirección de la operación.

    6. Las operaciones de traslación y rotación se evalúan de derecha a izquierda. De tal manera que usar GEOMETRY=ZYZBC especifica 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.

    7. 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.

    8. Las rotaciones se aplican predeterminadamente con respecto al origen de máquina. Ejemplo: GEOMETRY=CXYZ primero 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.

    9. Ejemplo de traslación UVW: GEOMETRY=XYZUVW provoca mover UVW en el sistema de coordenadas de la herramienta y mover XYZ en el sistema de coordenadas del material.

    10. 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.

    11. 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: Usando GEOMETRY = !CXZ para 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.

    Nota
    Si no se incluye [DISPLAY]GEOMETRY en 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]LATHE y [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.

    Nota
    La configuración de JOG_AXES y JOG_INVERT se 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:

    1. [DISPLAY]PROGRAM_PREFIX (si se especifica)

    2. Si no se especifica [DISPLAY]PROGRAM_PREFIX, busca en la ubicación predeterminada: nc_files

    3. 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.

    Nota
    El número máximo de directorios USER_M_PATH se 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.

  • PARAMETER_G73_PECK_CLEARANCE = .020 (predeterminado: Máquina métrica: 1 mm, Máquina imperial: .050 in) Distancia de retroceso para romper virutas en unidades de máquina

  • PARAMETER_G83_PECK_CLEARANCE = .020 (predeterminado: máquina métrica: 1 mm, máquina imperial: .050 in) Distancia de holgura desde la última profundidad de alimentación cuando la máquina regresa rápidamente al fondo de la cavidad, en unidades de máquina.

Nota

Las seis opciones anteriores fueron controladas por la máscara de bits FEATURES en versiones de LinuxCNC anteriores a 2.8. Esta etiqueta INI ya no trabaja.
Para referencia:

FEATURES & 0x1  -> RETAIN_G43
FEATURES & 0x2  -> OWORD_NARGS
FEATURES & 0x4  -> INI_VARS
FEATURES & 0x8  -> HAL_PIN_VARS
FEATURES & 0x10 -> NO_DOWNCASE_OWORD
FEATURES & 0x20 -> OWORD_WARNONLY
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 HALFILE varias 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 un HALFILE, 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 HALFILES se 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 linuxcnc usando 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

  1. omisión de la sentencia addf necesaria para agregar funciones de componente a un hilo,

  2. 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]HALFILE se 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 funcionalidad TWOPASS se 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 especifica HALCMD varias veces, los comandos se ejecutan en el orden en que aparecen en el archivo INI. Las líneas HALCMD se ejecutan después de todas las líneas HALFILE.

  • 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 utilizando halui.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_HALFILE o pines HAL creados por GUI (predeterminado DELAY= 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:
ARC_BLEND_ENABLE = 1
ARC_BLEND_FALLBACK_ENABLE = 0
ARC_BLEND_OPTIMIZATION_DEPTH = 50
ARC_BLEND_GAP_CYCLES = 4
ARC_BLEND_RAMP_FREQ = 100

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 = 1000 es 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 INI

    Para 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 - The number of spindles to support. It is imperative that this number matches the "num_spindles" parameter passed to the motion module.

  • COORDINATES = X Y Z - The names of the axes being controlled. Only X, Y, Z, A, B, C, U, V, W are valid. Only axes named in COORDINATES are accepted in G-code. It is permitted to write an axis name more than once (e.g., X Y Y Z for a gantry machine). For the common trivkins kinematics, joint numbers are assigned in sequence according to the trivkins parameter coordinates=. So, for trivkins coordinates=xz, joint0 corresponds to X and joint1 corresponds to Z. See the kinematics man page ($ man kins) for information on trivkins and other kinematics modules.

  • LINEAR_UNITS = <units>_ - Specifies the machine units for linear axes. Possible choices are mm or inch. This does not affect the linear units in NC code (the G20 and G21 words do this).

  • ANGULAR_UNITS = <units> - Specifies the machine units for rotational axes. Possible choices are deg, degree (360 per circle), rad, radian (2*π per circle), grad, or gon (400 per circle). This does not affect the angular units of NC code. In RS274NGC, A-, B- and C- words are always expressed in degrees.

  • DEFAULT_LINEAR_VELOCITY = 0.0167 - The initial rate for jogs of linear axes, in machine units per second. The value shown in AXIS equals machine units per minute.

  • DEFAULT_LINEAR_ACCELERATION = 2.0 - In machines with nontrivial kinematics, the acceleration used for "teleop" (Cartesian space) jogs, in machine units per second per second.

  • MAX_LINEAR_VELOCITY = 5.0 - The maximum velocity for any axis or coordinated move, in machine units per second. The value shown equals 300 units per minute.

  • MAX_LINEAR_ACCELERATION = 20.0 - The maximum acceleration for any axis or coordinated axis move, in machine units per second per second.

  • PLANNER_TYPE = 0 - Selects the trajectory planner type: 0 = trapezoidal (default), 1 = S-curve with jerk limiting. S-curve planning is only active when PLANNER_TYPE = 1 AND MAX_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 and PLANNER_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_JERK is used.

  • POSITION_FILE = position.txt - If set to a non-empty value, the joint positions are stored between runs in this file. This allows the machine to start with the same coordinates it had on shutdown. This assumes there was no movement of the machine while powered off. If unset, joint positions are not stored and will begin at 0 each time LinuxCNC is started. This can help on smaller machines without home switches. If using the Mesa resolver interface this file can be used to emulate absolute encoders and eliminate the need for homing (with no loss of accuracy). See the hostmot2 manpage for more details.

  • NO_FORCE_HOMING = 1 - The default behavior is for LinuxCNC to force the user to home the machine before any MDI command or a program is run. Normally, only jogging is allowed before homing. For configurations using identity kinematics, setting NO_FORCE_HOMING = 1 allows the user to make MDI moves and run programs without homing the machine first. Interfaces using identity kinematics without homing ability will need to have this option set to 1.

Aviso

LinuxCNC will not know your joint travel limits when using NO_FORCE_HOMING = 1.

  • HOME = 0 0 0 0 0 0 0 0 0 - World home position needed for kinematics modules that compute world coordinates using kinematicsForward() when switching from joint to teleop mode. Up to nine coordinate values (X Y Z A B C U V W) may be specified, unused trailing items may be omitted. This value is only used for machines with nontrivial kinematics. On machines with trivial kinematics (mill, lathe, gantry types) this value is ignored. Note: The sim hexapod config requires a non-zero value for the Z coordinate.

  • TPMOD = alternate_trajectory_planning module [tp_parms=value]
    La variable TPMOD es 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 - Allow to bypass probe tripped check when you jog manually.

  • NO_PROBE_HOME_ERROR = 0 - Allow to bypass probe tripped check when homing is in progress.

2.11. [KINS] Section

  • 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ática para el módulo motion. Las GUIs pueden usar esta variable para especificar la línea loadrt en archivos HAL para el módulo motmod. Para obtener más información sobre los módulos de cinemática, consulte la página de manual: $ man kins.

2.12. [AXIS_<letter>] Section

The <letter> specifies one of: X Y Z A B C U V W

  • TYPE = LINEAR - The type of this axis, either LINEAR or ANGULAR. Required if this axis is not a default axis type. The default axis types are X,Y,Z,U,V,W = LINEAR and A,B,C = ANGULAR. This setting is effective with the AXIS GUI but note that other GUI’s may handle things differently.

  • MAX_VELOCITY = 1.2 - Maximum velocity for this axis in machine units per second.

  • 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 - The minimum limit (soft limit) for axis motion, in machine units. When this limit is exceeded, the controller aborts axis motion. The axis must be homed before MIN_LIMIT is in force. For a rotary axis (A,B,C typ) with unlimited rotation having no MIN_LIMIT for that axis in the [AXIS_<letter>] section a value of -1e99 is used.

  • MAX_LIMIT = 1000 - The maximum limit (soft limit) for axis motion, in machine units. When this limit is exceeded, the controller aborts axis motion. The axis must be homed before MAX_LIMIT is in force. For a rotary axis (A,B,C typ) with unlimited rotation having no MAX_LIMIT for that axis in the [AXIS_<letter>] section a value of 1e99 is used.

  • WRAPPED_ROTARY = 1 - When this is set to 1 for an ANGULAR axis the axis will move 0-359.999 degrees. Positive Numbers will move the axis in a positive direction and negative numbers will move the axis in the negative direction.

  • LOCKING_INDEXER_JOINT = 4 - This value selects a joint to use for a locking indexer for the specified axis <letter>. In this example, the joint is 4 which would correspond to the B axis for a XYZAB system with trivkins (identity) kinematics. When set, a G0 move for this axis will initiate an unlock with the joint.4.unlock pin then wait for the joint.4.is-unlocked pin then move the joint at the rapid rate for that joint. After the move the joint.4.unlock will be false and motion will wait for joint.4.is-unlocked to go false. Moving with other joints is not allowed when moving a locked rotary joint. To create the unlock pins, use the motmod parameter:

    unlock_joints_mask=jointmask

    The jointmask bits are: (LSB)0:joint0, 1:joint1, 2:joint2, …

    Ejemplo: loadrt motmod ... unlock_joints_mask = 0x38 crea pines de desbloqueo para articulaciones 3,4,5.

  • OFFSET_AV_RATIO = 0.1 - If nonzero, this item enables the use of HAL input pins for external axis offsets:

    axis.<letter>.eoffset-enable
    axis.<letter>.eoffset-count
    axis.<letter>.eoffset-scale

See the chapter: External Axis Offsets for usage information.

2.13. [JOINT_<num>] Sections

<num> especifica el número de articulación 0 … (num_joints-1) El valor de num_joints lo establece [KINS]JOINTS=.

The [JOINT_0], [JOINT_1], etc. sections contains general parameters for the individual components in the joint control module. The joint section names begin numbering at 0, and run through the number of joints specified in the [KINS]JOINTS entry minus 1.

Typically (for systems using trivkins kinematics, there is a 1:1 correspondence between a joint and an axis coordinate letter):

  • 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

Other kinematics modules with identity kinematics are available to support configurations with partial sets of axes. For example, using trivkins with coordinates=XZ, the joint-axes relationships are:

  • JOINT_0 = X

  • JOINT_1 = Z

Para obtener mas información sobre los módulos cinemáticos, consulte la página de manual kins (en una terminal de UNIX teclee $ man kins).

  • TYPE = LINEAR - The type of joint, either LINEAR or ANGULAR.

  • UNITS = INCH - Si se especifica, esta configuración anula la configuración relacionada [TRAJ] UNITS, por ejemplo, [TRAJ]LINEAR_UNITS si el TYPE de esta articulación es LINEAR, [TRAJ]ANGULAR_UNITS si el TYPE de esta articulación es ANGULAR.

  • MAX_VELOCITY = 1.2 - Maximum velocity for this joint in machine units per second.

  • 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 - Backlash in machine units. Backlash compensation value can be used to make up for small deficiencies in the hardware used to drive an joint. If backlash is added to an joint and you are using steppers the STEPGEN_MAXACCEL must be increased to 1.5 to 2 times the MAX_ACCELERATION for the joint. Excessive backlash compensation can cause an joint to jerk as it changes direction. If a COMP_FILE is specified for a joint BACKLASH is not used.

  • COMP_FILE = file.extension - The compensation file consists of map of position information for the joint. Compensation file values are in machine units. Each set of values are are on one line separated by a space. The first value is the nominal value (the commanded position). The second and third values depend on the setting of COMP_FILE_TYPE. Points in between nominal values are interpolated between the two nominals. Compensation files must start with the smallest nominal and be in ascending order to the largest value of nominals. File names are case sensitive and can contain letters and/or numbers. Currently the limit inside LinuxCNC is for 256 triplets per joint.

    If COMP_FILE is specified for a joint, BACKLASH is not used.

  • COMP_FILE_TYPE = 0 o 1' - 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_TYPE para cada COMP_FILE.

    • Type 0: The second value specifies the actual position as the joint is moving in the positive direction (increasing value). The third value specifies the actual position as the joint is moving in the negative direction (decreasing value).

      Type 0 Example
      -1.000 -1.005 -0.995
      0.000 0.002 -0.003
      1.000 1.003 0.998
    • Type 1: The second value specifies positive offset from nominal while traveling in the positive direction. The third value specifies the negative offset from nominal while traveling in a negative direction.

      Type 1 Example
      -1.000 0.005 -0.005
      0.000 0.002 -0.003
      1.000 0.003 -0.004
  • MIN_LIMIT = -1000 - The minimum limit for joint motion, in machine units. When this limit is reached, the controller aborts joint motion. For a rotary joint with unlimited rotation having no MIN_LIMIT for that joint in the [JOINT_N] section a the value -1e99 is used.

  • MAX_LIMIT = 1000 - The maximum limit for joint motion, in machine units. When this limit is reached, the controller aborts joint motion. For a rotary joint with unlimited rotation having no MAX_LIMIT for that joint in the [JOINT_N] section a the value 1e99 is used.

Nota

For identity kinematics, the [JOINT_N]MIN_LIMIT/MAX_LIMIT settings must equal or exceed the corresponding (one-to-one identity) [AXIS_L] limits. These settings are verified at startup when the trivkins kinematics modules is specified.

Nota

The [JOINT_N]MIN_LIMIT/MAX_LIMIT settings are enforced while jogging in joint mode prior to homing. After homing, [AXIS_L]MIN_LIMIT/MAX_LIMIT coordinate limits are used as constraints for axis (coordinate letter) jogging and by the trajectory planning used for G-code moves (programs and MDI commands). The trajectory planner works in Cartesian space (XYZABCUVW) and has no information about the motion of joints implemented by any kinematics module. It is possible for joint limit violations to occur for G-code that obeys trajectory planning position limits when non identity kinematics are used. The motion module always detects joint position limit violations and faults if they occur during the execution of G-code commands. See also related GitHub issue #97.

  • MIN_FERROR = 0.010 - This is the value in machine units by which the joint is permitted to deviate from commanded position at very low speeds. If MIN_FERROR is smaller than FERROR, the two produce a ramp of error trip points. You could think of this as a graph where one dimension is speed and the other is permitted following error. As speed increases the amount of following error also increases toward the FERROR value.

  • FERROR = 1.0 - FERROR is the maximum allowable following error, in machine units. If the difference between commanded and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the amplifiers. If MIN_FERROR is present in the INI file, velocity-proportional following errors are used. Here, the maximum allowable following error is proportional to the speed, with FERROR applying to the rapid rate set by [TRAJ]MAX_VELOCITY, and proportionally smaller following errors for slower speeds. The maximum allowable following error will always be greater than MIN_FERROR. This prevents small following errors for stationary axes from inadvertently aborting motion. Small following errors will always be present due to vibration, etc.

  • LOCKING_INDEXER = 1 - Indicates the joint is used as a locking indexer.

2.13.1. Homing

These parameters are Homing related, for a better explanation read the Homing Configuration Chapter.

  • HOME = 0.0 - The position that the joint will go to upon completion of the homing sequence.

  • HOME_OFFSET = 0.0 - The joint position of the home switch or index pulse, in machine units. When the home point is found during the homing process, this is the position that is assigned to that point. When sharing home and limit switches and using a home sequence that will leave the home/limit switch in the toggled state, the home offset can be used define the home switch position to be other than 0 if your HOME position is desired to be 0.

  • HOME_SEARCH_VEL = 0.0 - Initial homing velocity in machine units per second. Sign denotes direction of travel. A value of zero means assume that the current location is the home position for the machine. If your machine has no home switches you will want to leave this value at zero.

  • HOME_LATCH_VEL = 0.0 - Homing velocity in machine units per second to the home switch latch position. Sign denotes direction of travel.

  • HOME_FINAL_VEL = 0.0 - Velocity in machine units per second from home latch position to home position. If left at 0 or not included in the joint rapid velocity is used. Must be a positive number.

  • HOME_USE_INDEX = NO - If the encoder used for this joint has an index pulse, and the motion card has provision for this signal you may set it to yes. When it is yes, it will affect the kind of home pattern used. Currently, you can’t home to index with steppers unless you’re using StepGen in velocity mode and PID.

  • HOME_INDEX_NO_ENCODER_RESET = NO - Use YES if the encoder used for this joint does not reset its counter when an index pulse is detected after assertion of the joint index_enable HAL pin. Applicable only for HOME_USE_INDEX = YES.

  • HOME_IGNORE_LIMITS = NO - When you use the limit switch as a home switch and the limit switch this should be set to YES. When set to YES the limit switch for this joint is ignored when homing. You must configure your homing so that at the end of your home move the home/limit switch is not in the toggled state you will get a limit switch error after the home move.

  • HOME_IS_SHARED = <n> - If the home input is shared by more than one joint set <n> to 1 to prevent homing from starting if the one of the shared switches is already closed. Set <n> to 0 to permit homing if a switch is closed.

  • HOME_ABSOLUTE_ENCODER = 0 | 1 | 2 - Used to indicate the joint uses an absolute encoder. At a request for homing, the current joint value is set to the HOME_OFFSET value. If the HOME_ABSOLUTE_ENCODER setting is 1, the machine makes the usual final move to the HOME value. If the HOME_ABSOLUTE_ENCODER setting is 2, no final move is made.

  • HOME_SEQUENCE = <n> - Se utiliza para definir la secuencia "Home Todo". <n> debe comenzar en 0 o 1 o -1. Se pueden especificar secuencias adicionales con números crecientes de 1 en 1 (en valor absoluto). No se permite brincar números de secuencia. Si se omite una HOME_SEQUENCE, la articulación no será homeada por la función "Home All". Se puede homear mas 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 negativa 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: SECUENCIA HOME.

  • VOLATILE_HOME = 0 - When enabled (set to 1) this joint will be unhomed if the Machine Power is off or if E-Stop is on. This is useful if your machine has home switches and does not have position feedback such as a step and direction driven machine.

2.13.2. Servos

These parameters are relevant to joints controlled by servos.

Aviso
The following are custom INI file entries that you may find in a sample INI file or a wizard generated file. These are not used by the LinuxCNC software. They are only there to put all the settings in one place. For more information on custom INI file entries see the Custom Sections and Variables subsection.

The following items might be used by a PID component and the assumption is that the output is volts.

  • DEADBAND = 0.000015 - How close is close enough to consider the motor in position, in machine units.

    This is often set to a distance equivalent to 1, 1.5, 2, or 3 encoder counts, but there are no strict rules. Looser (larger) settings allow less servo hunting at the expense of lower accuracy. Tighter (smaller) settings attempt higher accuracy at the expense of more servo hunting. Is it really more accurate if it’s also more uncertain? As a general rule, it’s good to avoid, or at least limit, servo hunting if you can.

    Be careful about going below 1 encoder count, since you may create a condition where there is no place that your servo is happy. This can go beyond hunting (slow) to nervous (rapid), and even to squealing which is easy to confuse with oscillation caused by improper tuning. Better to be a count or two loose here at first, until you’ve been through gross tuning at least.

    Example of calculating machine units per encoder pulse to use in deciding DEADBAND value:

    images/encoder-counts-math.png
  • BIAS = 0.000 - This is used by hm2-servo and some others. Bias is a constant amount that is added to the output. In most cases it should be left at zero. However, it can sometimes be useful to compensate for offsets in servo amplifiers, or to balance the weight of an object that moves vertically. Bias is turned off when the PID loop is disabled, just like all other components of the output.

  • P = 50 - The proportional gain for the joint servo. This value multiplies the error between commanded and actual position in machine units, resulting in a contribution to the computed voltage for the motor amplifier. The units on the P gain are volts per machine unit, e.g., images/p-term.png

  • I = 0 - The integral gain for the joint servo. The value multiplies the cumulative error between commanded and actual position in machine units, resulting in a contribution to the computed voltage for the motor amplifier. The units on the I gain are volts per machine unit second, e.g., images/i-term.png

  • D = 0 - The derivative gain for the joint servo. The value multiplies the difference between the current and previous errors, resulting in a contribution to the computed voltage for the motor amplifier. The units on the D gain are volts per machine unit per second, e.g., images/i-term.png

  • FF0 = 0 - The 0th order feed forward gain. This number is multiplied by the commanded position, resulting in a contribution to the computed voltage for the motor amplifier. The units on the FF0 gain are volts per machine unit, e.g., images/p-term.png

  • FF1 = 0 - The 1st order feed forward gain. This number is multiplied by the change in commanded position per second, resulting in a contribution to the computed voltage for the motor amplifier. The units on the FF1 gain are volts per machine unit per second, e.g., images/i-term.png

  • FF2 = 0 - The 2nd order feed forward gain. This number is multiplied by the change in commanded position per second per second, resulting in a contribution to the computed voltage for the motor amplifier. The units on the FF2 gain are volts per machine unit per second per second, e.g., images/ff2.png

  • OUTPUT_SCALE = 1.000

  • OUTPUT_OFFSET = 0.000

    These two values are the scale and offset factors for the joint output to the motor amplifiers.

    The second value (offset) is subtracted from the computed output (in volts), and divided by the first value (scale factor), before being written to the D/A converters. The units on the scale value are in true volts per DAC output volts. The units on the offset value are in volts. These can be used to linearize a DAC. Specifically, when writing outputs, the LinuxCNC first converts the desired output in quasi-SI units to raw actuator values, e.g., Volts for an amplifier DAC. This scaling looks like: images/output-offset.png

    The value for scale can be obtained analytically by doing a unit analysis, i.e., units are [output SI units]/[actuator units]. For example, on a machine with a velocity mode amplifier such that 1 V results in 250 mm/s velocity.

    images/scale-math.png

    Note that the units of the offset are in machine units, e.g. mm/s, and they are pre-subtracted from the sensor readings. The value for this offset is obtained by finding the value of your output which yields 0.0 for the actuator output. If the DAC is linearized, this offset is normally 0.0.

    The scale and offset can be used to linearize the DAC as well, resulting in values that reflect the combined effects of amplifier gain, DAC non-linearity, DAC units, etc.

    To do this, follow this procedure.

    1. Build a calibration table for the output, driving the DAC with a desired voltage and measuring the result.

    2. Do a least-squares linear fit to get coefficients a, b such that images/calibration-1.png

    3. Tenga en cuenta que queremos una salida en bruto de modo que nuestro resultado medido sea idéntico a la salida ordenada. Esto significa

      1. images/calibration-2.png

      2. images/calibration-3.png

    4. Como resultado, los coeficientes a y b del ajuste lineal pueden ser utilizado como la escala y el offset para el controlador directamente.

    See the following table for an example of voltage measurements.

    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

Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ] section. For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS. For an angular joint one unit is equal to the setting in ANGULAR_UNITS. A second number, if specified, is ignored. For example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units of inch, we have:

images/encoder-scale.png

2.13.3. Stepper

These parameters are relevant to joints controlled by steppers.

Aviso
The following are custom INI file entries that you may find in a sample INI file or a wizard generated file. These are not used by the LinuxCNC software and meant only to put all the settings in one place. For more information on custom INI file entries see the Custom Sections and Variables subsection.

The following items might be used by a StepGen component.

  • SCALE = 4000 - in Sample configs

  • STEP_SCALE = 4000 - in PnCconf built configs

Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ] section. For stepper systems, this is the number of step pulses issued per machine unit. For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS. For an angular joint one unit is equal to the setting in ANGULAR_UNITS. For servo systems, this is the number of feedback pulses per machine unit. A second number, if specified, is ignored.

For example, on a 1.8 degree stepper motor with half-stepping, and 10 revs/inch gearing, and desired machine units of inch, we have:

images/stepper-scale.png
Nota
Old INI and HAL files used INPUT_SCALE for this value.
  • ENCODER_SCALE = 20000 (Optionally used in PnCconf built configs) - Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ] section. For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS. For an angular joint one unit is equal to the setting in ANGULAR_UNITS. A second number, if specified, is ignored. For example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units of inch, we have:

images/encoder-scale.png
  • STEPGEN_MAXACCEL = 21.0 - Acceleration limit for the step generator. This should be 1% to 10% larger than the joint MAX_ACCELERATION. This value improves the tuning of StepGen’s "position loop". If you have added backlash compensation to an joint then this should be 1.5 to 2 times greater than MAX_ACCELERATION.

  • STEPGEN_MAXVEL = 1.4 - Older configuration files have a velocity limit for the step generator as well. If specified, it should also be 1% to 10% larger than the joint MAX_VELOCITY. Subsequent testing has shown that use of STEPGEN_MAXVEL does not improve the tuning of StepGen’s position loop.

2.14. [SPINDLE_<num>] Section(s))

The <num> specifies the spindle number 0 … (num_spindles-1)
The value of num_spindles is set by [TRAJ]SPINDLES= .
By default maximum velocity of the spindle in forward and reverse is approximately 2147483000 RPM.
By default minimum velocity of the spindle in forward and reverse is 0 RPM.
By default the increment is 100 RPM.
You change these default by setting the following INI variables:

Nota
These settings are for the motion controller component. Control screens can limit these settings further.
  • MAX_FORWARD_VELOCITY = 20000 The maximum spindle speed (in rpm) for the specified spindle. Optional. This will also set MAX_REVERSE_VELOCITY to the negative value unless overridden.

  • MIN_FORWARD_VELOCITY = 3000 The minimum spindle speed (in rpm) for the specified spindle. Optional. Many spindles have a minimum speed below which they should not be run. Any spindle speed command below this limit will be /increased/ to this limit.

  • MAX_REVERSE_VELOCITY = 20000 This setting will default to MAX_FORWARD_VELOCITY if omitted. It can be used in cases where the spindle speed is limited in reverse. Set to zero for spindles which must not be run in reverse. In this context "max" refers to the absolute magnitude of the spindle speed.

  • MIN_REVERSE_VELOCITY = 3000` This setting is equivalent to MIN_FORWARD_VELOCITY but for reverse spindle rotation. It will default to the MIN_FORWARD_VELOCITY if omitted.

  • INCREMENT = 200 Sets the step size for spindle speed increment / decrement commands. This can have a different value for each spindle. This setting is effective with AXIS and Touchy but note that some control screens may handle things differently.

  • HOME_SEARCH_VELOCITY = 100 - FIXME: Spindle homing not yet working. Sets the homing speed (rpm) for the spindle. The spindle will rotate at this velocity during the homing sequence until the spindle index is located, at which point the spindle position will be set to zero. Note that it makes no sense for the spindle home position to be any value other than zero, and so there is no provision to do so.

  • 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 a HOME_SEARCH_VELOCITY para evitar rotación del husillo durante la secuencia de homing.

2.15. [EMCIO] Section

  • TOOL_TABLE = tool.tbl - The file which contains tool information, described in the User Manual.

  • DB_PROGRAM = db_program . Ruta a un programa ejecutable que maneja información de la herramienta. Cuando se especifica un DB_PROGRAM, se ignora una entrada TOOL_TABLE.

  • TOOL_CHANGE_POSITION = 0 0 2 - Specifies the XYZ location to move to when performing a tool change if three digits are used. Specifies the XYZABC location when 6 digits are used. Specifies the XYZABCUVW location when 9 digits are used. Tool Changes can be combined. For example if you combine the quill up with change position you can move the Z first then the X and Y.

  • TOOL_CHANGE_WITH_SPINDLE_ON = 1 - The spindle will be left on during the tool change when the value is 1. Useful for lathes or machines where the material is in the spindle, not the tool.

  • TOOL_CHANGE_QUILL_UP = 1 - The Z axis will be moved to machine zero prior to the tool change when the value is 1. This is the same as issuing a G0 G53 Z0.

  • TOOL_CHANGE_AT_G30 = 1 - The machine is moved to reference point defined by parameters 5181-5186 for G30 if the value is 1. For more information see G-code Parameters and G-code G30-G30.1.

  • RANDOM_TOOLCHANGER = 1 - This is for machines that cannot place the tool back into the pocket it came from. For example, machines that exchange the tool in the active pocket with the tool in the spindle.