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)