LinuxCNC - стартовая программа
Автор предупреждает! Статья не дописана! Данная статья не дописана и требует до- или, даже, переработки. Примеры и данные в этой статье могут быть не проверены, тесты не отлажены, а информация не действительна. Я постараюсь, чтобы таких статей было по-меньше, но пока они есть. Смотрите: NikiWiki:Отказ от ответственности |
Содержание
Введение
Вожусь я со станком своим уже несколько недель. И, настроив почти все, что я хотел настроить, уперся в проблему установки компенсации длинны инструмента. На форум ходил, спрашивал у гугла, но все безрезультатно. Не хочет у меня устанавливаться эта самая длинна.
И пришла мне в голову мысль. Что уж стартовую программу, которая надпись LinuxCNC вырезает, уж точно писали и вылизывали много разных умных людей, которые эту самую LinuxCNC знают вдоль и поперек.
И решил я проанализировать этот код. Что в нем написано. А сюда решил записать, чтобы не забыть и, в случае амнезии, быстро восстановить знания.
Анализ
Забегая вперед скажу, что эта программа написана, естественно, "чисто" (насколько мне позволено судить).
Комментарии
В начале, разработчик рекомендует Touch Off Z axes - т.е. проверить уровень инструмента. В этом-то у меня и кроется основная проблема.
Вторая рекомендация - изменить масштаб, если для станка, на котором производится эта работа проект большой или маленький.
Установка начальных значений
#<depth>=2.0
- глубина погружения инструмента в материал.
#<scale>=1.0
- масштаб.
Меня и то и другое устраивает. Далее вызываются коды:
G21
- это выбираются единицы измерения миллиметры;
G90
- смена режима на абсолютные координаты для линейной системы координат;
G64
- приоритет скорости, даже если станку потребуется что-либо "скруглить" для достижения результата;
G40
- отмена коррекции на режущий инструмент. Вот это новость! Сначала говорят Touch Off, а потом отменяют что попросили сделать. Я думаю, что я чего-то не понимаю, но статья, определенно идет в категорию Путаница.
Фрезеровка
G00 Z3.0
- опускаемся на высоту Z=3.0. И эти люди просили меня отюстировать инструмент по оси Z. А если материал толще? А если фреза длиннее? А если что?
G17
- выбираем плоскость обработки XY. А почему не раньше? Зачем было сначала ехать? Я бы разместил эту команду выше, в коде инициализации.
M3 S1000
- включаем шпиндель на скорости 10000 оборотов в минуту;
G0 X[1.75781*#<scale>] Y[0.5*#<scale>]
- переезжаем в точку начала вырезания буквы L
G1 F100.0 Z[-#<depth>]
- погружаем инструмент на глубину -2мм (т.е. всего на 5 от текущей позиции по Z)
Мдель построена таким образом, что 0 по оси Z олицетворяет плоскость заготовки. А мои настройки указывают на 0 станка. Таким образом эта программа вырежет надпись LinuxCNC на поверхности станка, заглубившись на 2 мм. Чего допустить нельзя. |
....
- пропустим вырезание всех граней;
G0 Z3.0
- вынимаем инструмент из материала;
G0 X[18.72461*#<scale>]
- едем в точку начала буквы i;
G1 F100.0 Z[-#<depth>]
- опять погружаем инструмент и начинаем вторую букву;
...
Дальше идет много строк кода, по-сути своей похожего. Все операции выполняются либо G01 либо при помощи G02. Рассматривать повторяющиеся команды с одинаковыми по-сути, но разными по-значению параметрами, не вижу смысла.
G2 X[118.27432*#<scale>] Y[23.8889*#<scale>] I[12.16539*#<scale>] J[3.2454*#<scale>]
А вот G02 стоит рассмотреть. В переводе на русский язык в кадре сказано: "Пропилить дугу в точку X и Y из текущей с радиусом вокруг точки I, J.
Окончание
M5
- выключаем шпиндель;
M2
- заканчиваем программу.
Запуск
В том состоянии, что на снимке экрана выше, LinuxCNC не начнет работу, а выдаст предупреждение Программа выходит за минимум оси Z.
Вариантов решения этой задачи ровно два:
- Установить отступ по оси Z вручную. Так я делал, кайфа никакого. Да, LinuxCNC выполнит код и "вырежет" надпись, но это не принесет удовлетворения, поскольку Вы не знаете точно, а где же находится этот самый 0 и Ваш инструмент и все Ваши указания будут, пусть и верными, но ручными и умозрительными.
- Скорректировать инструмент автоматически. Это куда более правильный вариант. Но над его решением я пока и работаю.