Страница 1 из 1

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

Добавлено: 24 фев 2012, 12:06
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 КБ) 6213 просмотров

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

Добавлено: 24 фев 2012, 12:14
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
Т.е. дуга рисоваться будет в обозначенных координатах, а в третьей координате будет прямая интерполяция.

А какая общая задача?

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

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

А можно ли все это написать в G- кодах – масштабы – зеркальности – циклы , вложения
и т. д. - без дополнительного высшего образования ?
Вопрос ставится в общем виде - можно ли и насколько сложно это ?
Спасибо

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

Добавлено: 24 фев 2012, 14:15
vistra
" Вообще дуги рисуются Gкодами G02 и G03, но дуга будет только в двух проекциях. Т.е. например такая строка "
Уважаемый Nick !
По поводу термнологии - я правильно понял Ваш ответ - " дуга будет только в одной плоскости "
- а их , как известно , в декартовой системе - три. Только в одной . В других - это уже прямая. Правильно ?

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

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

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

А как выглядит твоя траектория? Есть картинка?

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

Добавлено: 24 фев 2012, 15:08
vistra
Добавил в исходный текст. Ну , объемной картинки нет. На рисунке развертка.
Если ее свернуть в цилиндр , или часть цилиндра по оси Х - то это и есть мой вопрос.
Интерполировать кусочками - это я понимаю.... но ведь утомительно...

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

Добавлено: 24 фев 2012, 16:01
Nick
Т.е. ты хочешь, чтобы дуга была в проекции вдоль прямой (x0,y0,z0), а не (1,0,0) или (0,1,0) и (0,0,1)?

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

Добавлено: 24 фев 2012, 16:12
vmarkiv
В пост-процессоре забираем участок ,где есть G02 и G03 и получаешь линейно-кусочную аппроксимацию любой криволинейной траектории , я так делаю в таких случаях ...

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

Добавлено: 24 фев 2012, 16:37
vistra
т.е. я понял что выход есть ...однако его нужно как -то вручную корректировать для каждой такой
сложной дуги - и в плоскости ХУ и в плоскости ХZ , скажем. Хорошо.
А теперь представьте себе тот проект - о котором я говорю - десятки цветочков , сотни лепесточков ,
каждый лепесточек из нескольких дуг ... захекаешься , однако , вручную-то.
В общем-то конвертер для линейных перемещений я написал , но ведь сильно много строк получается..
вот если бы G-code понимали такую команду - было бы меньше строк.
Вот например формат моей самописной программы:
x10 y20 hxy5 R z15 hz7 R
что означает - перемещение на х=10 y=20 по дуге в плоскости XY с высотой leub 5 мм по часовой при этом произойдет подъем Z 15 мм по дуге с высотой 7 мм выпуклой
Все это одна строка и выполняется одной командой.
Хотелось бы на Mach3 перейти , там столько красивых кнопочек....

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

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

Вручную не надо делать, надо программно. Размер программы не так страшен, когда делают 3-х мерную обработку рельефов частенько программу задают отрезочками длинной меньше 1мм на площадь 1000х1000мм, т.е. это вплоть до 1 000 000 строк ;).

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

Добавлено: 24 фев 2012, 17:29
vistra
Понятно..."кривые Буазье....:-))
Эх ! нет в жизни счастья.. !

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

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

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

Лучше всего аппроксимировать или биарками или прямыми отрезками. Кстати, а у тебя есть изображения изделий которые хочешь делать или хотя бы траекторий? Может уже есть готовое решение ;)

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

Добавлено: 24 фев 2012, 19:43
vistra
нет у меня конкретных задач..
вернее задача построить систему с программой для выполнения любых задач
.. в пределах разумного , разумеется..
причем понятную среднему классу трудящихся..

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

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

А хотя бы для каких станков? Возможно самым правильным решением будет использование какой-нибудь уже существующей CAD/CAM...

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

Добавлено: 24 фев 2012, 23:08
vistra
Станок обычный - трехосевой Step-Dir с конечниками. Поле 1300х650
Не хотца мне изучать по новой АртСам да Corel да Kompas
Имеющаяся самопальная прога очень даже подошла бы именно в силу
уже имеющихся в ней циклов , обработок "картинок " , вложений картинок в картинки и т.д.
Да и привык я к ней. Вот чего -то пропуски шагов стала делать.Не могу найти
Электронику буду менять - на L297 -L6203
да заодно и MACH подключу. Конвертер , разбивающий на элементарные
прямые отрезки я написал - генерируется программа до двух мегабайт.
Если бы Mach3 умел объемную дугу выпиливать - былобы лучше. Все таки самопал - он и везде самопал.
Ну да пусть мегабайты пилит - ему же хуже
Спасибо за помощь .

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

Добавлено: 24 фев 2012, 23:26
Nick
А какая длинна отрезка получается?

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

Добавлено: 25 фев 2012, 18:37
vistra
Разные отрезки
скажем выполняется полуокружность , лежащая на Х и вверх выпуклая
Сначала идут длинные отрезки Y и короткие по Х . Где далее 45 градусов
там один шаг по Х один по У ( ну , согласен , тут нужно переделать)
На вершине длинные по Х и короткие по У
Ну то есть как бы вы нарисовали окружность ма-а-ленькими такими ступеньками

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

Добавлено: 25 фев 2012, 18:43
vistra
А вот , кстати , господа , разрешите еще вопрос.
Тот же Mach , ту же дугу выполняя - делает ПООЧЕРЕДНО шаги по Х и У
или же одновременно - тогда движение идет уже под углом 45
При столь малых шагах и невысокой жесткости станков я смысла в этом не вижу ,
но тем не менее ... интересно

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

Добавлено: 26 фев 2012, 20:38
Nick
Сигналы шагов идут по LPT - значит сигналы можно передавать одновременно, хотя как ты правильно заметил, нет никакой разницы :).