Дуга в трех коогдинатах на Gкоде

Обсуждение аспектов работы с CAМ программами, подготовка моделей, настройка постпроцессоров, настройка параметров инструментов, обсуждение стратегий обработки, симуляция обработки. Вопросы по G-коду.
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

Здравствуйте !

Не могли бы Вы подсказать новичку - как будет выглядеть строка G-code,
выполняющая дугу. Не простую. А сразу в трех координатах.
Фрезерный станок. Фреза поднимается по оси Z. Нужно выполнить дугу.

Например - исходная точка X=0 Y=0 Z=0
конечная точка X-10 Y=20 ( в плоскости X Y по дуге , по часовой стрелке . Высота дуги 5 мм. )

Конечная точка по оси Z = 30 мм , подъем также по дуге ,высота дуги 7 мм.
Дуга выпуклая.

Можно ли это записать одной строкой ? Напишите , пожалуйста , если не трудно.
Если нет , то как можно описать такую дугу ?
В G-code можно задавать такой параметр как «высота дуги» или же только координаты центра ?
Пытался разобраться сам , но слова «кривые Буазье» перепугали меня насмерть.
Но если я смогу осознать Ваш ответ , то начну учиться с этого примера как с “Hello , world !” . У меня самодельный станок и самописная программа, но обдумываю Mach3.

А эта команда для меня базовая.
Вот например развертка

Спасибо!
Дуга_cr.jpg
Дуга_cr.jpg (9.14 КБ) 5539 просмотров
Последний раз редактировалось vistra 24 фев 2012, 15:09, всего редактировалось 2 раза.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение Nick »

Дуга в трех координатах может быть разной.

Вообще дуги рисуются Gкодами G02 и G03, но дуга будет только в двух проекциях. Т.е. например такая строка
G00 X0 Y0 Z0
G02 X100 Y100 Z100 I0 J-100 нарисует дугу из текущей точки (0,0,0) в точку (100,100,100) с центром в точке (0,100,0), но выглядеть как дуга она будет только "сверху", по оси Z будет прямая интерполяция. Т.е. в итоге получится как бы виток спирали или "пружины".

Есть возможность выбора в какой плоскости будет рисоваться дуга, для этого есть 3 специальных Gкода:
G17 - Select XY plane
G18 - Select XZ plane
G19 - Select YZ plane
Т.е. дуга рисоваться будет в обозначенных координатах, а в третьей координате будет прямая интерполяция.

А какая общая задача?
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

Спасибо за быстрый ответ !
Вот бы мне этот кусочек спирали бы да еще и согнуть - т.е. чтобы
сверху она смотрелась как часть окружности – а сбоку – как радуга-дуга.
Выпуклая или вогнутая – по моему капризу.
Собственно – это и есть общая задача.
А глобальная задача - мама – не горюй !
Вот скажите , знатоки .
Моя самописная прога может :
- из дуг нарисовать лепесточек цветочка .Из центра к краю он приподнят Это будет файл 1.
- из этого файла нарисовать цветочек из 4-х лепесточков. Причем отдельные
будут масштабированы , кто по оси Х кто по У иле же по обоим. Это другой файл -2 .
Из этих цветочков , в цикле , поворачивая их на 90 градусов , по желанию некоторые
зеркально или масштабируя – я могу расположить их по периметру. Пройтись фрезой по краю
и снаружи - получится рамка. Это файл третий. Его я могу выполнять в масштабе
как по оси Х так и по У. Отакая блажь. Все это уже работает. Теперь вопрос.

А можно ли все это написать в G- кодах – масштабы – зеркальности – циклы , вложения
и т. д. - без дополнительного высшего образования ?
Вопрос ставится в общем виде - можно ли и насколько сложно это ?
Спасибо
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

" Вообще дуги рисуются Gкодами G02 и G03, но дуга будет только в двух проекциях. Т.е. например такая строка "
Уважаемый Nick !
По поводу термнологии - я правильно понял Ваш ответ - " дуга будет только в одной плоскости "
- а их , как известно , в декартовой системе - три. Только в одной . В других - это уже прямая. Правильно ?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение Nick »

Не совсем так, с математической точки зрения (берем случай G17 - Select XY plane) при выполнении команды G02 все координаты будут меняться по параметрическим функциям от t.
x будет изменяться по cos(t)
y будет изменяться по sin(t)
z будет изменяться линейно по a*t

Вот примерно как будет выглядеть кривая:
Снимок.png (5541 просмотр) <a class='original' href='./download/file.php?id=4325&mode=view' target=_blank>Загрузить оригинал (209.54 КБ)</a>
Сделать как-то по-другому в чистом Gкоде нельзя. Придется разбивать на более маленькие отрезки и интерполировать свою кривую.

А как выглядит твоя траектория? Есть картинка?
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

Добавил в исходный текст. Ну , объемной картинки нет. На рисунке развертка.
Если ее свернуть в цилиндр , или часть цилиндра по оси Х - то это и есть мой вопрос.
Интерполировать кусочками - это я понимаю.... но ведь утомительно...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение Nick »

Т.е. ты хочешь, чтобы дуга была в проекции вдоль прямой (x0,y0,z0), а не (1,0,0) или (0,1,0) и (0,0,1)?
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vmarkiv »

В пост-процессоре забираем участок ,где есть G02 и G03 и получаешь линейно-кусочную аппроксимацию любой криволинейной траектории , я так делаю в таких случаях ...
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

т.е. я понял что выход есть ...однако его нужно как -то вручную корректировать для каждой такой
сложной дуги - и в плоскости ХУ и в плоскости ХZ , скажем. Хорошо.
А теперь представьте себе тот проект - о котором я говорю - десятки цветочков , сотни лепесточков ,
каждый лепесточек из нескольких дуг ... захекаешься , однако , вручную-то.
В общем-то конвертер для линейных перемещений я написал , но ведь сильно много строк получается..
вот если бы G-code понимали такую команду - было бы меньше строк.
Вот например формат моей самописной программы:
x10 y20 hxy5 R z15 hz7 R
что означает - перемещение на х=10 y=20 по дуге в плоскости XY с высотой leub 5 мм по часовой при этом произойдет подъем Z 15 мм по дуге с высотой 7 мм выпуклой
Все это одна строка и выполняется одной командой.
Хотелось бы на Mach3 перейти , там столько красивых кнопочек....
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение Nick »

Для однозначного задания трехмерной дуги, нужно слишком много параметров:
Фактически это получится траектория пересечения двух цилиндров, а это как минимум три прямых в пространстве плюс два радиуса, плюс ориентация - по часовой стрелке или против. Слишком сложно.

Вручную не надо делать, надо программно. Размер программы не так страшен, когда делают 3-х мерную обработку рельефов частенько программу задают отрезочками длинной меньше 1мм на площадь 1000х1000мм, т.е. это вплоть до 1 000 000 строк ;).
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

Понятно..."кривые Буазье....:-))
Эх ! нет в жизни счастья.. !
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение Nick »

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

Также offset кривой Безье это кривая совсем другого класса. В отличие от кривой состоящей из прямых и дуг окружностей - их офсет это тоже кривая из прямых и дуг. А offset тоже может использоваться в программах для компенсации диаметра режущего инструмента.

Лучше всего аппроксимировать или биарками или прямыми отрезками. Кстати, а у тебя есть изображения изделий которые хочешь делать или хотя бы траекторий? Может уже есть готовое решение ;)
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

нет у меня конкретных задач..
вернее задача построить систему с программой для выполнения любых задач
.. в пределах разумного , разумеется..
причем понятную среднему классу трудящихся..
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение Nick »

Это придется сделать компьютер размером со шкаф и прятать туда инженера, который будет спрашивать, чего хотят и посылать в 90% случаев, если задаче не предусмотрена разработчиком :)

А хотя бы для каких станков? Возможно самым правильным решением будет использование какой-нибудь уже существующей CAD/CAM...
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

Станок обычный - трехосевой Step-Dir с конечниками. Поле 1300х650
Не хотца мне изучать по новой АртСам да Corel да Kompas
Имеющаяся самопальная прога очень даже подошла бы именно в силу
уже имеющихся в ней циклов , обработок "картинок " , вложений картинок в картинки и т.д.
Да и привык я к ней. Вот чего -то пропуски шагов стала делать.Не могу найти
Электронику буду менять - на L297 -L6203
да заодно и MACH подключу. Конвертер , разбивающий на элементарные
прямые отрезки я написал - генерируется программа до двух мегабайт.
Если бы Mach3 умел объемную дугу выпиливать - былобы лучше. Все таки самопал - он и везде самопал.
Ну да пусть мегабайты пилит - ему же хуже
Спасибо за помощь .
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение Nick »

А какая длинна отрезка получается?
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

Разные отрезки
скажем выполняется полуокружность , лежащая на Х и вверх выпуклая
Сначала идут длинные отрезки Y и короткие по Х . Где далее 45 градусов
там один шаг по Х один по У ( ну , согласен , тут нужно переделать)
На вершине длинные по Х и короткие по У
Ну то есть как бы вы нарисовали окружность ма-а-ленькими такими ступеньками
vistra
Новичок
Сообщения: 10
Зарегистрирован: 24 фев 2012, 11:15
Репутация: 0
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение vistra »

А вот , кстати , господа , разрешите еще вопрос.
Тот же Mach , ту же дугу выполняя - делает ПООЧЕРЕДНО шаги по Х и У
или же одновременно - тогда движение идет уже под углом 45
При столь малых шагах и невысокой жесткости станков я смысла в этом не вижу ,
но тем не менее ... интересно
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Дуга в трех коогдинатах на Gкоде

Сообщение Nick »

Сигналы шагов идут по LPT - значит сигналы можно передавать одновременно, хотя как ты правильно заметил, нет никакой разницы :).
Ответить

Вернуться в «CAM пакеты»