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

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

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

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

S-кривую разгона надо строить исходя не из умозрительных представлений (квадратичная, кубическая...), а обеспечивать минимизацию высших производных по времени от перемещения (третьей и выше).
И главное, не забывать, что это должно работать на реальном станке и приносить какую-то пользу (сокращение времени обработки, уменьшение вибраций).
А так - просто упражнение в программировании. Хотя и это неплохо :)
Чудес не бывает. Бывают фокусы.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

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

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

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

MX_Master писал(а):Приведите наглядный пример, формулу.
Если есть в упомянутой выше программе дифференцирование, то легко можно проанализировать и сделать выводы, какие функции больше подходят.
Готовых формул у меня нет, но если бы я занялся этим вопросом, то прежде всего сделал бы математическую проработку.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Попробую прикинуть формулы сегментов для F(t)
img-Mw44rl.png (2310 просмотров) <a class='original' href='./download/file.php?id=117800&mode=view' target=_blank>Загрузить оригинал (68.84 КБ)</a>
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

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

Сообщение spike »

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

Исключительно для того чтобы светлая голова не упражнялась в "циферкогонянии", а озадачилась действительно задачей, напоминаю:
1. Путь измеряется в метрах (шагах);
2. Скорость измеряется в метрах в секунду (шагах в секунду);
3. Ускорение - это скорость изменения скорости - вторая производная функции позиции от времени - измеряется в м/(с*c) или в шагах/с/с;
и в виде подсказки:
4. Есть секреты (не мои);
5. Почти все врут (ну или просто не афишируют ;) ) - насчет кривых, и, особенно, "S"...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Как много хороших советов, аж выбрать никак не могу )))

Для такой фигни матлаб не нужен. Сделаем трехсегментный разгон, и чтоб процент каждого можно было менять. Вечером графики запилю.
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

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

Сообщение solo »

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

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

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

solo писал(а):основная проблема S образной кривой разгона это в текущий момент просчитать конечную точку остановки ....
Да бог бы с ней, с конечной точкой. Вот как обеспечить, чтобы все промежуточные точки траектории на минимум трех осях совпадали :thinking:
Поэтому максимум что встречал с S-кривой - это реализация команды G0. Когда важна только конечная точка, а траекторию никто не гарантирует.
Ну и еще вариант небольшого "смягчения углов" на кривой скорости. В пределах допустимых погрешностей, как сделано в Степмастере.
solo писал(а):а на малых скоростях , рабочей подаче , можно использовать большее ускорение . Как правило сейчас станок настраивается на мах скорость, а это приводит к тому, что ускорение снижается и выполнение Ж кода замедляется ......
я задавался этим вопросом, когда только-только начинал разбираться с LinuxCNC Динамическое управление ускорением #1
Чудес не бывает. Бывают фокусы.
Аватара пользователя
wldev
Мастер
Сообщения: 1650
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

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

Сообщение wldev »

Ну вы блин даёте... у меня в WLMotion S разгон и по линии и по кругу и всё совпадает...
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

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

Сообщение michael-yurov »

Bender писал(а):Ну вы блин даёте... у меня в WLMotion S разгон и по линии и по кругу и всё совпадает...
Ну вот а нам простым смертным вопрос кажется довольно сложным.
Как реализовать S-кривую для дуги в многомерном пространстве с учетом разных допустимых скоростей и ускорений по осям я еще понимаю...
но как при этом еще и сегменты состыковать и корректно рассчитать допустимые скорости на каждом стыке - мне очень сложно представить.
К сожалению, классический метод соединения дугами с допустимым отклонением от вершины мне не очень нравится.
Вопрос расчета S-кривой по многомерной траектории усугубляет то, что задача может иметь множество вариантов решения, и как найти лучший я не представляю. Представляю лишь, как отобрать наиболее удачный из нескольких.
P.S. правда я и не пытаюсь решать данную задачу. Передо мной сейчас стоят другие сложные для меня вопросы по схожей теме.
Аватара пользователя
wldev
Мастер
Сообщения: 1650
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

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

Сообщение wldev »

michael-yurov писал(а):Ну вот а нам простым смертным вопрос кажется довольно сложным.
Ну зачем же так)))
michael-yurov писал(а):но как при этом еще и сегменты состыковать и корректно рассчитать допустимые скорости на каждом стыке - мне очень сложно представить.
Ну вот например:
1. Вставляйте стыковочный элемент(ы) в таекторию, например дугу, эллипс, спираль, линии....
2. Делаете что то на подобие ПИДа для каждой оси, который не даст резко изменить скорость. это даст вам сглаживание. И одновременно сигнализирует о необходимости снижения скорости движения по траектории.
michael-yurov писал(а):Вопрос усугубляет то, что задача может иметь множество вариантов решения, и как найти лучший я не представляю. Представляю лишь, как отобрать наиболее удачный из нескольких.
У нас на производстве есть пром роботы KUKA(6 угловых координат) вот когда я начал рассчитывать обратную кинематику.. (из X Y Z A B C в A0---A6) вот там действительно множество решений... и надо выбрать один
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

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

Сообщение michael-yurov »

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

Вот, интерфейс окна настроек уже набросал:
131927-interface.jpg (2230 просмотров) <a class='original' href='./download/file.php?id=117870&mode=view' target=_blank>Загрузить оригинал (1.3 МБ)</a>
Аватара пользователя
wldev
Мастер
Сообщения: 1650
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

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

Сообщение wldev »

michael-yurov писал(а):В данный момент ломаю голову над тем, как минимизировать количество настроек для такого планировщика, сделать их более понятными и не дать человеку, задающему настройки, ошибиться.
В любом случае все "отхождения" от траектории должны быть предсказуемыми и лимитированными.
michael-yurov писал(а):В данный момент ломаю голову над тем, как минимизировать количество настроек для такого планировщика, сделать их более понятными и не дать человеку, задающему настройки, ошибиться.
Понятно, я для этого и сделал отображение реальной траектории перед её выполнением, для понимания и избежания ошибок.
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Bender писал(а):Ну вы блин даёте... у меня в WLMotion S разгон и по линии и по кругу и всё совпадает...
Это тебе так кажется... :)
Оно в принципе и будет примерно совпадать, если одновременно работающие оси будут с примерно одинаковыми характеристиками (ускорениями).
(для просмотра содержимого нажмите на ссылку)
P.S. Сейчас кое кто придёт и объяснит вам, что всё дело в правильных приводах, а планировщик тут вообще не при делах... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

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

michael-yurov писал(а):Вот, интерфейс окна настроек уже набросал:
А что, всё просто. Интуитивно понятно. И дата релиза указана - 15 мая 2045 года :hehehe:
Последний раз редактировалось Сергей Саныч 10 авг 2017, 11:24, всего редактировалось 1 раз.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

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

Сообщение michael-yurov »

Bender писал(а):Понятно, я для этого и сделал отображение реальной траектории перед её выполнением, для понимания и избежания ошибок.
В моем случае речь идет о микронах, и увидеть это на экране проблемно.
Аватара пользователя
wldev
Мастер
Сообщения: 1650
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

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

Сообщение wldev »

UAVpilot писал(а):Оно в принципе и будет примерно совпадать, если одновременно работающие оси будут с примерно одинаковыми характеристиками (ускорениями).
Перед перемещением происходит адаптация параметров движения так, чтобы все оси смогли всё отработать.
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
wldev
Мастер
Сообщения: 1650
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

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

Сообщение wldev »

michael-yurov писал(а):В моем случае речь идет о микронах, и увидеть это на экране проблемно.
Ну если в масштабе 1:1 то да)))
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Bender писал(а):Перед перемещением происходит адаптация параметров движения так, чтобы все оси смогли всё отработать.
И тут-то и возникает "неудобный" вопрос: а нафик тогда всё эти S-кривые, если все оси кроме самой медленной будут разгонятся и тормозить не по своим оптимальным S-кривым, а согласно характеристикам самой медленной (самой тажёлой) оси?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
wldev
Мастер
Сообщения: 1650
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

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

Сообщение wldev »

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

поэтому и строят станки чтобы характеристики всех осей были примерно одинаковыми... :beer_blow:
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Ответить

Вернуться в «Электроника»