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 — це «вольтметр» для HAL. Він дозволяє переглянути контакт, сигнал або параметр і відображає поточне значення цього елемента. Він досить простий у використанні. Запустіть його, ввівши halmeter у командному рядку X Windows. Halmeter — це програма з графічним інтерфейсом. Вона відкриє невелике вікно з двома кнопками «Select» (Вибрати) та «Exit» (Вийти). Вийти легко — програма закриється. Вибрати відкриває більше вікно з трьома вкладками. Одна вкладка містить список усіх контактів, які наразі визначені в HAL. Наступна вкладка містить список усіх сигналів, а остання вкладка — список усіх параметрів. Клацніть на вкладку, а потім на контакт/сигнал/параметр. Потім клацніть «OK». Списки зникнуть, а у маленькому вікні з’явиться назва та значення вибраного елемента. Дисплей оновлюється приблизно 10 разів на секунду. Якщо натиснути «Прийняти» замість «OK», у маленькому вікні з’явиться назва та значення вибраного елемента, але велике вікно залишиться на екрані. Це зручно, якщо ви хочете швидко переглянути кілька різних елементів.

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

Зверніться до розділу Посібник з Halmeter для отримання додаткової інформації.

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 (повний опис використання) можна запустити з командного рядка, щоб відобразити детальну інформацію про вибрані компоненти, контакти, параметри, сигнали, функції та потоки працюючого HAL. Вкладка WATCH забезпечує безперервне відображення вибраних контактів, параметрів та сигналів. Меню «Файл» містить кнопки для збереження елементів спостереження у списку спостереження та завантаження існуючого списку спостереження. Елементи списку спостереження також можна завантажувати автоматично під час запуску. Для використання командного рядка:

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. Вивід має бути пов’язаний з потоком, що підтримує обчислення з плаваючою комою. Для базового потоку може знадобитися використання loadrt motmod ... base_thread_fp=1.

Вікно 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 у терміналі.