Щоб будь-які приклади Halui працювали, вам потрібно додати наступний рядок до розділу [HAL] INI-файлу.
HALUI = halui
1. Дистанційний запуск
Щоб підключити кнопку віддаленого запуску програми до LinuxCNC, використовуйте контакти halui.program.run та halui.mode.auto. Спочатку необхідно переконатися, що запуск можливий, використовуючи контакт halui.mode.is-auto. Це можна зробити за допомогою компонента and2. На наступному малюнку показано, як це робиться. Коли натискається кнопка віддаленого запуску, вона підключається як до halui.mode.auto, так і до and2.0.in0. Якщо автоматичний режим є прийнятним, контакт halui.mode.is-auto буде увімкнений. Якщо обидва входи компонента and2.0 увімкнені, and2.0.out буде увімкнений, і це запустить програму.
Команди hal, необхідні для виконання вищезазначеного:
net program-start-btn halui.mode.auto and2.0.in0 <= <your input pin> net program-run-ok and2.0.in1 <= halui.mode.is-auto net remote-program-run halui.program.run <= and2.0.out
Зверніть увагу, що в першому рядку є два контакти зчитувача, це також можна розділити на два рядки ось так:
net program-start-btn halui.mode.auto <= <your input pin> net program-start-btn and2.0.in0
2. Пауза та відновлення
Цей приклад було розроблено, щоб дозволити LinuxCNC переміщувати обертову вісь за сигналом від зовнішнього верстата. Координацію між двома системами забезпечуватимуть два компоненти Halui:
-
halui.program.is-paused -
halui.program.resume
У вашому налаштованому HAL-файлі додайте наступні два рядки, які будуть підключені до вашого вводу/виводу, щоб увімкнути паузу програми або відновити її, коли зовнішня система захоче продовжити роботу LinuxCNC.
net ispaused halui.program.is paused => "your output pin" net resume halui.program.resume <= "your input pin"
Ваші вхідні та вихідні контакти підключені до контактів, підключених до іншого контролера. Це можуть бути контакти паралельного порту або будь-які інші контакти вводу/виводу, до яких у вас є доступ.
Ця система працює наступним чином. Коли в G-коді зустрічається M0, сигнал halui.program.is-paused стає істинним. Це вмикає вихідний контакт, щоб зовнішній контролер знав, що LinuxCNC призупинено.
Щоб відновити виконання G-коду програми LinuxCNC, зовнішній контролер, коли буде готовий, зробить свій вивід true. Це сигналізуватиме LinuxCNC про те, що слід відновити виконання G-коду.
Труднощі з визначенням часу
-
Вхідний сигнал повернення "відновлення" не повинен бути довшим за час, необхідний для повторного запуску G-коду.
-
Вихід "призупинено" не повинен бути активним до моменту закінчення сигналу "відновити".
Цих проблем з синхронізацією можна уникнути, використовуючи ClassicLadder для активації виходу «is-paused» за допомогою моностабільного таймера, щоб подати один вузький вихідний імпульс. Імпульс «resume» також можна отримати за допомогою моностабільного таймера.