Дуга в трех коогдинатах на Gкоде
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Дуга в трех коогдинатах на Gкоде
Здравствуйте !
Не могли бы Вы подсказать новичку - как будет выглядеть строка G-code,
выполняющая дугу. Не простую. А сразу в трех координатах.
Фрезерный станок. Фреза поднимается по оси Z. Нужно выполнить дугу.
Например - исходная точка X=0 Y=0 Z=0
конечная точка X-10 Y=20 ( в плоскости X Y по дуге , по часовой стрелке . Высота дуги 5 мм. )
Конечная точка по оси Z = 30 мм , подъем также по дуге ,высота дуги 7 мм.
Дуга выпуклая.
Можно ли это записать одной строкой ? Напишите , пожалуйста , если не трудно.
Если нет , то как можно описать такую дугу ?
В G-code можно задавать такой параметр как «высота дуги» или же только координаты центра ?
Пытался разобраться сам , но слова «кривые Буазье» перепугали меня насмерть.
Но если я смогу осознать Ваш ответ , то начну учиться с этого примера как с “Hello , world !” . У меня самодельный станок и самописная программа, но обдумываю Mach3.
А эта команда для меня базовая.
Вот например развертка
Спасибо!
Не могли бы Вы подсказать новичку - как будет выглядеть строка G-code,
выполняющая дугу. Не простую. А сразу в трех координатах.
Фрезерный станок. Фреза поднимается по оси Z. Нужно выполнить дугу.
Например - исходная точка X=0 Y=0 Z=0
конечная точка X-10 Y=20 ( в плоскости X Y по дуге , по часовой стрелке . Высота дуги 5 мм. )
Конечная точка по оси Z = 30 мм , подъем также по дуге ,высота дуги 7 мм.
Дуга выпуклая.
Можно ли это записать одной строкой ? Напишите , пожалуйста , если не трудно.
Если нет , то как можно описать такую дугу ?
В G-code можно задавать такой параметр как «высота дуги» или же только координаты центра ?
Пытался разобраться сам , но слова «кривые Буазье» перепугали меня насмерть.
Но если я смогу осознать Ваш ответ , то начну учиться с этого примера как с “Hello , world !” . У меня самодельный станок и самописная программа, но обдумываю Mach3.
А эта команда для меня базовая.
Вот например развертка
Спасибо!
Последний раз редактировалось vistra 24 фев 2012, 15:09, всего редактировалось 2 раза.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Дуга в трех координатах может быть разной.
Вообще дуги рисуются 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
Т.е. дуга рисоваться будет в обозначенных координатах, а в третьей координате будет прямая интерполяция.
А какая общая задача?
Вообще дуги рисуются 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
Т.е. дуга рисоваться будет в обозначенных координатах, а в третьей координате будет прямая интерполяция.
А какая общая задача?
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Спасибо за быстрый ответ !
Вот бы мне этот кусочек спирали бы да еще и согнуть - т.е. чтобы
сверху она смотрелась как часть окружности – а сбоку – как радуга-дуга.
Выпуклая или вогнутая – по моему капризу.
Собственно – это и есть общая задача.
А глобальная задача - мама – не горюй !
Вот скажите , знатоки .
Моя самописная прога может :
- из дуг нарисовать лепесточек цветочка .Из центра к краю он приподнят Это будет файл 1.
- из этого файла нарисовать цветочек из 4-х лепесточков. Причем отдельные
будут масштабированы , кто по оси Х кто по У иле же по обоим. Это другой файл -2 .
Из этих цветочков , в цикле , поворачивая их на 90 градусов , по желанию некоторые
зеркально или масштабируя – я могу расположить их по периметру. Пройтись фрезой по краю
и снаружи - получится рамка. Это файл третий. Его я могу выполнять в масштабе
как по оси Х так и по У. Отакая блажь. Все это уже работает. Теперь вопрос.
А можно ли все это написать в G- кодах – масштабы – зеркальности – циклы , вложения
и т. д. - без дополнительного высшего образования ?
Вопрос ставится в общем виде - можно ли и насколько сложно это ?
Спасибо
Вот бы мне этот кусочек спирали бы да еще и согнуть - т.е. чтобы
сверху она смотрелась как часть окружности – а сбоку – как радуга-дуга.
Выпуклая или вогнутая – по моему капризу.
Собственно – это и есть общая задача.
А глобальная задача - мама – не горюй !
Вот скажите , знатоки .
Моя самописная прога может :
- из дуг нарисовать лепесточек цветочка .Из центра к краю он приподнят Это будет файл 1.
- из этого файла нарисовать цветочек из 4-х лепесточков. Причем отдельные
будут масштабированы , кто по оси Х кто по У иле же по обоим. Это другой файл -2 .
Из этих цветочков , в цикле , поворачивая их на 90 градусов , по желанию некоторые
зеркально или масштабируя – я могу расположить их по периметру. Пройтись фрезой по краю
и снаружи - получится рамка. Это файл третий. Его я могу выполнять в масштабе
как по оси Х так и по У. Отакая блажь. Все это уже работает. Теперь вопрос.
А можно ли все это написать в G- кодах – масштабы – зеркальности – циклы , вложения
и т. д. - без дополнительного высшего образования ?
Вопрос ставится в общем виде - можно ли и насколько сложно это ?
Спасибо
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
" Вообще дуги рисуются Gкодами G02 и G03, но дуга будет только в двух проекциях. Т.е. например такая строка "
Уважаемый Nick !
По поводу термнологии - я правильно понял Ваш ответ - " дуга будет только в одной плоскости "
- а их , как известно , в декартовой системе - три. Только в одной . В других - это уже прямая. Правильно ?
Уважаемый Nick !
По поводу термнологии - я правильно понял Ваш ответ - " дуга будет только в одной плоскости "
- а их , как известно , в декартовой системе - три. Только в одной . В других - это уже прямая. Правильно ?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Не совсем так, с математической точки зрения (берем случай G17 - Select XY plane) при выполнении команды G02 все координаты будут меняться по параметрическим функциям от t.
x будет изменяться по cos(t)
y будет изменяться по sin(t)
z будет изменяться линейно по a*t
Вот примерно как будет выглядеть кривая: Сделать как-то по-другому в чистом Gкоде нельзя. Придется разбивать на более маленькие отрезки и интерполировать свою кривую.
А как выглядит твоя траектория? Есть картинка?
x будет изменяться по cos(t)
y будет изменяться по sin(t)
z будет изменяться линейно по a*t
Вот примерно как будет выглядеть кривая: Сделать как-то по-другому в чистом Gкоде нельзя. Придется разбивать на более маленькие отрезки и интерполировать свою кривую.
А как выглядит твоя траектория? Есть картинка?
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Добавил в исходный текст. Ну , объемной картинки нет. На рисунке развертка.
Если ее свернуть в цилиндр , или часть цилиндра по оси Х - то это и есть мой вопрос.
Интерполировать кусочками - это я понимаю.... но ведь утомительно...
Если ее свернуть в цилиндр , или часть цилиндра по оси Х - то это и есть мой вопрос.
Интерполировать кусочками - это я понимаю.... но ведь утомительно...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Т.е. ты хочешь, чтобы дуга была в проекции вдоль прямой (x0,y0,z0), а не (1,0,0) или (0,1,0) и (0,0,1)?
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
В пост-процессоре забираем участок ,где есть G02 и G03 и получаешь линейно-кусочную аппроксимацию любой криволинейной траектории , я так делаю в таких случаях ...
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
т.е. я понял что выход есть ...однако его нужно как -то вручную корректировать для каждой такой
сложной дуги - и в плоскости ХУ и в плоскости ХZ , скажем. Хорошо.
А теперь представьте себе тот проект - о котором я говорю - десятки цветочков , сотни лепесточков ,
каждый лепесточек из нескольких дуг ... захекаешься , однако , вручную-то.
В общем-то конвертер для линейных перемещений я написал , но ведь сильно много строк получается..
вот если бы G-code понимали такую команду - было бы меньше строк.
Вот например формат моей самописной программы:
x10 y20 hxy5 R z15 hz7 R
что означает - перемещение на х=10 y=20 по дуге в плоскости XY с высотой leub 5 мм по часовой при этом произойдет подъем Z 15 мм по дуге с высотой 7 мм выпуклой
Все это одна строка и выполняется одной командой.
Хотелось бы на Mach3 перейти , там столько красивых кнопочек....
сложной дуги - и в плоскости ХУ и в плоскости Х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коде
Для однозначного задания трехмерной дуги, нужно слишком много параметров:
Фактически это получится траектория пересечения двух цилиндров, а это как минимум три прямых в пространстве плюс два радиуса, плюс ориентация - по часовой стрелке или против. Слишком сложно.
Вручную не надо делать, надо программно. Размер программы не так страшен, когда делают 3-х мерную обработку рельефов частенько программу задают отрезочками длинной меньше 1мм на площадь 1000х1000мм, т.е. это вплоть до 1 000 000 строк .
Фактически это получится траектория пересечения двух цилиндров, а это как минимум три прямых в пространстве плюс два радиуса, плюс ориентация - по часовой стрелке или против. Слишком сложно.
Вручную не надо делать, надо программно. Размер программы не так страшен, когда делают 3-х мерную обработку рельефов частенько программу задают отрезочками длинной меньше 1мм на площадь 1000х1000мм, т.е. это вплоть до 1 000 000 строк .
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Понятно..."кривые Буазье....)
Эх ! нет в жизни счастья.. !
Эх ! нет в жизни счастья.. !
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
С кривыми Безье тоже лучше быть аккуратнее, не все программы их понимают. С этими кривыми не так просто работать, например вычисление длинны сегмента кривой Безье не выражается алгебраически и вычислять ее можно только численными методами. А эти вычисления нужно делать постоянно, для определения ускорений.
Также offset кривой Безье это кривая совсем другого класса. В отличие от кривой состоящей из прямых и дуг окружностей - их офсет это тоже кривая из прямых и дуг. А offset тоже может использоваться в программах для компенсации диаметра режущего инструмента.
Лучше всего аппроксимировать или биарками или прямыми отрезками. Кстати, а у тебя есть изображения изделий которые хочешь делать или хотя бы траекторий? Может уже есть готовое решение
Также offset кривой Безье это кривая совсем другого класса. В отличие от кривой состоящей из прямых и дуг окружностей - их офсет это тоже кривая из прямых и дуг. А offset тоже может использоваться в программах для компенсации диаметра режущего инструмента.
Лучше всего аппроксимировать или биарками или прямыми отрезками. Кстати, а у тебя есть изображения изделий которые хочешь делать или хотя бы траекторий? Может уже есть готовое решение
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
нет у меня конкретных задач..
вернее задача построить систему с программой для выполнения любых задач
.. в пределах разумного , разумеется..
причем понятную среднему классу трудящихся..
вернее задача построить систему с программой для выполнения любых задач
.. в пределах разумного , разумеется..
причем понятную среднему классу трудящихся..
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Это придется сделать компьютер размером со шкаф и прятать туда инженера, который будет спрашивать, чего хотят и посылать в 90% случаев, если задаче не предусмотрена разработчиком
А хотя бы для каких станков? Возможно самым правильным решением будет использование какой-нибудь уже существующей CAD/CAM...
А хотя бы для каких станков? Возможно самым правильным решением будет использование какой-нибудь уже существующей CAD/CAM...
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Станок обычный - трехосевой Step-Dir с конечниками. Поле 1300х650
Не хотца мне изучать по новой АртСам да Corel да Kompas
Имеющаяся самопальная прога очень даже подошла бы именно в силу
уже имеющихся в ней циклов , обработок "картинок " , вложений картинок в картинки и т.д.
Да и привык я к ней. Вот чего -то пропуски шагов стала делать.Не могу найти
Электронику буду менять - на L297 -L6203
да заодно и MACH подключу. Конвертер , разбивающий на элементарные
прямые отрезки я написал - генерируется программа до двух мегабайт.
Если бы Mach3 умел объемную дугу выпиливать - былобы лучше. Все таки самопал - он и везде самопал.
Ну да пусть мегабайты пилит - ему же хуже
Спасибо за помощь .
Не хотца мне изучать по новой АртСам да Corel да Kompas
Имеющаяся самопальная прога очень даже подошла бы именно в силу
уже имеющихся в ней циклов , обработок "картинок " , вложений картинок в картинки и т.д.
Да и привык я к ней. Вот чего -то пропуски шагов стала делать.Не могу найти
Электронику буду менять - на L297 -L6203
да заодно и MACH подключу. Конвертер , разбивающий на элементарные
прямые отрезки я написал - генерируется программа до двух мегабайт.
Если бы Mach3 умел объемную дугу выпиливать - былобы лучше. Все таки самопал - он и везде самопал.
Ну да пусть мегабайты пилит - ему же хуже
Спасибо за помощь .
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
А какая длинна отрезка получается?
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Разные отрезки
скажем выполняется полуокружность , лежащая на Х и вверх выпуклая
Сначала идут длинные отрезки Y и короткие по Х . Где далее 45 градусов
там один шаг по Х один по У ( ну , согласен , тут нужно переделать)
На вершине длинные по Х и короткие по У
Ну то есть как бы вы нарисовали окружность ма-а-ленькими такими ступеньками
скажем выполняется полуокружность , лежащая на Х и вверх выпуклая
Сначала идут длинные отрезки Y и короткие по Х . Где далее 45 градусов
там один шаг по Х один по У ( ну , согласен , тут нужно переделать)
На вершине длинные по Х и короткие по У
Ну то есть как бы вы нарисовали окружность ма-а-ленькими такими ступеньками
-
- Новичок
- Сообщения: 10
- Зарегистрирован: 24 фев 2012, 11:15
- Репутация: 0
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
А вот , кстати , господа , разрешите еще вопрос.
Тот же Mach , ту же дугу выполняя - делает ПООЧЕРЕДНО шаги по Х и У
или же одновременно - тогда движение идет уже под углом 45
При столь малых шагах и невысокой жесткости станков я смысла в этом не вижу ,
но тем не менее ... интересно
Тот же Mach , ту же дугу выполняя - делает ПООЧЕРЕДНО шаги по Х и У
или же одновременно - тогда движение идет уже под углом 45
При столь малых шагах и невысокой жесткости станков я смысла в этом не вижу ,
но тем не менее ... интересно
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Дуга в трех коогдинатах на Gкоде
Сигналы шагов идут по LPT - значит сигналы можно передавать одновременно, хотя как ты правильно заметил, нет никакой разницы .