LinuxCNC обзор принципа работы и интерфейсов.

LinuxCNC представляет собой комплекс настроек и программ для управления оборудованием с числовым программным управлением (ЧПУ), включая 3D-принтеры, роботов, лазерные и плазменные резаки, а также другие автоматизированные устройства.
1. Принципы работы LinuxCNC
LinuxCNC позволяет точно контролировать до девяти осей движения, объединяя несколько компонентов в единую целостную систему:
- Графический интерфейс пользователя (GUI), который выполняет роль основного инструмента взаимодействия между оператором, программным обеспечением и ЧПУ.
- Аппаратный абстракционный слой (HAL), связывающий внутренние сигналы LinuxCNC с внешними устройствами и датчиками.
- Высокоуровневые контроллеры для создания и выполнения движений, такие как EMCMOT (контроллер движения), EMCIO (контроллер ввода/вывода) и EMCTASK (исполнитель задач).
На схеме ниже представлена структура типичного 3-осевого ЧПУ-станка с шаговыми двигателями:

Компьютер с LinuxCNC отправляет импульсы через параллельный порт на шаговые приводы, каждый из которых управляет отдельным шаговым двигателем. Управление двигателем осуществляется с помощью двух сигналов: один регулирует направление вращения, а другой — скорость.
Система шаговых двигателей на параллельном порту может быть дополнена более специализированными аппаратными интерфейсами, что позволяет повысить скорость работы и расширить возможности ввода-вывода.
Обычно пользователи создают конфигурации для своего оборудования с ЧПУ, используя Stepconf (для параллельного порта) или Mesa Wizard (для более продвинутых настроек с использованием карты Mesa Anything I/O PCI). После настройки создаются специальные конфигурационные папки, позволяющие запускать LinuxCNC с нужной конфигурацией.
Например, если используется Stepconf для 3-осевого фрезерного станка с ЧПУ, мастером создается структура с папкой и файлами для конкретной конфигурации:
- Папка: My_CNC
- My_CNC.ini
- Файл INI, содержащий параметры работы станка, такие как шаги для полного оборота двигателя, максимальная скорость, пределы перемещения и параметры концевых выключателей.
- My_CNC.hal
- Файл HAL, который связывает внутренние сигналы с внешними устройствами. Например, он может задавать вывод для управления осью Z или остановку двигателя при срабатывании концевого выключателя.
- custom.HAL
- Файл для дополнительных настроек, таких как интеграция с Modbus для шпинделя перед загрузкой графического интерфейса.
- custom_postgui.hal
- Этот файл обрабатывается после загрузки интерфейса, например, для отображения скорости шпинделя в интерфейсе.
- postgui_backup.hal
- Резервная копия файла custom_postgui.hal, которая сохраняет настройки, созданные мастером, и позволяет восстанавливать конфигурации.
- tool.tbl
- Таблица с параметрами режущих инструментов, такими как диаметр и длина, для компенсации движения инструмента в процессе фрезеровки.
- My_CNC.ini
- Папка: nc_files
- Каталог для хранения G-кода для станка с примерами в подпапках.
2. Интерфейсы пользователя в LinuxCNC
Графический интерфейс пользователя (GUI) является основной точкой взаимодействия оператора со станком в системе LinuxCNC. Пакет предлагает несколько вариантов GUI, из которых можно выбрать нужный, изменив параметры, записанные в файле INI:
Axis – базовый графический интерфейс с поддержкой клавиатуры. Он является интерфейсом по умолчанию и автоматически запускается при настройке LinuxCNC с помощью мастера конфигурации, создающего значок на рабочем столе:

Touchy – интерфейс с сенсорным управлением, разработанный для упрощенного взаимодействия с операционной системой:

Gscreen – адаптируемый интерфейс для сенсорного управления, позволяющий пользователю менять элементы интерфейса по мере необходимости:

GMOCCAPY – усовершенствованный сенсорный интерфейс, созданный на основе Gscreen и подходящий как для сенсорного, так и клавиатурного управления:

NGCGUI – графический интерфейс, который поддерживает мастер-подход к программированию G-кода. Его можно запустить как отдельное приложение или встроить в другие GUI как вкладки. На примере ниже NGCGUI встроен в интерфейс Axis:

3. Настраиваемые панели управления
Многие из интерфейсов LinuxCNC можно адаптировать, добавив виртуальные элементы управления: датчики, индикаторы и переключатели. Это улучшает функционал и расширяет возможности системы. В LinuxCNC представлены два варианта создания виртуальных панелей:
PyVCP – виртуальная панель, созданная на Python и интегрируемая в интерфейс Axis. Она использует виртуальные сигналы HAL и имеет простую структуру, что подходит для быстрой и легкой настройки:

GladeVCP – панель на базе Glade, которая поддерживает расширенные функции и может взаимодействовать с элементами вне LinuxCNC, включая сетевые и оконные события. Она может быть добавлена в интерфейсы Axis или Touchy:

4. Локализация
LinuxCNC поддерживает многозадачный интерфейс, предлагая переводы для различных языков, включая французский, немецкий, итальянский, финский, русский, румынский, португальский и китайский. Если доступен перевод на ваш родной язык, система LinuxCNC автоматически переключится на него при входе в операционную систему на соответствующем языке. При отсутствии перевода можно связаться с разработчиками через IRC, списки рассылки или форумы сообщества для получения поддержки.
5. Режимы управления
LinuxCNC предоставляет три основных режима работы для выполнения команд: ручной, автоматический и режим ввода данных (MDI). Каждый из режимов определяет поведение системы и доступные команды, что позволяет операторам гибко управлять машиной. В ручном режиме оператор может перемещать оси и задавать их положение, тогда как в автоматическом режиме доступно выполнение целого файла с командами G-кода. В режиме MDI можно вводить блоки кода вручную и выполнять их нажатием клавиши «Enter».
В ручном режиме все действия выполняются индивидуально, например, запуск системы охлаждения или перемещение оси X с заданной скоростью. Эти команды вводятся в графическом интерфейсе нажатием кнопки или удержанием клавиши. Автоматический режим предназначен для запуска программ из файла с кодом G-кодов. Режим MDI позволяет оператору вводить отдельные команды G-кода и запускать их на выполнение.
Некоторые команды, такие как аварийная остановка или регулировка скорости подачи, работают одинаково во всех режимах, обеспечивая контроль и безопасность. В интерфейсе AXIS также стирается грань между ручным и MDI режимами, так как некоторые команды, такие как Touch Off, автоматически переводят систему в нужный режим для выполнения действия.