Щоб будь-які приклади 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 буде увімкнений, і це запустить програму.

Приклад дистанційного запуску
Figure 1. Приклад дистанційного запуску

Команди 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» також можна отримати за допомогою моностабільного таймера.