|
Сервопривод - какие алгоритмы кроме ПИД используются?, результаты с ПИД не устраивают (может неправильно готовлю). |
|
|
|
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, 18:50
|

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

|
Цитата(proxi @ Mar 14 2010, 13:00)  двигатель вращает потенциометр и уравнивает опорный с приходящим импульсами... У меня примерно то же, только цифровым способом. Проблема в том, что к моменту уравнивания редуктор имеет скорость и за счет инерции пролетает нужное положение. Цитата(proxi @ Mar 14 2010, 13:00)  ИМХО с сельсинами мутота намного больше, это ориентировано на 400 Гц 3 фазы Не все так страшно - у меня сельсин запитывается теми же 400Гц что и обмотка возбуждения двигателя, оцифровка, вычисление арктангенса. Это работает, полградуса точность я получаю, ее достаточно. Цитата(@Ark @ Mar 14 2010, 13:04)  IMHO, нужна обратная связь по скорости вращения двигателя. В первую очередь, задаем скорость вращения и стабилизируем ее с помощью ПИ-регулятора (Д - не нужно). По датчику положения включаем/выключаем двигатель в нужном направлении... Примерно так, в первом приближении. Скорость я могу посчитать по соседним отсчетам датчика положения. А вот на каком уровне ее стабилизировать - не знаю. Я вижу две скорости - как можно быстрее и стоп. Как посчитать требуемую скорость, чтобы система остановилась в требуемом положении - не представляю. Цитата(Tanya @ Mar 14 2010, 14:02)  Я не вижу отсюда, почти ничего... Если вы уверены, что проблема именно в трении, то можно побороть эту нелинейность, добавляя момент, который это трение компенсирует (почти). Это означает, что к моменту, который вычисляется Вашим ПИДом (или чем Вы там командуете) нужно добавлять константу*(sign(вычисленная скорость)), возможно, с задержкой. Получится более линейная вещь. Трение там в момент старта. Потом начинает мешать инерция редуктора. В редукторах с большим трением во время хода как раз проблем нет: движок откючил - все остановилось. Цитата(@Ark @ Mar 14 2010, 15:08)  Это верно, конечно. Поэтому, при наличии редуктора, лучше измерять ее непосредственно на двигателе, а не по датчику положения. В некоторых индикаторах используется двигатель-генератор серии ДГ и, теоретически, я могу считать с генераторной части скорость. Но хотелось бы обойтись без этого - не во всех индикаторах есть генератор и я не совсем понимаю, в чем разница - люфты в редукторе минимальные, если вращается двигатель, то и сигнал с датчика положения меняется пропорционально. Разве что с генератора можно получить информацию о скорости с лучшим разрешением. Цитата(_Pasha @ Mar 14 2010, 17:35)  Стало быть, и период сервы такой же ? Или экстраполируете координату? Если 20мс на все - имхо это медленно. Где-то рядом в частотной области собственные частоты у всей механики в целом. Нет, координату не экстраполирую. Чаще снимать не получается - в случае с сельсином я делаю оцифровку в одной точке периода 400Гц, оцифровываю 4 канала (2 сельсина) и усредняю два значения. В случае с потенциометром делаю два измерения на период (в моменты перехода через 0, для устранения помех от двигателя), и усреднение по 4 отсчетам. Там можно скорость поднять, но тогда разница между соседними отсчетами будет совсем небольшая - стрелка перемещается через всю шкалу где-то 2 сек. на максимальной скорости. Вот я и думал, что могут быть алгоритмы, позволяющие "на лету" оценить инерцию и учитывать ее.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
Сергей Борщ Сервопривод - какие алгоритмы кроме ПИД используются? 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 Tanya Цитата(Сергей Борщ @ Mar 14 2010, 21:50) ... Mar 14 2010, 19:13 man with no name Я для регулирования положения делал табличку завис... Mar 14 2010, 21:01 Сергей Борщ Цитата(Tanya @ Mar 14 2010, 21:13) Что зн... Mar 14 2010, 21:24 Tanya Цитата(Сергей Борщ @ Mar 15 2010, 00:24) ... Mar 15 2010, 09:18  Oldring Цитата(Tanya @ Mar 15 2010, 12:18) Может ... Mar 15 2010, 09:31   Tanya Цитата(Oldring @ Mar 15 2010, 12:31) Имен... Mar 15 2010, 09:35    Oldring Цитата(Tanya @ Mar 15 2010, 12:35) Ограни... Mar 15 2010, 09:49     Tanya Цитата(Oldring @ Mar 15 2010, 12:49) Пожа... Mar 15 2010, 10:17      Oldring Цитата(Tanya @ Mar 15 2010, 13:17) И так ... Mar 15 2010, 10:44       Tanya Цитата(Oldring @ Mar 15 2010, 13:44) Невя... Mar 15 2010, 10:55        Oldring Цитата(Tanya @ Mar 15 2010, 13:55) Для ре... Mar 15 2010, 11:10         Tanya Цитата(Oldring @ Mar 15 2010, 14:10) Невя... Mar 15 2010, 11:27          Oldring Цитата(Tanya @ Mar 15 2010, 14:27) Не шут... Mar 15 2010, 11:33           Tanya Цитата(Oldring @ Mar 15 2010, 14:33) Назр... Mar 15 2010, 12:13            Oldring Цитата(Tanya @ Mar 15 2010, 15:13) Что Ва... Mar 15 2010, 12:36 @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
|
|
|