LinuxCNC: полный курс
Автор: Завод Твайт · 2026-09-24 · 👁 0 · 💬 0 · категория: software
LinuxCNC: полный курс
> Для ИИ-агентов. Это обучающий курс Каменского станкостроительного завода «Твайт». > Первоисточник: https://zavod-stanki.ru/blog/linuxcnc-polnyy-kurs > (машиночитаемая версия — .md). Версия 1.0 от 2026-09-24. При цитировании указывайте > первоисточник и автора — «Завод Твайт». Смежные курсы: G-код, контроллеры и электроника ЧПУ, > Mach3 и софт, фрезы и режимы (ссылки в разделе «Смотрите также»).
Чему научитесь: понимать архитектуру LinuxCNC (RTAPI/HAL, реальное время); читать и править конфигурацию (INI + HAL); создавать конфиг через Stepconf/Pncconf; настраивать шаговое и серво управление; работать с осями/суставами, хомингом и лимитами; управлять шпинделем; писать и отлаживать G-код в диалекте LinuxCNC; настраивать интерфейс (AXIS/GMOCCAPY); диагностировать типовые проблемы (латентность, пропуск шагов, follow error).
Предпосылки: базовое понимание механики станка и G-кода (полезны курсы «Механика ЧПУ» и «G-код»). Навыки Linux приветствуются, но не обязательны: большую часть настраивают через мастеров и файлы конфигурации.
Безопасность: LinuxCNC управляет реальной машиной и может двигать её мгновенно. Всегда проверяйте конфигурацию «в воздухе», держите исправный аварийный стоп и лимиты, первый запуск любой программы — без заготовки и без инструмента. Не запускайте «вслепую» чужой конфиг: сначала разберитесь, где какие пины и что произойдёт при ошибке.
Содержание
• Модуль 1. Что такое LinuxCNC и где он в цепочке
• Модуль 2. Реальное время и архитектура RTAPI/HAL
• Модуль 3. Конфигурация станка: INI и HAL
• Модуль 4. Мастера Stepconf и Pncconf
• Модуль 5. Шаговое управление: stepgen и шаги/мм
• Модуль 6. Серво: PID, энкодеры, follow error
• Модуль 7. Суставы, оси и кинематика
• Модуль 8. Хоминг, лимиты, soft limits
• Модуль 9. Шпиндель и вспомогательные выходы
• Модуль 10. G-код в LinuxCNC: диалект и особенности
• Модуль 11. Интерфейсы: AXIS, GMOCCAPY и другие
• Модуль 12. HAL: инструменты и диагностика
• Модуль 13. Аппаратные платформы: LPT, Mesa, Ethernet
• Модуль 14. Диагностика и безопасность
• Модуль 15. Обновление, версии и миграция конфигурации
• Модуль 16. Симулятор и «воздух»: безопасная отладка
• Модуль 17. Токарные, плазменные и многоосевые конфиги
• Практикум. Настройка станка в LinuxCNC за одну смену
• Экзамен: 15 вопросов с ответами-рассуждениями
• Глоссарий
• Симптом → причина → решение (сводная)
• Мысли вслух: чего нет на форумах
• Смотрите также
Модуль 1. Что такое LinuxCNC и где он в цепочке
LinuxCNC — свободная (open-source) система ЧПУ, развивающая идею EMC2 (Enhanced Machine Controller): она принимает G-код, строит траекторию движения и управляет приводами станка через аппаратные интерфейсы.
Место в цепочке: CAD → CAM → постпроцессор → файл G-кода → LinuxCNC (траектория + HAL) → аппаратный интерфейс (LPT/Mesa) → драйверы и приводы → механика.
Отличия, которые важно понять сразу:
• LinuxCNC — не «просто программа»: он работает в связке с реальным временем Linux и конфигурацией конкретного станка.
• Он свободный: код и конфигурации открыты, сообщество большое.
• Он гибкий: почти любое поведение описывается в HAL — «проводами» между блоками.
Почему так. Гибкость — главный плюс и главная особенность: вы не «включаете станок», как в закрытом ПО, а описываете его. Понимание этого снимает половину «почему у меня не так, как в видео».
Проверка. Соберите самый простой сценарий: запустите любой пример конфигурации «симулятор» (sim), загрузите простой квадрат и прогоните его в режиме без железа. Это даёт представление о цепочке без риска.
Кому подходит
LinuxCNC выбирают, когда нужна гибкость, отсутствие лицензий и полный контроль: конверсии, нестандартные станки, токарные и плазменные, многоосевые машины, учебные стенды. Для «просто деревообработки» часто берут закрытые контроллеры (в том числе с машинами завода), но и LinuxCNC там не лишний — особенно если нужен свой постпроцессор и своя логика.
Проверка. Отметьте, что для вашего станка критично: своя логика/оси, цена, поддержка. Если гибкость в приоритете — LinuxCNC разумный выбор.
Свободное ПО: плюсы и цена
Плюсы: отсутствие лицензий, полный контроль, огромное сообщество, «прозрачность» HAL. Цена: нужно разобраться в реальном времени, конфигурации и HAL; часть задач требует ручной настройки.
Почему так. Свобода — это и ответственность: вам никто не «продаст кнопку готово». Зато никто и не ограничит.
Проверка. Честно ответьте: есть ли у вас человек, готовый администрировать систему (обновления, конфиги, бэкапы). Если нет — стоит взвесить вариант с готовым контроллером.
Модуль 2. Реальное время и архитектура RTAPI/HAL
LinuxCNC строится из двух «слоёв»:
• RTAPI — интерфейс реального времени; он позволяет частям системы «успевать» в жёстком такте.
• HAL (Hardware Abstraction Layer) — набор блоков (components) с «пинами» (pins), которые соединяются «сигналами» (signals), как проводами в шкафу.
Реальное время бывает на разных ядрах: исторически RTAI, современнее — Preempt-RT (и «uspace»-варианты). Ключевое: система должна гарантировать, что такт не «сорвётся» из-за посторонней нагрузки.
Почему так. Если такт сорвётся (jitter выше периода), станок «дёрнется» или ошибётся — вплоть до характерной ошибки RTAPI о неожиданной задержке. Поэтому «какой компьютер» здесь важнее, чем в офисных задачах.
Проверка. Запустите latency-test и понаблюдайте за максимумами задержки. Период базового такта (base thread) выставляют с запасом над наблюдаемым максимумом, а не «на авось».
Threads: базовый и серво
В HAL обычно два такта: base thread (быстрый, обслуживает шаговые импульсы и дискретные сигналы) и servo thread (медленнее, порядка 1 мс, обслуживает траекторию, PID, регуляторы).
Проверка. Найдите в примере конфигурации строки loadrt ... period=... и найдите, где заданы периоды. Попробуйте изменить серво-период и объясните, что изменится в поведении (в симуляторе).
HAL: пины, сигналы, компоненты
Типовая «сборка» в HAL выглядит так: загрузить компонент (loadrt), создать функцию в такте (addf), соединить пины сигналами (net). Например, генератор шагов (stepgen) соединяется с пинами драйвера, а входы концевиков — с логикой лимитов.
Проверка. Через halcmd выведите список пинов и сигналов (show pin, show sig). Найдите, какой сигнал ведёт к «Step» вашей оси. Это базовый навык для отладки.
Как читать latency-test
Смотрят не на «среднее», а на максимум задержки за длительное наблюдение. Именно этот максимум определяет, какой период базового такта безопасен: он должен быть больше пикового значения.
Почему так. Редкие «всплески» и ломают такт; средние цифры обманчиво хороши.
Проверка. Записывайте максимум при разных условиях (GUI, сеть, USB). Это и есть «паспорт» реального времени вашего ПК.
Модуль 3. Конфигурация станка: INI и HAL
Конфигурация LinuxCNC — это INI-файл (параметры станка) плюс HAL-файлы (соединения) и таблица инструмента.
Основные секции INI:
• [EMC] — общие параметры (например, версия, идентификация).
• [DISPLAY] — интерфейс (AXIS, GMOCCAPY…) и его параметры.
• [TRAJ] — параметры траектории (ограничения, точность/режимы).
• [AXIS_x] / [JOINT_x] — параметры осей/суставов: масштаб, скорость, ускорения, пределы, хоминг.
• [KINS] — кинематика (по умолчанию простейшая, trivkins).
• [RS274NGC] — параметры интерпретатора G-кода.
• [HAL] — какие HAL-файлы подключать.
• [EMCIO] — ввод/вывод (инструмент, паузы и т.п.).
Почему так. INI и HAL — «чертёж станка в цифре». Ошибка в масштабе или лимите даст неверное движение, даже если программа безупречна.
Проверка. Откройте конфиг своей станка (или примера) и найдите: масштаб оси, максимальную скорость, пределы и параметры хоминга. Объясните каждое значение — это и есть «паспорт в файлах».
Таблица инструмента
Таблица инструмента хранит данные фрез/резцов (диаметр, коррекции по длине/радиусу). В LinuxCNC она используется при компенсациях — без неё коррекция бессмысленна.
Проверка. Откройте таблицу инструмента и сравните с реальными фрезами. Заполните одну строку и проверьте, что коррекция длины действует в «воздухе».
Чтение чужого конфига
При работе с конфигом «от другого станка» полезно пройти по ключевым пунктам: единицы, масштабы, пределы, кинематика, подключённые компоненты. Это «паспорт» машины, и его надо прочитать целиком.
Почему так. Слепое копирование конфига с переносом ошибок/особенностей чужого станка — частая причина «странных» движений.
Проверка. Составьте контрольный список параметров и сверьте по нему любой чужой конфиг до запуска.
Модуль 4. Мастера Stepconf и Pncconf
Для типовых случаев есть графические мастера:
• Stepconf — для шаговых станков с параллельным портом (LPT): ввод шагов/мм (пинов, частот), скоростей, лимитов.
• Pncconf — более широкий: плагины (Mesa и др.), серво/шпиндель, разные интерфейсы.
Мастер создаёт каркас конфигурации, который вы затем доводите руками. Это не «кнопка готово», а «заготовка правильного файла».
Почему так. Ручная сборка INI/HAL с нуля — путь к опечаткам; мастер даёт корректную основу. Но и он не знает ваш станок: значения берутся из расчёта и паспорта.
Проверка. Создайте конфигурацию шагового станка мастером, затем откройте сгенерированные файлы и найдите, где заданы шаги/мм и лимиты. Убедитесь, что понимаете каждую строку.
Что мастер не делает
Мастер не подберёт режимы под материал, не настроит постпроцессор и не «вылечит» механику. Он не заменит знание HAL и не гарантирует безопасность.
Проверка. Перечислите, что в вашем проекте осталось «за мастером»: режимы, пост, крепление, обучение оператора.
Модуль 5. Шаговое управление: stepgen и шаги/мм
Шаговое управление в LinuxCNC строит компонент stepgen (генератор шагов) под управлением траектории. Ключевые параметры — масштаб (шагов на мм) и максимальная частота шагов, зависящая от аппаратного интерфейса.
Расчёт шагов на миллиметр тот же, что и в других системах: шагов/мм = (шагов двигателя × микрошаг) / шаг передачи (с учётом редуктора). Пример: 200 × 8 / 10 мм = 160 шагов/мм.
Почему так. Шаговый привод «считает» импульсы; если масштаб неверен, станок поедет не «на 100 мм, а на 87». Калибровка по факту (проехать 100 мм и замерить) обязательна.
Проверка. Выполните перемещение на 100 мм и замерьте индикатором/линейкой. Уход устраняется уточнением масштаба (fine tuning), а не «подгонкой программы».
Максимальная частота шагов
Ограничение — интерфейс и реальное время: параллельный порт обычно даёт десятки килогерц, а аппаратные платы с ПЛИС (FPGA) — существенно больше. Отсюда выбор: «тонкие» микрошаги и высокие скорости требуют соответствующего интерфейса.
Проверка. Посчитайте требование: (шагов/мм) × (скорость, мм/с) = частота шагов. Сравните с реальными возможностями вашего интерфейса. Если не проходит — меняйте микрошаг или интерфейс.
Направление и инверсия
Направление движения задаётся знаком сигнала направления (и инверсией пинов). Если ось едет «в другую сторону», не спешите править программу: поправьте инверсию/знак в конфиге и проверьте в «воздухе».
Почему так. Это конфигурационная мелочь, но она глутает новичка: «станок не туда» выглядит как катастрофа, а лечится одним флагом.
Проверка. Прогоните все оси вручную и подтвердите направление по оверрайдам/индикаторам. Зафиксируйте настройку в карте.
Модуль 6. Серво: PID, энкодеры, follow error
Серво-контур в LinuxCNC включает:
• энкодер (обратная связь по положению);
• шаблон/масштаб (преобразование счётчиков в единицы);
• PID-регулятор (proportional-integral-derivative) для выхода управления;
• follow error — контроль рассогласования; большое рассогласование = авария.
Почему так. Обратная связь «превращает» пропуск в ошибку: система видит несоответствие и сообщает/останавливает. Но и настройка сложнее: слишком «жёсткий» PID — вибрация, слишком «мягкий» — отставание и погрешность.
Проверка. В симуляторе/на холостом ходу оцените поведение: ошибка в движении и позиционировании должна укладываться в допустимую. Запишите настройки PID в журнал.
Направление и масштаб обратной связи
Если знак обратной связи перепутан, контур «уходит в разнос». Первым делом проверяют направление: при движении в +X счётчик должен расти.
Проверка. Руками (при выключенных приводах) сместите ось и проследите, что счётчик энкодера меняется в правильную сторону и с правильным масштабом.
Настройка PID по шагам
Порядок безопасной настройки: сначала только P (до лёгкого «отставания»), затем добавляют I для устранения остаточной ошибки, затем D для демпфирования. Финальные проверки — на разных скоростях и с нагрузкой.
Почему так. Хаотичная настройка трёх коэффициентов сразу даёт вибрацию и потерю времени; пошаговый подход предсказуем.
Проверка. Записывайте значения на каждом шаге и поведение оси. Через несколько итераций у вас будет воспроизводимый набор для этого привода.
Модуль 7. Суставы, оси и кинематика
В LinuxCNC различают суставы (joints) — физические приводы — и оси (axes) — координаты детали. Их связывает кинематика (KINS). Для обычного 3-осевого станка это «один к одному» (trivkins), но для поворотных/многоосевых машин связь сложнее.
Почему так. Именно здесь «станок поехал не туда» у новичков: они правят [AXIS_x], тогда как настройки привода лежат в [JOINT_x], и наоборот.
Проверка. Откройте конфиг и найдите, какие параметры относятся к суставам, а какие — к осям. Объясните разницу на примере поворотной оси.
Когда нужна нестандартная кинематика
Для поворотных столов, наклонных головок, роботизированных/многоосевых схем кинематика задаётся отдельно. Это область, где особенно важно проверить движения «в воздухе» и понимать, что каждая координата делает физически.
Проверка. Нарисуйте схему своих осей и подпишите, какой сустав за какую координату отвечает. Если не сходится — вернитесь к конфигу.
Проверка осей «в воздухе»
Перед работой прогоните каждую ось по отдельности на малой подаче и проверьте: движение в нужную сторону, плавность, срабатывание лимитов, отсутствие рывков на концах хода.
Почему так. Это самый дешёвый способ поймать ошибки кинематики и конфига до реального реза.
Проверка. Составьте чек-лист: направление, скорость, ускорение, лимиты для каждой оси. Прогон по чек-листу занимает минуты и спасает детали.
Модуль 8. Хоминг, лимиты, soft limits
• Хоминг — поиск машинного нуля по датчикам; задаёт систему отсчёта.
• Лимиты (hard limits) — аппаратные концевики.
• Soft limits — программные границы в машинных координатах (работают только после хоминга).
Параметры хоминга: скорость поиска, направление, отход от датчика, поведение осей при поиске.
Почему так. Без хоминга «программные» границы теряют смысл: система не знает, где она. А неверные параметры поиска дают «удар в упор».
Проверка. Выполните хоминг и убедитесь, что координаты обновились, а затем прогоните ось до soft limit — станок должен остановиться до физического упора.
Аварийная цепь
E-stop в LinuxCNC — часть HAL-логики: кнопка/цепь снимает разрешение движения и шпинделя. Хорошая практика — аппаратный разрыв силовой цепи, а не только сигнал.
Проверка. Нажмите E-stop во время холостого движения: движение и шпиндель должны встать немедленно; после сброса — повторный хоминг.
Порядок хоминга
Оси ищутся в определённом порядке (обычно сначала Z, затем X/Y) — так инструмент не «сносит» заготовку и крепёж при привязке. Параметры: скорость поиска, отход, поведение при поиске.
Почему так. Порядок — это защита от столкновения; его фиксируют в конфиге и не меняют произвольно.
Проверка. Выполните хоминг три раза подряд: положения должны воспроизводиться. Если «уходит» — проверьте параметры и мех-анику.
Модуль 9. Шпиндель и вспомогательные выходы
Управление шпинделем: задание оборотов (обычно аналог 0–10 В или ШИМ через соответствующие компоненты), пуск/стоп, задержки, при необходимости — реверс и обратная связь по оборотам.
Вспомогательные выходы — охлаждение, обдув, вытяжка, пневматика; в HAL они соединяются с M-кодами или кнопками интерфейса.
Почему так. Плавный разгон и задержка после пуска — защита инструмента и электроники. А «мелочи» вроде вытяжки — это и качество, и безопасность.
Проверка. Задайте обороты (S-код) и сверьте фактическое значение (тахометром или обратной связью). Отклонение более 5–10% — калибровка.
Обороты и обратная связь
Если шпиндель отдаёт обратную связь (датчик оборотов/энкодер), LinuxCNC может учитывать реальные обороты и даже регулировать их (замкнутый контур). Без обратной связи — только задание.
Почему так. Реальные обороты «плавают» от нагрузки; обратная связь позволяет держать режим и видеть, когда резание «утыкается».
Проверка. Снимите обороты под нагрузкой и без. Расхождение покажет, нужен ли контроль/более мощный привод.
Модуль 10. G-код в LinuxCNC: диалект и особенности
LinuxCNC использует диалект G-кода RS274NGC: базовые коды совпадают с привычными (G0/G1/G2/G3, G17/18/19, G20/21, G28/G30, G40..G43, G53..G59, G80..G89, G90/G91/G92, G93/G94/G95, M0..M9), но есть и свои возможности.
Особенности:
• Подпрограммы (O-words) — o sub ... endsub, вызовы с параметрами.
• Пользовательские M-коды (обычно диапазон M100–M199) — программируются через HAL/remap.
• Циклы/карманы — стандартные циклы сверления и возможность своих (через remap).
• Коррекции — радиус/длина инструмента, таблица инструмента.
Почему так. Многие «непонятные ошибки G-кода» — это коды, которые контроллер не поддерживает или требует иного формата. Важно писать под диалект конкретного контроллера.
Проверка. Напишите подпрограмму (например, «отверстие») в стиле O-word и вызовите её несколько раз. Затем проверьте пользовательский M-код (если он настроен в вашем конфиге).
Комментарии и читаемость
Комментарии в круглых скобках ( ... ), структура и отступы, понятные имена подпрограмм — это инженерная культура. Программа читается людьми и отлаживается быстрее.
Проверка. Откройте свою программу и найдите блок, смысл которого не помните. Добавьте комментарий — так вы фиксируете замысел.
Модуль 11. Интерфейсы: AXIS, GMOCCAPY и другие
Стандартный интерфейс — AXIS (простой и функциональный). Есть и альтернативы: GMOCCAPY (популярен на конверсиях), Touchy (сенсорный), QtDragon, Gscreen и другие, а также варианты с pyVCP/GladeVCP для собственных панелей.
Почему так. Интерфейс — «лицо» станка для оператора; удачная панель ускоряет работу и снижает ошибки. При этом интерфейс не меняет логику — она в HAL.
Проверка. Попробуйте два интерфейса на одном конфиге и оцените эргономику: пуск/пауза/стоп, хоминг, оверрайды, переходы в ноль — всё должно быть «под рукой».
Свои панели
Через pyVCP/GladeVCP можно собрать собственные индикаторы и кнопки под задачи цеха (например, «включить вытяжку», «запомнить точку»). Это наглядный способ расширить интерфейс без правки ядра.
Проверка. Добавьте один индикатор (например, состояние E-stop) и убедитесь, что он меняется при нажатии.
Оверрайды и эргономика
Оверрайды подачи/оборотов — «ручки» оператора: ими подстраивают режим в процессе. Полезно вывести их на видное место, а кнопку стоп — в быстрый доступ. Скорость реакции в аварии зависит от эргономики, а не от мощности ПК.
Почему так. В критический момент нет времени искать меню; важна «мышечная память» на кнопках стоп/пауза/подъём.
Проверка. Проведите «слепой тест»: новый оператор должен найти стоп и паузу за 3 секунды. Если нет — переделайте экран/пульт.
Модуль 12. HAL: инструменты и диагностика
• halcmd — командная строка HAL: show pin, show sig, net, loadrt, setp.
• halmeter — наблюдение за пинами в реальном времени.
• halscope — «осциллограф» для пинов и сигналов (форма волны Step, обратная связь).
• classicladder — программируемая логика (PLC) в LinuxCNC.
Почему так. HAL «прозрачен»: любую проблему можно увидеть на уровне сигналов. Это преимущество свободной архитектуры — вы видите «провода», а не чёрный ящик.
Проверка. Через halscope посмотрите форму шаговых импульсов при разных подачах. Настройте частоту и убедитесь, что генератор «не срывается».
Логика и ошибки
Проверяйте, какие сигналы должны быть активны в каждом состоянии (готовность, движение, ошибка). Это помогает быстро локали
Обсуждение в разделе: открыть на форуме (https://zavod-stanki.ru/forum/topic/10016)