=Herramientas HAL

==Halcmd

Halcmd es una herramienta de línea de comandos para manipular HAL. Hay una página del manual bastante completa para halcmd, que se instalará si ha instalado LinuxCNC desde una fuente o un paquete. La página de manual proporciona información de uso:

man halcmd

Si ha compilado LinuxCNC para "ejecutar en el lugar (RIP)", debe correr el script rip-environment para hacer que la página man esté disponible:

cd toplevel_directory_for_rip_build
. scripts/rip-environment
man halcmd

El capitulo Tutorial HAL es un buen tutorial para halcmd y tiene varios ejemplos de uso.

==Halmeter

Halmeter es un voltímetro para HAL. Le permite ver el valor actual de un pin, señal, o parámetro. Es bastante simple de usar. Comience escribiendo halmeter en una ventana de shell. Halmeter es una aplicación GUI. Aparecerá una ventana pequeña, con dos botones etiquetados Seleccionar y Salir. La salida es obvia - apaga el programa. Con Seleccionar aparece una ventana más grande, con tres pestañas. Una pestaña muestra todos los pines actualmente definidos en HAL, la siguiente enumera todas las señales, y la última pestaña lista todos los parámetros. Haga clic en una pestaña, luego haga clic en un pin/señal/parámetro. Entonces haga clic en OK. Las listas desaparecerán, y la ventana pequeña mostrará el nombre y el valor del elemento seleccionado. La pantalla se actualiza aproximadamente 10 veces por segundo. Si hace clic en "Aceptar" en lugar de OK, la ventana pequeña mostrará el nombre y el valor del elemento seleccionado, pero la ventana grande permanecerá en la pantalla. Esto es conveniente si desea ver una serie de elementos diferentes rápidamente.

Puede tener muchos halmeters funcionando al mismo tiempo, si desea controlar varios elementos. Si quiere lanzar un halmeter sin depender de una ventana de shell, escriba halmeter & para ejecutarlo en segundo plano. También puedes hacer que halmeter comience mostrando un elemento específico inmediatamente, agregando pin|sig|par[am]<nombre> a la línea de comando. Mostrará el pin, la señal o el parámetro <nombre> tan pronto como comienze. (Si no hay tal elemento, comienza normalmente). Y, finalmente, si especifica un elemento a mostrar, usted puede agregar -s antes de pin|sig|param para indicar a halmeter que use una pequeña ventana. El nombre del elemento se mostrará en la barra de título en lugar de debajo del valor, y no habrá botones. Útil cuando quiere muchos halmeter en una pequeña cantidad de espacio en la pantalla.

Consulte la sección Tutorial Halmeter para obtener más información.

Halmeter se puede cargar desde una terminal o desde Axis y es más rápido que Halshow en la visualización de valores. Halmeter tiene dos ventanas, una para seleccionar el pin, señal o parámetro para monitorear y una que muestra el valor. Pueden abrirse multiples Halmeter al mismo tiempo. Si utiliza una secuencia de comandos para abrir múltiples Halmeters, puede establecer la posición de cada uno con -g X Y en relación con la esquina superior izquierda de la pantalla. Por ejemplo:

loadusr halmeter pin hm2.0.stepgen.00.velocity-fb -g 0 500

Vea la página man para más opciones. Vea tambien la sección Halmeter.

Halmeter
Figura 1. Halmeter
Halmeter

1. Halshow

Halshow (ver sección separada para descripción completa de uso) se puede iniciar desde la línea de comando para mostrar los detalles de los componentes seleccionados, pines, parámetros, señales, funciones e hilos de un HAL en ejecución. La pestaña WATCH proporciona una visualización continua de pines, parámetros y elementos de señal. El menú Archivo proporciona botones para 1) guardar los elementos observados en una lista de vigilancia y para cargar una lista de vigilancia existente. Los elementos de la lista de observación pueden también cargarse automáticamente al inicio. Para su uso, en línea de comandos:

Usage:
  halshow [Options] [watchfile]
  Options:
           --help    (this help)
           --fformat format_string_for_float
           --iformat format_string_for_int

Notes:
       Create watchfile in halshow using: 'File/Save Watch List'
       linuxcnc must be running for standalone usage

LinuxCNC debe estar ejecutanse para uso independiente de Halshow.

El archivo watchfile creado utilizando la opción de menú Archivo/Guardar lista de observación está formateado como una sola línea con tokens "pin+", "param+", "sig=+" seguido del nombre de pin, param o señal apropiado. Los pares token-nombre están separados por un carácter de espacio.

Ejemplo: pin+joint.0.pos-hard-limit pin+joint.1.pos-hard-limit sig+estop-loop

Un archivo watchfile creado utilizando la opción de menú Archivo/Guardar lista de observación (multilínea) está formateado con líneas separadas para cada elemento identificado con pares token-nombre como se describe arriba.

Ejemplo: pin+joint.0.pos-hard-limit pin+joint.1.pos-hard-limit sig+estop-loop

Al cargar un archivo watchfile con el elemento de menú Archivo/cargar lista de observación, los pares de nombres de tokens pueden aparecer como líneas simples o múltiples. Líneas en blanco y líneas que comienzan con un caracter # son ignoradas.

2. Halscope

Halscope es un "osciloscopio" para HAL. Le permite capturar el valor de pines, señales y parámetros como una función del tiempo. Las instrucciones de operación deben ubicarse aquí eventualmente. Por ahora, consulte la sección [sec:tutorial-halscope] en el capítulo tutorial, que explica los conceptos básicos.

El selector del menú Archivo de halscope proporciona botones para guardar una configuración o abrir una configuración previamente guardada. Cuando halscope termina, la última configuración se guarda en un archivo llamado autosave.halscope.

Los archivos de configuración también se pueden especificar al iniciar halscope desde la línea de comando. Ayuda de uso en linea de comandos (-h):

halscope -h
Uso:
  halscope [-h] [-i infile] [-o archivo de salida] [num_samples]

3. Sim Pin

sim_pin es una utilidad de línea de comandos para mostrar y actualizar cualquier cantidad de Pines, parámetros o señales editables. Uso:

  Uso:
         sim_pin [Opciones] nombre1 [nombre2 ...] &

  Opciones:
         --ayuda (este texto)
         --title title_string (título de la ventana, predeterminado: sim_pin)

  Nota: LinuxCNC (o una aplicación Hal independiente) debe estar ejecutándose
         Un elemento con nombre puede especificar un pin, param o señal
         El elemento debe ser escribible, por ejemplo:
            pin: IN o I/O (y no conectado a una señal con un escritor)
            param: RW
            señal: conectado a un pin de escritura

         Se admiten los tipos Hal de elementos bit, s32, u32 y float

         Cuando se especifica un elemento de bit, se crea un botón
         para administrar el item de una de las tres maneras especificadas
         por botones de radio:
             alternar: alternar el valor cuando se presiona el botón
             pulso: Pulse el elemento a 1 una vez cuando se presiona el botón
             mantener: se establece en 1 con el botón presionado
         El modo de botón de bit se puede especificar en la
         línea de comandos formateando el nombre del elemento:
             namei/mode=[toggle | pulse | hold]
         Si el modo comienza con una letra mayúscula,
         no se muestran los botones radio para seleccionar otros modos

Para obtener información completa, consulte la página man:

man sim_pin

Ejemplo (con LinuxCNC ejecutándose):

halcmd loadrt mux2 names=example; halcmd net sig_example example.in0
sim_pin example.sel example.in1 sig_example &
sim_pin es una utilidad de línea de comandos para mostrar y actualizar cualquier cantidad de pines, parámetros o señales que se puedan escribir

4. Sonda simulada

simulate_probe es una gui simple para simular la activación del pin motion.probe-input. Uso:

simulate_probe &
simulate_probe es una gui simple para simular la activación del pin motion.probe-input

5. Hal Histogram

hal-histogram es una utilidad de línea de comandos para mostrar histogramas para pines hal.

Uso:
   hal-histograma --help | -?
o
   hal-histogram [Opciones] [pinname]

Opciones:
  --minvalue minvalue  (bin mínimo, por defecto: 0)
  --binsize binsize    (binsize, por defecto: 100)
  --nbins nbins        (número de contenedores, por defecto: 50)

  --logscale  0|1      (escala logaritmica del eje y, valor predeterminado: 1)
  --text      note     (visualización de texto, por defecto: "")
  --show               (muestra el conteo de nbins no mostradas, desactivado por defecto)
  --verbose            (progreso y depuración, desactivado por defecto)

Notas:
  1) LinuxCNC (u otra aplicación Hal) debe estar ejecutándose
  2) Si no se especifica ningún nombre pin, el valor predeterminado es: motion-command-handler.time
  3) Esta aplicación se puede abrir para hasta 5 pines
  4) Los tipos float, s32, u32, bit son compatibles
  5) El pin debe estar asociado con un hilo que soporte punto flotante
     Para un hilo base, esto puede requerir el uso de:
     loadrt motmod ... base_thread_fp=1
hal-histogram es una utilidad de línea de comandos para mostrar histogramas para pines de hal

6. Halreport

halreport es una utilidad de línea de comandos que genera un informe sobre conexiones Hal para una aplicación LinuxCNC (u otra hal) en ejecución. El informe muestra todas las conexiones de señal y desvela posibles problemas. Información incluida:

  1. Descripción del sistema y versión del kernel.

  2. Señales y todos los pines de salida, io y entrada conectados.

  3. De cada pin, component_function, hilo y orden en addf.

  4. Pines de componentes de espacio de usuario que tienen funciones no ordenadas.

  5. Identificación de funciones desconocidas para componentes no manejados.

  6. Señales sin salida.

  7. Señales sin entradas.

  8. Funciones sin addf.

  9. Etiquetas de advertencia para componentes marcados como desaconsejados/obsoletos en los documentos.

  10. Nombres reales para pines que usan nombres de alias.

El informe puede generarse desde la línea de comando y dirigirse a un archivo de salida (o stdout si no se especifica archivo de salida):

Uso:
  halreport -h | --help (this help)
o
  halreport [outfilename]

Para generar el informe para cada inicio de LinuxCNC, incluya halreport y un nombre de archivo de salida como una entrada de [APPLICATIONS]APP en el archivo ini. Ejemplo:

[APPLICATIONS]
APP = halreport /tmp/halreport.txt

El ordén addf de funciones puede ser importante para bucles servo donde la secuencia de las funciones calculadas en cada período servo es importante. Por lo general, el orden es: leer los pines de entrada, hacer las funciones del manejador de comandos y controlador de movimiento, realizar los cálculos pid y, finalmente, escribir los pines de salida.

Para cada señal en una ruta crítica, el orden addf del pin de salida debe ser numéricamente más bajo que el orden addf de los pines de entrada críticos a los que se conecta.

Para rutas de señal de rutinas que manejan entradas de interruptores, pines de espacio de usuario, etc., el ordenamiento addf a menudo no es crítico. Además, el momento de los cambios de valor de pin de espacio de usuario no se puede controlar o garantizar en los intervalos típicamente empleados para hilos hal.

Ejemplo de archivo de informe que muestran un bucle pid para hostmot2 stepgen operado en modo de velocidad en una máquina Trivkins con joint.0 correspondiente a la coordenada del eje X:

SIG:    pos-fb-0
  OUT:    h.00.position-fb                     hm2_7i92.0.read        servo-thread 001
          (=hm2_7i92.0.stepgen.00.position-fb)
    IN:     X_pid.feedback                     X_pid.do-pid-calcs     servo-thread 004
    IN:     joint.0.motor-pos-fb               motion-command-handler servo-thread 002
            ....................               motion-controller      servo-thread 003
...
SIG:    pos-cmd-0
  OUT:    joint.0.motor-pos-cmd                motion-command-handler servo-thread 002
          .....................                motion-controller      servo-thread 003
    IN:     X_pid.command                      X_pid.do-pid-calcs     servo-thread 004
...
SIG:    motor-cmd-0
  OUT:    X_pid.output                         X_pid.do-pid-calcs     servo-thread 004
    IN:     h.00.velocity-cmd                  hm2_7i92.0.write       servo-thread 008
            (=hm2_7i92.0.stepgen.00.velocity-cmd)

En el ejemplo anterior, el HALFILE usa alias halcmd para simplificar los nombres de los pines para una placa hostmot2 fpga con comandos como:

alias pin hm2_7i92.0.stepgen.00.position-fb h.00.position-fb
Nota
La detección de funciones de componentes cuestionables puede ocurrir para 1) componentes no compatibles (obsoletos), 2) componentes creados por el usuario que usan múltiples funciones o nombres de funciones no convencionales, o 3) componentes de espacio de usuario creados por GUI que carecen de características de distinción como un prefijo basado en el nombre del programa gui. Las funciones cuestionables están etiquetadas con un signo de interrogación "?".
Nota
Los pines de componentes que no pueden asociarse con una función en un hilo conocido informan la función como "Desconocida".
Nota
halreport genera un informe de conexiones para una aplicación hal en ejecución para ayudar en el diseño y verificación de conexiones. No se muestran tipos y valores actuales de pines. Para esta información use aplicaciones como halshow, halmeter, halscope o el comando show disponible con el programa halcmd.