|
Сервопривод - какие алгоритмы кроме ПИД используются?, результаты с ПИД не устраивают (может неправильно готовлю). |
|
|
|
Mar 14 2010, 09:59
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Стоит задача: оживить авиационный индикатор. Индикатор состоит из двухфазного двигателя типа ДИД, который через редуктор двигает шкалу или вращает стрелку и датчик обратной связи (потенциометр или сельсин). Двигатель запитываю пониженным напряжением (17в вместо 36в) 400Гц. Больше не могу - входное питание постоянка 24в. Двигатель вращается замечательно. Проблема с реализацией следящей системы. Редуктор обладает весьма значительной инерцией и трением покоя. Попробовал реализовать ПИД (по статье "PID without PhD"), но результат не понравился. Настроить его по Зиглеру-Николсу невозможно - при малых P двигатель не может преодолеть трение редуктора, увеличиваю - как только двигатель в состоянии стронуть редуктор начинаются колебания. Задавить колебания можно значительным увеличением D. При малых D торможение начинается слишком поздно, при больших оно начинает тормозить еще на разгоне, система получается очень вялой. При малых изменениях входного сигнала I часть отрабатывает медленно, а если ее ускорить - начинает мешать при больших перемещениях, снова начинаются колебания. Какие еще алгоритмы применяются в подобных сервосистемах? На просторах интернета встречается статья "Fundamentals of Servo Motion Control", где кроме PID управления описано некое PIV управление, но описано в общих словах. Поиск этого PIV выдает перепечатки этой самой "Fundamentals" с теми же самыми картинками и ни слова больше. Какие алгоритмы применяются в сервосистемах радиоуправляемых моделей? Там нагрзука сервомашинки заранее неизвестна, но работают они очень шустро и четко. Процессор - мега88, плавающую точку не успеет, все считаю в фиксированной. Частота опроса датчика - 50 Гц. В какую сторону копать? Ссылки с не очень заумной математикой приветствуются.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
 |
Ответов
|
Mar 14 2010, 21:24
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Tanya @ Mar 14 2010, 21:13)  Что значит оценить на лету? Она не меняется.. годами... Чтобы не настраивать драйвер под каждый конкретный индикатор. Цитата(Tanya @ Mar 14 2010, 21:13)  Что-то не так у Вас. Инерция Вам, скорее, помогает, чем мешает. А что мешает... мне непонятно.... Как она мне может помогать? Я прекратил подавать напряжение на двигатель, а механизм продолжает двигаться. Значит, надо прекращать крутить двигатель заранее. Насколько заранее - зависит от скорости, которую он успел набрать и это надо как-то рассчитывать. По инерции с максимальной скорости стрелка пролетает половину шкалы, значит надо тормозить, вращая поле в двигателе в обратном направлении. Вращать надо начинать заранее. Должны же быть алгоритмы для подобных систем, задача вроде типовая. Буду, конечно, пробовать снимать характеристики разгона-торможения в процесса калибровки, но не хотелось изобретать велосипед. Цитата(man with no name @ Mar 14 2010, 23:01)  Я для регулирования положения делал табличку зависимости скорости от расстояния до установки. ... В данный момент расстояние до цели delta, а скорость v. v < vel(delta) * 0.9 => увеличиваю усилие v > vel(delta) * 1.1 => уменьшаю усилие В конечной точке включаю тормоз. Можно подробнее? На основании каких данных строилась табличка? За счет чего получается независимость от нагрузки? Отдельного тормоза у меня нет, только торможение противовращением поля в двигателе.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 15 2010, 09:18
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Сергей Борщ @ Mar 15 2010, 00:24)  Чтобы не настраивать драйвер под каждый конкретный индикатор.Как она мне может помогать? Я прекратил подавать напряжение на двигатель, а механизм продолжает двигаться. Значит, надо прекращать крутить двигатель заранее. Насколько заранее - зависит от скорости, которую он успел набрать и это надо как-то рассчитывать. По инерции с максимальной скорости стрелка пролетает половину шкалы, значит надо тормозить, вращая поле в двигателе в обратном направлении. Вращать надо начинать заранее. Должны же быть алгоритмы для подобных систем, задача вроде типовая. Буду, конечно, пробовать снимать характеристики разгона-торможения в процесса калибровки, но не хотелось изобретать велосипед. Эти индикаторы совсем-совсем разные? Непонятно все это. Система регулирования обычно настраивается не очень точно (не экстремально). Может быть Ваша проблема в том, что Вы включаете ПИД при больших отклонениях задатчика? Тогда интегральный член будет "зашкаливать", и появятся затухающие колебания... Задатчик должен быть достаточно плавным в таком случае. Совершенно естественно, что двигатель должен сначала разгонять, а потом тормозить. И торможение должно начинаться до достижения конечной точки... Вы на машине ездите? Самый быстрый вариант - максимальное ускорение с последующим максимальным торможением. Это банально. Еще сообщу, что самописцы-регистраторы с моторчиками и реохордами выпускались еще до нашего с Вами появления на Свет.
|
|
|
|
|
Mar 15 2010, 09:49
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Tanya @ Mar 15 2010, 12:35)  Ограничение управления имеется всегда. Стандартная борьба - ограничение скорости нарастания задающего параметра. Но не всегда оно достаточно критично чтобы о нем задумываться. Методов борьбы существует несколько. Обычно математически сводящихся друг к другу.  Ограничение скорости нарастания входного параметра безопасными значениями - это учет некоторых ограничений снаружи системы без обратной связи по факту ограничения. И, кстати, упирание в ограничение по току двигателя при старте таким образом учесть сложнее, это ограничение на вторую производную входного сигнала. Цитата(Tanya @ Mar 15 2010, 12:35)  Особенностью данной системы является то, что интегральный член в среднем равен нулю (если нет пружинки или грузика). Легко сообразить, что.. Пожалуйста, закончите свою фразу. Тут есть одна тонкость, которую сообразить не очень легко при подобных рассуждениях на пальцах.
--------------------
Пишите в личку.
|
|
|
|
|
Mar 15 2010, 10:17
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Oldring @ Mar 15 2010, 12:49)  Пожалуйста, закончите свою фразу. Тут есть одна тонкость, которую сообразить не очень легко при подобных рассуждениях на пальцах. И так уже банальности пишу. Но раз просите... Это значит, что интеграл от рассогласования тоже равен нулю. Соответственно, и рассогласование (невязка) будет знакопеременной. Это без учета трения и при отсутствии внешних сил. Цитата(@Ark @ Mar 15 2010, 13:10)  В этой задаче присутствуют два различных процесса управления. Управление непосредственно двигателем - разгон, поддержание скорости, торможение. И слежение за положением - отработка рассогласования. Эти процессы происходят немного в разных временных масштабах. Управление двигателем должно быть быстрее (хотя бы на порядок). Поэтому и есть прямой смысл разделить управление этими процессами, а не сваливать их в одну кучу в одном регуляторе. Предполагается, что мы можем создать именно момент. Какой хотим. Какой хочет система управления.
|
|
|
|
|
Mar 15 2010, 10:44
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Tanya @ Mar 15 2010, 13:17)  И так уже банальности пишу. Но раз просите... Это значит, что интеграл от рассогласования тоже равен нулю. Соответственно, и рассогласование (невязка) будет знакопеременной. Это без учета трения и при отсутствии внешних сил. Действительно, пишите банальности. Но немного не те, которые я предположил, что Вы подразумевали. Интеграл от рассогласования будет равен погрешности нуля привода двигателя. В среднем. При учете люфтов и трения - будет дополнительно колебаться несколько больше этого люфта. Невязка неизбежно знакопеременная для любого линейного регулятора с интегратором внутри. Иначе выход интегратора был бы неограничен. Этот факт не является особенностью рассматриваемой системы. Так что же Вы всё-таки хотели сказать именно про особенности данной системы с точки зрения интегратора в регуляторе? Цитата(Tanya @ Mar 15 2010, 13:27)  Это мы хотим положение, а она должна выдавать момент. В момент. В любой момент. Чего-то мне кажется, что у человека сигнал управления - это не момент, а напряжение питания двигателя. И всего три возможных состояния этого сигнала управления.
--------------------
Пишите в личку.
|
|
|
|
|
Mar 15 2010, 10:55
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Oldring @ Mar 15 2010, 13:44)  Невязка неизбежно знакопеременная для любого линейного регулятора с интегратором внутри. Иначе выход интегратора был бы неограничен. Этот факт не является особенностью рассматриваемой системы.
Так что же Вы всё-таки хотели сказать именно про особенности данной системы с точки зрения интегратора в регуляторе? Для регуляторов температуры печек там разных... интегральный член не равен нулю и является основным в стационарном случае. При этом не обязательно невязка будет знакопеременной. Вот и все банальности. А если автор не владеет текущим моментом, то ему же хуже. Цитата(@Ark @ Mar 15 2010, 13:47)  Первый регулятор (по положению) будет обеспечивать наше "стремление" к нужному положению, задавая направление и скорость перемещения. Второй регулятор (по скорости) - будет обеспечивать момент двигателя (который необходим по факту) для поддержания заданной скорости в данный момент времени. По-моему, все просто и прозрачно для понимания... Мы про разное. Вы - про движение по заданной траектории, а я про "тупой" ПИД. Но линеаризованный. Выход которого должен давать момент в любой момент. Кроме того, момент пропорционален производной от скорости.. без учета трения.
|
|
|
|
|
Mar 15 2010, 11:27
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Oldring @ Mar 15 2010, 14:10)  Невязка (ошибка) будет знакопеременной обязательно. И у печек - тоже. Иначе выход регулятора будет неограничен. Это же банальность.  Есть такая банальная теорема. Интеграл ошибки регулятора с хотя бы одним полюсом в нуле при реакции на единичный скачек равен нулю. Не шутите так. Рассогласование падает в нуль... Интегрирование останавливается. Знакопеременность рассогласования может и быть, но интеграл от него не нуль.
|
|
|
|
|
Mar 15 2010, 12:13
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Oldring @ Mar 15 2010, 14:33)  Назрел закономерный банальный вопрос. Что именно Вы называли "невязкой" для регулятора? Согласно неизвестному автору Википедии это то же самое, что и "рассогласование". http://ru.wikipedia.org/wiki/%D0%9F%D0%98%...%82%D0%BE%D1%80Согласна с неизвестным автором. Он также сообщает, что "Если система не испытывает внешних возмущений, то через некоторое время регулируемая величина стабилизируется на заданном значении, сигнал пропорциональной составляющей будет равен нулю, а выходной сигнал будет полностью обеспечивать интегральная составляющая." А я что говорила? Только слово "полностью" не говорила. А говорила - основным. Что Вам не нравится? Мне вот Ваш новый облик... личина... Напоминает какого-то грубияна.
|
|
|
|
|
Mar 15 2010, 12:36
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Tanya @ Mar 15 2010, 15:13)  Что Вам не нравится? Мне вот Ваш новый облик... личина... Напоминает какого-то грубияна. Вы правы. Я ошибся. У печек ошибка может быть и не знакопеременной. Знакопеременной ошибка обязана быть когда у замкнутого контура полюса оказываются левее, чем какой-то нескомпенсированный полюс объекта. То есть если разработчик пытается сделать более быструю замкнутую обратную связь, чем позволяет разомкнутое управление. В случае объекта с интегратором знакопеременность таким образом при управлении регулятором с интегратором неизбежна, так как все полюса замкнутого контура должны быть левее нуля для устойчивости системы. Цитата(Tanya @ Mar 15 2010, 15:13)  Мне вот Ваш новый облик... личина... Напоминает какого-то грубияна. Говоря современным русским языком - аватар. Мне - тоже. Цитата(Tanya @ Mar 15 2010, 15:29)  Была такая про удержание инверсного маятника моторчиком. Вот только инверсного маятника человеку не хватает...
--------------------
Пишите в личку.
|
|
|
|
Сообщений в этой теме
Сергей Борщ Сервопривод - какие алгоритмы кроме ПИД используются? Mar 14 2010, 09:59 proxi Цитата(Сергей Борщ @ Mar 14 2010, 11:59) ... Mar 14 2010, 11:00 @Ark IMHO, нужна обратная связь по скорости вращения дв... Mar 14 2010, 11:04 Tanya Цитата(Сергей Борщ @ Mar 14 2010, 12:59) ... Mar 14 2010, 12:02 @Ark Цитата... Получится более линейная вещь.
По моему,... Mar 14 2010, 12:42 Tanya Цитата(@Ark @ Mar 14 2010, 15:42) По моем... Mar 14 2010, 13:02 @Ark ЦитатаСкорость при малых значениях ее обычно измер... Mar 14 2010, 13:08 _Pasha Цитата(Сергей Борщ @ Mar 14 2010, 13:59) ... Mar 14 2010, 15:35 Сергей Борщ Цитата(proxi @ Mar 14 2010, 13:00) двигат... Mar 14 2010, 18:50 Tanya Цитата(Сергей Борщ @ Mar 14 2010, 21:50) ... Mar 14 2010, 19:13 proxi ЦитатаНе все так страшно - у меня сельсин запитыва... Mar 14 2010, 21:42 man with no name Я для регулирования положения делал табличку завис... Mar 14 2010, 21:01 @Ark Цитата... люфты в редукторе минимальные, если вращ... Mar 14 2010, 22:45 _Pasha Типомысль:
Экстраполяция промежуточных отсчетов ко... Mar 15 2010, 07:47 Oldring Цитата(Сергей Борщ @ Mar 14 2010, 12:59) ... Mar 15 2010, 09:04 @Ark В этой задаче присутствуют два различных процесса ... Mar 15 2010, 10:10 @Ark ЦитатаПредполагается, что мы можем создать именно ... Mar 15 2010, 10:24 Tanya Цитата(@Ark @ Mar 15 2010, 13:24) Система... Mar 15 2010, 10:27 @Ark ЦитатаЭто мы хотим положение, а она должна выдават... Mar 15 2010, 10:47 Сергей Борщ Цитата(Oldring @ Mar 15 2010, 11:04) Можн... Mar 15 2010, 12:09 Oldring Цитата(Сергей Борщ @ Mar 15 2010, 15:09) ... Mar 15 2010, 12:22 Tanya Цитата(Сергей Борщ @ Mar 15 2010, 15:09) ... Mar 15 2010, 12:29  Сергей Борщ Цитата(Tanya @ Mar 15 2010, 14:29) Если В... Mar 15 2010, 12:39  Tanya Цитата(Tanya @ Mar 15 2010, 15:29) Если В... Mar 15 2010, 12:58   Oldring Цитата(Tanya @ Mar 15 2010, 15:58) Ваш ав... Mar 15 2010, 13:28    Tanya Цитата(Oldring @ Mar 15 2010, 16:28) Не п... Mar 15 2010, 14:09     Oldring Цитата(Tanya @ Mar 15 2010, 17:06) Задача... Mar 15 2010, 14:27      blackfin Цитата(Oldring @ Mar 15 2010, 17:27) Все ... Mar 15 2010, 14:31 _Pasha Ого, нафлудили...
Цитата(Сергей Борщ @ Mar 15... Mar 16 2010, 06:55  Сергей Борщ Цитата(_Pasha @ Mar 16 2010, 08:55) Все-т... Mar 16 2010, 09:28   barabek Цитата(Сергей Борщ @ Mar 16 2010, 19:28) ... Mar 16 2010, 09:40   AndreyChip Цитата(Сергей Борщ @ Mar 16 2010, 13:28) ... May 26 2010, 14:00  Tanya Цитата(_Pasha @ Mar 16 2010, 09:55) Ого, ... Mar 16 2010, 17:53   _Pasha Цитата(Tanya @ Mar 16 2010, 21:53)
а) По... Mar 16 2010, 18:40 @Ark ЦитатаБыло бы замечательно. Мучает вопрос - как оп... Mar 15 2010, 12:26 perfect Пардон, что влезаю с такими вопросами, но всё-таки... Mar 15 2010, 13:25 khach Насколько я помню, петля PI+V (скорость) позволяет... Mar 15 2010, 14:00 @Ark ЦитатаЭтот самый мотор может в нерабочее время под... Mar 15 2010, 14:27 Сергей Борщ Цитата(Tanya @ Mar 15 2010, 14:58) А заче... Mar 15 2010, 14:53 Tanya Цитата(Сергей Борщ @ Mar 15 2010, 17:53) ... Mar 15 2010, 15:11  Сергей Борщ Цитата(Tanya @ Mar 15 2010, 17:11) Тогда ... Mar 15 2010, 15:22   Tanya Цитата(Сергей Борщ @ Mar 15 2010, 18:22) ... Mar 15 2010, 15:39   Oldring Цитата(Сергей Борщ @ Mar 15 2010, 18:22) ... Mar 15 2010, 15:50    тау Цитата(Oldring @ Mar 15 2010, 18:50) Обмо... Mar 15 2010, 16:24 Сергей Борщ Цитата(Tanya @ Mar 15 2010, 17:39) Я тако... Mar 15 2010, 16:30 Oldring Цитата(Сергей Борщ @ Mar 15 2010, 19:30) ... Mar 15 2010, 16:45  khach Цитата(Oldring @ Mar 15 2010, 19:45) На з... Mar 15 2010, 17:00   Oldring Цитата(khach @ Mar 15 2010, 20:00) Кстати... Mar 15 2010, 17:07 тау Цитата(Сергей Борщ @ Mar 15 2010, 19:30) ... Mar 15 2010, 17:00  Сергей Борщ Цитата(тау @ Mar 15 2010, 19:00) СП в тра... Mar 15 2010, 17:32   Tanya Цитата(Сергей Борщ @ Mar 15 2010, 20:32) ... Mar 15 2010, 18:31 perfect Хм, мне бы больше понравилось не падение амплитуды... Mar 15 2010, 18:24 Сергей Борщ Цитата(perfect @ Mar 15 2010, 20:24) Хм, ... Mar 15 2010, 20:48  barabek У меня была примерно такая задача управления мален... Mar 16 2010, 01:00 perfect Не очень постоянный, там есть С21. Mar 15 2010, 18:35 Tanya Цитата(perfect @ Mar 15 2010, 21:35) Не о... Mar 15 2010, 18:43  Oldring Цитата(Tanya @ Mar 15 2010, 21:43) Течет,... Mar 15 2010, 22:41   Tanya Цитата(Oldring @ Mar 16 2010, 01:41) Рото... Mar 16 2010, 04:42    Oldring Цитата(Tanya @ Mar 16 2010, 07:42) А я во... Mar 16 2010, 06:03 TSerg >Амплитудное мне реализовать проще - не нужно б... Mar 18 2010, 12:23 Serj78 Наличие трения указывает на существенное изменение... Mar 24 2010, 19:45 _Pasha Цитата(Serj78 @ Mar 24 2010, 22:45) Диффе... Mar 24 2010, 21:28 Vasily_ Цитата(Сергей Борщ @ Mar 14 2010, 13:14) ... Apr 14 2010, 09:35
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|