S Образная кривая разгона-торможения шагового двигателя

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
jane_wild
master
master
Сообщения: 461
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 84 раза
Поблагодарили: 15 раз
Контактная информация:

S Образная кривая разгона-торможения шагового двигателя

Сообщение jane_wild »

Ребята и снова я обращаюсь к вам за помощью. Необходимо плавно разгонять и останавливать шаговый двигатель. Например чтобы сделать 100 оборотов двигателя нужно сгенерировать 80000 импульсов (800 на один оборот) Если частота следования импульсов будет 10 кГц, то это займет 8 секунд. Ну и вот, если сразу подать 10 кГц на драйвер шагового двигателя, то он сразу впадает в кому, с высвечиванием аварии. Необходимо сделать это плавно. Ну скажем за 2 секунды. Нашла пример, как на лету изменять генерируемую частоту счетчиком. Затем разработала свой индуский код, который
LV 2020
LV 2020
похожий на спагетти и проверила на реальном железе - есть нюансы, но в целом работает. Нюансы в том, что остановить шаговик при точном количестве импульсов не так просто, потому как при настнойке DAQmx Timing указав Finite Samples вместо Continuous получаю ошибку 200557 записи частоты. Поэтому точность возрастет, если торможение производить не линейно а по S - Образной кривой, вот такой
download.png
download.png (4.6 КБ) 686 просмотров
да и разгон/торможение будут лучше. В общем на данном этапе пытаюсь сделать S образную кривую разгона-торможения В приложеном VI убрано все, что касается работы с DAQ. Буду очень признательна за помощь. Спасибо
Вложения
Acc_Dec R.vi
LV 2016
(16.74 КБ) 43 скачивания
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5467
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 88 раз

Re: S Образная кривая разгона-торможения шагового двигателя

Сообщение IvanLis »

Там не так все просто.
Посмотрите хотя бы статью: https://habr.com/ru/articles/709500/

При управлении двигателями как правило рассматривают три производных (скорость, ускорение и рывок).
Разогнать как-бы не сложно, можно в качестве ограничителя использовать ПИ регулятор, а вот остановить к заданному шагу, нужно постараться :wink:
Раньше начнете тормозить, плавно подойдете, но потратите время. Позже - проскочите уставку.

Можно покопаться в исходниках открытых прошивок для 3D принтеров, граверов, короче различных CNC станков, например: https://github.com/grbl/grbl
Посмотреть, как там реализовано все.

Я несколько раз сталкивался с подобными задачами, приходилось считать кривую заранее, а потом контролировать уже частоту шага. Скорее всего, потом столкнетесь с резонансом, т.к. любой механизм имеет критические частоты, которых нужно избегать, это как раз заранее можно заложить при управлении.
Аватара пользователя
jane_wild
master
master
Сообщения: 461
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 84 раза
Поблагодарили: 15 раз
Контактная информация:

Re: S Образная кривая разгона-торможения шагового двигателя

Сообщение jane_wild »

IvanLis писал(а): 25 апр 2023, 20:41 Я несколько раз сталкивался с подобными задачами, приходилось считать кривую заранее, а потом контролировать уже частоту шага.
Вы дали мне идею. Вот и я решила рассчитать кривые заранее. Вот что у меня получилось. Не совсем S-образная но все же лучше чем линейная.
Curve.png
Acc_Dec Curve.png
Юрий
leader
leader
Сообщения: 527
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: S Образная кривая разгона-торможения шагового двигателя

Сообщение Юрий »

Может, кусок синуса от 0 до pi подойдёт?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5467
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 88 раз

Re: S Образная кривая разгона-торможения шагового двигателя

Сообщение IvanLis »

jane_wild писал(а): 26 апр 2023, 15:58 Вы дали мне идею. Вот и я решила рассчитать кривые заранее. Вот что у меня получилось. Не совсем S-образная но все же лучше чем линейная.
Кривые нужно считать исходя из заданных параметров, это хотя бы должны быть скорость и ускорение.
Дело в том, что при изменении нагрузки эти параметры тоже меняются и необходимо дать возможность их подобрать.

Если Вы установите большую скорость, а крутящего момента будет недостаточно, то будут пропуски шагов.
Например на CNC они подбираются экспериментально: Оптимальный подбор скорости и ускорения
Так же почитайте, как токи установить, нужно их настроить, а потом уже скорость и ускорение....

И не нужно выдумывать никаких S-кривых, там действительно трапеция получится, не факт, что равносторонняя, т.к. ускорение вверх, не всегда совпадает с торможением (отрицательным ускорением). Если посмотрите формулы, там линейная зависимость от времени.
Вот например без учета "рывка" (третьей производной). Если ускорение и торможение совпадают, то сразу можно посчитать время необходимое на полный разгон, и уже исходя из точки назначения, считать момент, когда начать снижать скорость.
Без имени.png
Untitled 1.vi
lv2016
(13.43 КБ) 20 скачиваний
Юрий писал(а): 26 апр 2023, 21:04 Может, кусок синуса от 0 до pi подойдёт?
Нет, там именно через интегралы (с учетом ограничения сверху и снизу) считаем расстояние, а расстояние делим на длину шага, получаем частоту шага.
Аватара пользователя
jane_wild
master
master
Сообщения: 461
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 84 раза
Поблагодарили: 15 раз
Контактная информация:

Re: S Образная кривая разгона-торможения шагового двигателя

Сообщение jane_wild »

IvanLis писал(а): 26 апр 2023, 21:20 Кривые нужно считать исходя из заданных параметров, это хотя бы должны быть скорость и ускорение.
Так я так и старалась.
Скорость - это максимальная частота.
Ускорение - это время за которое достигается максимальная частота.

В моем конкретном случае, нагрузки практически никакой - шаговик вращает устройство, которое создает минимальную нагрузку.
Гораздо более важно, это высчитать и остановить шаговик при заданном количестве оборотов.
Ну например разогнаться до 500 RPM за 2 секунды и плавно остановиться за эти же 2 секунды. за все время сделав при этом 283.7 оборота.

Как правильно указал Иван это не так просто. Реально практически точно в позиции останавливается если в этой точке (see screenshot)
число целое, если дробное, то остановка происходит раньше.
Point.PNG
Point.PNG (4.79 КБ) 606 просмотров
Вложения
Stepper Control.zip
LV2016
(27.92 КБ) 22 скачивания
Artem.spb

Activity Автор
professor
professor
Сообщения: 3410
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 176 раз
Контактная информация:

Re: S Образная кривая разгона-торможения шагового двигателя

Сообщение Artem.spb »

jane_wild писал(а): 26 апр 2023, 22:21 Реально практически точно в позиции останавливается если в этой точке (see screenshot) число целое, если дробное, то остановка происходит раньше.
Может, проблема в округлении? У вас это значение используется как длина массива. И 85/86 точек вполне себе существенно для такой задачи
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5467
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 88 раз

Re: S Образная кривая разгона-торможения шагового двигателя

Сообщение IvanLis »

jane_wild писал(а): 26 апр 2023, 22:21 Реально практически точно в позиции останавливается если в этой точке (see screenshot)
число целое, если дробное, то остановка происходит раньше.
Точность позиционирования определяется шагом винта или ремня, не знаю, что у вас.
Ну и режимом работы ШД: полный шаг, полушаг, микро... и т.д. (https://wiki.iarduino.ru/page/shagovye-dvigateli)
Его нельзя взять и остановить в произвольной точке, по крайней мере при управлении через драйвер STEP/DIR.
Тут однозначно, нужно выбирать между скоростью перемещения и точностью позиционирования.

Если драйвер позволяет переходить из режима в режим на лету, то можно попробовать ими управлять, но я с чем сталкивался, там джемперами установки осуществлялись.
Ответить

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