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.

Example 1. Приклад для з’єднань MDI_COMMAND
HAL-файл
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) - вказує на поточний вибраний інструмент