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.
3. Галшоу
halshow (повний опис використання) можна запустити з командного рядка, щоб відобразити детальну інформацію про вибрані компоненти, контакти, параметри, сигнали, функції та потоки працюючого HAL. Вкладка WATCH забезпечує безперервне відображення вибраних контактів, параметрів та сигналів. Меню «Файл» містить кнопки для збереження елементів спостереження у списку спостереження та завантаження існуючого списку спостереження. Елементи списку спостереження також можна завантажувати автоматично під час запуску. Для використання командного рядка:
halshow --help
Використання:
halshow [Options] [watchfile]
Опції:
--help (this help)
--fformat format_string_for_float
--iformat format_string_for_int
Примітки:
Створіть файл спостереження в halshow за допомогою: «Файл/Зберегти список спостереження».
Для автономного використання LinuxCNC має бути запущено.
Файл спостереження, створений за допомогою пункту меню «Файл/Зберегти список спостереження», має формат одного рядка з маркерами «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 [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
halcmd loadrt mux2 names=example; halcmd net sig_example example.in0
sim_pin example.sel example.in1 sig_example &
6. Моделювання зонда
simulate_probe це простий графічний інтерфейс для імітації активації штифта motion.probe-input. Використання:
simulate_probe &
7. Гістограма HAL
hal-histogram — це утиліта командного рядка для відображення гістограм для виводів HAL.
hal-histogram --help | -?
or
hal-histogram [Options] [pinname]
| Варіант | Значення | Опис |
|---|---|---|
--minvalue |
мінімальне значення |
мінімальний контейнер, за замовчуванням: 0 |
--binsize |
binsize |
розмір бінша, за замовчуванням: 100 |
--nbins |
nbins |
кількість контейнерів, за замовчуванням: 50 |
--logscale |
0/1 |
логарифмічна шкала осі Y, за замовчуванням: 1 |
--text |
примітка |
текстовий дисплей, за замовчуванням: "" |
--show |
показувати кількість невідображених nbin, за замовчуванням вимкнено |
|
--verbose |
прогрес і налагодження, за замовчуванням вимкнено |
-
LinuxCNC (або інша програма HAL) має бути запущено.
-
Якщо ім’я контакту не вказано, значення за замовчуванням:
motion-command-handler.time. -
Цей додаток можна відкрити за 5 позначок.
-
Підтримуються типи розпізнавальних елементів: float, s32, u32, bit.
-
Вивід має бути пов’язаний з потоком, що підтримує обчислення з плаваючою комою. Для базового потоку може знадобитися використання
loadrt motmod ... base_thread_fp=1.
8. Halreport
halreport — це утиліта командного рядка, яка створює звіт про підключення HAL для запущеної програми LinuxCNC (або іншої програми HAL). У звіті відображаються всі підключення сигналів і потенційні проблеми. Включена інформація:
-
Опис системи та версія ядра.
-
Сигнали та всі підключені вихідні, вхідні та контакти.
-
Component_function, thread та addf-order кожного виводу.
-
Виводи компонентів, що не працюють у реальному часі, з невпорядкованими функціями.
-
Ідентифікація невідомих функцій для необроблених компонентів.
-
Сигнали без виходу.
-
Сигнали без вхідних даних.
-
Функції без додавання.
-
Теги попередження для компонентів, позначених як застарілі/нерекомендовані в документації.
-
Справжні імена для пінів, що використовують псевдоніми.
Звіт можна згенерувати з командного рядка та спрямувати до вихідного файлу (або stdout, якщо не вказано ім’я вихідного файлу):
Використання:
halreport -h | --help (this help)
or
halreport [outfilename]
Щоб створити звіт для кожного запуску LinuxCNC, додайте halreport та назву вихідного файлу як запис [APPLICATIONS]APP до INI-файлу.
[APPLICATIONS] APP = halreport /tmp/halreport.txt
Впорядкування функцій addf може бути важливим для сервоциклів, де важлива послідовність функцій, обчислених у кожному сервоперіоді. Зазвичай порядок такий:
-
Зчитування вхідних контактів,
-
виконувати функції обробника команд руху та контролера руху,
-
виконати обчислення pid, і нарешті
-
запис вихідних контактів.
Для кожного сигналу в критичному шляху порядок 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
|
Можливе виявлення сумнівних функцій компонентів для
Сумнівні функції позначаються знаком питання "?". |
|
Note
|
Виводи компонента, які неможливо пов’язати з відомою функцією різьби, повідомляють про функцію як "Невідомо". |
halreport генерує звіт про з’єднання (без типів контактів і поточних значень) для запущеної програми HAL, щоб допомогти в проектуванні та перевірці з’єднань. Це допомагає зрозуміти, звідки береться значення контакту. Використовуйте цю інформацію з такими програмами, як halshow, halmeter, halscope або командою halcmd show у терміналі.