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.
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 La ventana de AXIS 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
-
Iniciar LinuxCNC y seleccionar un archivo de configuración.
-
Liberar el botón E-STOP (F1) y encender la alimentación de la máquina (F2).
-
Llevar a casa todos los ejes.
-
Cargar el archivo de código G.
-
Utilizar el gráfico de vista previa para verificar que el programa está correcto.
-
Montar el material.
-
Establecer el offset adecuado para cada eje trotando y usando la tecla
Touch Offsegún sea necesario. -
Ejecutar el programa.
-
Para maquinar el mismo archivo otra vez regresar al paso 6. Para maquinar otro archivo regresar al paso 4.
-
Al terminar el trabajo salir AXIS.
|
Note
|
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.
|
Warning
|
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.
-
Tool Touch Off
-
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 link:../gcode/g-code.html#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 <<gcode:g10-l11,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 X y Y.
-
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.
-
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 [F1] (también llamado E-Stop) -
Conmutar encendido de máquina [F2] -
Abrir archivo de código G [O] -
Reabrir el archivo actual [Ctrl-R] -
Comenzar a ejecutar el archivo actual [R] -
Ejecutar línea siguiente [T] -
Pausar ejecución [P] Reanudar ejecución [S] -
Detener la ejecución del programa [ESC] -
Conmutar salto de líneas con "/" [Alt-M-/] -
Alternar pausa opcional [Alt-M-1] -
Acercar -
Alejar -
Vista superior -
Vista superior girada -
Vista lateral -
Vista frontal -
Vista en perspectiva -
Alternar entre los modos de arrastrar/rotar [D] -
Limpiar trazo posterior en vivo [Ctrl-K]
3.3. Área de visualización gráfica
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
que se muestra si el eje ha sido llevado a casa.
Una 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
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Ver también las opciones del menú Máquina: Touch pieza y Touch amarre.
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 Touch off usando posición real para obtener más información.
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.
Consultar también las opciones Touch off herramienta - pieza y Touch off herramienta - amarre en el menú Máquina.
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.
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.
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.
-
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
|
Note
|
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:
| 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
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 includes a non-realtime HAL component called hal_manualtoolchange, which shows a window prompt telling you what tool is expected when a M6 command is issued. After the OK button is pressed, execution of the program will continue.
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.
|
Note
|
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>. |
9. Módulos Python
AXIS includes several Python modules which may be useful to others. For more information on one of these modules, use pydoc <module name> or read the source code. These modules include:
-
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
By including the line LATHE = 1 in the [DISPLAY] section of the INI file, AXIS selects lathe mode. The Y axis is not shown in coordinate readouts, the view is changed to show the Z axis extending to the right and the X axis extending towards the bottom of the screen, and several controls (such as those for preset views) are removed. The coordinate readouts for X are replaced with diameter and radius.
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).
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.
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.
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.
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
To improve the interaction of AXIS with a physical jogwheel, the current active axis selected in the GUI is also reported on a HAL pin with a name like axisui.jog.x. Except for a short time after the current axis has changed, only one of these pins at a time is TRUE, the others remain FALSE.
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
If it exists, the contents of ~/.axisrc are executed as Python source code just before the AXIS GUI is displayed.
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.
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
12.10. Control de vista previa
Special comments can be inserted into the G-code file to control how the preview of AXIS behaves. In the case where you want to limit the drawing of the preview use these special comments. Anything between the (AXIS,hide) and (AXIS,show) will not be drawn during the preview. The (AXIS,hide) and (AXIS,show) must be used in pairs with the (AXIS,hide) being first. Anything after a (AXIS,stop) will not be drawn during the preview.
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
To improve the interaction of AXIS with physical jog wheels, the axis currently selected in the GUI is also reported on a pin with a name like axisui.jog.x. One of these pins is TRUE at one time, and the rest are FALSE. These are meant to control motion’s jog-enable pins.
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)