Математический расчет G02 и G03

Лазерные, плазменные станки, газо- и водорезки, плоттеры.
soulfly
Новичок
Сообщения: 5
Зарегистрирован: 16 июн 2016, 15:24
Репутация: 0
Настоящее имя: Вячеслав
Контактная информация:

Математический расчет G02 и G03

Сообщение soulfly »

Приветствую коллеги
по заданию руководства разрабатываю 3х осевой станок с волоконным лазером для своего производства изделий из металла
на базе контроллера OMRON CP1H. Станок будет управляться с самописного на С# интерпретатора
в который загружаем управляющую программу. Программа пошагово передается на контроллер
а тот в свою очередь выполняет команды управляющей программы. К контроллеру подключены
сервоприводы по протоколу CW/CCW.
Порядок исполнения G-кодов я описал на контроллере, кроме G02 и G03
У меня есть понимание как их описать, но не уверен что мое понимание правильное.
Нужен пример математического расчета круговой интерполяции (движение по кругу, по дугам) точки реза с применением осей X и Y
(неважно, шаговый мотор или сервопривод и какой там протокол)
По сути при получении интерпретатором команды НАПРИМЕР команды G02 X1300 Y820 I0.0 J50 F500, интерпретатор должен
расчитать параметры передаваемые на контроллер и отдать их ему. Эти параметры: Начальная и конечная скорости, ускорения,
торможения и направления движения в импульсах.
И вот затруднение вызвало именно принцип расчета этих параметров. (перевод в импульсы не проблема).
Прошу помощи, может кто сталкивался с таким расчетом на других контроллерах, видел как сделано на существующих,
может с другими протоколами или на микрочипах что нибудь подобное реализовывал.
Любая информация будет полезной. Заранее благодарен.
arkhnchul
Мастер
Сообщения: 1773
Зарегистрирован: 01 фев 2016, 13:56
Репутация: 339
Откуда: москва
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение arkhnchul »

в лоб - раскидайте дугу на кучу крошечных линейных отрезков и их считайте имеющимся планировщиком.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение Сергей Саныч »

Гуглим "алгоритм Брезенхема для дуг".
arkhnchul
Мастер
Сообщения: 1773
Зарегистрирован: 01 фев 2016, 13:56
Репутация: 339
Откуда: москва
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение arkhnchul »

имхо не совсем то, в алгоритме квадратные пиксели, а не произвольно наклоненные отрезки. Хотя с большим их количеством должно прокатить. Останется скорости/ускорения сочинить.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1646
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение N1X »

arkhnchul писал(а):имхо не совсем то
Совсем то. Так все это и работает.
arkhnchul
Мастер
Сообщения: 1773
Зарегистрирован: 01 фев 2016, 13:56
Репутация: 339
Откуда: москва
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение arkhnchul »

фигзнат. Не претендую на истинность в обсуждаемой части, но мо моим воспоминаниям от бесславно пройденного в универе курса "компьютерной графики" - векторная аппроксимация дуг делается весьма и весьма не так, как растровая.
sas_75
Мастер
Сообщения: 463
Зарегистрирован: 10 мар 2015, 11:03
Репутация: 115
Настоящее имя: Сергей
Откуда: Владивосток
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение sas_75 »

Алгоритм Брезенхема позволяет уйти от сложных вычислений к простым операциям суммировпния. Для расчета скорости/ускорения понадобится вычислить количество точек в траектории.
soulfly
Новичок
Сообщения: 5
Зарегистрирован: 16 июн 2016, 15:24
Репутация: 0
Настоящее имя: Вячеслав
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение soulfly »

Спасибо за активность:
arkhnchul » Сегодня, 04:59
фигзнат. Не претендую на истинность в обсуждаемой части, но мо моим воспоминаниям от бесславно пройденного в универе курса "компьютерной графики" - векторная аппроксимация дуг делается весьма и весьма не так, как растровая.
Поддерживаю ответ. Рассматривал алгоритм Брезенхема, НО он подошел бы если контроллер выполнял команды по точкам, то есть перемещение на каждый миллиметр передавалось командой из ПК в ПЛК. Но тут ситуация немного другая. мы получаем управляющую команду переместиться из текущей точки в точку с координатами Х... Y... по правилам G00-03 (с линейной интерполяцией все получилось просто прекрасно). Мое понимание сложилось следующим образом:
Вот мы имеем текущую точку, и поступила команда G02 с некими параметрами X Y I J F. Необходимо произвести математический расчет перемещение по кругу или дуге (если кривая сложная - то обычно постпроцессором она разбивается на несколько частей/дуг с центрами в X+-I и Y+-J). Я представил что оси X и Y должны совместно передвигаться с определенными скоростями и ускорениями/торможениями - и это будет составлять дугу/часть дуги. Для этого я математически перенес описание круга осями с центром в точке (0;0) для упрощение расчетов и расчитал реальный разрезаемый угол по этой окружности от начальной точки до конечной. Далее необходимо расчитать перемещение по осям. Это попробовал сделать так:
Я принял что по оси X скорость будет постоянной и должна равняться F/2, а вот по Y надо двигаться либо с ускорением либо торможением чтобы точка реза начала описывать дугу. И вот тут начинаются проблемы: условно если мы режем целый круг, то этот круг можно разделить на 4 части, в которых отличаются по X - направление движения, по Y - направление + ускорение или торможение. Если мы начинаем рез дуги из углов 0, 90, 180, 270 - то вроде как то получается считать. Ускорение тут расчитывается нормально исходя из радиуса и ускорение начинается с нуля до F, а торможение с F до нуля. А вот если рез начинается не с этих углов. Надо считать начальную скорость или конечную скорость в зависимости от того что это.
Вообщем я начал математически описывать всё это болото (многократно переписывая код из за косяков в попытке создать что то универсальное и короткое по объему). И вроде увидев свет в конце тунеля, не дойдя до конца понял что условий просто куча, расчетов вагон и у меня потерялась уверенность в том что реализация команды по этому алгоритму будет точной (вместо круга овал разрежет или еще что хуже) .
Изрисовал в кругах всю тетрадь А4 формата и теперь совсем руки повисли. Однако - ну делают же станки с круговой интерполяцией и не только по 2м осям. По 3 и т.д. делают. Вот я сижу и второй день думаю - как мне простому смертному быть?
soulfly
Новичок
Сообщения: 5
Зарегистрирован: 16 июн 2016, 15:24
Репутация: 0
Настоящее имя: Вячеслав
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение soulfly »

По расчетам - у меня вроде получается вести их в векторной алгебре.
Пробовал апроксимировать дугу и, просто понял что если сильно мелкий шаг - то команда круговой интерполяции превратиться в 1000 а то и больше команд, пока шаги не закончаться. Да и при резке мелких кругов - не получился бы квадрат :)
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение raddd »

а глянуть исходники linuxcnc и arduino-grbl ?
||||||||||||
||||||||||||
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение raddd »

https://github.com/grbl/grbl/blob/master/grbl/gcode.c
строка 676. там же хорошие коменты.
||||||||||||
||||||||||||
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение raddd »

||||||||||||
||||||||||||
soulfly
Новичок
Сообщения: 5
Зарегистрирован: 16 июн 2016, 15:24
Репутация: 0
Настоящее имя: Вячеслав
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение soulfly »

Вот это очень ценный совет. Спасибо. Я вообще как то не додумался глянуть исходник openSource продуктов. Пробежался по исходнику - код очень похож на мой, только мой сложнее получается.
А кто нибудь подскажет с опытом по LinuxCNC или Mach3 (кто работал с готовыми дешвыми решениями). Там каков принцип управления моторами. Так же пошагово как делаю я или там realtime какой нибудь.
raddd За ответ огромное спасибо. Че то до меня никак такое решение не дошло :)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение Сергей Саныч »

Всё уже украдено придумано до нас. Базовые алгоритмы векторной и пиксельной графики созданы еще тогда, "когда компьютеры были большими, а программы для них - маленькими"
Выкладываю главу из книги "Проектирование радиоэлектронной аппаратуры на микропроцессорах" (1984 год) Может, найдется полезное зернышко :)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение Сергей Саныч »

soulfly писал(а):А кто нибудь подскажет с опытом по LinuxCNC или Mach3 (кто работал с готовыми дешевыми решениями). Там каков принцип управления моторами. Так же пошагово как делаю я или там realtime какой нибудь.
В LCNC - "реалтайм какой-нибудь". При управлении через LPT шаги развешены по временнОй сетке с частотой base thread, как правило, в районе 25-50 кГц. Изменение частоты шага и прочих параметров управления - по сетке с частотой servo thread, обычно 1 кГц. Это если совсем вкратце.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение aftaev »

soulfly, позвольте спросить, а нафига вы делаете если есть готовые ЧПУ программы?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
soulfly
Новичок
Сообщения: 5
Зарегистрирован: 16 июн 2016, 15:24
Репутация: 0
Настоящее имя: Вячеслав
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение soulfly »

дык вот требование для станка определено, что реализация координатного стола должна быть на надежном проверенном ПЛК с технической поддержкой и гарантией.
Стол должен быть универсальным(цепляем лазер, плазму, пробивочный пресс и т.д + возможность перепрограммирования + восприятие сотрудниками технологии с сервоприводами для дальнейшей разработки станков и линий производств собственного цеха) и расширяемым по оборудованию (можно добавить аналоговые и дискретные входы/выходы).
В качестве управляющего устройства выбран OMRON (цена/качество/возможности).
ЧПУ программу я не пишу (постольку поскольку) - из Автокада я получаю чертех DXF, беру SheetCAM или др. КАМ программы и посредством простого постпроцессора
превращаю чертеж в управляющую программу из G-кодов. А Моя программа как раз предназначена для хранения таких заготовленных изделий, конвертации
кода в понятный для него язык (импульсы, направления и т.д. что там он еще умеет), передачи ентого дела на контроллер и контроль выполнения + управление перефирией (охлаждение и всякое всякое что только руководителю в голову взбредет). Думал про внедрение графики (простенькой для отслеживания реального положения и перемещения точки реза, тем более что OMRON умеет такое отдавать инкрементным энкодером, но пока нафиг).
Программа проста как валенок (специально для неподготовленных пользователей с одной большой кнопкой НАЧАТЬ). И времени я на нее убил вместе с программированием ПЛК - где то месяц без отрыва от своего основного производства.

Вот как то так
Oxford
Мастер
Сообщения: 415
Зарегистрирован: 28 мар 2015, 02:55
Репутация: -21
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение Oxford »

G02 G03 имеет два варианта записи. Но по сути можно вообще без них. не обязательно их юзать. Линеинои интерполяции достаточно. единственное просто размер фаила будет больше. Поэтому можно забить на них. Лично я бы так и сделал. CAM сам развернет все.
fat_robot
Опытный
Сообщения: 114
Зарегистрирован: 23 янв 2015, 13:21
Репутация: 36
Настоящее имя: Смирнов Петр Евгеньевич
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение fat_robot »

Oxford писал(а):G02 G03 имеет два варианта записи. Но по сути можно вообще без них. не обязательно их юзать. Линеинои интерполяции достаточно. единственное просто размер фаила будет больше. Поэтому можно забить на них. Лично я бы так и сделал. CAM сам развернет все.
Воистину, иногда лучше молчать, чем говорить.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Математический расчет G02 и G03

Сообщение aftaev »

soulfly писал(а):В качестве управляющего устройства выбран OMRON (цена/качество/возможности).
У Омрона или Мицубиськи есть контроллеры с поддержкой Gcode.

Как то переоборудовали китайский ЧПУ станок. Там как раз стоял подобный контроллер + комп + сервы. Работали так: включается комп, грузится винда и программка чертилка. Оператор либо через клаву или тачэкран набивал координаты, жмакает кнопку отправить и из компа по СОМ программа заливается в контроллер. На ящике станка нажимается найти НОМЕ, станок един на концевики и после этого станок готов выполнять работу. Но сложность в том что все на английском и умели работать на нем только малая часть работников. Внести изменения в контроллер нельзя, нет ни у кого исходников и все запаролено.

Нас попросили сделать что нибудь на русском и чтобы любой работник знакомый с компом мог работать.
Взяли и выбросили этот контроллер(Мицубиси) в комп установили Mach3. Убрали все лишнее и нарисовали мастер.
Это дешевле чем ставить контроллер и писать под него программу. Программа Mach3 стоит 180$ демо(бесплатная) версия работает что то до 500 строк Gcode.
01.png (5996 просмотров) <a class='original' href='./download/file.php?id=83019&mode=view' target=_blank>Загрузить оригинал (281.03 КБ)</a>
При нажатии кнопки ввести чертеж появляется это окно. Где вводятся координаты отверстий.
02.png (5996 просмотров) <a class='original' href='./download/file.php?id=83020&mode=view' target=_blank>Загрузить оригинал (362.1 КБ)</a>
Так же можно взять Lcnc и пересовать его так что мало кто догадается что это Lcnc :)
На форуме есть selenur, он написал программку под дешовый USB контроллер. Контроллер стоит что то 30-50$.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Ответить

Вернуться в «Лазерные, плазменные и другие раскроечные станки»