Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Делимся опытом Наступив на грабли - сообщи другим! Обмен опытом разработки и ремонта электронных устройств.

 
Опции темы
Непрочитано 20.09.2020, 18:05  
p_v
Гражданин KAZUS.RU
 
Регистрация: 07.05.2019
Сообщений: 753
Сказал спасибо: 67
Сказали Спасибо 147 раз(а) в 92 сообщении(ях)
p_v на пути к лучшему
По умолчанию Как правильно сделать anti-windup для ADRC регулятора?

Скоро начнем развлекаться с заменой PID на ADRC в стабилизаторе оборотов бормашинки. В матлабе сам ADRC уже смоделировали, вроде работает хорошо. Но есть нюанс - на "перегрузках" во всех этих контроллерах клинит интеграторы, и нужен anti-windup, чтобы интегратор быстро "отпускало".

Собственно вопрос, а как правильно реализовать anti-windup для ADRC? В интернетах примеры в основном для PID. Нужна какая-то методичка для программистов и чайников, а не полный курс теории регулировния .
p_v вне форума  
Непрочитано 04.12.2021, 13:06  
p_v
Гражданин KAZUS.RU
 
Регистрация: 07.05.2019
Сообщений: 753
Сказал спасибо: 67
Сказали Спасибо 147 раз(а) в 92 сообщении(ях)
p_v на пути к лучшему
По умолчанию Re: Как правильно сделать anti-windup для ADRC регулятора?

Подниму тему. А расскажите братья и сёстры, почему все до сих под массово юзают PID вместо ADRC, если последний намного круче. Из приятного - сам компенсирует нелинейности системы, из-за которых PID пришлось бы сильно расслаблять, чтобы не уйти в автоколебания.

Почему-то до сих пор нет готовых методичек, как слепить ADRC и как его настроить.

https://github.com/speedcontrols/ac_...nd-calibration - тут записали, чего смогли и как смогли. Но если честно - у меня у самого от попыток понять формулы начинает мозг плавиться. Хотя сам код довольно простой (не капитально сложнее PID-а).

Я это к чему... было б здорово либо найти нормальную литературу для прикладного применения, ну или может написать такую.
p_v вне форума  
Непрочитано 04.12.2021, 17:02  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,198
Сказал спасибо: 11,132
Сказали Спасибо 3,843 раз(а) в 2,920 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Как правильно сделать anti-windup для ADRC регулятора?

Таки не совсем для чайников практические руководства, но нашел пару работ для вполне вменяемого начала.
Первая группы авторов из поднебесной, вторая из MIT.
Для курса MIT не стоит смотреть на название… Математики там не так уж и заумно много…
Ссылки из каких-то рассылок типа IEEE, для первой нужно сделать запрос к авторам на полный текст.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 05.12.2021, 08:36  
p_v
Гражданин KAZUS.RU
 
Регистрация: 07.05.2019
Сообщений: 753
Сказал спасибо: 67
Сказали Спасибо 147 раз(а) в 92 сообщении(ях)
p_v на пути к лучшему
По умолчанию Re: Как правильно сделать anti-windup для ADRC регулятора?

Ну вот первая ссылка считай что закрытая. Вторая не про ADRC, хотя возможно я ошибся.

Для простых смертных сложность не в дизайне отклика anti-windup, а как это потом именно к ADRC примотать (там менее очевидно куда втыкать, в отличие от PID).

https://github.com/speedcontrols/ac_...rc.h#L154-L176 вот кстати, имплементация самого ADRC. На прикладном уровне просто совсем. Только нет методичек как для PID-ов, о том как прикладывать мутную теорию к практике. А без методичек ни один экплуатационщик такое не осилит. Хотя на практике это было бы очень заманчиво - меняем черный ящик с PID-ом на черный ящик с ADRC, и получаем на халяву намного лучшую регулировку. Это какбэ не диванная аналитика интернет-специалиста, а на реальном девайсе проверено.

Будь я поближе к чистой науке - сам бы методичку написал, чтобы прославиться. Но я уже от такого далековат, мне сподручнее в других областях мозг применять.

UPD. Попробовал послать запрос для первой ссылки. Но судя по названию, они решают вопрос с транспортной задержкой. А мне надо немножко другое (и попроще) - как в коде затыкать обзервер.

Последний раз редактировалось p_v; 05.12.2021 в 08:51.
p_v вне форума  
Непрочитано 18.08.2024, 18:47  
p_v
Гражданин KAZUS.RU
 
Регистрация: 07.05.2019
Сообщений: 753
Сказал спасибо: 67
Сказали Спасибо 147 раз(а) в 92 сообщении(ях)
p_v на пути к лучшему
По умолчанию Re: Как правильно сделать anti-windup для ADRC регулятора?

https://chatgpt.com/share/79765faa-0...8-62e76b0f4036

Может кому пригодится. Попытал ChatGPT насчет ADRC. С чисто инженерным уклоном, в сторону практического применения. И даже создалось впечатление, что всё понял .

Если тезисно:

1. ADRC первого порядка в большой вероятностью в 2 раза эффективнее ПИД-а.
2. Anti-windup делается через простую обрезку выходного значения.
3. Простая калибовка заключается в записи отклика системы без регулятора, на подачу максимального воздействия, и вычислению 3 коэффициентов.

b0 (масштаб) - просто максимум производной отклика. Остальные два - 1/t и 1/3t, где t - время достижения 63% на отклике. Для большей уверенности можно уменьшить коэффициенты на 10-20%, чтобы сильно уменьшить вероятность возбуждения.

Пока не проверял, надо будет воткнуть в модель, покрутить.

На сокровенное знание не претендую, меня интересовало чисто прикладное применение - есть километры задач, где втыкаются примитивные PID-ы, и хочется там не задумываясь втыкать ADRC.
p_v вне форума  
Сказали "Спасибо" p_v
true71 (18.09.2024)
Непрочитано 10.01.2025, 16:02  
p_v
Гражданин KAZUS.RU
 
Регистрация: 07.05.2019
Сообщений: 753
Сказал спасибо: 67
Сказали Спасибо 147 раз(а) в 92 сообщении(ях)
p_v на пути к лучшему
По умолчанию Re: Как правильно сделать anti-windup для ADRC регулятора?

Как дошло до моделирования, выяснилось что чатгпт меня на@#$л, а я в свою очередь вас . Направление-то верное, но всё немного иначе.

https://nbviewer.org/github/puzrin/r...ing/adrc.ipynb - ловите юпитеровский нотебук, с картинками и формулами. Это по крайней мере на модели правдоподобно работает.
  • Обрезка выхода делается ДО итерирования обзервера. Это автоматически дает anti-windup и убирает необходимость последующей коррекции обзервера.
  • На калибровке никто не крутит коэффициенты ADRC напрямую. Крутят коэффициенты частоты обзервера (N) и контроллера (M).
С практической точки зрения, когда нафик не надо грузиться теоретической мутотой, и мы делаем замену PID-а, а не выжимаем теоретический максимум, достаточно знать следующие вещи:
  1. Сначала смотрим время отклика системы по шаговому воздействию. Это определяет базовую частоту и b0 (масштабирование), а дальше можно настраивать сам adrc.
  2. "M" (обычно 2..5) ставится = 3, и больше не трогается. Это во сколько частота контроллера меньше частоты обзервера. Если с вашей задачей справляется пид, то будет оптимально, крутить нет смысла.
  3. "N" увеличивается пока не начнутся колебания. Обычно 3-10. Но если дойдет до 50, как синус в военное время, то тоже норм. У меня дошло. Видимо от того что в модели не учтена небольшая транспортная задержка или что-то еще.
Общий смысл - не парьтесь над конкретным значением N, до какого дойдет, то и хорошее. В итоге, по сути, надо крутить только 1 коэффициент. Это даже меньше чем в пиде (!)

По субъективным ощущениям - штука классная, и не требует идеального подбора коэффициентов. Плюс ей в достаточной степени плевать на нелинейности системы. Например у универсального двигателя момент по всему диапазону меняется очень сильно. ПИД либо скрючит на низах, либо станет тупить на верхах. ADRC с подобным справляется очень хорошо. Там конечно, в отличие от пида, в теории черт ногу сломит. Но на практике получается удобнее, проще, и более жесткое регулирование.

Что еще надо знать:
  • Нужна плавучка. Тоеретически для каждого конкретного кейза у ADRC второго порядка можно попробовать подобрать размерность фиксированной точки, но тема тухловатая. Операций относительно немного, так что даже с софтовым float современные контроллеры нормально потянут.
  • Для моторов настоятельно советуют воткнуть ADRC третьего порядка, а не второго. Чтобы мог учитывать инерцию. Если смотреть на ADRC как на черный ящик, то визуально отличий нет, там просто внутри на один коэффициент больше (они все через N/M берутся). Но частоту обзервера понадобится поднять раз в десять. У меня полезли нюансы, что пока просто не могу с такой частотой скорость определять. Но в любом случае, даже второй порядок будет заметно лучше обычного пида.

Из забавного - можете поискать на ютюбе видос, где грузик между двумя пружинками, за которые рандомно дергают актуаторы. Автор говорит, что пидом удержать грузик на месте принципиально невозможно, а ADRC справляется.

Так что ADRC не только "проще" ПИД-а в эксплуатации, но и намного более продвинутый. Я пытался по-всякому выяснить, почему ПИД-ы еще везде не повыкидывали нафик, при такой очевидной разнице. Похоже, пипл просто не в курсе . Ну и не так много готовой прикладной инфы, а если пытаться разбираться с теории - это кого угодно отпугнет. Плюс миллионы промышленных контроллеров пид-овских наклепали, а там все консервативно, никто не пошевелится пока не прижмет. Еще наверное лет 10-20 назад можно было пожалиться что плавучка дорогая, но в нынешнее время это уже не серьезно.

Последний раз редактировалось p_v; 10.01.2025 в 17:26.
p_v вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Ремонт частотного регулятора VLT andrun Делимся опытом 27 29.05.2014 11:26
Как правильно сделать заземление и грозозащиту? ROM200 Делимся опытом 24 04.12.2011 01:57
ШИМ и пик будем их дружить, ток как правильно эт сделать чтобы без залета... stopol Электроника - это просто 40 18.02.2011 16:04
WinAVR,AtmanAVR и Proteus-как правильно сделать makefile LEAS Микроконтроллеры, АЦП, память и т.д 29 02.06.2008 07:50


Часовой пояс GMT +4, время: 05:40.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot