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 — это вольтметр для HAL. Он позволяет вам просмотреть вывод, сигнал или параметр и отображает текущее значение этого элемента. Его довольно просто использовать. Запустите его, набрав halmeter в оболочке X Windows. Halmeter — это приложение с графическим интерфейсом. Появится небольшое окно с двумя кнопками "Select" и "Exit". Выход легкий - он закрывает программу. Select открывает окно большего размера с тремя вкладками. На одной вкладке перечислены все контакты, определенные в настоящее время в HAL. На следующей вкладке перечислены все сигналы, а на последней вкладке перечислены все параметры. Щелкните вкладку, затем щелкните контакт/сигнал/параметр. Затем нажмите "OK". Списки исчезнут, а в небольшом окне отобразятся имя и значение выбранного элемента. Дисплей обновляется примерно 10 раз в секунду. Если вы нажмете "Accept" вместо "OK", в маленьком окне отобразятся имя и значение выбранного элемента, но большое окно останется на экране. Это удобно, если вы хотите быстро просмотреть несколько разных элементов.

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

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

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 (полное описание использования) можно запустить из командной строки, чтобы показать подробную информацию о выбранных компонентах, контактах, параметрах, сигналах, функциях и потоках работающего HAL. Вкладка WATCH обеспечивает непрерывное отображение выбранных контактов, параметров и элементов сигналов. В меню File имеются кнопки для сохранения элементов наблюдения в списке наблюдения и для загрузки существующего списка наблюдения. Элементы списка наблюдения также могут загружаться автоматически при запуске. Для использования командной строки:

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. Он позволяет фиксировать значение выводов, сигналов и параметров в зависимости от времени. Полные инструкции по эксплуатации со временем должны быть размещены здесь. А пока обратитесь к разделу [sec:tutorial-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. Контакт должен быть связан с потоком, поддерживающим плавающую точку. Для базового потока это может потребовать использования loadrt motmod ... base_thread_fp=1 .

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

8. Halreport

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

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

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

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

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

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

  6. Signals with no output.

  7. Signals with no inputs.

  8. Functions with no addf.

  9. Warning tags for components marked as deprecated/obsolete in docs.

  10. Real names for pins that use alias names.

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

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 в терминале.