Para que funcionen los ejemplos de Halui, debe agregar la siguiente línea a la sección [HAL] del archivo ini.

HALUI = halui

1. Arranque remoto

Para conectar un botón de inicio de programa remoto a LinuxCNC, utilice los pines halui.program.run y halui.mode.auto. Debe asegurarse de que se puede ejecutar utilizando el pin halui.mode.is-auto. Esto se hace con un componente and2. La siguiente figura muestra cómo son las conexiones. Cuando se presiona el botón de ejecución remota, se conecta tanto a halui.mode.auto como a and2.0.in0. Si está habilitado el modo automático, el pin halui.mode.is-auto será true. Si ambas entradas al componente and2.0 son true, and2.0.out se activara e iniciará el programa a traves de halui.program.run.

Ejemplo de arranque remoto
Figura 1. Ejemplo de arranque remoto

Los comandos hal necesarios para lograr lo anterior son:

net program-start-btn halui.mode.auto and2.0.in0 <= <su pin de entrada>
net program-run-ok and2.0.in1 <= halui.mode.is-auto
net remote-program-run halui.program.run <= and2.0.out

Observe que en la primera línea hay dos pines de lectura; esto se puede dividir en dos líneas como estas:

net program-start-btn halui.mode.auto <= <su pin de entrada>
net program-start-btn and2.0.in0

2. Pausar y Reanudar

Este ejemplo fue desarrollado para permitir que LinuxCNC mueva un eje rotativo a una señal de una máquina externa. La coordinación entre los dos sistemas será proporcionada por dos componentes de Halui:

  • halui.program.is-paused

  • halui.program.resume

En su archivo hal personalizado, agregue las dos líneas siguientes, que se conectarán a su E/S para activar la pausa del programa o para reanudar cuando el sistema externo requiera que LinuxCNC continúe.

net ispaused halui.program.is-paused => "su pin de salida"
net resume halui.program.resume <= "su pin de entrada"

Sus pines de entrada y salida están conectados a los pines del otro controlador. Pueden ser pines de puerto paralelo o cualquier otro pin de E/S al que tenga acceso.

Este sistema funciona de la siguiente manera. Cuando se encuentra un M0 en el código G, la señal halui.program.is-paused se hace true. Esto activa su pin de salida para que el controlador externo sepa que LinuxCNC está en pausa.

Para reanudar el programa gcode en LinuxCNC, cuando el controlador externo esté listo, hará que su salida sea true. Esto indicará LinuxCNC que debería reanudar la ejecución de Gcode.

Dificultades en el tiempo

  • La señal de retorno de entrada "resume" no debe ser más larga que el tiempo requerido para obtener el código g corriendo de nuevo.

  • La salida "is-paused" ya no debería estar activa para cuando termina la señal de "resume".

Estos problemas de tiempo podrían evitarse utilizando ClassicLadder para activar la salida "is-paused" a través de un temporizador monoestable para entregar un pulso de salida estrecho. El pulso "reanudar" también podría recibirse a través de un temporizador monoestable.