Страница 2 из 11

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 09 авг 2017, 13:44
Сергей Саныч
S-кривую разгона надо строить исходя не из умозрительных представлений (квадратичная, кубическая...), а обеспечивать минимизацию высших производных по времени от перемещения (третьей и выше).
И главное, не забывать, что это должно работать на реальном станке и приносить какую-то пользу (сокращение времени обработки, уменьшение вибраций).
А так - просто упражнение в программировании. Хотя и это неплохо :)

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 09 авг 2017, 14:29
MX_Master
Сергей Саныч писал(а):S-кривую разгона надо строить исходя не из умозрительных представлений (квадратичная, кубическая...), а обеспечивать минимизацию высших производных по времени от перемещения (третьей и выше).
И главное, не забывать, что это должно работать на реальном станке и приносить какую-то пользу (сокращение времени обработки, уменьшение вибраций).
А так - просто упражнение в программировании. Хотя и это неплохо :)
Приведите наглядный пример, формулу. Ну а насчёт программирования, помню давали на информатике задачку в Турбо Паскале, но я её решил таким способом, который учитель не знал. А всё потому, что я не знал "как надо".
Bender писал(а):График разгона это функция от времени(F(t)) а не от позиции...
Приведи наглядный пример.
Shkryab писал(а):А почему бы не использовать кусочно-линейную интерполяцию? Вся математика сведётся к сложению-вычитанию и, возможно, табличному преобразованию...
На высоких частотах примерно так и будет, т.к. перерасчёт и изменение скорости происходит с частотой 10 КГц.
ВСЕМ
Буду пробовать все варианты (и те, которые подскажите) на своём станочке с 86-ми шаговиками (118мм). У меня там и ШВП есть, и прямая зубчатая передача, и зубчатая передача через планетарный редуктор. Вощем, есть место для ширины испытаний.

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 09 авг 2017, 14:52
Сергей Саныч
MX_Master писал(а):Приведите наглядный пример, формулу.
Если есть в упомянутой выше программе дифференцирование, то легко можно проанализировать и сделать выводы, какие функции больше подходят.
Готовых формул у меня нет, но если бы я занялся этим вопросом, то прежде всего сделал бы математическую проработку.

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 09 авг 2017, 15:49
MX_Master
Попробую прикинуть формулы сегментов для F(t)
img-Mw44rl.png (2323 просмотра) <a class='original' href='./download/file.php?id=117800&mode=view' target=_blank>Загрузить оригинал (68.84 КБ)</a>

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 02:43
spike
Сергей Саныч писал(а):S-кривую разгона надо строить исходя не из умозрительных представлений (квадратичная, кубическая...), а обеспечивать минимизацию высших производных по времени от перемещения (третьей и выше).
Кривую разгона, конечно, нужно строить в соответствии с физикой (школьной вполне достаточно для начала). А вот минимизировать нужно время прохождения траектории при отсутствии превышений заданных значений производных.
Сергей Саныч писал(а):прежде всего сделал бы математическую проработку
Обязательно и необходимо сначала создать математическую модель. MathCAD, MathLAB - в помощь, а не калькулятор прикольный (красиво, конечно, но...)

Исключительно для того чтобы светлая голова не упражнялась в "циферкогонянии", а озадачилась действительно задачей, напоминаю:
1. Путь измеряется в метрах (шагах);
2. Скорость измеряется в метрах в секунду (шагах в секунду);
3. Ускорение - это скорость изменения скорости - вторая производная функции позиции от времени - измеряется в м/(с*c) или в шагах/с/с;
и в виде подсказки:
4. Есть секреты (не мои);
5. Почти все врут (ну или просто не афишируют ;) ) - насчет кривых, и, особенно, "S"...

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 03:54
MX_Master
Как много хороших советов, аж выбрать никак не могу )))

Для такой фигни матлаб не нужен. Сделаем трехсегментный разгон, и чтоб процент каждого можно было менять. Вечером графики запилю.

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 08:46
solo
тема очень интересная но я к моему глубокому сожалению мало, что понимаю
но читая аналогичные темы была сказано (не мною), что основная проблема S образной кривой разгона это в текущий момент просчитать конечную точку остановки ....
MX_Master писал(а):Сделаем трехсегментный разгон
а если сделать таблицу ускорений в зависимости от текущей скорости и в расчетах использовать то ускорение в зависимости от того с какой скоростью в данный момент движется станок , ведь как правило ШД с ростом скорости момент теряет и соответственно станок может двигаться с меньшим ускорением , но большей скоростью , а на малых скоростях , рабочей подаче , можно использовать большее ускорение . Как правило сейчас станок настраивается на мах скорость, а это приводит к тому, что ускорение снижается и выполнение Ж кода замедляется ......

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 08:57
Сергей Саныч
solo писал(а):основная проблема S образной кривой разгона это в текущий момент просчитать конечную точку остановки ....
Да бог бы с ней, с конечной точкой. Вот как обеспечить, чтобы все промежуточные точки траектории на минимум трех осях совпадали :thinking:
Поэтому максимум что встречал с S-кривой - это реализация команды G0. Когда важна только конечная точка, а траекторию никто не гарантирует.
Ну и еще вариант небольшого "смягчения углов" на кривой скорости. В пределах допустимых погрешностей, как сделано в Степмастере.
solo писал(а):а на малых скоростях , рабочей подаче , можно использовать большее ускорение . Как правило сейчас станок настраивается на мах скорость, а это приводит к тому, что ускорение снижается и выполнение Ж кода замедляется ......
я задавался этим вопросом, когда только-только начинал разбираться с LinuxCNC Динамическое управление ускорением #1

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 09:56
wldev
Ну вы блин даёте... у меня в WLMotion S разгон и по линии и по кругу и всё совпадает...

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 10:05
michael-yurov
Bender писал(а):Ну вы блин даёте... у меня в WLMotion S разгон и по линии и по кругу и всё совпадает...
Ну вот а нам простым смертным вопрос кажется довольно сложным.
Как реализовать S-кривую для дуги в многомерном пространстве с учетом разных допустимых скоростей и ускорений по осям я еще понимаю...
но как при этом еще и сегменты состыковать и корректно рассчитать допустимые скорости на каждом стыке - мне очень сложно представить.
К сожалению, классический метод соединения дугами с допустимым отклонением от вершины мне не очень нравится.
Вопрос расчета S-кривой по многомерной траектории усугубляет то, что задача может иметь множество вариантов решения, и как найти лучший я не представляю. Представляю лишь, как отобрать наиболее удачный из нескольких.
P.S. правда я и не пытаюсь решать данную задачу. Передо мной сейчас стоят другие сложные для меня вопросы по схожей теме.

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 10:29
wldev
michael-yurov писал(а):Ну вот а нам простым смертным вопрос кажется довольно сложным.
Ну зачем же так)))
michael-yurov писал(а):но как при этом еще и сегменты состыковать и корректно рассчитать допустимые скорости на каждом стыке - мне очень сложно представить.
Ну вот например:
1. Вставляйте стыковочный элемент(ы) в таекторию, например дугу, эллипс, спираль, линии....
2. Делаете что то на подобие ПИДа для каждой оси, который не даст резко изменить скорость. это даст вам сглаживание. И одновременно сигнализирует о необходимости снижения скорости движения по траектории.
michael-yurov писал(а):Вопрос усугубляет то, что задача может иметь множество вариантов решения, и как найти лучший я не представляю. Представляю лишь, как отобрать наиболее удачный из нескольких.
У нас на производстве есть пром роботы KUKA(6 угловых координат) вот когда я начал рассчитывать обратную кинематику.. (из X Y Z A B C в A0---A6) вот там действительно множество решений... и надо выбрать один

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 10:45
michael-yurov
(для просмотра содержимого нажмите на ссылку)
Bender писал(а):Ну вот например:
1. Вставляйте стыковочный элемент(ы) в таекторию, например дугу, эллипс, спираль, линии....
2. Делаете что то на подобие ПИДа для каждой оси, который не даст резко изменить скорость. это даст вам сглаживание. И одновременно сигнализирует о необходимости снижения скорости движения по траектории
Да, понимаю. Это классический алгоритм, используемый в большинстве планировщиков движения. Он математически точен,
но я пошел по другому пути с более хитрыми рекурсивными вычислениями с оптимизацией за счет нескольких итераций. Такой подход ближе к реальной физике и больше похож на принятие решений человеческом в подобных задачах.
В данный момент ломаю голову над тем, как минимизировать количество настроек для такого планировщика, сделать их более понятными и не дать человеку, задающему настройки, ошибиться.

Вот, интерфейс окна настроек уже набросал:
131927-interface.jpg (2243 просмотра) <a class='original' href='./download/file.php?id=117870&mode=view' target=_blank>Загрузить оригинал (1.3 МБ)</a>

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 10:57
wldev
michael-yurov писал(а):В данный момент ломаю голову над тем, как минимизировать количество настроек для такого планировщика, сделать их более понятными и не дать человеку, задающему настройки, ошибиться.
В любом случае все "отхождения" от траектории должны быть предсказуемыми и лимитированными.
michael-yurov писал(а):В данный момент ломаю голову над тем, как минимизировать количество настроек для такого планировщика, сделать их более понятными и не дать человеку, задающему настройки, ошибиться.
Понятно, я для этого и сделал отображение реальной траектории перед её выполнением, для понимания и избежания ошибок.

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 11:17
Serg
Bender писал(а):Ну вы блин даёте... у меня в WLMotion S разгон и по линии и по кругу и всё совпадает...
Это тебе так кажется... :)
Оно в принципе и будет примерно совпадать, если одновременно работающие оси будут с примерно одинаковыми характеристиками (ускорениями).
(для просмотра содержимого нажмите на ссылку)
P.S. Сейчас кое кто придёт и объяснит вам, что всё дело в правильных приводах, а планировщик тут вообще не при делах... :)

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 11:18
Сергей Саныч
michael-yurov писал(а):Вот, интерфейс окна настроек уже набросал:
А что, всё просто. Интуитивно понятно. И дата релиза указана - 15 мая 2045 года :hehehe:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 11:23
michael-yurov
Bender писал(а):Понятно, я для этого и сделал отображение реальной траектории перед её выполнением, для понимания и избежания ошибок.
В моем случае речь идет о микронах, и увидеть это на экране проблемно.

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 11:23
wldev
UAVpilot писал(а):Оно в принципе и будет примерно совпадать, если одновременно работающие оси будут с примерно одинаковыми характеристиками (ускорениями).
Перед перемещением происходит адаптация параметров движения так, чтобы все оси смогли всё отработать.

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 11:25
wldev
michael-yurov писал(а):В моем случае речь идет о микронах, и увидеть это на экране проблемно.
Ну если в масштабе 1:1 то да)))

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 11:32
Serg
Bender писал(а):Перед перемещением происходит адаптация параметров движения так, чтобы все оси смогли всё отработать.
И тут-то и возникает "неудобный" вопрос: а нафик тогда всё эти S-кривые, если все оси кроме самой медленной будут разгонятся и тормозить не по своим оптимальным S-кривым, а согласно характеристикам самой медленной (самой тажёлой) оси?..

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Добавлено: 10 авг 2017, 11:41
wldev
UAVpilot писал(а): И тут-то и возникает "неудобный" вопрос: а нафик тогда всё эти S-кривые
Она нужна для плавности движения, чтобы небыло резких изменений ускорения....
UAVpilot писал(а):если все оси кроме самой медленной будут разгонятся и тормозить не по своим оптимальным S-кривым, а согласно характеристикам самой медленной (самой тажёлой) оси?..
Конечно! скорость станка в итоге всегда будет ограничена самой медленной осью...

поэтому и строят станки чтобы характеристики всех осей были примерно одинаковыми... :beer_blow: