Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сервопривод - какие алгоритмы кроме ПИД используются?
Форум разработчиков электроники ELECTRONIX.ru > Силовая Электроника - Power Electronics > Электрические машины, Электропривод и Управление
Страницы: 1, 2
Сергей Борщ
Стоит задача: оживить авиационный индикатор. Индикатор состоит из двухфазного двигателя типа ДИД, который через редуктор двигает шкалу или вращает стрелку и датчик обратной связи (потенциометр или сельсин). Двигатель запитываю пониженным напряжением (17в вместо 36в) 400Гц. Больше не могу - входное питание постоянка 24в. Двигатель вращается замечательно. Проблема с реализацией следящей системы. Редуктор обладает весьма значительной инерцией и трением покоя. Попробовал реализовать ПИД (по статье "PID without PhD"), но результат не понравился. Настроить его по Зиглеру-Николсу невозможно - при малых P двигатель не может преодолеть трение редуктора, увеличиваю - как только двигатель в состоянии стронуть редуктор начинаются колебания. Задавить колебания можно значительным увеличением D. При малых D торможение начинается слишком поздно, при больших оно начинает тормозить еще на разгоне, система получается очень вялой. При малых изменениях входного сигнала I часть отрабатывает медленно, а если ее ускорить - начинает мешать при больших перемещениях, снова начинаются колебания.
Какие еще алгоритмы применяются в подобных сервосистемах? На просторах интернета встречается статья "Fundamentals of Servo Motion Control", где кроме PID управления описано некое PIV управление, но описано в общих словах. Поиск этого PIV выдает перепечатки этой самой "Fundamentals" с теми же самыми картинками и ни слова больше. Какие алгоритмы применяются в сервосистемах радиоуправляемых моделей? Там нагрзука сервомашинки заранее неизвестна, но работают они очень шустро и четко.

Процессор - мега88, плавающую точку не успеет, все считаю в фиксированной. Частота опроса датчика - 50 Гц.
В какую сторону копать? Ссылки с не очень заумной математикой приветствуются.
proxi
Цитата(Сергей Борщ @ Mar 14 2010, 11:59) *
. Какие алгоритмы применяются в сервосистемах радиоуправляемых моделей? Там нагрзука сервомашинки заранее неизвестна, но работают они очень шустро и четко.

так называемае канальное кодирование типа шим.Имеем к примеру 8 пропорциональных каналов, соответственно 8 миллисекундных(1-1.5 как у кого) импульсов и затем синхронизирующий импульс длительностью что то 10 мс, все это
подается на сдвиговый регистр синхронизация- сброс по длинному импульсу, ну и на конкретном выводе присутствует конкретный канальный импульс .... на передающем конце с помощью пер. резистора меняется длительность конкретного канального импульса больше меньше среднего 1 мс и все это подается на рулевую машинку, которая сравнивает свой импульс с приходящим, путем отработки-- двигатель вращает потенциометр и уравнивает опорный с приходящим импульсами... вот тут схемка рулевой машинки, там вроде ПИ фильтр присутствует R8 R4 C2 0.15uF...вот так это работает, ИМХО с сельсинами мутота намного больше, это ориентировано на 400 Гц 3 фазы, сельсин приемник сельсин передатчик...помню кабина РЛС, 11 тонн, пошла вразнос из за разрегулировки ОС...
@Ark
IMHO, нужна обратная связь по скорости вращения двигателя. В первую очередь, задаем скорость вращения и стабилизируем ее с помощью ПИ-регулятора (Д - не нужно). По датчику положения включаем/выключаем двигатель в нужном направлении... Примерно так, в первом приближении.
Tanya
Цитата(Сергей Борщ @ Mar 14 2010, 12:59) *
В какую сторону копать? Ссылки с не очень заумной математикой приветствуются.

Я не вижу отсюда, почти ничего... Если вы уверены, что проблема именно в трении, то можно побороть эту нелинейность, добавляя момент, который это трение компенсирует (почти). Это означает, что к моменту, который вычисляется Вашим ПИДом (или чем Вы там командуете) нужно добавлять константу*(sign(вычисленная скорость)), возможно, с задержкой. Получится более линейная вещь.
@Ark
Цитата
... Получится более линейная вещь.

По моему, требуемый момент, будет зависеть от скорости не совсем линейно. Особенно, при малых скоростях. Да и не только от скорости он зависит, но и от других вещей... Лучше уж сразу скорость стабилизировать, по обратной связи. По факту, так сказать.
Tanya
Цитата(@Ark @ Mar 14 2010, 15:42) *
По моему, требуемый момент, будет зависеть от скорости не совсем линейно. Особенно, при малых скоростях. Да и не только от скорости он зависит, но и от других вещей... Лучше уж сразу скорость стабилизировать, по обратной связи. По факту, так сказать.

То, что я написала относится именно с случаю т. наз. "сухого трения". Скорость при малых значениях ее обычно измеряется с большой ошибкой. "Жидкое трение", которое пропорционально скорости, - это хорошо.
@Ark
Цитата
Скорость при малых значениях ее обычно измеряется с большой ошибкой.

Это верно, конечно. Поэтому, при наличии редуктора, лучше измерять ее непосредственно на двигателе, а не по датчику положения.
_Pasha
Цитата(Сергей Борщ @ Mar 14 2010, 13:59) *
Частота опроса датчика - 50 Гц.

Стало быть, и период сервы такой же ? Или экстраполируете координату? Если 20мс на все - имхо это медленно. Где-то рядом в частотной области собственные частоты у всей механики в целом.
Сергей Борщ
Цитата(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 сек. на максимальной скорости.
Вот я и думал, что могут быть алгоритмы, позволяющие "на лету" оценить инерцию и учитывать ее.
Tanya
Цитата(Сергей Борщ @ Mar 14 2010, 21:50) *
Вот я и думал, что могут быть алгоритмы, позволяющие "на лету" оценить инерцию и учитывать ее.

Что значит оценить на лету? Она не меняется.. годами...
Что-то не так у Вас. Инерция Вам, скорее, помогает, чем мешает. А что мешает... мне непонятно....
man with no name
Я для регулирования положения делал табличку зависимости скорости от расстояния до установки.

В данный момент расстояние до цели delta, а скорость v.
v < vel(delta) * 0.9 => увеличиваю усилие
v > vel(delta) * 1.1 => уменьшаю усилие
В конечной точке включаю тормоз.
Конечную систему видел один раз, в остальном всё делал удалённо.

+ Нагрузка у меня всё время разная и алгоритм нормально её отрабатывает.

- Если значения при подходе сделать очень малыми, установка будет точной, но ждать её придётся долго.
- Если очень большими - может возникнуть дёрганье вокруг точки установки.
Сергей Борщ
Цитата(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 => уменьшаю усилие
В конечной точке включаю тормоз.
Можно подробнее? На основании каких данных строилась табличка? За счет чего получается независимость от нагрузки? Отдельного тормоза у меня нет, только торможение противовращением поля в двигателе.
proxi
Цитата
Не все так страшно - у меня сельсин запитывается теми же 400Гц что и обмотка возбуждения двигателя, оцифровка, вычисление арктангенса. Это работает, полградуса точность я получаю, ее достаточно.

ну раз так, то сельсин конечно предпочтителен в силу своей точности, это у же профессионально а сервомашинки для моделей это так поделки, там тоже перерегулирование и колебательный процесс, на контроллере это можно реализовать изящнее с помощью разных алгоритмов...
@Ark
Цитата
... люфты в редукторе минимальные, если вращается двигатель, то и сигнал с датчика положения меняется пропорционально. Разве что с генератора можно получить информацию о скорости с лучшим разрешением.

Разница именно в этом. На малых скоростях качество регулирования скорости может отличаться значительно...
Отдельный регулятор по скорости, по моему мнению, необходим. При старте из неподвижного состояния, в редукторе будет преодолеваться значительный момент силы трения покоя, а после начала движения момент сопротивления резко падает. ПИ-регулятор по скорости должен быстро отрабатывать эту ситуацию, иначе "перебег" будет неизбежен при малых рассогласованиях по положению, даже при небольших используемых скоростях. Регулятор скорости, в процессе работы, будет выполнять и функцию торможения, если, конечно, двигатель (и привод) это позволяет.
Текущую скорость можно устанавливать пропорционально рассогласованию по положению. Причем, нужно ограничить, как максимальное, так и минимальное допустимое значение. Можно изменять ступенчато, разбить на несколько поддиапазонов в зависимости от значения рассогласования по положению, или даже задать постоянной. Получится еще один П(ИД)-регулятор, уже по положению, c линейной или ступенчатой (м.б. релейной) характеристикой.
_Pasha
Типомысль:
Экстраполяция промежуточных отсчетов координаты при условии равенства нулю всех производных, которые выше первой. Т.е получаем постоянную скорость между отсчетами и линейную экстраполяцию координаты. Для реализации надо добавить второй контур ПИД-регулирования, по скорости. Тогда частоту сервы можно подымать.
Oldring
Цитата(Сергей Борщ @ Mar 14 2010, 12:59) *
Какие еще алгоритмы применяются в подобных сервосистемах?


Можно подмешать к току двигателя переменный ток, создающий момент, превышающий трение. Управляемость простыми алгоритмами улучшится, но и износ механики возрастет.

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

Эти индикаторы совсем-совсем разные? Непонятно все это. Система регулирования обычно настраивается не очень точно (не экстремально).
Может быть Ваша проблема в том, что Вы включаете ПИД при больших отклонениях задатчика? Тогда интегральный член будет "зашкаливать", и появятся затухающие колебания... Задатчик должен быть достаточно плавным в таком случае. Совершенно естественно, что двигатель должен сначала разгонять, а потом тормозить. И торможение должно начинаться до достижения конечной точки... Вы на машине ездите?
Самый быстрый вариант - максимальное ускорение с последующим максимальным торможением. Это банально. Еще сообщу, что самописцы-регистраторы с моторчиками и реохордами выпускались еще до нашего с Вами появления на Свет.
Oldring
Цитата(Tanya @ Mar 15 2010, 12:18) *
Может быть Ваша проблема в том, что Вы включаете ПИД при больших отклонениях задатчика? Тогда интегральный член будет "зашкаливать", и появятся затухающие колебания...


Именно, скорее всего тут играют существенную роль ограничения сигнала управления двигателем. Нужно противонакопление, что-нибудь простейшее, вроде отключения интегрирования при упирании в ограничение. И не по положению, а по факту ограничения.
Tanya
Цитата(Oldring @ Mar 15 2010, 12:31) *
Именно, скорее всего тут играют существенную роль ограничения сигнала управления двигателем. Нужно противонакопление, что-нибудь простейшее, вроде отключения интегрирования при упирании в ограничение. И не по положению, а по факту ограничения.

Ограничение управления имеется всегда. Стандартная борьба - ограничение скорости нарастания задающего параметра. Особенностью данной системы является то, что интегральный член в среднем равен нулю (если нет пружинки или грузика). Легко сообразить, что..
Oldring
Цитата(Tanya @ Mar 15 2010, 12:35) *
Ограничение управления имеется всегда. Стандартная борьба - ограничение скорости нарастания задающего параметра.


Но не всегда оно достаточно критично чтобы о нем задумываться. Методов борьбы существует несколько. Обычно математически сводящихся друг к другу. wink.gif Ограничение скорости нарастания входного параметра безопасными значениями - это учет некоторых ограничений снаружи системы без обратной связи по факту ограничения. И, кстати, упирание в ограничение по току двигателя при старте таким образом учесть сложнее, это ограничение на вторую производную входного сигнала.

Цитата(Tanya @ Mar 15 2010, 12:35) *
Особенностью данной системы является то, что интегральный член в среднем равен нулю (если нет пружинки или грузика). Легко сообразить, что..


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

И так уже банальности пишу. Но раз просите... Это значит, что интеграл от рассогласования тоже равен нулю. Соответственно, и рассогласование (невязка) будет знакопеременной. Это без учета трения и при отсутствии внешних сил.

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

Предполагается, что мы можем создать именно момент. Какой хотим. Какой хочет система управления.
@Ark
Цитата
Предполагается, что мы можем создать именно момент. Какой хотим. Какой хочет система управления.

Система управления "хочет" не момент, а перемещение к нужному положению...
Tanya
Цитата(@Ark @ Mar 15 2010, 13:24) *
Система управления "хочет" не момент, а перемещение к нужному положению...

Это мы хотим положение, а она должна выдавать момент. В момент. В любой момент.
Oldring
Цитата(Tanya @ Mar 15 2010, 13:17) *
И так уже банальности пишу. Но раз просите... Это значит, что интеграл от рассогласования тоже равен нулю. Соответственно, и рассогласование (невязка) будет знакопеременной. Это без учета трения и при отсутствии внешних сил.


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

Невязка неизбежно знакопеременная для любого линейного регулятора с интегратором внутри. Иначе выход интегратора был бы неограничен. Этот факт не является особенностью рассматриваемой системы.

Так что же Вы всё-таки хотели сказать именно про особенности данной системы с точки зрения интегратора в регуляторе?

Цитата(Tanya @ Mar 15 2010, 13:27) *
Это мы хотим положение, а она должна выдавать момент. В момент. В любой момент.


Чего-то мне кажется, что у человека сигнал управления - это не момент, а напряжение питания двигателя. И всего три возможных состояния этого сигнала управления.
@Ark
Цитата
Это мы хотим положение, а она должна выдавать момент. В момент. В любой момент.

Первый регулятор (по положению) будет обеспечивать наше "стремление" к нужному положению, задавая направление и скорость перемещения. Второй регулятор (по скорости) - будет обеспечивать момент двигателя (который необходим по факту) для поддержания заданной скорости в данный момент времени. По-моему, все просто и прозрачно для понимания...
Цитата
Чего-то мне кажется, что у человека сигнал управления - это не момент, а напряжение питания двигателя. И всего три возможных состояния этого сигнала управления.

В этом случае, все регулируется ШИМ-ом. И какой там момент получился на двигателе для поддержания нужной скорости - обычно никого не интересует (лишь бы допустимый ток не превысить).
Tanya
Цитата(Oldring @ Mar 15 2010, 13:44) *
Невязка неизбежно знакопеременная для любого линейного регулятора с интегратором внутри. Иначе выход интегратора был бы неограничен. Этот факт не является особенностью рассматриваемой системы.

Так что же Вы всё-таки хотели сказать именно про особенности данной системы с точки зрения интегратора в регуляторе?

Для регуляторов температуры печек там разных... интегральный член не равен нулю и является основным в стационарном случае. При этом не обязательно невязка будет знакопеременной. Вот и все банальности. А если автор не владеет текущим моментом, то ему же хуже.

Цитата(@Ark @ Mar 15 2010, 13:47) *
Первый регулятор (по положению) будет обеспечивать наше "стремление" к нужному положению, задавая направление и скорость перемещения. Второй регулятор (по скорости) - будет обеспечивать момент двигателя (который необходим по факту) для поддержания заданной скорости в данный момент времени. По-моему, все просто и прозрачно для понимания...

Мы про разное. Вы - про движение по заданной траектории, а я про "тупой" ПИД. Но линеаризованный. Выход которого должен давать момент в любой момент. Кроме того, момент пропорционален производной от скорости.. без учета трения.
Oldring
Цитата(Tanya @ Mar 15 2010, 13:55) *
Для регуляторов температуры печек там разных... интегральный член не равен нулю и является основным в стационарном случае. При этом не обязательно невязка будет знакопеременной. Вот и все банальности.


Невязка (ошибка) будет знакопеременной обязательно. И у печек - тоже. Иначе выход регулятора будет неограничен. Это же банальность. wink.gif
Есть такая банальная теорема. Интеграл ошибки регулятора с хотя бы одним полюсом в нуле при реакции на единичный скачек равен нулю.
Tanya
Цитата(Oldring @ Mar 15 2010, 14:10) *
Невязка (ошибка) будет знакопеременной обязательно. И у печек - тоже. Иначе выход регулятора будет неограничен. Это же банальность. wink.gif
Есть такая банальная теорема. Интеграл ошибки регулятора с хотя бы одним полюсом в нуле при реакции на единичный скачек равен нулю.

Не шутите так. Рассогласование падает в нуль... Интегрирование останавливается. Знакопеременность рассогласования может и быть, но интеграл от него не нуль.
Oldring
Цитата(Tanya @ Mar 15 2010, 14:27) *
Не шутите так. Рассогласование падает в нуль... Интегрирование останавливается. Знакопеременность рассогласования может и быть, но интеграл от него не нуль.


Назрел закономерный банальный вопрос. Что именно Вы называли "невязкой" для регулятора? Согласно неизвестному автору Википедии это то же самое, что и "рассогласование". http://ru.wikipedia.org/wiki/%D0%9F%D0%98%...%82%D0%BE%D1%80
Сергей Борщ
Цитата(Oldring @ Mar 15 2010, 11:04) *
Можно подмешать к току двигателя переменный ток, создающий момент, превышающий трение. Управляемость простыми алгоритмами улучшится, но и износ механики возрастет.
Двигатель индукционный двухфазный. Запитан двумя синусами 400 Гц, сдвинутыми на 90 градусов.
Цитата(Tanya @ Mar 15 2010, 11:18) *
Эти индикаторы совсем-совсем разные? Непонятно все это. Система регулирования обычно настраивается не очень точно (не экстремально).
Да, совсем-совсем. Я могу сделать какую-то процедуру калибровки (желательно автоматической), но пока непонятно - что именно калибровать.
Цитата(Tanya @ Mar 15 2010, 11:18) *
Может быть Ваша проблема в том, что Вы включаете ПИД при больших отклонениях задатчика? Тогда интегральный член будет "зашкаливать", и появятся затухающие колебания... Задатчик должен быть достаточно плавным в таком случае. Совершенно естественно, что двигатель должен сначала разгонять, а потом тормозить. И торможение должно начинаться до достижения конечной точки... Вы на машине ездите?
Может быть и в этом. Какое именно отклонение задатчика считать большим? Я в начале писал, что колебания есть даже при отключенном интегральном члене. Да, мне понятно, что торможение должно начинаться заранее. Изначальный вопрос ветки можно переформулировать так: как рассчитать момент, когда надо начинать тормозить? Да, езжу.
Цитата(Tanya @ Mar 15 2010, 11:18) *
Самый быстрый вариант - максимальное ускорение с последующим максимальным торможением. Это банально. Еще сообщу, что самописцы-регистраторы с моторчиками и реохордами выпускались еще до нашего с Вами появления на Свет.
Прекрасно. Вот самый быстрый (приемистый) вариант меня и интересует. Возможно для Вас это и банально, для меня - нет. Если бы я мог решить задачу сам - я бы ее решал. Но поскольку мои знания в электроприводе и ТАУ весьма минимальны - я и обратился на форум. Простого знания того, что это банально мне будет недостаточно для решения задачи. Спасибо за упоминание регистраторов - об их существовании я слышал. Вы не поверите - но в реальном самолете те самые индикаторы тоже работают и работали до нашего с Вами появления на Свет. Там они управляются чисто аналоговым способом. Я не могу себе позволить киловаттный источник 36в 400 Гц и штатную схему с кучей трансформаторов для вращения полуваттного двигателя. Мне надо управлять цифрой.
Цитата(@Ark @ Mar 15 2010, 12:10) *
В этой задаче присутствуют два различных процесса управления. Управление непосредственно двигателем - разгон, поддержание скорости, торможение. И слежение за положением - отработка рассогласования. Эти процессы происходят немного в разных временных масштабах. Управление двигателем должно быть быстрее (хотя бы на порядок). Поэтому и есть прямой смысл разделить управление этими процессами, а не сваливать их в одну кучу в одном регуляторе.
Было бы замечательно. Мучает вопрос - как определить или рассчитать скорость, которую надо поддерживать?
Цитата(Oldring @ Mar 15 2010, 12:44) *
Чего-то мне кажется, что у человека сигнал управления - это не момент, а напряжение питания двигателя. И всего три возможных состояния этого сигнала управления.
Двигатель управляется амплитудой синуса в обмотке управления. От -max до +max. Синус я формирую ШИМом, амплитуду могу менять с дискретностью 8 бит. Насколько линейно момент на валу и обороты зависят от амплитуды управляющего сигнала - затрудняюсь ответить.
Tanya
Цитата(Oldring @ Mar 15 2010, 14:33) *
Назрел закономерный банальный вопрос. Что именно Вы называли "невязкой" для регулятора? Согласно неизвестному автору Википедии это то же самое, что и "рассогласование". http://ru.wikipedia.org/wiki/%D0%9F%D0%98%...%82%D0%BE%D1%80

Согласна с неизвестным автором. Он также сообщает, что
"Если система не испытывает внешних возмущений, то через некоторое время регулируемая величина стабилизируется на заданном значении, сигнал пропорциональной составляющей будет равен нулю, а выходной сигнал будет полностью обеспечивать интегральная составляющая."
А я что говорила? Только слово "полностью" не говорила. А говорила - основным. Что Вам не нравится?
Мне вот Ваш новый облик... личина... Напоминает какого-то грубияна.
Oldring
Цитата(Сергей Борщ @ Mar 15 2010, 15:09) *
Двигатель управляется амплитудой синуса в обмотке управления. От -max до +max. Синус я формирую ШИМом, амплитуду могу менять с дискретностью 8 бит. Насколько линейно момент на валу и обороты зависят от амплитуды управляющего сигнала - затрудняюсь ответить.


Момент с нарпяжением на валу никак функционально не связаны. Момент связан с током. Ток связан с напряжением, индуктивностью, сопротивлением и скоростью вращения через дифур.
@Ark
Цитата
Было бы замечательно. Мучает вопрос - как определить или рассчитать скорость, которую надо поддерживать?

Определить опытным путем. Или по известным методикам настройки ПИД-регуляторов. Коэффициент пропорциональности регулятора положения и будет задавать скорость в зависимости от рассогласования. Но вначале, нужно настроить регулятор скорости двигателя - так чтобы поддерживал скорость при меняющейся нагрузке и отрабатывал ее изменение с нужными Вам временнЫми характеристиками (разгон и торможение). Подберете все это один раз для данного типа прибора, и все. Я думаю, что заниматься настройкой каждого экземпляра Вам не придется.
Tanya
Цитата(Сергей Борщ @ Mar 15 2010, 15:09) *
Насколько линейно момент на валу и обороты зависят от амплитуды управляющего сигнала - затрудняюсь ответить.

Если Вы сразу обе обмотки так питаете, то, боюсь, момент будет квадратом от тока. Тогда бы только в одну сторону вращалось...?
Все это непонятно. Мне.
Сначала надо бы разобраться с этими двигателями.
А потом можно скачать аппликацию от Microchip'а. Была такая про удержание инверсного маятника моторчиком.
Oldring
Цитата(Tanya @ Mar 15 2010, 15:13) *
Что Вам не нравится?
Мне вот Ваш новый облик... личина... Напоминает какого-то грубияна.


Вы правы. Я ошибся. У печек ошибка может быть и не знакопеременной. Знакопеременной ошибка обязана быть когда у замкнутого контура полюса оказываются левее, чем какой-то нескомпенсированный полюс объекта. То есть если разработчик пытается сделать более быструю замкнутую обратную связь, чем позволяет разомкнутое управление. В случае объекта с интегратором знакопеременность таким образом при управлении регулятором с интегратором неизбежна, так как все полюса замкнутого контура должны быть левее нуля для устойчивости системы.

Цитата(Tanya @ Mar 15 2010, 15:13) *
Мне вот Ваш новый облик... личина... Напоминает какого-то грубияна.


Говоря современным русским языком - аватар. Мне - тоже.

Цитата(Tanya @ Mar 15 2010, 15:29) *
Была такая про удержание инверсного маятника моторчиком.


Вот только инверсного маятника человеку не хватает...
Сергей Борщ
Цитата(Tanya @ Mar 15 2010, 14:29) *
Если Вы сразу обе обмотки так питаете, то, боюсь, момент будет квадратом от тока. Тогда бы только в одну сторону вращалось...? Все это непонятно. Мне.
Обмотка возбуждения запитана постоянно синусом 400 Гц. На обмотку управления подается синус, сдвинутый на +-90 градусов. При +90 двигатель вращается в одну сторону, при -90 - в другую. Чем больше амплитуда - тем быстрее вращение.
Цитата(Tanya @ Mar 15 2010, 14:29) *
А потом можно скачать аппликацию от Microchip'а. Была такая про удержание инверсного маятника моторчиком.
Спасибо, поищу. Более точного названия не помните?
Tanya
Цитата(Tanya @ Mar 15 2010, 15:29) *
Если Вы сразу обе обмотки так питаете, то, боюсь, момент будет квадратом от тока. Тогда бы только в одну сторону вращалось...?
Все это непонятно. Мне.

Пардон. Не заметила, что Вы пишите только про одну обмотку. Тогда момент будет пропорционален току. А зачем Вы синус еще ШИМом делаете?
Можно и меандр, наверное. Если сделать локальную обратную связь по току, тогда Вы будете правильно управлять - моментом.

Цитата(Сергей Борщ @ Mar 15 2010, 15:39) *
Обмотка возбуждения запитана постоянно синусом 400 Гц. На обмотку управления подается синус, сдвинутый на +-90 градусов. При +90 двигатель вращается в одну сторону, при -90 - в другую. Чем больше амплитуда - тем быстрее вращение.Спасибо, поищу. Более точного названия не помните?

Уже каялась... Названия не помню... Что-нибудь вроде... inverse(ted) pendulum ?


Цитата(Tanya @ Mar 15 2010, 15:51) *
Уже каялась... Названия не помню... Что-нибудь вроде... inverse(ted) pendulum ?

http://www.microchip.com/stellent/idcplg?I...ppnote=en021807
Вот нашлось. Хотя их поиск по ключевым словам не давал ответа... А слова-то правильные были...

Цитата(Oldring @ Mar 15 2010, 15:36) *
Вот только инверсного маятника человеку не хватает...

Ваш аватар сегодня разыгрался. Там про ПИДдержание этого самого маятника. Украинцы пробрались?
perfect
Пардон, что влезаю с такими вопросами, но всё-таки.
Моторчик должен ехать некое количество оборотов, а потом остановиться в определённом месте, и не заходить там в колебания. ?
Ехать 400 герцами со сдвигом пор фазе. А стоять?
Oldring
Цитата(Tanya @ Mar 15 2010, 15:58) *
Ваш аватар сегодня разыгрался. Там про ПИДдержание этого самого маятника. Украинцы пробрались?


Не понял про украинцев. Куда пробрались? Вам не нравятся украинцы?

Я заметил, что там главная цель - застабиллизировать неустойчивый перевернутый маятник. Без требований оптимальности. Без учета люфтов и трения. У человека задача немного другая.

Кстати, интересно. У микрочиповской игрушки ведь нет датчика положения платформы? То есть их платформа должна гулять как пьяный моряк под действием шума? Хороший пример для наблюдения броуновского блуждания.
khach
Насколько я помню, петля PI+V (скорость) позволяет получить стабильность привода при низких скоростях и удержании позиции. При этом датчик скорости должен быть аналоговый (тахогенератор). Это избавляет контроллер от необходимости рассчитывать скорость при почти неподвижном энкодере, тем более, что простым просчетом числа импульсов за единицу времени при почти неподвижном диске получаем большую ошибку. С другой стороны вводить аналоговый тахогенератор в современный привод (там, где он не предусмотрен конструктивно)- это большие проблемы с механикой и надежностью. В продвинутых контроллерах предусмотрен аппаратный блок velocity estimator для квадратурного энкодера. Обычно работает по принципу заполнения импульса от энкодера импульсами высокой частоты и регистрации их в отдельном аппаратном счетчике. В принципе работоспособен, но иногда чудит при удержании позиции привода. Второй вариант- синусно-косинусный энкодер, дающий аналоговый отсчет промежуточного положения между слотами диска энкодера. Но плохо работает при длинных проводах от привода к контроллеру (помехи АЦП).
Так вот, собственно, как считаете, таходатчик при сегодняшней технике развития привода это анахронизм, и надо "тянуть" за алгоритм обработки энкодера, или все таки надо его сохранить?
Tanya
Цитата(Oldring @ Mar 15 2010, 16:28) *
Не понял про украинцев. Куда пробрались? Вам не нравятся украинцы?

Я заметил, что там главная цель - застабиллизировать неустойчивый перевернутый маятник. Без требований оптимальности. Без учета люфтов и трения. У человека задача немного другая.

Кстати, интересно. У микрочиповской игрушки ведь нет датчика положения платформы? То есть их платформа должна гулять как пьяный моряк под действием шума? Хороший пример для наблюдения броуновского блуждания.

Задача почти такая же. Задатчик гуляет сам по себе. Из внешнего мира. Вот он шум... из Зазеркалья... Закулисы...
А наша задача - его отслеживать. Только у нас устойчивость получше, но непринципиально.
Слов ПИДдержание... какое-то украинское. Откуда взялось?

Цитата(khach @ Mar 15 2010, 17:00) *
Так вот, собственно, как считаете, таходатчик при сегодняшней технике развития привода это анахронизм, и надо "тянуть" за алгоритм обработки энкодера, или все таки надо его сохранить?

А может... Этот самый мотор может в нерабочее время подрабатывать (тахо)генератором?
Это бы было хорошо.
Oldring
Цитата(Tanya @ Mar 15 2010, 17:06) *
Задача почти такая же. Задатчик гуляет сам по себе. Из внешнего мира. Вот он шум... из Зазеркалья... Закулисы...
А наша задача - его отслеживать. Только у нас устойчивость получше, но непринципиально.
Слов ПИДдержание... какое-то украинское. Откуда взялось?


Все задачи стабиллизации чем-то похожи. Отличия обычно непринципиальны. Принципиально только тогда, когда разработчику не удается застабиллизировать систему. Или не удается добиться от системы каких-то свойств. Например, чтобы тележка не начинала ехать в сторону с произвольной скоростью. Интересно, что у Микрочиповцев стабиллизитрует тележку вблизи нулевой скорости? Трение грузика о воздух? Или они о чем-то не договаривают?

"Пиддержиние" по-украински совершенно не звучит. Это какой-то суржик. По украински будет "пиддэржка" или "пидтрымка".

Цитата(khach @ Mar 15 2010, 17:00) *
Так вот, собственно, как считаете, таходатчик при сегодняшней технике развития привода это анахронизм, и надо "тянуть" за алгоритм обработки энкодера, или все таки надо его сохранить?


Я думаю, что обеспечить в покое гуляния положения меньше дискрета энкодера сложно в любом случае, хоть с тахогенератором, хоть без.
@Ark
Цитата
Этот самый мотор может в нерабочее время подрабатывать (тахо)генератором?

Не "может", а "должен"! smile.gif
blackfin
Цитата(Oldring @ Mar 15 2010, 17:27) *
Все задачи стабиллизации чем-то похожи.

Ну да.. Отличаются только передаточной функцией дискриминатора и порядком астатизма.. rolleyes.gif
Сергей Борщ
Цитата(Tanya @ Mar 15 2010, 14:58) *
А зачем Вы синус еще ШИМом делаете?
Можно и меандр, наверное. Если сделать локальную обратную связь по току, тогда Вы будете правильно управлять - моментом.
ШИМом - чтобы не греть обмотку лишними гармониками. Обратную связь по току уже делать поздно - платы изготовлены и свободных входов АЦП не осталось.
Цитата(Tanya @ Mar 15 2010, 14:58) *
http://www.microchip.com/stellent/idcplg?I...ppnote=en021807
Вот нашлось. Хотя их поиск по ключевым словам не давал ответа... А слова-то правильные были...
Спасибо! Вот чем микрочиповцы всегда выделялись - прекрасным стилем изложения аппнот. Нашел отличия от своей реализации - у них Kp вынесен за скобки и для вычисления диф. компоненты берется не предыдущий, а "минус третий" отсчет. Надо попробовать. Можно еще и скользящее среднее на эти отчсеты наложить.
Цитата(perfect @ Mar 15 2010, 15:25) *
Моторчик должен ехать некое количество оборотов, а потом остановиться в определённом месте, и не заходить там в колебания. ?
Ехать 400 герцами со сдвигом пор фазе. А стоять?
Да, задача такая. А стоять - это когда амплитуда в управляющей обмотке равна нулю.
Tanya
Цитата(Сергей Борщ @ Mar 15 2010, 17:53) *
ШИМом - чтобы не греть обмотку лишними гармониками. Обратную связь по току уже делать поздно - платы изготовлены и свободных входов АЦП не осталось.

Тогда мучайтесь... Хотели, как лучше...
На самом деле, ток не нужно измерять. Можно сигнал с шунта подать на интегратор вместе с управлением. Выход интегратора смотреть компаратором периодически... Только в вашем случае надо знак менять синхронно с током в обмотке возбуждения... Это хуже.
Сергей Борщ
Цитата(Tanya @ Mar 15 2010, 17:11) *
Тогда мучайтесь... Хотели, как лучше...
Оно конечно. Смотрел в процессе придумывания схемы на штатные схемы включения - там обратной связи по току нет.
Вот одна из штатных схем:Нажмите для просмотра прикрепленного файла
М1 - двигатель, М2 - сельсин. Экранированный провод от сельсина - сигнал рассогласования (синус 400Гц, амплитуда пропорциональна ошибке).
Tanya
Цитата(Сергей Борщ @ Mar 15 2010, 18:22) *
Оно конечно. Смотрел в процессе придумывания схемы на штатные схемы включения - там обратной связи по току нет.
Вот одна из штатных схем:
М1 - двигатель, М2 - сельсин. Экранированный провод от сельсина - сигнал рассогласования (синус 400Гц, амплитуда пропорциональна ошибке).

Я такое слово "сельсин" впервые... Это все от самолета? Много красивых слов. Так одна лампа все и делает, или еще что-то? Неужто лампу нельзя "подменить"?
Oldring
Цитата(Сергей Борщ @ Mar 15 2010, 18:22) *
Оно конечно. Смотрел в процессе придумывания схемы на штатные схемы включения - там обратной связи по току нет.
Вот одна из штатных схем:Нажмите для просмотра прикрепленного файла
М1 - двигатель, М2 - сельсин. Экранированный провод от сельсина - сигнал рассогласования (синус 400Гц, амплитуда пропорциональна ошибке).


Обмотка двигателя подмагничена постоянным током? Очень интересно. Как же ротор тогда вообще вращается???
И, как легко заметить, у этого двигателя всего две обмотки...
Не понимаю я эту схему. sad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.