For most of the tools, a more detailed description can be found in the chapter HAL Tutorial

1. Halcmd

halcmd — это инструмент командной строки для управления HAL. Существует довольно полная справочная страница по halcmd, которая будет установлена, если вы установили LinuxCNC из исходного кода или пакета. На странице руководства представлена информация об использовании:

man halcmd

Если вы скомпилировали LinuxCNC для "run-in-place", вам необходимо запустить сценарий rip-environment, чтобы сделать справочную страницу доступной:

cd toplevel_directory_for_rip_build
. scripts/rip-environment
man halcmd

HAL Tutorial содержит ряд примеров использования halcmd и является хорошим учебным пособием по halcmd.

2. Halmeter

halmeter is like a voltmeter for the HAL. It lets you look at a pin, signal, or parameter, and displays the current value of that item. It is pretty simple to use. Start it by typing halmeter in an X windows shell. Halmeter is a GUI application. It will pop up a small window, with two buttons labeled "Select" and "Exit". Exit is easy - it shuts down the program. Select pops up a larger window, with three tabs. One tab lists all the pins currently defined in the HAL. The next lists all the signals, and the last tab lists all the parameters. Click on a tab, then click on a pin/signal/parameter. Then click on "OK". The lists will disappear, and the small window will display the name and value of the selected item. The display is updated approximately 10 times per second. If you click "Accept" instead of "OK", the small window will display the name and value of the selected item, but the large window will remain on the screen. This is convenient if you want to look at a number of different items quickly.

Вы можете запустить несколько halmeters одновременно, если хотите отслеживать несколько объектов. Если вы хотите запустить halmeter, не закрывая окно оболочки, введите halmeter &, чтобы запустить его в фоновом режиме. Вы также можете заставить halmeter немедленно начать отображать определенный элемент, добавив pin|sig|par[am] _<name>_ в командную строку. Он отобразит контакт, сигнал или параметр <name> сразу после запуска, если такого элемента нет, он просто запустится нормально. И, наконец, если вы указываете элемент для отображения, вы можете добавить -s перед pin|sig|param, чтобы указать halmeter использовать маленькое окно. Имя элемента будет отображаться в строке заголовка, а не под значением, и кнопок не будет. Полезно, когда вам нужно много метров на небольшом пространстве экрана.

In the Halmeter Tutorial you will find for more information.

halmeter можно загрузить с терминала или из AXIS. halmeter отображает значения быстрее, чем halshow. «halmeter» имеет два окна: одно для выбора контакта, сигнала или параметра для мониторинга, а другое отображает значение. Одновременно могут быть открыты несколько ``halmeter``ов. Если вы используете скрипт для открытия нескольких ``halmeter``, вы можете установить положение каждого из них с помощью -g X Y относительно верхнего левого угла экрана. Например:

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

Дополнительные параметры см. на странице руководства и в разделе Halmeter.

Окно выбора Halmeter
Figure 1. Окно выбора Halmeter
Окно наблюдения Halmeter
Figure 2. Окно наблюдения Halmeter

3. Halshow

halshow shows the values of chosen pins, parameters or signals of a running HAL. It further provides buttons to also modify those items. The WATCH tab provides a continuous display of selected pin, parameters, and signal items. The File menu provides buttons to save the watch items to a watch list and to load an existing watch list. The watch list items can also be loaded automatically on startup.

More detailed information can be found in the section Halshow in the tutorial chapter.

It can be started from the command line:

halshow --help
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.
Halshow Watch Tab
Figure 3. Halshow Watch Tab

Файл наблюдения, созданный с помощью пункта меню File/Save Watch List, форматируется как одна строка с токенами "pin+", "param+", "sig=+", за которыми следуют соответствующий вывод, параметр или имя сигнала. Пары токен-имя разделяются пробелом.

Пример однострочного файла наблюдения
pin+joint.0.pos-hard-limit pin+joint.1.pos-hard-limit sig+estop-loop

Файл наблюдения, созданный с помощью пункта меню File/Save Watch List (multiline), форматируется отдельными строками для каждого элемента, идентифицируемого парами имени токена, как описано выше.

Пример файла наблюдения с разделенными строками
pin+joint.0.pos-hard-limit
pin+joint.1.pos-hard-limit
sig+estop-loop

При загрузке файла наблюдения с помощью пункта меню File/Load Watch List пары «токен-имя» могут отображаться в виде одной или нескольких строк. Пустые строки и строки, начинающиеся с символа #, игнорируются.

4. Halscope

Halscope — это осциллограф для HAL. Он позволяет фиксировать значение выводов, сигналов и параметров в зависимости от времени. Полные инструкции по эксплуатации со временем должны быть размещены здесь. А пока обратитесь к разделу Halscope в главе руководства, где объясняются основы.

Селектор меню "File" на halscope содержит кнопки для сохранения конфигурации или открытия ранее сохраненной конфигурации. При завершении работы halscope последняя конфигурация сохраняется в файле с именем autosave.halscope.

Файлы конфигурации также можно указать при запуске halscope из командной строки. Использование справки по командной строке (-h):

halscope -h
Usage:
  halscope [-h] [-i infile] [-o outfile] [num_samples]

5. Sim Pin

sim_pin — это утилита командной строки для отображения и обновления любого количества записываемых контактов, параметров или сигналов.

sim_pin Использование
Usage:
        sim_pin [Options] name1 [name2 ...] &

Options:
        --help                (this text)
        --title title_string  (window title, default: sim_pin)

Note:  LinuxCNC (or a standalone HAL application) must be running
        A named item can specify a pin, param, or signal
        The item must be writable, e.g.:
          pin:    IN or I/O (and not connected to a signal with a writer)
          param:  RW
          signal: connected to a writable pin

        Поддерживаются типы элементов HAL bit,s32,u32,float.

        When a bit item is specified, a pushbutton is created
        to manage the item in one of three manners specified
        by radio buttons:
            toggle: Toggle value when button pressed
            pulse:  Pulse item to 1 once when button pressed
            hold:   Set to 1 while button pressed
        The bit pushbutton mode can be specified on the command
        line by formatting the item name:
            namei/mode=[toggle | pulse | hold]
        If the mode begins with an uppercase letter, the radio
        buttons for selecting other modes are not shown

Полную информацию смотрите на странице руководства:

man sim_pin
sim_pin Пример (при работающем LinuxCNC)
halcmd loadrt mux2 names=example; halcmd net sig_example example.in0
sim_pin example.sel example.in1 sig_example &
sim_pin Окно
Figure 4. sim_pin Окно

6. Simulate Probe

simulate_probe — это простой ГИП для имитации активации вывода motion.probe-input. Использование:

simulate_probe &
simulate_probe Окно
Figure 5. simulate_probe Окно

7. HAL Histogram

hal-histogram — это утилита командной строки для отображения гистограмм для контактов HAL.

Использование:
   hal-histogram --help | -?
or
   hal-histogram [Options] [pinname]
Table 1. Options:
Вариант Value Description

--minvalue

minvalue

минимальное количество столбцов, default: 0

--binsize

binsize

binsize, размер столбца, по умолчанию: 100

--nbins

nbins

количество столбцов, по умолчанию: 50

--logscale

0/1

Логарифмический масштаб оси Y, по умолчанию: 1

--text

note

отображаемый текст, по умолчанию: ""

--show

показывает количество неотображаемых nbins, по умолчанию отключено

--verbose

прогресс и отладка, по умолчанию выключено

Примечания:
  1. LinuxCNC (или другое приложение HAL) должен быть запущен.

  2. Если имя контакта не указано, по умолчанию используется: motion-command-handler.time.

  3. Это приложение может быть открыто для 5 контактов.

  4. Поддерживаются типы контактов: float, s32, u32, bit.

  5. The pin must be associated with a realtime thread.

hal-histogram Окно
Figure 6. hal-histogram Окно

8. Halreport

halreport — это утилита командной строки, которая генерирует отчет о соединениях HAL для работающего приложения LinuxCNC (или другого HAL). В отчете показаны все соединения сигналов и отмечены потенциальные проблемы. Информация включает:

  1. Описание системы и версия ядра.

  2. Сигналы и все подключенные выходные, ввода/вывода и входные контакты.

  3. Component_function, thread и addf-order каждого контакта.

  4. Выводы компонентов не в реальном времени, имеющие неупорядоченные функции.

  5. Идентификация неизвестных функций для необработанных компонентов.

  6. Сигналы без выхода.

  7. Сигналы без входов.

  8. Функции без addf.

  9. Теги предупреждений для компонентов, помеченных в документации как устаревшие.

  10. Настоящие имена для контактов, которые используют псевдонимы.

Отчет можно создать из командной строки и направить в выходной файл (или на стандартный вывод, если не указано имя выходного файла):

halreport Использование
Usage:
  halreport -h | --help (this help)
or
  halreport [outfilename]

Чтобы генерировать отчет для каждого запуска LinuxCNC, включите halreport и имя выходного файла в качестве записи [APPLICATIONS]APP в INI-файле.

halreport Пример
[APPLICATIONS]
APP = halreport /tmp/halreport.txt

Функция addf-ordering может быть важна для контуров сервопривода, где важна последовательность функций, вычисляемых в каждом периоде сервопривода. Обычно порядок такой:

  1. Считать входные контакты,

  2. выполнять функции обработчика команд движения и контроллера движения,

  3. выполнить расчеты ПИД и, наконец

  4. записать выходные контакты.

Для каждого сигнала на критическом пути порядок addf выходного контакта должен быть численно ниже, чем порядок addf критических входных контактов, к которым он подключен.

Для рутинных путей прохождения сигналов, которые обрабатывают входы переключателей, контакты не в реальном времени и т. д., порядок addf часто не имеет решающего значения. Более того, время изменения значений контактов не в реальном времени не может контролироваться или гарантироваться с интервалами, обычно используемыми для потоков HAL.

Пример выдержек из файла отчета, показывающий pid цикл для hostmot2 stepgen, работающего в режиме скорости на станке с trivkins и joint.0, соответствующим координате оси 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)

В приведенном выше примере HALFILE использует псевдонимы halcmd для упрощения имен контактов платы FPGA hostmot2 с помощью таких команд:

alias pin hm2_7i92.0.stepgen.00.position-fb h.00.position-fb
Note

Обнаружение сомнительной функции компонента может произойти для

  1. неподдерживаемых (устаревших) компонентов,

  2. созданных пользователем компонентов, которые используют несколько функций или нетрадиционные имена функций, или

  3. Компоненты, созданные не в реальном времени с помощью ГИП, у которых отсутствуют отличительные характеристики, такие как префикс, основанный на имени ГИП программы.

Сомнительные функции помечаются знаком вопроса "?".

Note
Контакты компонента, которые не могут быть связаны с известной функцией потока, сообщают о функции как "Unknown".

halreport генерирует отчет о соединениях (без типов контактов и текущих значений) для работающего приложения HAL, чтобы помочь в проектировании и проверке соединений. Это помогает понять, что является источником значения контакта. Используйте эту информацию с такими приложениями как «halshow, halmeter, halscope или командой halcmd show в терминале.