Линукс cnc настройка станка

Обновлено: 04.07.2024

Сегодня я хочу поднять вопрос о софте который используется для обработки деталей на ЧПУ станках.

Если вы используете ЧПУ фрезер в производстве, то вопрос о легальности софта встает в полный рост. Все коммерческие программы управления ЧПУ станками стоят весьма не малых денег, таких, что малому бизнесу на первых порах не осилить. Тут и встает вопрос о том, как и легальный софт использовать и заплатить за него поменьше.

Конечно, в интернете можно найти много бесплатного и самописного софта, но зачастую данное ПО оказывается или малорабочим или заточенным под конкретный контроллер да и для работы требует то DOS, то Win 95-98. А уж чего стоит отсутствие богатства функционала!

Разработчики ПО LinuxCNC переписали частично саму ОС для того, что бы улучшить работу с ЧПУ станками в реальном времени. Ведь в основе своей Linux и тем более Windows не предназначены для работы с портами в реальном времени с ограниченными тайменгами. А именно этого и требуется для работы со станками с числовым программным управлением. При этом, промышленные станки имеют свой встроенный блок управления, на который подается список команд, а работу с осями выполняет уже микроконтроллер. А самописные программы для ЧПУ работают из под DOSа или старых версий виндовс, где можно было стучаться к портам напрямую, а не через виртуальное управление железом.

http://www.linuxcnc.org/images/stories/screen_thumb.jpg

Программа LinuxCNC на сайте разработчика есть как в виде инсталяционного пакета, так и в виде LifeCD на базе Ubuntu 8.04 Hardy Heron.
Вам достаточно записать образ на диск и загрузиться с него, после чего вы сразу сможете работать с LinuxCNC и управлять своим самодельным ЧПУ устройством.

LinuxCNC это универсальная программа, которая может может управлять фрезерно-гравировальным станком, лазерной и плазменной резкой, а так же любыми другими станками. Было бы желание разобраться и настроить программу. Но самое главное, это то, что LinuxCNC абсолютно бесплатен, имеет свою техподдержку и постоянно развивается

На сегодняшний день OS Ubuntu, на базе которой сделан дистрибутив LinuxCNC, это одна из наиболее успешных реализаций Linux для ПК. Устанавливаясь на комп Ubuntu автоматически находит практически 96% известных устройств, а пользовательский интерфейс может поспорить с Windows 7.

Для нормальной работы вам необходим комп с 512 Мб оперативной памяти и 4 Gb свободного места на харде. Процессор желателен не менее 1500 Мгц. Если судить по сегодняшним меркам, то эти требования довольно слабые. Всегда можно взять недорого ноутбук 5-6 летней давности с рук с подобной конфигураций.

Документацию по программе управления ЧПУ станком можно взять здесь. Она лежит в PDF файлах так же доступна Wiki и сообщество с форумом. Все это добро на английском языке, но такова уж судьба бесплатных проектов.

Остается лишь привести пример работы 4-х осевого ЧПУ станка под управлением LinuxCNC и на этом завершить обзор.

Настройки станка
Вводим название станка, в документации говорится, что можно использовать заглавные и строчные буквы, цифры и знаки "-" и "_".
Выбираем конфигурацию осей. XYZ (Фрезер), XYZA (4-х осевой фрезер) или XZ (Токарный станок). Названия только для примера. Если у Вас двух осевой станок, то можете выбрать XYZ, и ось Z оставить не настроенной.
Единицы измерения станка: дюймы или миллиметры.

Настройки контроллера
Можно выбрать из набора предустановленных параметров если Ваш контроллер в список. Или настроить все самому.
Параметры Step time, Step space, Direction hold, Direction setup смотрите в документации к вашему контроллеру.

Настройки lpt
Если у Вас только один lpt, то можно ничего не трогать по умолчанию стоит установка стандартного адреса lpt порта.

Настройки быстродействия
Base period - это одна из основных величин быстродействия, она определяет максимальную скорость работы с контроллером. Она определяет так называемый heartbeat (сердцебиение системы в целом) от которого зависит время для генерации сингала Step. Фактически, чем меньше base period тем больше максимальная частота генерации шагов (например, при Base period = 30 000 ns максимальная частота генерации шагов равна 33333Гц, что при 200 шагах на оборот в режиме микрошага 1:8 дает максимум 20 оборотов в секунду).

Base period зависит от параметров компьютера. Правильно определить base period можно при помощи утилиты Latency test, она тоже входит в состав EMC2. Latency это задержка с которой компьютер может остановить процесс работы для обработки внешнего запроса. В нашем случае, запросом является периодичный "heartbeat" (стук сердца) на основе которого вычисляется нужное время для следующего шага. Для того, чтобы контроллер работал правильно и не пропускал шаги минимальный base period должен быть равным длительность direction setup+direction hold+step space+maximum latency.

Итак, запускаем Latency test, и пытаемся нагрузить компьютер разными задачами, чтобы наверняка получить максимальную задержку. Можно запустить проигрываться фильм, полазить по интернету, скопировать большой файл, перемещать окна. Через несколько минут смотрим значение Base thread Max jitter (максимальное дрожание base period) и вставляем это значение в соответствующую строку в Stepconf.

Настройки пинов LPT

На этой странице мы можем настроить значения всех пинов параллельного порта.
Значения для этих настроек смотрите в документации к контроллеру.

Настройка осей станка

Далее настраиваем все оси станка:

Motor Steps Per Revolution - количество шагов двигателя на один оборот.

Driver Microstepping - настройка микрошага контроллера. Для микрошага 1:8 устанавливайте "8"

Pulley Ratio - значение редуктора, если между валом двигателя и ходовым винтом стоит редуктор установите передаточное число.

Leadscrew Pitch - шаг ходового винта. Можно поменять направление движения вдоль оси установив отрицательное значение шага винта.

Maximum Velocity - Максимальная скорость перемещения.

Maximum Acceleration - Максимальное ускорение по данной оси.

Home Location - положение начала оси. Это положение в котором станок остановится после поиска начала.

Table Travel - границы оси. Положение начала должно быть внутри table travel, причем оно не должно совпадать с границами оси.

Home Switch Location - Положение концевика начального положения. Если у Вас совмещены home switch и limit switch в одном концевике, то значение home location не должно быть равным home switch location иначе появится ошибка "joint limit error", т.е. станок не должен остановиться в точке срабатывания ограничительного концевика.

Home Search Velocity - скорость поиска начала оси. Если концевой датчик расположен рядом с концом оси это значение должно быть выбрано с учетом того, что станок должен будет успеть остановиться до того как он ударится о конец оси. Если концевик замыкается только когда ответная часть рядом с ним, то скорость должна быть выбрана таким образом, чтобы станок успел остановиться пока концевик не разомкнулся. Если станок движется в противоположную сторону от концевика при поиске начала установите отрицательную скорость.

Home Latch Direction - направление уточнения начала, после первоначальной установки начала, они уточняются на очень маленькой скорости. Если выбрана опция "Same" при повторном срабатывании концевика начала будут установлены, если "Opposite" станок будет медленно откатываться пока концевик не разомкнется.

Настройка параметров станка и контроллеров в LinuxCNC

Для него можно использовать заглавные и строчные буквы,цифры и знаки "-" и "_".
LinuxCNC не поддерживает для разных задач разные профили,вместо этого для каждого конфига создаётся с этим именем отдельная папка,
в которой конфиг и хранится вместе с сопутсвующими ему файлами.
Выбор конкретного конфига осуществляется запуском LinuxCNC через соответсвующии ярлык
или если вы забыли в " Начало работы мастера " его создать,
непосредственным вызовом из консоли,способом указывания в параметрах вызова пути к главному *.ini файлу.

Например для пользователя с именем "cnc" и названием конфига "Purelogic_PLC4x-G2"
вызов LinuxCNC c соответствующим профилем будет выглядеть так:

Configuration directory не редактируемый параметр,который показывает путь к папке с создаваемыми конфигами.

Axis configuration выпадающии список с разными типами конструкции конфигурируемого станка

  • XYZ - Трёх осевой фрезер
  • XYZA - Трёх осевой фрезер с токарной осью
  • XZ - Токарный станок

LinuxCNC.Stepconf.06.2.Basic_Machine_Information(A_Axis_Select).jpg

Настройки для фрезерно-токарных типа XZA в этом списке нет.
Такой фрезер можно попробовать сконфигурировать как XYZA и либо создать соответсвующии постпроцессор,
либо установить Home Search velocity из окна _Axis Configuration для неиспользуемой оси в ноль,
что отключит поиск дома на этой оси и позволит станку нормально инициализироватся при запуске.

Machine units единицы измерения,с которыми будет работать LinuxCNC

  • Inches (G20)
  • Millimeters(G21)
  • Step time Длительность сигнала step
  • Step space Минимальный промежуток времени между двумя сигналами step
  • Direction hold Время после изменения сигнала Dir после которого можно начинать посылать импульсы Step.
  • Direction setup Время после последнего импульса Step после которого можно менять сигнал Dir

Base Period Maximum Jitter Максимальный разброс базового периода реалтайма.
Для настройки этого параметра существует отработанная методика с использованием утилиты latency-test,
но на мой взгляд она приводит к неоправданно большим или маленьким значениям этой величины.
Её можно использовать только для предварительной оценки этого параметра.
Для этого запускаем её в мастере кнопкой "Test Base Period Jitter",запускаем редактор Gedit,
открываем им довольно крупный фаил,после чего записываем в параметр значение "Max Jitter" из строки "Base thread".

LinuxCNC.Stepconf.06.3.Hal_Latency_Test.jpg

Также эту утилиту можно запустить из соответсвующего раздела меню Application Gnom'a или
терминала набрав в нём latency-test .
Правильная настроика этого параметра будет после полного завершения всех других настроек станка.

Наша методика настройки такая:

)Запустить настроенный LinuxCNC,
)Снять блокировку станка клавишей F1 и включить его клавишей F2.
)После чего начать быстро по очереди нажимать клавиши со стрелками вниз-вверх (ось У) или право-лево(ось Х).
)Если при этом произощёл сбой реалтайма,то запускаем мастер и увеличиваем
значение разброса базового периода,если нет,то уменьшаем.
)После того как будет найдено минимальное значение этой переменной,запускаем часто меняющею направление УП,запускаем текстовый редактор Gedit и открываем им текстовый фаил объёмом с среднее значение довольно крупных УП.
)После чего увеличиваем разброс базового периода до значения при котором LinuxCNC будет работать стабильно.

Но это не будет не совсем правильное значение разброса так как Gedit и сам файл откешируются при первом запуске и открытии в ОЗУ компьютера.
Что может привести к сбоям реалтайма если происходит длительное обращение к жёсткому диску,
например для чтения больших файлов.
Поэтому перегружаемся и выполняем тест заного с так называемым холодным стартом программы.

Чтобы не мучится с запуском и проходом мастера для смены одной переменной можно
редактировать эту переменную прямо в файле конфигурации.
Файл находится в папке указанной в параметре Configuration directory из " Параметры станка, контроллера и быстродействия"
имеет расширение *.ini и называется также как и конфиг в переменной Machine Name.
Сидит параметр в секции [EMCMOT] и имя его BASE_PERIOD =

Так же не забываем после изменения этого параметра пройти по окнам мастера дальше на страницу настройки осей и
поменять максимальные скорости движения по осям.


Вожусь я со станком своим уже несколько недель. И, настроив почти все, что я хотел настроить, уперся в проблему установки компенсации длинны инструмента. На форум ходил, спрашивал у гугла, но все безрезультатно. Не хочет у меня устанавливаться эта самая длинна.

И пришла мне в голову мысль. Что уж стартовую программу, которая надпись LinuxCNC вырезает, уж точно писали и вылизывали много разных умных людей, которые эту самую LinuxCNC знают вдоль и поперек.

И решил я проанализировать этот код. Что в нем написано. А сюда решил записать, чтобы не забыть и, в случае амнезии, быстро восстановить знания.

Анализ

Забегая вперед скажу, что эта программа написана, естественно, "чисто" (насколько мне позволено судить).

Комментарии

В начале, разработчик рекомендует Touch Off Z axes - т.е. проверить уровень инструмента. В этом-то у меня и кроется основная проблема.

Вторая рекомендация - изменить масштаб, если для станка, на котором производится эта работа проект большой или маленький.

Установка начальных значений

- глубина погружения инструмента в материал.

Меня и то и другое устраивает. Далее вызываются коды:

- это выбираются единицы измерения миллиметры;

- смена режима на абсолютные координаты для линейной системы координат;

- приоритет скорости, даже если станку потребуется что-либо "скруглить" для достижения результата;

- отмена коррекции на режущий инструмент. Вот это новость! Сначала говорят Touch Off, а потом отменяют что попросили сделать. Я думаю, что я чего-то не понимаю, но статья, определенно идет в категорию Путаница.

Фрезеровка

- опускаемся на высоту Z=3.0. И эти люди просили меня отюстировать инструмент по оси Z. А если материал толще? А если фреза длиннее? А если что?

- выбираем плоскость обработки XY. А почему не раньше? Зачем было сначала ехать? Я бы разместил эту команду выше, в коде инициализации.

- включаем шпиндель на скорости 10000 оборотов в минуту;

- переезжаем в точку начала вырезания буквы L

- погружаем инструмент на глубину -2мм (т.е. всего на 5 от текущей позиции по Z)

- пропустим вырезание всех граней;

- вынимаем инструмент из материала;

- едем в точку начала буквы i;

- опять погружаем инструмент и начинаем вторую букву;

Дальше идет много строк кода, по-сути своей похожего. Все операции выполняются либо G01 либо при помощи G02. Рассматривать повторяющиеся команды с одинаковыми по-сути, но разными по-значению параметрами, не вижу смысла.

А вот G02 стоит рассмотреть. В переводе на русский язык в кадре сказано: "Пропилить дугу в точку X и Y из текущей с радиусом вокруг точки I, J.

Окончание

Запуск

В том состоянии, что на снимке экрана выше, LinuxCNC не начнет работу, а выдаст предупреждение Программа выходит за минимум оси Z.

Читайте также: