1. Introducción

AXIS es una interfaz gráfica para LinuxCNC que cuenta con vista previa y trazo posterior. Está escrito en Python y utiliza Tk y OpenGL para mostrar la interfaz de usuario.

Ventana principal de AXIS
Figura 1. La ventana de AXIS

2. Primeros pasos

Si la configuración no está preparada actualmente para usar AXIS, se puede cambiar editando el archivo .ini (archivo INI). En la sección [DISPLAY] cambiar la línea a DISPLAY = axis.

La configuracion de ejemplo sim/axis.ini ya está configurada para usar AXIS como su interfaz de usuario.

Al iniciar AXIS se abrirá una ventana como la de la figura [fig:axis-window] de arriba.

2.1. Configuraciones de INI

Para más información sobre las configuraciones del archivo INI que modifican el funcionamiento de AXIS ver la Sección DISPLAY y la Sección AXIS del capítulo Configuración de INI.

  • CYCLE_TIME - Ajusta la velocidad de respuesta de la IGU en milisegundos. Típicamente 100, rango sable 50 - 200
    (acepta tiempo en segundos (.05 - .2) por razones de compatibilidad hacia atrás - se prefieren milisegundos para coincidir con otras pantallas).

[DISPLAY]
CYCLE_TIME = 100
  • PREVIEW_TIMEOUT - Establece el tiempo de espera en segundos para cargar la vista previa de código G. Si el análisis gramatical del código G tarda más que este valor, se mostrará una advertencia y solo se mostrará en el área de visualización gráfica la parte inicial del programa. Especificar 0 o nada significa sin tiempo de espera.

[DISPLAY]
PREVIEW_TIMEOUT = 5

2.2. Una sesión típica

  1. Iniciar LinuxCNC y seleccionar un archivo de configuración.

  2. Liberar el botón E-STOP (F1) y encender la alimentación de la máquina (F2).

  3. Llevar a casa todos los ejes.

  4. Cargar el archivo de código G.

  5. Utilizar el gráfico de vista previa para verificar que el programa está correcto.

  6. Montar el material.

  7. Establecer el offset adecuado para cada eje trotando y usando la tecla Touch Off según sea necesario.

  8. Ejecutar el programa.

  9. Para maquinar el mismo archivo otra vez regresar al paso 6. Para maquinar otro archivo regresar al paso 4.

  10. Al terminar el trabajo salir AXIS.

Nota
Ejecutar el mismo programa de nuevo dependerá de su configuración y requisitos. Es posible que se deba cargar más material y establecer offsets o desplazarse y establecer un nuevo offset y luego ejecutar el programa de nuevo. Si la ubicación del material es siempre la misma, entonces es posible que solo se tenga que volver a ejecutar el programa. Ver la sección Menu Máquina para obtener más información sobre el comando de ejecución.

3. Pantalla AXIS

La ventana de AXIS contiene los elementos siguientes:

  • Un área de visualización que muestra uno de los siguientes elementos:

    • Una vista previa del archivo cargado (en este caso, axis.ngc), así como la ubicación actual del punto controlado de la máquina CNC. Más adelante, esta área mostrará el camino por el que la máquina CNC se ha movido, llamado trazo posterior (backplot).

    • Un lector de salida grande que muestra la posición actual y todos los offsets.

  • Una barra de menús y una barra de herramientas que permiten realizar varias acciones

  • Pestaña de Control manual (F3) - que permite mover la máquina, encender o apagar el husillo, y el refrigerante si se incluye en el archivo INI.

  • Pestaña MDI - donde los programas en código G se pueden ingresar manualmente, una línea a la vez. También muestra los Códigos G activos que son los códigos G modales en vigor.

  • Ajustar avance - que permite escalar la velocidad de los movimientos programados. El máximo predeterminado es 120% y se puede configurar a un valor diferente en el archivo INI. Consultar la Sección DISPLAY del archivo INI para más información.

  • Ajustar Husillo - que permite escalar la velocidad del husillo hacia arriba o hacia abajo.

  • Velocidad Jog - que permite configurar la velocidad de trote dentro de los límites establecidos en el archivo INI. Ver la Sección DISPLAY del archivo INI para obtener más información.

  • Velocidad máxima - que permite restringir la velocidad máxima de todos los movimientos programados (excepto movimiento sincronizado del husillo).

  • Una zona de visualización de texto que muestra el código G cargado.

  • Una barra de estado que muestra el estado de la máquina. En la pantalla mostrada, la máquina está encendida, no tiene una herramienta insertada y la posición mostrada es Relativa (mostrando todos los offsets) y Actual (mostrando la posición retroalimentada).

3.1. Elementos del menú

Algunos elementos del menú pueden estar en gris dependiendo de cómo este configurado el archivo INI. Para más información sobre configuración ver el Capítulo INI.

3.1.1. Menú Archivo

  • Abrir … - Abre un cuadro de diálogo estándar para abrir un archivo de código G para cargar en AXIS. Si ha configurado LinuxCNC para usar un programa de filtro, también puede abrirlo. Consulte la Sección FILTRO de la configuración INI para más información.

  • Archivos recientes - muestra una lista de los archivos abiertos recientemente.

  • Editar … - abre el archivo de código G actual para editarlo si se tiene un editor configurado en el archivo INI. Consultar la sección sección DISPLAY para obtener más información sobre la especificación del editor a usar.

  • Recargar - vuelve a cargar el archivo de código G actual. Si se editó, se debe recargar para que los cambios surtan efecto. Si se detiene un archivo y se quiere empezar desde el principio, volver a cargar el archivo. La recarga de la barra de herramientas es la misma que la del menú.

  • Guardar código G como … - Guarda el archivo actual con un nombre nuevo.

  • Propiedades - La suma de los movimientos rápidos y de avance. No tiene en cuenta modos de aceleración, fusión o ruta para que el tiempo reportado nunca sea menor que el tiempo de ejecución real.

  • Editar datos de herramienta … - Igual que Editar, si se ha definido un editor, se puede abrir la tabla de herramientas y editarla.

  • Recargar datos de herramienta - Después de editar la tabla de herramientas se debe volver a cargarla.

  • Editor Ladder - Si se ha cargado ClassicLadder, se puede editar desde aquí. Ver el capítulo Classicladder para más información.

  • Salir - Termina la sesión actual de LinuxCNC.

3.1.2. Menú Máquina

  • Conmutar parada de Emergencia F1- Cambia el estado de la parada de emergencia.

  • Conmutar encendido de Máquina F2 - Cambia el estado de encendido de la máquina si la parada de emergencia no está encendida.

  • Ejecutar programa- Ejecuta el programa actualmente cargado desde el principio.

  • Ejecutar desde línea seleccionada - Selecciona la línea desde la que desea comenzar. Usarla con precaución ya que esto moverá primero la herramienta a la posición esperada antes de la línea y luego se ejecutará el resto del código.

Aviso
No usar Ejecutar desde línea seleccionada si el programa de código G contiene subrutinas.
  • Paso de programa - Un solo paso a través de un programa.

  • Pausa - Pausa un programa.

  • Reanudar - Reanuda la ejecución pausada.

  • Detener - Detiene un programa en ejecución. Cuando se selecciona ejecutar después de una parada, el programa comenzará desde el principio.

  • Parar en M1 - Si se alcanza un M1, y este esta activo, la ejecución del programa parará en la línea M1. Presionar Reanudar para continuar.

  • Saltar líneas con "/" - Si una línea comienza con / y esto está activo, la línea se saltará.

  • Borrar historial MDI - Borra la ventana del historial de MDI.

  • Copiar desde historial MDI - Copia el historial MDI al portapapeles

  • Pegar en historial MDI - Pegar desde el portapapeles a la ventana del historial MDI

  • Calibración - Inicia el asistente de calibración (emccalib.tcl). La calibración lee el archivo HAL y para cada setp que usa una variable del archivo INI que se encuentra en una de las secciones [AXIS_L], [JOINT_N], [SPINDLE_S] o [TUNE], crea una entrada que puede ser editada y probada.

  • Mostrar configuración HAL - Abre la ventana de configuración HAL donde se pueden monitorear componentes HAL, pines, parámetros, señales, funciones e hilos.

  • HAL Meter - Abre una ventana donde se puede monitorear un solo pin, señal o parámetro HAL.

  • Osciloscopio HAL - Abre un osciloscopio virtual que permite seguir valores HAL en función del tiempo.

  • Mostrar estado de LinuxCNC - Abre una ventana que muestra el estado de LinuxCNC.

  • Establecer nivel de depuración - Abre una ventana donde se pueden ver los niveles de depuración y se pueden configurar algunos.

  • Homing - Lleva a casa uno o todos los ejes.

  • Unhoming - Deshacer la ida a casa de uno o todos los ejes.

  • Sistema de coordenadas cero - Establece todos los offsets a cero en el sistema de coordenadas elegido.

  • Toque inicial de la herramienta

    • Touch off herramienta -pieza - Al realizar Touch off, el valor ingresado es relativo al sistema de coordenadas de la pieza actual (G5x), modificado por el offset del eje (G92). Cuando se completa el Touch off, la coordenada relativa para el eje elegido se convertirá en el valor ingresado. Consultar <<gcode:g10-l10,G10 L10 en el capítulo de código G.

    • Touch off herramienta - amarre - Al realizar Touch off, el valor ingresado es relativo al noveno (G59.3) sistema de coordenadas, con el offset del eje (G92) ignorado. Esto es útil cuando hay un accesorio para Tool touch off en una ubicación fija en la máquina, con el noveno (G59.3) sistema de coordenadas establecido de tal manera que la punta de una herramienta de longitud cero esté en el origen del montaje cuando las coordenadas relativas son 0. Consultar G10 L11 en el capítulo de código G.

3.1.3. Menú Ver

  • Vista superior - La vista superior (o vista Z) muestra la previsualización del código G mirando en dirección del eje Z de positivo a negativo. Esta vista es la mejor para mirar el plano XY.

  • Vista superior girada - La vista superior girada (o vista Z girada) también muestra el código G mirando a lo largo del eje Z de positivo a negativo. Pero a veces es conveniente mostrar los ejes X e Y girados 90 grados para que quede mejor la visualización. Este punto de vista es también mejor para mirar X y Y.

  • Vista lateral - La vista lateral (o vista X) muestra el código G mirando a lo largo del eje X de positivo a negativo. Esta vista es mejor para mirar a Y & Z.

  • Vista frontal - La vista frontal (o vista en Y) muestra el código G mirando hacia adelante el eje Y de negativo a positivo. Esta vista es mejor para mirar X y Z.

  • Vista en perspectiva - La vista en perspectiva (o vista P) muestra el código G mirando la pieza desde un punto de vista ajustable, por defecto a X+, Y-, Z+. La posición es ajustable usando el mouse y el selector de arrastrar/rotar. Esta vista es una vista de compromiso, y si bien hace un buen trabajo al tratar de mostrar tres (¡hasta nueve!) ejes en una pantalla bidimensional, a menudo habrá alguna característica que es difícil de ver, que requiera un cambio en el punto de vista. Esta vista es la mejor cuando se quiera ver los tres (a nueve) ejes a la vez.

Punto de vista

El menú de selección de pantalla AXIS Ver se refiere a las vistas Superior, Frontal y Lateral. Estos términos son correctos si la máquina CNC tiene su eje Z vertical, con Z positivo hacia arriba. Esto es cierto para las fresadoras verticales, que es probablemente la aplicación más popular, y también es cierto para casi todas las máquinas EDM, e incluso tornos verticales de torreta, donde la pieza gira debajo de la herramienta.

Los términos Superior, Frontal y Lateral pueden ser confusos en otras máquinas CNC; como un torno estándar, donde el eje Z es horizontal, o una fresa horizontal, donde también el eje Z es horizontal, o incluso un torno vertical de torreta invertido, donde la pieza gira sobre la herramienta y la dirección positiva del eje Z ¡es hacia abajo!

Solo recuerde que el eje Z positivo está (casi) siempre alejandose de la pieza. Familiarícese con el diseño de su máquina e interprete la pantalla según sea necesario.

  • Mostrar pulgadas - Establece la escala de la pantalla AXIS en pulgadas.

  • Mostrar MM - Establece la escala de la pantalla AXIS en milímetros.

  • Mostrar programa - La vista previa del programa de código G cargado puede ser completamente desactivada si lo desea.

  • Mostrar Rápidos del programa - La vista previa del programa de código G cargado siempre mostrará la velocidad de avance (G1, G2, G3) en color blanco. Pero la visualización de movimientos rápidos (G0) en cian se puede desactivar si se desea.

  • Vista previa Alpha-blend - Esta opción hace que la vista previa de programas complejos sea más fácil de ver, pero puede hacer que la vista previa se muestre más lentamente.

  • Mostrar plot en vivo - El resaltado de las rutas de avance (G1, G2, G3) a medida que la herramienta se mueve se puede desactivar si se desea.

  • Mostrar herramienta - La visualización del cono/cilindro de la herramienta se puede desactivar si se desea.

  • Mostrar extensiones - La visualización de las extensiones (recorrido máximo en cada dirección del eje) del programa de código G cargado se puede desactivar si se desea.

  • Mostrar offsets - Se puede mostrar la ubicación de origen del offset del montaje seleccionado (G54-G59.3) como un conjunto de tres líneas ortogonales, roja, azul y verde. Esta visualización de origen de offset (o punto cero) se puede desactivar si se desea.

  • Mostrar límites de máquina - Los límites máximos de desplazamiento de la máquina para cada eje, según lo establecido en el archivo INI, se muestran como una caja rectangular dibujada en líneas discontinuas rojas. Esto es útil cuando se carga un nuevo programa de código G, o cuando se comprueba cuánto offset de montaje se necesita para llevar el programa de código G dentro de los límites de recorrido de tu máquina. Puede apagarse si no es necesario.

  • Mostrar velocidad - Una visualización de la velocidad a veces es útil para ver qué tan cerca está funcionando su máquina de la velocidad de diseño. Puede ser desactivado si se desea.

  • Mostrar distancia restante - Distancia a recorrer es un elemento muy útil que conocer cuando se ejecuta un programa de código G desconocido por primera vez. En combinación con los controles de porcentaje de velocidad rápida y de avance, se puede evitar el daño a herramientas y/o a la máquina. Una vez que el programa de código G se ha depurado y se ejecuta sin problemas, se puede desactivar la visualización si se desea.

  • Fuente grande de coordenadas - Las coordenadas de los ejes y la velocidad de avance se mostrarán con una fuente mas grande en la vista de ruta de la herramienta.

  • Limpiar plot en vivo - A medida que la herramienta se desplaza en la pantalla AXIS, se resalta la ruta del código G. Para repetir el programa, o para ver mejor un área de interés, se pueden borrar las rutas previamente resaltadas.

  • Mostrar posición ordenada - Esta es la posición a la que intentará ir LinuxCNC. Una vez que el movimiento se ha detenido, esta es la posición que intentará mantener LinuxCNC.

  • Mostrar posición actual - La posición real es la posición medida, leída desde los codificadores del sistema o simulada por los generadores de pasos. Esta puede diferir ligeramente de la posición ordenada por muchas razones, incluyendo afinación del PID, restricciones físicas, o cuantización de la posición.

  • Mostrar posición de la máquina - Esta es la posición en coordenadas sin offset, según lo establecido por Homing.

  • Mostrar posición relativa - Esta es la posición de la máquina modificada por los offsets G5x, G92 y G43.

3.1.4. Menú Ayuda

  • Acerca de AXIS - Todos sabemos lo que es esto.

  • Referencia rápida - Muestra las teclas de método abreviado del teclado.

3.2. Botones de la barra de herramientas

De izquierda a derecha en la pantalla de AXIS, los botones de la barra de herramientas (atajos de teclado mostrados [entre corchetes]) son:

  • Activar parada de emergencia Activar parada de emergencia [F1] (también llamado E-Stop)

  • Conmutar encendido de máquina Conmutar encendido de máquina [F2]

  • Abrir archivo de código G Abrir archivo de código G [O]

  • Rabrir el archivo actual Reabrir el archivo actual [Ctrl-R]

  • Comenzar a ejecutar el archivo actual Comenzar a ejecutar el archivo actual [R]

  • Ejecutar línea siguiente Ejecutar línea siguiente [T]

  • Pausar ejecución - Reanudar ejecución Pausar ejecución [P] Reanudar ejecución [S]

  • Detener la ejecución del programa Detener la ejecución del programa [ESC]

  • Conmutar salto de líneas Conmutar salto de líneas con "/" [Alt-M-/]

  • Alternar pausa Opcional Alternar pausa opcional [Alt-M-1]

  • Acercar Acercar

  • Alejar Alejar

  • Vista superior Vista superior

  • Vista superior girada Vista superior girada

  • Vista lateral Vista lateral

  • Vista frontal Vista frontal

  • Vista en perspectiva Vista en perspectiva

  • Alternar entre los modos arrastrar/rotar Alternar entre los modos de arrastrar/rotar [D]

  • Limpiar trazo posterior en vivo Limpiar trazo posterior en vivo [Ctrl-K]

3.3. Área de visualización gráfica

Visualización de coordenadas

En la esquina superior izquierda de la pantalla del programa está la visualización de las coordenadas de posicion para cada eje. A la derecha del número, un símbolo de origen el símbolo de origen se muestra si el eje se ha llevado a casa que se muestra si el eje ha sido llevado a casa.

Una símbolo de límite símbolo de límite se muestra en el lado derecho del número de coordenada de posición, si el eje está en uno de sus interruptores de límite.

Para interpretar correctamente los números de coordenadas de posición, consulte el indicador Posición: en la barra de estado. Si la posición es Máquina actual, entonces el número mostrado está en el sistema de coordenadas de la máquina. Si se muestra Relative Actual, entonces el número mostrado está en la coordenada del sistema con desplazamiento. Cuando las coordenadas mostradas son relativas y se ha establecido un desplazamiento, la pantalla incluirá un marcador origen de máquina Origen maquina cian cian.

Si la posición es Comandada, entonces la coordenada exacta dada en un comando de código G es la mostrada. Si es Actual, entonces es la posición real a la que la máquina se ha movido. Estos valores pueden ser diferentes de la posición ordenada debido al error de seguimiento, banda muerta, resolución del codificador o tamaño de paso. Por ejemplo, si ordena un movimiento a X 0.0033 en su fresadora, pero el paso de su motor paso a paso o un conteo de codificador es 0.00125, la posición Comandada podría ser 0.0033, pero la posición Actual será 0.0025 (2 pasos) o 0.00375 (3 pasos).

Trazo de vista previa

Cuando se carga un archivo, se muestra una vista previa en el área de visualización. Los movimientos rápidos (como los producidos por el comando G0) se muestran como lineas cian. Los movimientos a velocidad de avance (como los producidos por el comando G1) se muestran como líneas blancas sólidas. Las esperas (como las producidos por el comando G4) se muestran como pequeñas marcas X rosadas.

Movimientos G0 (rápido), antes de un movimiento de alimentación no se mostrarán en el trazo de vista previa. Los movimientos rápidos después de un T<n> (Cambio de herramienta) no se mostrarán en la vista previa hasta después del primer movimiento de alimentación. Para desactivar cualquiera de estas funciones programe un G1 sin ningún movimiento antes de los movimientos G0.

Dimensiones (físicas necesarias) del programa

Se muestran las dimensiones resultantes del programa en cada eje. En los extremos, se indican los valores de coordenadas mínimo y máximo. En el medio, se muestra la diferencia entre las coordenadas (dimensión).

Cuando algunas coordenadas exceden los límites de software del archivo INI, la dimensión culpable se muestra en un color diferente y encerrada en un cuadro. En la figura de abajo se sobrepasa el límite de software máximo en el eje X, que se indica en el cuadro que rodea el valor de la coordenada. El mínimo recorrido X del programa es -1.95, el recorrido máximo de X es 1.88, y el programa requiere 3.83 pulgadas de recorrido X. Para que el movimiento programado esté dentro de la carrera de la máquina en este caso, trotar a la izquierda y volver a hacer touch off X.

Límites de software
Figura 2. Límites de software
Cono de herramienta

Cuando no se ha cargado ninguna herramienta, la ubicación de la punta de la herramienta esta indicada por el cono de herramienta. El cono de herramienta no proporciona orientación sobre la forma, longitud, o radio de una herramienta real.

Cuando se carga una herramienta (por ejemplo, con el comando MDI T1 M6), el cono cambia a un cilindro que muestra el diámetro de la herramienta, dado en el archivo de tabla de herramientas.

Trazo posterior

Cuando la máquina se mueve, deja un rastro en pantalla llamado trazo posterior (backplot). El color de la línea indica el tipo de movimiento: amarillo para trotes, verde claro para movimientos rápidos, rojo para movimientos rectos a velocidad de avance y magenta para movimientos circulares a velocidad de avance.

Cuadrícula

Axis puede, opcionalmente, mostrar una cuadrícula en las vistas ortogonales. Habilite o deshabilite la cuadrícula usando Gratícula en el menu Ver. Cuando esta habilitada, la cuadrícula se muestra en las vistas superior y superior girada. Cuando el sistema de coordenadas no esta girado, la cuadrícula se muestra también en las vistas frontal y lateral. Los preajustes en el menú Gratícula están controlados por el elemento del archivo INI [DISPLAY]GRIDS. Si no se especifica, el valor predeterminado es 10mm 20mm 50mm 100mm 1in 2in 5in 10in.

Especificar una cuadrícula muy pequeña puede disminuir el rendimiento.

Interacción

Al hacer clic izquierdo en una parte del trazo de vista previa, la línea se resaltará en las visualizaciones tanto gráfica como de texto. Al hacer clic izquierdo en un área vacía, se quitará el resaltado.

Al arrastrar presionando el botón izquierdo del ratón, el trazo de vista previa se desplazará (panorámico).

Al arrastrar con Mayús y el botón izquierdo del ratón presionado, o arrastrando con la rueda del ratón presionada, el trazo de vista previa se rotará. Cuando una línea está resaltada, el centro de rotación es el centro de la línea, de lo contrario, el centro de rotación es el centro de todo el programa.

Al girar la rueda del ratón, o arrastrando con el botón derecho del ratón presionado, o arrastrando con Control y presionando el botón izquierdo del ratón, el trazo de vista previa se acercará o alejará.

Al hacer clic en uno de los iconos de Vista predefinida, o presionando V, se pueden seleccionar varias vistas preestablecidas.

3.4. Área de visualización de texto

Al hacer clic izquierdo en una línea del programa, la línea se resaltará en ambas visualizaciones, tanto la gráfica como la de texto.

Cuando el programa está en ejecución, la línea que se está ejecutando actualmente es resaltada en rojo. Si el usuario no ha seleccionado ninguna línea, la pantalla de texto se desplazará automáticamente para mostrar la línea actual.

Líneas actuales y seleccionadas
Figura 3. Líneas actuales y seleccionadas

3.5. Control manual

Mientras la máquina este encendida sin ejecutar un programa, los elementos de la pestaña Control manual se pueden utilizar para mover la máquina o controlar su husillo y el refrigerante.

Cuando la máquina no está encendida, o cuando se está ejecutando un programa, los controles manuales no están disponibles.

Muchos de los elementos descritos a continuación no son útiles en todas las máquinas. Cuando AXIS detecta que un pin en particular no está conectado en HAL, se elimina el elemento correspondiente en la pestaña Control manual. Por ejemplo, si el pin HAL spindle.0.brake no está conectado, entonces el botón Freno no aparecerá en la pantalla. Si la variable de entorno AXIS_NO_AUTOCONFIGURE está establecida, este comportamiento está deshabilitado y todos los elementos aparecerán.

El grupo Ejes

Ejes permite mover manualmente la máquina. Esta acción se conoce como trotar. Primero, seleccione el eje a mover haciendo clic en él. Luego, haga clic y manténga presionado el botón + o - dependiendo de la dirección de movimiento deseada. Los primeros cuatro ejes también pueden ser movidos por las teclas de flecha (X e Y), teclas Pág. arriba y Pág. abajo (Z), y las teclas [ y ] (A).

Si se selecciona Continuo, el movimiento continuará mientras se presiona el botón o la tecla. Si se selecciona otro valor, la máquina se moverá exactamente la distancia mostrada cada vez que se hace clic en el botón o se presiona la tecla. Por defecto, los valores disponibles son 0.1000, 0.0100, 0.0010, 0.0001.

Consultar la sección DISPLAY para obtener más información sobre la configuración los incrementos.

Homing (cinemáticas identidad)

La configuración de archivo INI [KINS]JOINTS define el número total de articulaciones para el sistema. Una articulación puede configurarse con un interruptor de casa o con un homing inmediato. Las articulaciones pueden especificar una secuencia de casa que organice el orden de grupos de homing de articulaciones.

Si todas las articulaciones están configuradas para homing y tienen secuencias válidas para homing, el botón homing mostrará Home Todos. Presionar el botón Home Todos (o las teclas Ctrl-HOME) llevará a casa todas las articulaciones utilizando sus secuencias de casa definidas. La tecla HOME llevará a casa la articulación correspondiente al eje seleccionado actual, incluso si no esta definida una secuencia de homing.

Si no todos los ejes tienen una secuencia de casa válida, el botón mostrará Home Eje y llevará a casa solo a la articulación del eje seleccionado actualmente. Cada eje debe ser seleccionado y llevado a casa por separado.

El menú desplegable Máquina/Homing proporciona un método alterno para llevar a casa los ejes. El menú desplegable Máquina/Unhoming proporciona los medios para quitar de casa a los ejes.

Si la máquina no tiene interruptores de casa definidos en la configuración, el botón Home establecerá la posición actual del eje seleccionado como la posición absoluta 0 para ese eje y activará el bit is-homed para ese eje.

Consultar el capítulo de Configuración de homing para obtener más información.

Homing (cinemáticas sin identidad)

Operación similar a la de cinemáticas identidad, pero antes del homing, los botones radio de selección seleccionan las articulaciones por número. El botón homing mostrará Home Todos si todas las articulaciones están configuradas para homing y tienen secuencias de casa válidas. De lo contrario, el botón homing mostrará Home Joint.

Consultar el capítulo de Configuración de homing para obtener más información.

Touch off

Al presionar Touch Off o la tecla END, el offset G5x para el eje actual se cambia para que el valor del eje actual sea el valor especificado. Las expresiones se pueden ingresar usando las reglas para los programas rs274ngc, excepto que las variables no pueden ser referidas. El valor resultante se muestra como un número.

Ventana Touch off
Figura 4. Ventana Touch off

Ver también las opciones del menú Máquina: Touch pieza y Touch amarre.

Touch off con posición real

Se puede configurar un eje en el archivo INI para incorporar el valor de la posición real para el cálculo en un touch off, ya sea sumando o restando este valor. Esto es principalmente útil en máquinas que tienen un eje no motorizado como un cañón con un codificador. Cuando se habilita esta característica en un eje, la barra de título de una ventana touch off indicará (sistema REAL).

Ver la sección [axis:touchoff-actual] para obtener más información.

Toque inicial de la herramienta

Al presionar el botón Touch off herramienta cambiará la longitud y los offsets de la herramienta cargada actualmente para que la posición de la punta de la herramienta actual coincida con la coordenada introducida.

Ventana touch off herramienta
Figura 5. Ventana touch off herramienta

Consultar también las opciones Touch off herramienta - pieza y Touch off herramienta - amarre en el menú Máquina.

Anulación de límites

Pulsando Anulación de límites se permitirá trotar temporalmente en la máquina más allá de un interruptor de límite físico. Esta casilla solo está disponible cuando se dispara un interruptor de límite. La anulación desaparece después de un trote. Si el eje está configurado con interruptores de límite positivo y negativo separados, LinuxCNC permitirá el trote solo en la dirección correcta. La anulación de límites no permite un trote más allá de un límite de software. La única manera de deshabilitar un límite de software en un eje es con unhome.

El grupo Husillo

Los botones de la primera fila seleccionan la dirección de giro del husillo; en sentido contrario a las agujas del reloj, detenido y en el sentido de las agujas del reloj. El sentido antihorario solo aparece si el pin spindle.0.reverse está en el archivo HAL (puede ser net trick-axis spindle.0.reverse). Los botones en la siguiente fila aumentan o disminuyen la velocidad de rotación. La casilla de verificación en la tercera fila permite que el freno del husillo sea accionado o liberado. Dependiendo de la configuración de su máquina, no todos los elementos en este grupo pueden aparecer. Presionando el botón de arranque del husillo se establece la velocidad S en 1.

El grupo Refrigerante

Dos botones permiten encender los refrigerantes Niebla e Inundación y apagarlos. Dependiendo de la configuración de la máquina, puede que no todos los elementos de este grupo aparezcan.

3.6. MDI

MDI permite que los comandos de código G se ingresen manualmente. Cuando la máquina no está encendida, o cuando un programa está en ejecución, los controles MDI no están disponibles.

Pestaña MDI
Figura 6. La pestaña MDI
  • Historial - Muestra los comandos MDI que se han escrito anteriormente en esta sesión.

  • Comando MDI - Esto permite ingresar un comando de código G para ser ejecutado. Ejecute el comando pulsando Intro o haciendo clic en Ir.

  • Códigos G activos - Se muestran los códigos modales que están activos en el intérprete. Por ejemplo, G54 indica que el offset G54 se aplica a todas las coordenadas que se introduzcan. En modo Auto los Códigos G activos representan los códigos después cualquier lectura anticipada del intérprete.

3.7. Porcentaje de alimentación

Al mover este control deslizante, se puede modificar la velocidad de alimentación programada. Por ejemplo, si un programa solicita F60 y el control deslizante se establece en 120%, entonces la velocidad de alimentación resultante será 72.

3.8. Porcentaje de velocidad del husillo

Al mover este control deslizante, la velocidad del husillo programada puede ser modificada. Por ejemplo, si un programa solicita S8000 y el control deslizante es establecido en 80%, entonces la velocidad del husillo resultante será 6400. Este elemento solo aparece cuando el pin HAL spindle.0.speed-out está conectado.

3.9. Velocidad de trote

Al mover este control deslizante, se puede modificar la velocidad de trote. Por ejemplo, si el deslizante se establece en 1 pulgada/min, entonces un trote de .01 pulgadas tardará aproximadamente .6 segundos, o 1/100 de minuto. Cerca del lado izquierdo (trotes lentos) los valores están espaciados muy cerca, mientras que cerca del lado derecho (trotes rápidos) están espaciados mucho más separados, permitiendo una amplia gama de velocidades de trote con control fino cuando sea importante.

En las máquinas con un eje giratorio, se muestra un segundo control deslizante de velocidad de trote. Este deslizante establece la velocidad de trote de los ejes giratorios (A, B y C).

3.10. Velocidad máxima

Al mover este control deslizante, se puede establecer la velocidad máxima. Esto limita la velocidad máxima para todos los movimientos programados, excepto en movimientos sincronizados con el husillo.

4. Controles del teclado

Casi todas las acciones en AXIS se pueden realizar con el teclado. La lista completa de atajos de teclado se puede encontrar en la Referencia rápida de AXIS, que se puede mostrar seleccionando Ayuda > Referencia rápida. Muchos de los accesos directos no están disponibles cuando se está en modo MDI.

4.1. Teclas de porcentaje de alimentación

Nota
En el teclado Español de España, el simbolo " ' " se refiere al signo de acentuacion junto a la tecla "P". Este signo precisa doble pulsacion de dicha tecla.

Las teclas de porcentaje de alimentación se comportan de manera diferente cuando están en modo manual. Las teclas ',1,2,3,4,5,6,7 y 8 seleccionarán un eje si está programado. Si se tienen 3 ejes ' seleccionará el eje 0, 1 seleccionará el eje 1, y 2 seleccionará eje 2. El resto de las teclas numéricas establecerán el porcentaje de alimentación. Al ejecutar un programa, ',1,2,3,4,5,6,7,8,9,0 establecerán el porcentaje de alimentación a 0% - 100%.

Los métodos abreviados de teclado más utilizados se muestran en la siguiente tabla:

Tabla 1. Atajos de teclado más comunes
Teclas Acción Modo

F1

Alterna parada de emergencia

Cualquiera

F2

Enciende/apaga la máquina

Cualquiera

`, 1 .. 9, 0

Ajusta el porcentaje de alimentación de 0% a 100%

Varía

X, `

Activa el primer eje

Manual

Y, 1

Activa el segundo eje

Manual

Z, 2

Activa el tercer eje

Manual

A, 3

Activa el cuarto eje

Manual

I

Selecciona incremento de trote

Manual

C

Trote continuo

Manual

Control-Home

Realiza secuencia de homing

Manual

Fin

Touch off: Establece offset G5x en el eje activo

Manual

Izquierda, Derecha

Trota el primer eje

Manual

Arriba, Abajo

Trota el segundo eje

Manual

Pág. arriba, Pág. abajo

Trota el tercer eje

Manual

[, ]

Trota el cuarto eje

Manual

O

Abrir archivo

Manual

Control-R

Recargar archivo

Manual

R

Ejecutar archivo

Manual

P

Pausar ejecución

Auto

S

Reanuda ejecución

Auto

ESC

Detiene la ejecución

Auto

Control-K

Limpiar trazo posterior

Auto/Manual

V

Cambia cíclicamente entre las vistas preestablecidas

Auto/Manual

Mayús. Izq, Der

Movimiento rápido eje X

Manual

Mayús.-Arriba, Abajo

Movimiento rápido eje Y

Manual

Mayús.-Pág. Arriba, Pág. Abajo

Movimiento rápido eje Z

Manual

@

Alternar Real/Ordenada

Cualquiera

#

Alternar Relativo/Máquina

Cualquiera

5. Mostrar estado de LinuxCNC (linuxcnctop)

AXIS incluye un programa llamado linuxcnctop que muestra algunos de los detalles del estado de LinuxCNC. Puedes ejecutar este programa mediante Máquina > Mostrar estado de LinuxCNC

Ventana de estado de LinuxCNC
Figura 7. Ventana de estado de LinuxCNC

El nombre de cada elemento se muestra en la columna izquierda. El valor actual se muestra en la columna derecha. Si el valor ha cambiado recientemente, se muestra sobre un fondo rojo.

6. Interfaz MDI

AXIS incluye un programa llamado mdi que permite la entrada en modo texto de comandos MDI a una sesión de LinuxCNC en ejecución. Este programa se puede ejecutar directamente desde la línea de comandos abriendo una terminal y escribiendo:

mdi

Una vez que se está ejecutando, muestra el mensaje MDI>. Cuando se ingresa una linea en blanco se muestra la posición actual de la máquina. Cuando se ingresa un comando, se envía a LinuxCNC para ser ejecutado.

Esta es una sesión de muestra de mdi:

$ mdi
MDI>
(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
MDI> G1 F5 X1
MDI>
(0.5928500000000374, 0.0, 0.0, 0.0, 0.0, 0.0)
MDI>
(1.0000000000000639, 0.0, 0.0, 0.0, 0.0, 0.0)

7. axis-remote

AXIS incluye un programa llamado axis-remote que puede enviar ciertos comandos a un AXIS en ejecución. Los comandos disponibles se muestran ejecutando axis-remote --help, que incluyen el de verificación de ejecución de AXIS (--ping), el de carga de un archivo por nombre, recarga del archivo cargado actualmente (--reload) y el de salir de AXIS (--quit).

8. Cambio manual de herramienta

LinuxCNC incluye un componente HAL en tiempo no-real llamado hal_manualtoolchange, que muestra una ventana que le indica qué herramienta se espera cuando se emite el comando M6. Después de presionar el botón Aceptar, la ejecución del programa continuará.

El componente hal_manualtoolchange incluye un pin HAL para un botón que se puede conectar a un botón físico para completar el cambio de herramienta y eliminar la ventana de captura (hal_manualtoolchange.change_button).

El archivo de configuración de HAL lib/hallib/axis_manualtoolchange.hal muestra los comandos HAL necesarios para usar este componente.

hal_manualtoolchange se puede usar incluso cuando AXIS no se usa como GUI. Este componente es más útil si tiene herramientas predefinidas y usa la tabla de herramientas.

Nota
Nota importante: los rápidos no se mostrarán en la vista previa después de emitir un T<n> hasta el siguiente movimiento de alimentación después de M6. Esto puede ser muy confuso para la mayoría de los usuarios. Para desactivar esta función para el cambio de herramienta actual, programe un G1 sin movimiento después de T<n>.
Ventana de cambio de herramientas manual
Figura 8. Ventana de cambio de herramientas manual

9. Módulos Python

AXIS incluye varios módulos Python que pueden ser útiles para otros. Para más información sobre uno de estos módulos, use pydoc <nombre del módulo> o lea el código fuente. Estos módulos incluyen:

  • emc proporciona acceso a los canales de comando, estado y error de LinuxCNC

  • gcode proporciona acceso al intérprete rs274ngc

  • rs274 proporciona herramientas adicionales para trabajar con archivos rs274ngc

  • hal permite la creación de componentes HAL en tiempo no-real escritos en Python

  • _togl proporciona un widget OpenGL que puede usarse en aplicaciones Tkinter

Para utilizar estos módulos en sus propios scripts, debe asegurarse que el directorio donde residen esté en la ruta de módulos de Python. Cuando se ejecuta una versión instalada de LinuxCNC, esto debería suceder automáticamente. Cuando ejecutando una RIP, esto se puede hacer mediante el guion scripts/rip-environment.

10. AXIS en modo torno

Incluyendo la línea LATHE = 1 en la sección [DISPLAY] del archivo INI, AXIS selecciona el modo de torno. El eje Y no se muestra en las lecturas de coordenadas, la vista se cambia mostrando el eje Z extendido hacia la derecha y el eje X extendido hacia la parte inferior de la pantalla, y se quitan varios controles (como los de vistas preestablecidas). Las lecturas de coordenadas para X se reemplazan con diámetro y radio.

AXIS en modo torno
Figura 9. AXIS en modo torno

Al presionar V se hace zoom para mostrar el archivo completo, si hay uno cargado.

En el modo de torno, se muestra la forma de la herramienta cargada (si existe).

Forma de herramienta de torno
Figura 10. Forma de herramienta de torno

Para cambiar la visualización a un torno de herramienta trasera necesitas tener las dos configuraciones LATHE = 1 y BACK_TOOL_LATHE = 1 en la sección [DISPLAY]. Esto invertirá la vista y colocará la herramienta en la parte trasera del eje Z.

Forma de herramienta trasera de torno
Figura 11. Forma de herramienta trasera de torno

11. Usando AXIS en el modo de corte de espuma

Incluyendo la línea FOAM = 1 En la sección [DISPLAY] del archivo INI, AXIS selecciona el modo de corte de espuma. En la vista previa del programa, los movimientos XY se muestran en un plano, y los movimientos UV en otro. En el trazo en vivo, se dibujan líneas entre los puntos correspondientes en el plano XY y el plano UV. Los comentarios especiales (XY_Z_POS) y (UV_Z_POS) establecen las coordenadas Z de estos planos, que por defecto son 0 y 1.5 unidades de máquina.

Modo de corte de espuma
Figura 12. Modo de corte de espuma

12. Configuración avanzada

Cuando se inicia AXIS, se crean los pines HAL para la GUI y se ejecuta el archivo HAL nombrado [HAL]POSTGUI_HALFILE=<nombre de archivo> en el archivo INI. Típicamente <nombre de archivo> sería el nombre base de configuraciones + _postgui + .hal, p.ej. torno_postgui.hal, pero puede ser cualquier nombre válido. Estos comandos se ejecutan después de construir la pantalla, garantizando que los pines HAL del widget estén disponibles. Se pueden tener varias líneas de POSTGUI_HALFILE=<nombre de archivo> en el INI; cada uno será ejecutado uno tras de otro en el orden en que aparezcan.

Para obtener más información sobre la configuración del archivo INI que puede cambiar la forma en que AXIS trabaja, ver la Sección DISPLAY del capítulo de configuración INI.

12.1. Filtros de programa

AXIS tiene la capacidad de enviar archivos cargados a través de un programa filtro. Este filtro puede realizar cualquier tarea deseada: algo tan simple como asegurarse el archivo termina con M2, o algo tan complicado como generar código G a partir de una imagen.

La sección [FILTER] del archivo INI controla cómo funcionan los filtros. Primero, para cada tipo de archivo, se escribe una línea PROGRAM_EXTENSION. Luego, se especifica el programa a ejecutar para cada tipo de archivo. Este programa recibe el nombre del archivo de entrada como su primer argumento, 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 visualización y será ejecutado por LinuxCNC con Ejecutar. Las líneas siguientes agregan soporte para el convertidor image-to-gcode incluido en LinuxCNC:

[FILTER]
PROGRAM_EXTENSION = .png,.gif Imagen de profundidad en escala de grises
png = image-to-gcode
gif = image-to-gcode

También es posible especificar un intérprete:

PROGRAM_EXTENSION = .py Script Python
py = python

De esta manera, cualquier script de Python se puede abrir, y su salida es tratada como código G. Un ejemplo de este script está disponible en nc_files/holecircle.py. Este script crea código G para perforar una serie de agujeros a lo largo de la circunferencia de un círculo.

Agujeros circulares
Figura 13. Agujeros circulares

Si la variable de entorno AXIS_PROGRESS_BAR está establecida, entonces las líneas escriben al stderr del formulario

FILTER_PROGRESS=%d

establecerá la barra de progreso de AXIS en el porcentaje dado. Esta característica debe ser utilizada por cualquier filtro que se ejecute durante mucho tiempo.

12.2. La base de datos de recursos X

Los colores de la mayoría de los elementos de la interfaz de usuario AXIS pueden ser personalizados a través de la base de datos de recursos X. El archivo de ejemplo axis_light_background cambia los colores de la ventana de trazo posterior a un esquema líneas oscuras en fondo blanco, y también sirve como una referencia para elementos configurables en el área de visualización. El archivo de ejemplo axis_big_dro cambia la posición de lectura a una fuente de tamaño más grande. Para utilizar estos archivos:

xrdb -merge /usr/share/doc/emc2/axis_light_background

xrdb -merge /usr/share/doc/emc2/axis_big_dro

Para obtener información sobre los otros elementos que se pueden configurar en aplicaciones Tk, ver las páginas del manual de Tk.

Dado que los entornos de escritorio modernos hacen algunas configuraciones automáticamente en la base de datos de recursos X que afectan adversamente a AXIS, estos ajustes son ignorados por defecto. Para hacer que los elementos de la base de datos de recursos X anulen los valores predeterminados de AXIS, incluya la siguiente línea en sus Recursos X:

*AXIS*optionLevel: widgetDefault

esto hace que las opciones integradas se creen en el nivel de opción widgetDefault, de modo que X Resources (que son nivel userDefault) pueda anularlas.

12.3. Perilla de trote

Para mejorar la interacción de AXIS con una perilla de trote, el eje actualmente seleccionado en la GUI también se reporta en un pin HAL con un nombre como axisui.jog.x. A excepción de un corto tiempo después de cambiar el eje actual, solo uno de estos pines es Verdadero a la vez, y el resto permanecen en Falso.

Después de que AXIS ha creado estos pines HAL, ejecuta el archivo HAL con: [HAL]POSTGUI_HALFILE. Lo que difiere de [HAL]HALFILE, el cual solo puede usarse una vez.

12.4. ~/.axisrc

Si existe, el contenido de ~/.axisrc se ejecuta como código fuente Python justo antes de mostrar la interfaz gráfica de usuario de AXIS. Los detalles de lo que se puede escribir en ~/.axisrc están sujetos a cambios durante el ciclo de desarrollo.

Lo siguiente agrega Control-Q como método abreviado de teclado para Salir.

Ejemplo de archivo .axisrc
root_window.bind("<Control-q>", "destroy .")
help2.append(("Control-Q", "Quit"))

Lo siguiente detiene el cuadro de diálogo "¿Realmente desea salir?".

root_window.tk.call("wm","protocol",".","WM_DELETE_WINDOW","destroy .")

12.5. USER_COMMAND_FILE

Puede especificarse un archivo Python específico de configuración en un archivo INI configurando [DISLAY]USER_COMMAND_FILE=filename.py. Al igual que un archivo ~/.axisrc, este archivo corre justo antes de que se muestre la GUI de AXIS. Este archivo es específico de una configuración de archivo INI, no del directorio de inicio del usuario.

12.6. user_live_update()

La GUI AXIS incluye una función no-op (marcador de posición) llamada user_live_update() que se ejecuta al final de la función update() de su clase LivePlotter. Esta función puede ser implementada dentro de scripts Python en ~/.axisrc o en [DISPLAY]USER_COMMAND_FILE para realizar acciones personalizadas periódicas. Los detalles de lo que puede lograrse con esta función dependerán de la implementación de la GUI AXIS y sujetos a cambios durante el ciclo de desarrollo.

12.7. user_hal_pins()

La GUI AXIS incluye una función de no-operación (marcador de posición) llamada user_hal_pins().
Se ejecuta justo después de llamar al archivo .axisrc y justo antes inicializar cualquier panel GladeVCP / pestaña incrustada.
Esta función puede implementarse dentro de un script Python ~/.axisrc o [DISPLAY]USER_COMMAND_FILE para hacer que los pines HAL personalizados usen el prefijo axisui..
Use comp como la referencia de instancia del componente HAL.
Se llama a HAL comp.ready() justo después de regresar de esta función.

12.8. Editor externo

Las opciones de menú Archivo > Editar … y Archivo > Editar tabla de herramientas … estarán disponibles después de definir el editor en la sección INI [DISPLAY]. Los valores útiles incluyen EDITOR=gedit y EDITOR=gnome-terminal -e vim. Para obtener más información, ver la Sección display del capítulo de Configuración INI.

12.9. Panel de control virtual

AXIS puede mostrar un panel de control virtual personalizado en la columna derecha o en la última fila. Además, se pueden mostrar uno o más paneles como pestañas incrustadas. Se pueden programar botones, indicadores, visualizadores de datos y más cosas. Para más información, consultar los capítulos PyVCP y GladeVCP.

12.10. Control de vista previa

Se pueden insertar comentarios especiales en el archivo de código G para controlar cómo se comporta la vista previa de AXIS. En caso de querer limitar el dibujo de la vista previa, utilizar estos comentarios especiales. Cualquier cosa entre (AXIS,hide) y (AXIS,show) no se dibujará durante la vista previa. (AXIS,hide) y (AXIS,show) deben usarse en pares, con (AXIS,hide) primero. Cualquier cosa después de (AXIS,stop) no se dibujará durante la vista previa.

Estos comentarios son útiles para despejar la visualización de vista previa (por ejemplo, mientras se depura un archivo de código G más grande, se puede deshabilitar la vista previa de ciertas partes que ya están trabajando bien).

  • (AXIS,hide) Detiene la vista previa (debe estar primero)

  • (AXIS,show) Reanuda la vista previa (debe seguir un hide)

  • (AXIS,stop) Detiene la vista previa desde aquí hasta el final del archivo.

  • (AXIS,notify,el_texto) Muestra el_texto como una visualización de información

Esta visualización puede ser útil en la vista previa de AXIS cuando no se muestran los comentarios (debug,mensaje).

12.11. Touch off usando posición real

La característica de touch off puede incorporar opcionalmente el valor de la posición real del eje en los cálculos del offset. Esto se usa primordialmente en casos donde un eje no motorizado, como el del cañón en una máquina fresadora, proporciona retroalimentación a LinuxCNC por medio de un codificador, pero no sin haber motor para controlar su movimiento. Esto permite a AXIS proporcionar una visualización DRO para tal eje con capacidad touch off funcional.

Esta característica se activa en un eje alterando la sección [AXIS_x] apropiada en el archivo INI. Agregando una opción llamada TOUCHOFF_ACTUAL y estableciendo el valor a PLUS o MINUS dependiendo de cómo se quiera aplicar la posición actual al offset.

Ejemplo:

[AXIS_Z]
TOUCHOFF_ACTUAL = MINUS

Ordinariamente, solo se usa la posición ordenada de un eje para establecer este offset, lo que significa que no funciona como debería por que a los ejes no motorizados nunca se les ordena moverse, y por lo tanto su posición ordenada siempre es 0.

Touch off envía un comando G10 L20 al MDI para establecer el nuevo valor de offset. El valor aplicado es normalmente solo el valor introducido en la caja de diálogo. Cuando se activa esta característica, sumará o restará el valor de la posición actual al valor introducido en el diálogo, dependiendo de cómo se haya configurado.

13. Axisui

Para mejorar la interacción de AXIS con perillas de trote físicas, el eje actualmente seleccionado en la GUI también se reporta en un pin con un nombre como axisui.jog.x. Uno de estos pines es verdadero y el resto son falso. Están diseñados para controlar los pines que habilitan el movimiento de trote.

Pines axisui

AXIS tiene pines HAL para indicar qué botón de selección de trote está seleccionado en el pestaña Control manual.

Tipo Dir Nombre
bit  OUT axisui.jog.x
bit  OUT axisui.jog.y
bit  OUT axisui.jog.z
bit  OUT axisui.jog.a
bit  OUT axisui.jog.b
bit  OUT axisui.jog.c
bit  OUT axisui.jog.u
bit  OUT axisui.jog.v
bit  OUT axisui.jog.w

AXIS tiene un pin HAL para indicar el incremento de trote seleccionado en Pestaña manual.

Tipo  Dir Nombre
float OUT axisui.jog.increment

AXIS tiene un pin de salida HAL para indicar que ha ocurrido un aborto. El pin axisui.abort será TRUE y regresará a FALSE después de 0.3ms.

Tipo  Dir    Nombre
bit   OUT    axisui.abort

AXIS tiene un pin de salida HAL para indicar que ha ocurrido un error. El pin axisui.error permanecerá TRUE hasta que se hayan confirmado todas las notificaciones de error.

Tipo  Dir    Nombre
bit   OUT    axisui.error

AXIS tiene pines de entrada HAL para borrar las notificaciones emergentes de errores e información.

Tipo  Dir Nombre
bit   IN  axisui.notifications-clear
bit   IN  axisui.notifications-clear-error
bit   IN  axisui.notifications-clear-info

AXIS tiene un pin de entrada HAL que deshabilita/habilita la función Pausa/Reanudar.

Tipo  Dir Nombre
bit   IN  axisui.resume-inhibit

14. Sugerencias de personalización de AXIS

AXIS es un código bastante grande y difícil de penetrar. Esto es útil para mantener el código estable pero dificulta la personalización.
Aquí mostraremos fragmentos de código para modificar comportamientos o elementos visuales de la pantalla. Hay que tener en cuenta que el código interno de AXIS puede cambiar de vez en cuando.
No se garantiza que estos fragmentos continúen funcionando - pueden necesitar ajustes.

14.1. La función de actualización

Hay una función en AXIS nombrada user_live_update que se llama cada vez que AXIS se actualiza solo. Puedes usar esto para actualizar tus propias funciones.

# función de actualización continua
def user_live_update():
    print('impreso en cada actualización...')

14.2. Deshabilitar el cuadro de diálogo Cerrar

# deshabilita el diálogo de confirmación de cierre
root_window.tk.call("wm","protocol",".","WM_DELETE_WINDOW","destroy .")

14.3. Cambiar la fuente del texto

# cambiar la fuente

font = 'sans 11'
fname,fsize = font.split()
root_window.tk.call('font','configure','TkDefaultFont','-family',fname,'-size',fsize)

# rehace el texto en pestañas para que cambien al tamaño de la nueva fuente predeterminada

root_window.tk.call('.pane.top.tabs','itemconfigure','manual','-text',' Manual - F3 ')
root_window.tk.call('.pane.top.tabs','itemconfigure','mdi','-text',' MDI - F5 ')
root_window.tk.call('.pane.top.right','itemconfigure','preview','-text',' Preview ')
root_window.tk.call('.pane.top.right','itemconfigure','numbers','-text',' DRO ')


# la fuente código G es independiente

root_window.tk.call('.pane.bottom.t.text','configure','-foreground','blue')
#root_window.tk.call('.pane.bottom.t.text','configure','-foreground','blue','-font',font)
#root_window.tk.call('.pane.bottom.t.text','configure','-foreground','blue','-font',font,'-height','12')

14.4. Modificar velocidad rápida con atajos de teclado

# use control + ` o 1-0 como atajos de teclado para acelerar y mantener ` o 1-0 para avance
# también agrega texto a la referencia rápida en la ayuda

help1.insert(10,("Control+ `,1..9,0", _("Establecer ajuste de rápidos de 0% a 100%")),)

root_window.bind('<Control-Key-quoteleft>',lambda event: set_rapidrate(0))
root_window.bind('<Control-Key-1>',lambda event: set_rapidrate(10))
root_window.bind('<Control-Key-2>',lambda event: set_rapidrate(20))
root_window.bind('<Control-Key-3>',lambda event: set_rapidrate(30))
root_window.bind('<Control-Key-4>',lambda event: set_rapidrate(40))
root_window.bind('<Control-Key-5>',lambda event: set_rapidrate(50))
root_window.bind('<Control-Key-6>',lambda event: set_rapidrate(60))
root_window.bind('<Control-Key-7>',lambda event: set_rapidrate(70))
root_window.bind('<Control-Key-8>',lambda event: set_rapidrate(80))
root_window.bind('<Control-Key-9>',lambda event: set_rapidrate(90))
root_window.bind('<Control-Key-0>',lambda event: set_rapidrate(100))
root_window.bind('<Key-quoteleft>',lambda event: set_feedrate(0))
root_window.bind('<Key-1>',lambda event: set_feedrate(10))
root_window.bind('<Key-2>',lambda event: set_feedrate(20))
root_window.bind('<Key-3>',lambda event: set_feedrate(30))
root_window.bind('<Key-4>',lambda event: set_feedrate(40))
root_window.bind('<Key-5>',lambda event: set_feedrate(50))
root_window.bind('<Key-6>',lambda event: set_feedrate(60))
root_window.bind('<Key-7>',lambda event: set_feedrate(70))
root_window.bind('<Key-8>',lambda event: set_feedrate(80))
root_window.bind('<Key-9>',lambda event: set_feedrate(90))
root_window.bind('<Key-0>',lambda event: set_feedrate(100))

14.5. Leer el archivo INI

# leer un elemento del archivo INI
machine = inifile.find('EMC','MACHINE')
print('nombre de máquina =',machine)

14.6. Lectura del estado de LinuxCNC

# El estado de LinuxCNC se puede leer desde s.
print(s.actual_position)
print(s.paused)

14.7. Cambiar la vista actual

# establecer la vista de la vista previa
# las vistas válidas son view_x view_y view_y2 view_z view_z2 view_p
command.set_view_z()

14.8. Crear nuevos pines AXISUI HAL

def user_hal_pins():
    comp.newpin('my-new-in-pin', hal.HAL_BIT, hal.HAL_IN)
    comp.ready()

14.9. Crear nuevos componentes y pines HAL

# crear un componente

mycomp = hal.component('my_component')
mycomp.newpin('idle-led',hal.HAL_BIT,hal.HAL_IN)
mycomp.newpin('pause-led',hal.HAL_BIT,hal.HAL_IN)
mycomp.ready()

# conectar pines

hal.new_sig('idle-led',hal.HAL_BIT)
hal.connect('halui.program.is-idle','idle-led')
hal.connect('my_component.idle-led','idle-led')

# establecer un pin

hal.set_p('my_component.pause-led','1')

# obtener un pin de rama 2,8+

value = hal.get_value('halui.program.is-idle')
print 'value is a',type(value),'value of',value

14.10. Cambiar pestañas con pines HAL

# los pines HAL de un panel GladeVCP no estarán listos cuando se ejecute user_live_update
# para leerlos necesita ponerlos en un bloque try/except

# el siguiente ejemplo supone 5 botones HAL en un panel GladeVCP utilizado para cambiar
# las pestañas en la pantalla AXIS.
# los nombres de los botones son 'manual-tab', 'mdi-tab', 'preview-tab', 'dro-tab', 'user0-tab'
# la pestaña user_0, si existe, sería la primera pestaña GladeVCP incrustada

# para la rama LinuxCNC 2.8+

def user_live_update():
    try:
        if hal.get_value('gladevcp.manual-tab'):
            root_window.tk.call('.pane.top.tabs','raise','manual')
        elif hal.get_value('gladevcp.mdi-tab'):
            root_window.tk.call('.pane.top.tabs','raise','mdi')
        elif hal.get_value('gladevcp.preview-tab'):
            root_window.tk.call('.pane.top.right','raise','preview')
        elif hal.get_value('gladevcp.numbers-tab'):
            root_window.tk.call('.pane.top.right','raise','numbers')
        elif hal.get_value('gladevcp.user0-tab'):
            root_window.tk.call('.pane.top.right','raise','user_0')
    except:
        pass

14.11. Agregar un botón para ir a casa

def goto_home(axis):
    if s.interp_state == linuxcnc.INTERP_IDLE:
        home = inifile.find('JOINT_' + str(inifile.find('TRAJ', 'COORDINATES').upper().index(axis)), 'HOME')
        mode = s.task_mode
        if s.task_mode != linuxcnc.MODE_MDI:
            c.mode(linuxcnc.MODE_MDI)
        c.mdi('G53 G0 ' + axis + home)

# hacer un botón para llevar a casa el eje Y
root_window.tk.call('button','.pane.top.tabs.fmanual.homey','-text','Home Y','-command','goto_home Y','-height','2')

# colocar el botón
root_window.tk.call('grid','.pane.top.tabs.fmanual.homey','-column','1','-row','7','-columnspan','2','-padx','4','-sticky','w')

# cualquier función llamada desde Tcl debe agregarse a TclCommands
TclCommands.goto_home = goto_home
commands = TclCommands(root_window)

14.12. Agregar botón al marco manual

# crea un nuevo botón y lo pone en el marco manual

root_window.tk.call('button','.pane.top.tabs.fmanual.mybutton','-text','My Button','-command','mybutton_clicked','-height','2')
root_window.tk.call('grid','.pane.top.tabs.fmanual.mybutton','-column','1','-row','6','-columnspan','2','-padx','4','-sticky','w')

# lo anterior envía el comando "mybutton_clicked" cuando se hace clic
# otras opciones son vincular un comando de pulsar o soltar (o ambos) al botón
# estos pueden ser adicionales o en lugar del comando seleccionado
# si en lugar de eliminar '-command', 'mybutton_clicked', de la primera línea

# Button-1 = botón izquierdo del mouse, 2 = derecho o 3 = medio

root_window.tk.call('bind','.pane.top.tabs.fmanual.mybutton','<Button-1>','mybutton_pressed')
root_window.tk.call('bind','.pane.top.tabs.fmanual.mybutton','<ButtonRelease-1>','mybutton_released')

# funciones llamadas desde los botones

def mybutton_clicked():
    print('mybutton fue clicado')
def mybutton_pressed():
    print('mybutton fue presionado')
def mybutton_released():
    print('mybutton fue liberado')

# cualquier función llamada desde Tcl debe agregarse a TclCommands

TclCommands.mybutton_clicked = mybutton_clicked
TclCommands.mybutton_pressed = mybutton_pressed
TclCommands.mybutton_released = mybutton_released
commands = TclCommands(root_window)

14.13. Lectura de variables internas

# las siguientes variables pueden leerse desde la instancia vars

print(vars.machine.get())
print(vars.emcini.get())

    active_codes            = StringVar
    block_delete            = BooleanVar
    brake                   = BooleanVar
    coord_type              = IntVar
    display_type            = IntVar
    dro_large_font          = IntVar
    emcini                  = StringVar
    exec_state              = IntVar
    feedrate                = IntVar
    flood                   = BooleanVar
    grid_size               = DoubleVar
    has_editor              = IntVar
    has_ladder              = IntVar
    highlight_line          = IntVar
    interp_pause            = IntVar
    interp_state            = IntVar
    ja_rbutton              = StringVar
    jog_aspeed              = DoubleVar
    jog_speed               = DoubleVar
    kinematics_type         = IntVar
    linuxcnctop_command     = StringVar
    machine                 = StringVar
    max_aspeed              = DoubleVar
    max_maxvel              = DoubleVar
    max_queued_mdi_commands = IntVar
    max_speed               = DoubleVar
    maxvel_speed            = DoubleVar
    mdi_command             = StringVar
    metric                  = IntVar
    mist                    = BooleanVar
    motion_mode             = IntVar
    on_any_limit            = BooleanVar
    optional_stop           = BooleanVar
    override_limits         = BooleanVar
    program_alpha           = IntVar
    queued_mdi_commands     = IntVar
    rapidrate               = IntVar
    rotate_mode             = BooleanVar
    running_line            = IntVar
    show_distance_to_go     = IntVar
    show_extents            = IntVar
    show_live_plot          = IntVar
    show_machine_limits     = IntVar
    show_machine_speed      = IntVar
    show_program            = IntVar
    show_pyvcppanel         = IntVar
    show_rapids             = IntVar
    show_tool               = IntVar
    show_offsets            = IntVar
    spindledir              = IntVar
    spindlerate             = IntVar
    task_mode               = IntVar
    task_paused             = IntVar
    task_state              = IntVar
    taskfile                = StringVar
    teleop_mode             = IntVar
    tool                    = StringVar
    touch_off_system        = StringVar
    trajcoordinates         = StringVar
    tto_g11                 = BooleanVar
    view_type               = IntVar

14.14. Ocultar widgets

# ocultar un widget
# use 'grid' o 'pack' dependiendo de cómo se colocó originalmente
root_window.tk.call('grid','forget','.pane.top.tabs.fmanual.jogf.zerohome.tooltouch')

14.15. Cambiar una etiqueta

# cambiar la etiqueta de un widget
root_window.tk.call('setup_widget_accel','.pane.top.tabs.fmanual.mist','Downdraft')

# asegurar que aparezca (solo es necesario en este caso si el botón de niebla estaba oculto)
root_window.tk.call('grid','.pane.top.tabs.fmanual.mist','-column','1','-row','5','-columnspan','2','-padx','4','-sticky','w')

14.16. Redirigir un comando existente

# secuestrar un comando existente
# originalmente el botón de niebla llama a la función de niebla
root_window.tk.call('.pane.top.tabs.fmanual.mist','configure','-command','hijacked_command')

# La nueva función
def hijacked_command():
    print('comando de niebla secuestrado')

# agrega la función a TclCommands
TclCommands.hijacked_command = hijacked_command
commands = TclCommands(root_window)

14.17. Cambiar el color DRO

# cambiar la pantalla dro
root_window.tk.call('.pane.top.right.fnumbers.text','configure','-foreground','green','-background','black')

14.18. Cambiar los botones de la barra de herramientas

# cambiar los botones de la barra de herramientas

buW = '3'
buH = '2'
boW = '3'

root_window.tk.call('.toolbar.machine_estop','configure','-image','','-text','ESTOP','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.machine_power','configure','-image','','-text','POWER','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.file_open','configure','-image','','-text','OPEN','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.reload','configure','-image','','-text','RELOAD','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_run','configure','-image','','-text','RUN','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_step','configure','-image','','-text','STEP','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_pause','configure','-image','','-text','PAUSE','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_stop','configure','-image','','-text','STOP','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_blockdelete','configure','-image','','-text','Skip /','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.program_optpause','configure','-image','','-text','M1','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_zoomin','configure','-image','','-text','Zoom+','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_zoomout','configure','-image','','-text','Zoom-','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_z','configure','-image','','-text','Top X','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_z2','configure','-image','','-text','Top Y','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_x','configure','-image','','-text','Right','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_y','configure','-image','','-text','Front','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.view_p','configure','-image','','-text','3D','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.rotate','configure','-image','','-text','Rotate','-width',buW,'-height',buH,'-borderwidth',boW)
root_window.tk.call('.toolbar.clear_plot','configure','-image','','-text','Clear','-width',buW,'-height',buH,'-borderwidth',boW)

14.19. Cambiar colores del plóter

En formato RGBA, en este orden: trote, rápidos, avance, arco, cambio de herramienta, sonda

# cambiar colores del plóter
try:
    live_plotter.logger.set_colors((255,0,0,255),
                                    (0,255,0,255),
                                    (0,0,255,255),
                                    (255,255,0,255),
                                    (255,255,255,255),
                                    (0,255,255,255))
except Exception as e:
    print(e)