1. Вступ
Halui — це інтерфейс користувача на основі HAL для LinuxCNC, який з’єднує контакти HAL із командами NML. Більшість функцій (кнопки, індикатори тощо), що надаються традиційним графічним інтерфейсом користувача (AXIS, GMOCCAPY, QtDragon тощо), у Halui забезпечуються контактами HAL.
Найпростіший спосіб додати halui – це додати наступний код до розділу [HAL] INI-файлу:
[HAL] HALUI = halui
Альтернативний спосіб його виклику (особливо якщо ви генеруєте конфігурацію за допомогою StepConf) – це включити наступне у ваш файл custom.hal.
Переконайтеся, що ви використовуєте правильний шлях до вашого INI-файлу.
loadusr halui -ini /path/to/inifile.ini
2. MDI
Іноді користувач хоче додати складніші завдання, які будуть виконуватися активацією виводу HAL. Це можливо шляхом додавання команд MDI до INI-файлу в розділі [HALUI]. Приклад:
[HALUI] MDI_COMMAND = G0 X0 MDI_COMMAND = G0 G53 Z0 MDI_COMMAND = G28 MDI_COMMAND = o<mysub>call ...
Коли halui запускається, він зчитує поля MDI_COMMAND в INI і експортує контакти від 00 до кількості MDI_COMMAND, знайдених в INI, максимум до 64 команд. Ці контакти можна підключати як будь-які контакти HAL. Поширеним методом є використання кнопок, що надаються віртуальними панелями керування, як показано в прикладі Приклад підключень MDI_COMMAND.
net quill-up halui.mdi-command-00 <= pyvcp.quillup net reference-pos halui.mdi-command-01 <= pyvcp.referencepos net call-mysub halui.mdi-command-02 <= pyvcp.callmysub
halui.mdi-command-NN, надані halui.$ halcmd show pin halui.mdi Виводи компонентів: Owner Type Dir Value Name 10 bit IN FALSE halui.mdi-command-00 <== quill-up 10 bit IN FALSE halui.mdi-command-01 <== reference-pos 10 bit IN FALSE halui.mdi-command-02 <== call-mysub ...
Коли контакт halui MDI встановлений (імпульсний) у стан «істина», halui надсилає команду MDI, визначену в INI. Це не завжди буде успішним, залежно від поточного режиму роботи (наприклад, у режимі AUTO halui не може успішно надсилати команди MDI).
3. Приклад конфігурації
Приклад конфігурації sim (configs/sim/axis/halui_pyvcp/halui.ini) включено до дистрибутиву.
4. Довідка про піни Halui
Усі піни halui також задокументовані на сторінці довідки halui:
$ man halui
4.1. Перервати
-
halui.abort (bit, in) - PIN-код для надсилання повідомлення про переривання (виправляє більшість помилок)
4.2. E-Стій
-
halui.estop.activate (bit, in) - PIN-код для запиту аварійної зупинки
-
halui.estop.is-activated (bit, out) - вказує на скидання аварійної зупинки
-
halui.estop.reset (bit, in) - PIN-код для запиту скидання аварійної зупинки
4.3. Перевизначення каналу
-
halui.feed-override.count-enable (bit, in) - має бути істинним, щоб «підрахунки» або «пряме значення» працювали.
-
halui.feed-override.counts (s32, in) - кількість * шкала = відсоток FO. Можна використовувати з енкодером або «прямим значенням».
-
halui.feed-override.decrease (bit, in) - штифт для зменшення FO (-=масштаб)
-
halui.feed-override.increase (bit, in) - штифт для збільшення FO (+=масштаб)
-
halui.feed-override.reset (bit, in) - контакт для скидання оптоволоконного виводу (масштаб=1.0)
-
halui.feed-override.direct-value (bit, in) - false під час використання енкодера для зміни лічильників, true під час безпосереднього встановлення лічильників.
-
halui.feed-override.scale (float, in) - штифт для налаштування шкали збільшення та зменшення «корекції подачі».
-
halui.feed-override.value (float, out) - поточне значення FO
4.4. Туман
-
halui.mist.is-on (bit, out) - вказує на туман
-
halui.mist.off (bit, in) - шпилька для запиту на вимкнення туману
-
halui.mist.on (bit, in) - шпилька для запиту на туман
4.5. Повінь
-
halui.flood.is-on (bit, out) - вказує на початок повені
-
halui.flood.off (bit, in) - PIN-код для запиту на відключення флуду
-
halui.flood.on (bit, in) - PIN-код для запиту на флуд
4.6. Самонаведення
-
halui.home-all (bit, in) - PIN-код для запиту переведення всіх осей у початкове положення. Цей PIN-код буде присутній лише тоді, коли у файлі INI встановлено HOME_SEQUENCE.
4.7. Машина
-
halui.machine.units-per-mm (float out) - штифт для машинних одиниць вимірювання на мм (дюйм:1/25,4, мм:1) відповідно до налаштування inifile: [TRAJ]LINEAR_UNITS
-
halui.machine.is-on (bit, out) - вказує на увімкнення машини
-
halui.machine.off (bit, in) - PIN-код для запиту на вимкнення машини
-
halui.machine.on (bit, in) - PIN-код для запиту на ввімкнення машини
4.8. Максимальна швидкість
Максимальну лінійну швидкість можна налаштувати від 0 до MAX_VELOCITY, встановленого в розділі [TRAJ] INI-файлу.
-
halui.max-velocity.count-enable (bit, in) - має бути істинним, щоб «підрахунки» або «пряме значення» працювали.
-
halui.max-velocity.counts (s32, in) - counts * шкала = відсоток MV. Може використовуватися з енкодером або «прямим значенням».
-
halui.max-velocity.direct-value (bit, in) - false під час використання енкодера для зміни лічильників, true під час безпосереднього встановлення лічильників.
-
halui.max-velocity.decrease (bit, in) - штифт для зменшення максимальної швидкості
-
halui.max-velocity.increase (bit, in) - штифт для збільшення максимальної швидкості
-
halui.max-velocity.scale (float, in) - величина, що застосовується до поточної максимальної швидкості з кожним переходом від вимкненого до ввімкненого положення штифта збільшення або зменшення в машинних одиницях за секунду.
-
halui.max-velocity.value (float, out) - — максимальна лінійна швидкість у машинних одиницях за секунду.
4.9. MDI
-
halui.mdi-command-<nn> (біт, вхід) - halui спробує надіслати команду MDI, визначену в INI. <nn> - це двозначне число, що починається з 00.
Якщо команда виконана успішно, LinuxCNC перейде в режим MDI, а потім повернеться в ручний режим.
Якщо в файлі ini не встановлено змінних [HALUI]MDI_COMMAND, halui не експортуватиме контакти halui.mdi-command-<nn>. -
halui.halui-mdi-is-running (bit, out) - Стан виконання команд MDI, надісланих halui. Стан активний навіть під час перемикання режимів. Якщо в ini-файлі не встановлено змінні [HALUI]MDI_COMMAND, halui не експортуватиме ці виводи.
4.10. Суглоб
N = joint number (0 … num_joints-1)
Приклад:
-
halui.joint.N.select (bit in) - штифт для вибору з’єднання N
-
halui.joint.N.is-selected (bit out) - PIN-код стану, на якому вибрано суглоб N
-
halui.joint.N.has-fault (bit out) - контактний індикатор стану, що вказує на несправність з’єднання N
-
halui.joint.N.home (bit in) - штифт для опорного шарніра N
-
halui.joint.N.is-homed (bit out) - PIN-код стану, що вказує на те, що шарнір N знаходиться вдома
-
halui.joint.N.on-hard-max-limit (bit out) - контакт стану, що вказує, що з’єднання N знаходиться на позитивній апаратній межі
-
halui.joint.N.on-hard-min-limit (bit out) - контакт стану, що вказує, що з’єднання N знаходиться на негативній апаратній межі
-
halui.joint.N.on-soft-max-limit (bit out) - контакт стану, що вказує, що з’єднання N знаходиться на додатній програмній межі
-
halui.joint.N.on-soft-min-limit (bit out) - контакт стану, що вказує, що шарнір N знаходиться на негативній програмній межі
-
halui.joint.N.override-limits (bit out) - PIN-код стану, що вказує на тимчасове перевизначення обмежень суглоба N
-
halui.joint.N.unhome (bit in) - штифт для з’єднання з від’єднанням N
-
halui.joint.selected (u32 out) - вибраний номер суглоба (0 … кількість_суглобів-1)
-
halui.joint.selected.has-fault (bit out) - Вибраний з’єднання має пошкодження
-
halui.joint.selected.home (bit in) - штифт для наведення вибраного з’єднання в початкове положення
-
halui.joint.selected.is-homed (bit out) - PIN-код стану, що вказує на те, що вибране з’єднання перебуває в головному положенні
-
halui.joint.selected.on-hard-max-limit (bit out) - контактний індикатор стану, який вказує, що вибране з’єднання знаходиться на позитивній апаратній межі
-
halui.joint.selected.on-hard-min-limit (bit out) - контактний індикатор стану, який вказує, що вибраний з’єднання знаходиться на негативній межі обладнання
-
halui.joint.selected.on-soft-max-limit (bit out) - контактний індикатор стану, який вказує, що вибраний шарнір знаходиться на додатній програмній межі
-
halui.joint.selected.on-soft-min-limit (bit out) - контактний індикатор стану, який вказує, що вибраний шарнір знаходиться на негативній програмній межі
-
halui.joint.selected.override-limits (bit out) - PIN-код стану, що вказує на тимчасове перевизначення обмежень вибраного суглоба
-
halui.joint.selected.unhome (bit in) - штифт для зняття з початкового положення вибраного з’єднання
4.11. Суглобовий біг
N = номер суглоба (0 … кількість_суглобів-1)
-
halui.joint.jog-deadband (float in) - контакт для налаштування зони нечутливості аналогового режиму поштовху (аналогові входи поштовху, менші/повільніші за цю зону - за абсолютним значенням - ігноруються)
-
halui.joint.jog-speed (float in) - штифт для налаштування швидкості штовхання для плюс/мінус штовхання.
-
halui.joint.N.analog (float in) - штифт для штовхання шарніра N за допомогою значення з плаваючою комою (наприклад, джойстика). Значення, яке зазвичай встановлюється між 0,0 та ±1,0, використовується як множник швидкості штовхання.
-
halui.joint.N.increment (float in) - штифт для встановлення кроку поперечного переміщення для з’єднання N при використанні кроку плюс/мінус
-
halui.joint.N.increment-minus (bit in) - Наростаючий фронт змусить з’єднання N зміщуватися в негативному напрямку на величину приросту
-
halui.joint.N.increment-plus (bit in) - Наростаючий фронт змусить з’єднання N рухатися в позитивному напрямку на величину приросту
-
halui.joint.N.minus (bit in) - штифт для штовхаючого з’єднання N у негативному напрямку зі швидкістю halui.joint.jog-speed
-
halui.joint.N.plus (bit in) - штифт для штовхаючого з’єднання N у позитивному напрямку зі швидкістю halui.joint.jog-speed
-
halui.joint.selected.increment (float in) - штифт для встановлення кроку поперечного переміщення для вибраного з’єднання при використанні приросту плюс/мінус
-
halui.joint.selected.increment-minus (bit in) - Наростаючий фронт призведе до зміщення вибраного з’єднання у негативному напрямку на величину приросту
-
halui.joint.selected.increment-plus (bit in) - Наростаючий фронт призведе до того, що вибраний з’єднання зміститься в позитивному напрямку на величину приросту
-
halui.joint.selected.minus (bit in) - штифт для штурхового переміщення вибраного з’єднання у негативному напрямку зі швидкістю halui.joint.jog-speed
-
halui.joint.selected.plus (bit in) - штифт для штовхання вибраного з’єднання в позитивному напрямку зі швидкістю halui.joint.jog-speed
4.12. Вісь
L = axis letter (xyzabcuvw)
-
halui.axis.L.select (bit) - штифт для вибору осі за літерою
-
halui.axis.L.is-selected (bit out) - контакт стану, на якому вибрано вісь L
-
halui.axis.L.pos-commanded (float out) - Задане положення осі в координатах машини
-
halui.axis.L.pos-feedback float out) - Положення осі зворотного зв’язку в координатах машини
-
halui.axis.L.pos-relative (float out) - Положення осі зворотного зв’язку у відносних координатах
4.13. Біг по осі
L = axis letter (xyzabcuvw)
-
halui.axis.jog-deadband (float in) - контакт для налаштування зони нечутливості аналогового режиму поштовху (аналогові входи поштовху, менші/повільніші за цю зону (за абсолютним значенням), ігноруються)
-
halui.axis.jog-speed (float in) - штифт для налаштування швидкості штовхання для плюс/мінус штовхання.
-
halui.axis.L.analog (float in) - штифт для штовхання осі L за допомогою значення з плаваючою комою (наприклад, джойстика). Значення, яке зазвичай встановлюється між 0,0 та ±1,0, використовується як множник швидкості штовхання.
-
halui.axis.L.increment (float in) - штифт для встановлення приросту поштовху для осі L при використанні приросту плюс/мінус
-
halui.axis.L.increment-minus (bit in) - Наростаючий фронт змусить вісь L рухатися в негативному напрямку на величину приросту
-
halui.axis.L.increment-plus (bit in) - Наростаючий фронт змусить вісь L рухатися в позитивному напрямку на величину приросту
-
halui.axis.L.minus (bit in) - штифт для осі штовхання L у негативному напрямку зі швидкістю halui.axis.jog-speed
-
halui.axis.L.plus (bit in) - штифт для осі штовхання L у позитивному напрямку зі швидкістю halui.axis.jog-speed
-
halui.axis.selected (u32 out) - вибрана вісь (за індексом: 0:x 1:y 2:z 3:a 4:b 5:cr 6:u 7:v 8:w)
-
halui.axis.selected.increment (float in) - штифт для встановлення приросту подачі для вибраної осі при використанні приросту плюс/мінус
-
halui.axis.selected.increment-minus (bit in) - Наростаючий фронт змусить вибрану вісь рухатися в негативному напрямку на величину приросту
-
halui.axis.selected.increment-plus (bit in) - Наростаючий фронт змусить вибрану вісь рухатися в позитивному напрямку на величину приросту
-
halui.axis.selected.minus (bit in) - штифт для штовхання вибраної осі в негативному напрямку зі швидкістю halui.axis.jog-speed
-
halui.axis.selected.plus (pin in) - для штовхання вибраного осьового біта в позитивному напрямку зі швидкістю halui.axis.jog-speed
4.14. Режим
-
halui.mode.auto (bit, in) - PIN-код для запиту автоматичного режиму
-
halui.mode.is-auto (bit, out) - вказує на те, що автоматичний режим увімкнено
-
halui.mode.is-joint (bit, out) - вказує на те, що ввімкнено режим поштовхового переміщення з’єднання за з’єднанням
-
halui.mode.is-manual (bit, out) - вказує на те, що ручний режим увімкнено
-
halui.mode.is-mdi (bit, out) - вказує на те, що режим MDI увімкнено
-
halui.mode.is-teleop (bit, out) - вказує на те, що увімкнено режим скоординованого поштовху
-
halui.mode.joint (bit, in) - контакт для запиту режиму поштовху з’єднання за з’єднанням
-
halui.mode.manual (bit, in) - PIN-код для виклику ручного режиму
-
halui.mode.mdi (bit, in) - PIN-код для запиту режиму MDI
-
halui.mode.teleop (bit, in) - контакт для запиту скоординованого режиму поштовху
4.15. Програма
-
halui.program.block-delete.is-on (bit, out) - PIN-код стану, що вказує на те, що видалення блоку ввімкнено
-
halui.program.block-delete.off (bit, in) - PIN-код для запиту на видалення блоку вимкнено
-
halui.program.block-delete.on (bit, in) - PIN-код для запиту на видалення блоку ввімкнено
-
halui.program.is-idle (bit, out) - PIN-код стану, що вказує на те, що жодна програма не запущена
-
halui.program.is-paused (bit, out) - PIN-код стану, що вказує на те, що програма призупинена
-
halui.program.is-running (bit, out) - PIN-код стану, що вказує на те, що програма запущена
-
halui.program.optional-stop.is-on (bit, out) - PIN-код стану, що вказує на увімкнення додаткової зупинки
-
halui.program.optional-stop.off (bit, in) - шпилька із запитом на вимкнення додаткової зупинки
-
halui.program.optional-stop.on (bit, in) - шпилька із запитом на включення додаткової зупинки
-
halui.program.pause (bit, in) - PIN-код для призупинення програми
-
halui.program.resume (bit, in) - PIN-код для відновлення призупиненої програми
-
halui.program.run (bit, in) - PIN-код для запуску програми
-
halui.program.step (bit, in) - PIN-код для поетапного входу в програму
-
halui.program.stop (bit, in) - PIN-код для зупинки програми
4.16. Швидке перевизначення
-
halui.rapid-override.count-enable (bit in (за замовчуванням: TRUE)) - Якщо значення TRUE, змінювати швидке перевизначення при зміні підрахунку.
-
halui.rapid-override.counts (s32 in) - counts X scale = Відсоток швидкого перевизначення. Може використовуватися з енкодером або «прямим значенням».
-
halui.rapid-override.decrease (bit in) - штифт для зменшення швидкого керування (-=масштаб)
-
halui.rapid-override.direct-value (bit in) - контакт для активації входу швидкого керування прямим значенням
-
halui.rapid-override.increase (bit in) - штифт для збільшення швидкого керування (+=масштаб)
-
halui.rapid-override.scale (float in) - штифт для налаштування шкали при зміні швидкого керування
-
halui.rapid-override.value (float out) - поточне значення швидкого перемикання
-
halui.rapid-override.reset (bit, in) - контакт для скидання значення швидкого керування (масштаб=1.0)
4.17. Корекції шпинделя
-
halui.spindle.N.override.count-enable (bit, in) - має бути істинним, щоб «підрахунки» або «пряме значення» працювали.
-
halui.spindle.N.override.counts (s32, in) - counts * scale = SO відсоток. Може використовуватися з енкодером або «прямим значенням».
-
halui.spindle.N.override.decrease (bit, in) - штифт для зменшення SO (-=масштаб)
-
halui.spindle.N.override.direct-value (bit, in) - false під час використання енкодера для зміни лічильників, true під час безпосереднього встановлення лічильників.
-
halui.spindle.N.override.increase (bit, in) - штифт для збільшення SO (+=масштаб)
-
halui.spindle.N.override.scale (float, in) - штифт для налаштування шкали при зміні SO
-
halui.spindle.N.override.value (float, out) - поточне значення SO
-
halui.spindle.N.override.reset (bit, in) - контакт для скидання значення SO (масштаб=1.0)
4.18. Шпиндель
-
halui.spindle.N.brake-is-on (bit, out) - вказує на те, що гальмо увімкнено
-
halui.spindle.N.brake-off (bit, in) - штифт для деактивації шпинделя/гальма
-
halui.spindle.N.brake-on (bit, in) - штифт для активації гальма шпинделя
-
halui.spindle.N.decrease (bit, in) - зменшує швидкість шпинделя
-
halui.spindle.N.forward (bit, in) - запускає шпиндель рухом за годинниковою стрілкою
-
halui.spindle.N.increase (bit, in)- збільшує швидкість шпинделя
-
halui.spindle.N.is-on (bit, out) - вказує на те, що шпиндель увімкнено (в будь-якому напрямку)
-
halui.spindle.N.reverse (bit, in)- запускає шпиндель рухом проти годинникової стрілки
-
halui.spindle.N.runs-backward (bit, out) - вказує на те, що шпиндель увімкнено, і обертається у зворотному напрямку
-
halui.spindle.N.runs-forward (bit, out) - вказує на те, що шпиндель увімкнено та обертається вперед
-
halui.spindle.N.start (bit, in) - запускає шпиндель
-
halui.spindle.N.stop (bit, in) - зупиняє шпиндель
4.19. Інструмент
-
halui.tool.length-offset.a (float out) - поточне застосоване зміщення довжини інструмента для осі A
-
halui.tool.length-offset.b (float out) - поточне застосоване зміщення довжини інструмента для осі B
-
halui.tool.length-offset.c (float out) - поточне застосоване зміщення довжини інструмента для осі C
-
halui.tool.length-offset.u (float out) - поточне застосоване зміщення довжини інструменту для осі U
-
halui.tool.length-offset.v (float out) - поточне застосоване зміщення довжини інструмента для осі V
-
halui.tool.length-offset.w (float out) - поточне застосоване зміщення довжини інструмента для осі W
-
halui.tool.length-offset.x (float out) - поточне застосоване зміщення довжини інструмента для осі X
-
halui.tool.length-offset.y (float out) - поточне застосоване зміщення довжини інструмента для осі Y
-
halui.tool.length-offset.z (float out) - поточне застосоване зміщення довжини інструмента для осі Z
-
halui.tool.diameter (float out) - Поточний діаметр інструмента або 0, якщо інструмент не завантажено.
-
halui.tool.number (u32, out) - вказує на поточний вибраний інструмент