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

1. Halcmd

halcmd — це інструмент командного рядка для роботи з HAL. Існує досить повна сторінка довідки для посилання:../man/man1/halcmd.1.html[halcmd], яка буде встановлена, якщо ви встановили LinuxCNC з вихідного коду або пакета. Сторінка довідки містить інформацію про використання:

man halcmd

Якщо ви скомпілювали LinuxCNC для "запуску на місці", вам потрібно знайти вихідний код скрипта rip-environment, щоб зробити сторінку довідника доступною:

cd toplevel_directory_for_rip_build
. scripts/rip-environment
man halcmd

У розділі HAL Tutorial наведено низку прикладів використання halcmd, і він є гарним навчальним посібником з halcmd.

2. Півметра

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.

Ви можете запустити кілька halmeter одночасно, якщо хочете відстежувати кілька елементів. Якщо ви хочете запустити halmeter, не займаючи вікно оболонки, введіть halmeter &, щоб запустити його у фоновому режимі. Ви також можете змусити halmeter негайно почати відображати певний елемент, додавши pin|sig|par[am] _<name>_ до командного рядка. Він відображатиме pin, signal або parameter <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.

Вікно вибору півметра
Figure 1. Вікно вибору півметра
Вікно годинника Halmeter
Figure 2. Вікно годинника Halmeter

3. Галшоу

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
Використання:
  halshow [Options] [watchfile]
  Опції:
           --help    (this help)
           --fformat format_string_for_float
           --iformat format_string_for_int

Примітки:
Створіть файл спостереження в halshow за допомогою: «Файл/Зберегти список спостереження».
Для автономного використання LinuxCNC має бути запущено.
Вкладка годинника Halshow
Figure 3. Вкладка годинника Halshow

Файл спостереження, створений за допомогою пункту меню «Файл/Зберегти список спостереження», має формат одного рядка з маркерами «pin+», «param+», «sig=+», за якими йде відповідна назва виводу, параметра або сигналу. Пари маркер-назва розділяються пробілом.

Приклад однорядкового файла спостереження
pin+joint.0.pos-hard-limit pin+joint.1.pos-hard-limit sig+estop-loop

Файл спостереження, створений за допомогою пункту меню «Файл/Зберегти список спостереження (багаторядковий)», форматується окремими рядками для кожного елемента, ідентифікованого парами токен-імена, як описано вище.

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

Під час завантаження файлу спостереження за допомогою пункту меню «Файл/Завантажити список спостереження» пари «імена токенів» можуть відображатися як один або кілька рядків. Пусті рядки та рядки, що починаються з символу #, ігноруються.

4. Галскоп

Halscope — це «осцилограф» для HAL. Він дозволяє фіксувати значення виводів, сигналів і параметрів як функцію часу. Повна інструкція з експлуатації буде розміщена тут пізніше. Наразі дивіться розділ Halscope у розділі підручника, де пояснюються основні принципи роботи.

У меню «Файл» програми halscope є кнопки для збереження конфігурації або відкриття попередньо збереженої конфігурації. Після завершення роботи програми halscope остання конфігурація зберігається у файлі з назвою autosave.halscope.

Файли конфігурації також можна вказати під час запуску halscope з командного рядка. Використання довідки з командного рядка (-h):

halscope -h
Використання:
  halscope [-h] [-i infile] [-o outfile] [num_samples]

5. Пін-код SIM-карти

sim_pin — це утиліта командного рядка для відображення та оновлення будь-якої кількості записуваних виводів, параметрів або сигналів.

Використання sim_pin
Використання:
        sim_pin [Options] name1 [name2 ...] &

Опції:
        --help                (this text)
        --title title_string  (window title, default: sim_pin)

Примітка:  LinuxCNC (або автономна програма HAL) повинна бути запущена.
        Іменований елемент може вказувати на контакт, параметр або сигнал.
        Елемент повинен бути доступним для запису, наприклад:
          контакт:    IN або I/O (і не підключений до сигналу з записуючим пристроєм)
          параметр:  RW
          сигнал: підключений до контакту, доступного для запису.

        Підтримуються елементи HAL типу bit, s32, u32, float.

        Коли вказано бітовий елемент, створюється кнопка
        для управління елементом одним із трьох способів, вказаних
        радіо-кнопками:
            toggle: перемикання значення при натисканні кнопки
            pulse:  імпульс елемента до 1 один раз при натисканні кнопки
            hold:   установка на 1 під час натискання кнопки
        Режим бітової кнопки можна вказати в командному
        рядку, відформатувавши ім'я елемента:
            namei/mode=[toggle | pulse | hold]
        Якщо режим починається з великої літери, перемикачі
        для вибору інших режимів не відображаються

Для отримання повної інформації див. сторінку довідки:

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 це простий графічний інтерфейс для імітації активації штифта motion.probe-input. Використання:

simulate_probe &
Вікно simulate_probe
Figure 5. Вікно simulate_probe

7. Гістограма HAL

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

Використання:
   hal-histogram --help | -?
or
   hal-histogram [Options] [pinname]
Table 1. Опції:
Варіант Значення Опис

--minvalue

мінімальне значення

мінімальний контейнер, за замовчуванням: 0

--binsize

binsize

розмір бінша, за замовчуванням: 100

--nbins

nbins

кількість контейнерів, за замовчуванням: 50

--logscale

0/1

логарифмічна шкала осі Y, за замовчуванням: 1

--text

примітка

текстовий дисплей, за замовчуванням: ""

--show

показувати кількість невідображених nbin, за замовчуванням вимкнено

--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-гістограми
Figure 6. Вікно hal-гістограми

8. Halreport

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

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

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

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

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

  5. Ідентифікація невідомих функцій для необроблених компонентів.

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

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

  8. Функції без додавання.

  9. Теги попередження для компонентів, позначених як застарілі/нерекомендовані в документації.

  10. Справжні імена для пінів, що використовують псевдоніми.

Звіт можна згенерувати з командного рядка та спрямувати до вихідного файлу (або stdout, якщо не вказано ім’я вихідного файлу):

Використання halreport
Використання:
  halreport -h | --help (this help)
or
  halreport [outfilename]

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

Приклад halreport
[APPLICATIONS]
APP = halreport /tmp/halreport.txt

Впорядкування функцій addf може бути важливим для сервоциклів, де важлива послідовність функцій, обчислених у кожному сервоперіоді. Зазвичай порядок такий:

  1. Зчитування вхідних контактів,

  2. виконувати функції обробника команд руху та контролера руху,

  3. виконати обчислення pid, і нарешті

  4. запис вихідних контактів.

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

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

Приклад уривків файлу звіту, що показують цикл pid для stepgen hostmot2, що працює в режимі швидкості на машині 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. Компоненти, створені за допомогою графічного інтерфейсу користувача (GUI), які не працюють у реальному часі та не мають відмінних характеристик, таких як префікс на основі назви програми з графічним інтерфейсом користувача.

Сумнівні функції позначаються знаком питання "?".

Note
Виводи компонента, які неможливо пов’язати з відомою функцією різьби, повідомляють про функцію як "Невідомо".

halreport генерує звіт про з’єднання (без типів контактів і поточних значень) для запущеної програми HAL, щоб допомогти в проектуванні та перевірці з’єднань. Це допомагає зрозуміти, звідки береться значення контакту. Використовуйте цю інформацію з такими програмами, як halshow, halmeter, halscope або командою halcmd show у терміналі.