LinuxCNC управляет станком в реальном времени: между «надо выдать шаг» и «шаг выдан» не должно быть пауз, вызванных другими задачами системы. Именно поэтому документация LinuxCNC прямо требует ядро с поддержкой реального времени для управления оборудованием, а на обычном ядре система работает только в режиме симуляции. Ноутбук в этой роли возможен, но требует проверки — и не каждый ноутбук её пройдёт.
Что означает «реальное время» на практике
Управление шаговым двигателем — это последовательность импульсов с жёстким интервалом. Если поток импульсов прерывается на несколько миллисекунд, двигатель теряет шаги или останавливается, и деталь испорчена. Задача LinuxCNC — гарантировать, что расчёт следующей позиции будет выполнен вовремя, независимо от того, что делает остальная система.
Три стратегии реального времени в Linux:
| Механизм | Как работает | Статус в LinuxCNC |
|---|---|---|
| RTAI | кооперативное ядро, полностью вытесняет Linux | исторически поддерживался (2.7) |
| PREEMPT_RT | патч, делающий ядро вытесняемым | поддерживается в 2.8/2.9 (linuxcnc-uspace) |
| Xenomai | альтернативное кооперативное ядро | не поддерживается |
Практический вывод: современные сборки идут с PREEMPT_RT, а версия пакета называется linuxcnc-uspace. Для лабораторных проверок G-кода можно запускать систему и на обычном ядре — но не для управления станком.
Latency-test: главная процедура приёмки
latency-test измеряет, насколько система может «опоздать» с реакцией. Инструмент показывает текущую и максимальную задержку; чем меньше максимум и чем стабильнее график, тем лучше.
Порядок:
- Загрузите систему с real-time ядром и закройте всё лишнее.
- Запустите
latency-testи оставьте его работать 10–20 минут. - Нагрузите систему искусственно: откройте браузер, запустите обновление пакетов, подвигайте окна — это имитирует реальную работу.
- Оцените максимальную задержку, а не среднюю: именно пики вызывают сбои.
- Повторите тест после изменения настроек BIOS и сравните результат.
Если пики нестабильны и велики даже на пустой системе, этот компьютер в качестве управляющего не годится. Типичные виновники — энергосберегающие состояния CPU (C-states), управление частотой (SpeedStep/CPPC), SMI от BIOS и фоновые сервисы.
Настройки BIOS и системы, которые влияют на задержки
- Отключите C-states (глубокие состояния сна ядер) — они добавляют время выхода из сна.
- Отключите энергосбережение и динамическое изменение частоты там, где это возможно; стабильная частота лучше «умной».
- Отключите Hyper-Threading, если тест показывает улучшение: у части платформ это уменьшает джиттер.
- Отключите неиспользуемые устройства (Wi-Fi, Bluetooth, кардридер) — их драйверы могут вносить задержки.
- Не используйте ноутбук с дискретной графикой для управления станком, если её драйвер создаёт периодические прерывания: проверяется всё тем же latency-test.
Способы вывода шаговых сигналов
Параллельный порт (LPT). Дешёвый и простой вариант. Документация LinuxCNC отмечает: генерация шагов выполняется программно на хосте, поэтому интерфейс чувствителен к задержкам системы; кроме того, некоторые PCI/PCIe-карты параллельных портов не поддерживают режим EPP, необходимый для работы с платами расширения.
Платы Mesa (PCI/PCIe/Ethernet). Генерация шагов выполняется на FPGA, и требования к хосту резко снижаются: подойдёт практически любой x86_64. Ethernet-платы удобны тем, что не требуют слота расширения — важно для ноутбука.
USB. Для генерации шагов не применяется: задержки шины не позволяют гарантировать равномерность импульсов. USB-переходники допустимы для служебных задач, но не для step/dir.
Для ноутбука логичный путь — Ethernet-плата Mesa: не нужен ни параллельный порт, ни док-станция, а хост-требования становятся мягкими.
Конфигурация и типичные ошибки
- PnCconf умеет настраивать до двух плат Mesa и до трёх параллельных портов; параллельные порты при этом годятся только для простого низкоскоростного ввода-вывода.
- Период серво-потока (
SERVO_PERIODв INI) задаёт базовый такт. Слишком малый период при слабом хосте даёт сбои; слишком большой — ограничивает максимальную скорость шагов. - Несоответствие масштабов (steps per mm) — самая частая причина «станок едет не туда» после настройки.
- Отсутствие проверки аварийных входов — недопустимо; концевики и E-stop должны быть сконфигурированы до первого движения.
Как выбрать ноутбук под LinuxCNC
Практический порядок действий: сначала определите, сколько осей и с какой скоростью вы хотите вести, и только потом выбирайте железо. Ось с шаговым приводом и микрошагом 1/16 при 5 мм/винт требует частоты импульсов, которую программный генератор на дешёвом порту выдержит с трудом. Если нужны четыре оси и ускоренные перемещения, честнее сразу смотреть на Mesa-плату, чем надеяться на LPT.
Второй фактор — охлаждение и стабильность питания. Ноутбук в мастерской работает в пыли и при перепадах температуры; троттлинг посреди программы означает не просто замедление, а неравномерную подачу и следы на детали. Третий — набор портов: ExpressCard и PCMCIA ушли, встроенный LPT встречается только на старых машинах, а USB-LPT адаптеры не дают нужной предсказуемости времени. Поэтому популярный сценарий — мини-ПК или старый ноутбук с Mesa-платой по Ethernet, а «рабочий» ноутбук используется только для подготовки программ.
Как проверять после обновлений
Обновление ядра или пакетов может изменить поведение системы. Правило простое: перед любым обновлением сохраните копию рабочего состояния (список пакетов, конфигурацию, версию ядра) и после обновления повторите замер задержек. Не запускайте первую после обновления программу на ответственной детали — сначала воздух, потом заготовка.
Безопасность
- Проверяйте станок без заготовки после любой правки конфигурации.
- E-stop должен быть физическим и разрывать питание приводов, а не только сигнализировать программе.
- Не оставляйте станок включённым без присмотра при первом запуске новой конфигурации.
- Отдельное питание ноутбука: не берите его от того же блока, что и силовую часть, без развязки.
- Резервная копия конфигурации — обязательна: восстановление «по памяти» опасно и долго.
Частые вопросы
Можно ли управлять станком с обычного ноутбука на обычном ядре?
Нет. Без real-time ядра LinuxCNC работает в режиме симуляции; для управления оборудованием нужна сборка с PREEMPT_RT или RTAI.
Какой ноутбук подойдёт?
Тот, который проходит latency-test с приемлемыми пиками после отключения энергосбережения. С Ethernet-платой Mesa требования к хосту минимальны, и подойдёт почти любой x86_64-ноутбук.
Нужен ли параллельный порт?
Только если вы используете LPT-интерфейс. Для ноутбука это неудобно: нужна док-станция или карта расширения, и не каждая карта поддерживает EPP.
Почему станок теряет шаги?
Причины по частоте: слишком малый период серво-потока, высокие ускорения, помехи на линии step/dir, недостаточное питание драйверов, плохой latency хоста. Начинайте с latency-test и проверки питания.
Можно ли использовать ноутбук одновременно как CAM-станцию и контроллер?
Технически да, но не рекомендуется: браузер, обновления и фоновые задачи увеличивают задержки. Готовьте программу на одном компьютере, а управляйте станком с выделенного.