|
Производная ступенчатой функции, угла, измеряемого энкодером |
|
|
|
Mar 18 2014, 03:43
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Вариантов несколько: 1) Отказаться от Д составляющей. 2) Сделать фильтрованную Д составляющую. Так же называется "реализуемый ПИД" или "ПИД" с замедлением. Идея в том, что вместо передаточной функции K_d*p сделать реализуемую функцию вида (K_d*p)/(\tau*p+1) или (K_d*p)/(\tau^2*p + 2*\tau*p+1). Чем меньше \tau, тем ближе процесс к исходному. Но от баланса скачки - задержка вы никуда не денетесь. 3) Ввести какие-то более сложные варианты фильтрации, рассчитать цифровой фильтр-дифференциатор для определенных частот. Опять, конкретный выбор фильтра - вопрос баланса. 4) Отказаться от ПИД регулятора и построить какой-то линейный регулятор, у которого порядок числителя не больше, а лучше на единицу меньше, чем порядок знаменателя. Такое решение предполагает, что вы знаете или можете хотя бы примерно определить модель объекта. Настраивать подбором, как в ПИД, тут будет сложно. С другой стороны, такое решение наиболее гибкое и, на мой взгляд, наиболее предпочтительное, если качество ПИД вас не устраивает.
|
|
|
|
|
Mar 18 2014, 03:53
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Спасибо, я подозревал, что это будет компромисс между скачками и задержкой, но надеялся реализовать его пограмотнее. Вариантов расчета производной, приводящих к задержкам, я придумал и промоделировал уже не один - и да, или гладкая производная, но задержка и неустойчивость управления, или меньше задержка и больше скачки. Но еще не оставляю надежды на нахождение хорошего решения, я могу варьировать опрос энкодера - не только считать щелчки к данному времени по интервалу опроса, а даже засекать само время между щелчками, повесив его на входящее прерывание.
Модель объекта у меня есть (появилась с момента моего последнего слепого тыкания в теме), я почитал про акробот, получил его диффур для моего случая - как общий, так и линеаризованный в окрестности нужного мне положения. Если это поможет - могу написать. И коэффициенты своего ПИДа я получаю подбором только двух параметров, а все предварительные расчеты (в зависимости от параметров конструкции) получаются по формулам из этой модели.
|
|
|
|
|
Mar 18 2014, 05:05
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Поскольку измеряется скорость изменения угла механической системы, есть основания предполагать, что она ограничена по максимальному значению. А насчет задержки - вопрос в ее величине. Например, у нас угол изменяется линейно но медленно, значения по энкодеру на каком-то периоде опроса будут 0,0,0,0,0,0,0,0,0,1 - последняя единица - щелчок когда превысили шаг квантования. И если считать производную по 2 последним отсчетам, деленным на период опроса - будет неверное огромное значение, если по трем и более - будет увеличиваться задержка в показаниях. Я действительно, пожалуй, еще подумаю насчет не периодического равномерного опроса, а получения именно максимально точных интервалов времени между щелчками и попытаюсь придумать, как обработать такой неравномерно дискретизированный сигнал.
|
|
|
|
|
Mar 18 2014, 05:22
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(_Ivana @ Mar 18 2014, 09:47)  ... Если считать как разность текущего и предыдущего показаний деленную на интервал опроса датчика, то получаются весьма большие скачки, которые идут в управление и не способствуют стабильности конструкции. ... Хм, а если просто правильно вычислять разность? Например, разность между 359 и 1 градус составляет вовсе не 358, как думают некоторые, а всего лишь -2 градуса. И никаких скачков.Upd: Что-то я сегодня невнимателен, чушь всякую несу...
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
Guest_TSerg_*
|
Mar 18 2014, 05:42
|
Guests

|
Скорее всего, это Вы не поняли - производная должна считаться между скачками энкодера, а не за какую-то "последнюю" секунду.
P.S. Для улучшения качества управления по производным вполне возможно, что лучше использовать т.н. "наблюдатели", если более-менее известна физ-мех. модель система. В этом случае производные можно получать с модели с высокой частотой опроса, а состояние модели будет корректироваться эпизодически с частотой срабатывания энкодера.
Грубый пример. Есть инерционный объекта массой m к которому прикладывается сила F, объект совершает линейное перемещение. По энкодеру измеряем с переменным интервалом дискретизации скорость Vизм = dS/dT, ускорение Aизм = dV/dT Вычисляем силу F(t) = m * Aизм
Вводим F(t) в модель системы и наблюдаем с желаемой частотой за параметрами модели, в частности - ускорением.
|
|
|
|
Guest_TSerg_*
|
Mar 18 2014, 07:40
|
Guests

|
Цитата(_Ivana @ Mar 18 2014, 09:51)  TSerg, насколько я понимаю, ваш вариант не будет работать. Не просто будет работать, а будет хорошо работать. Цитата(_Ivana @ Mar 18 2014, 09:51)  Допустим, у нас идут небольшие колебания около одного положения - если эти колебания "внутри" шага энкодера - он их не ловит и производная нулевая (что хорошо), а если на границе шага - то мы получаем периодические щелчки на мизерное время (когда верхушка амплитуды превышает порог), и получаем даже еще бОльшие скачки, чем при равномерном опросе показаний. Если параметры системы известны и ограничены, а это так для реальных физических систем, то известна латентность системы на также ограниченные по энергии внешние воздействия. Поэтому убирайте из своей терминологии всякий "мизер" и переходите на инженерный подход к решению задач.
|
|
|
|
Guest_TSerg_*
|
Mar 18 2014, 08:37
|
Guests

|
Спорить не буду, бывают и такие способы повышения точности или устойчивости. За примером далеко ходить не надо - подмешивание на вход АЦП небольшого шума или маятник Капицы. Но я больше о терминологии, чем о принципах.
|
|
|
|
|
Mar 18 2014, 14:20
|
Местный
  
Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778

|
Цитата(_Ivana @ Mar 18 2014, 09:51)  Допустим, у нас идут небольшие колебания около одного положения - если эти колебания "внутри" шага энкодера - он их не ловит и производная нулевая (что хорошо), а если на границе шага - то мы получаем периодические щелчки на мизерное время (когда верхушка амплитуды превышает порог), и получаем даже еще бОльшие скачки, чем при равномерном опросе показаний. Все "щелчки" происходят тогда, когда их предсказывает модель системы. Тогда невязка (разность предсказанного и измеренного) получается близкой к нулю, и оценка состояния корректируется лишь немного. То есть на выходе больше результат моделирования чем измерения до тех пор, пока нет большой невязки.
|
|
|
|
|
Mar 19 2014, 05:27
|
Знающий
   
Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458

|
Цитата(_Ivana @ Mar 18 2014, 06:47)  ... Но в управление пропорционально входит производная угла.... По моему, управление по производной Вам может понадобиться, только в том случае, если потребуется притормаживать слишком уж раскрутившуюся систему. В этом случае шелчков будет много, время между ними реальное, дисретная функция будет приближаться к непрерывной. При дрожжании вблизи равновесия управление по производной мне кажется только ухудшит и устойчивость и точность. К стати, с каким знаком у Вас входит управление по производной?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|