Тема: Немного о PID регуляторах, пропорциональная часть.  (Прочитано 59834 раз)

0 Пользователей и 1 Гость просматривают эту тему.


Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #60 : 07 Ноябрь, 2013, 16:59:42 pm »
Вопрос - где взять период колебаний. На лету считать и изменять длину интегрирования?
(шёпотом ...адаптивные регуляторы так и делают). А с точки зрения строгой науки у тебя период автоколебаний устанавливается стационарным при заданных параметрах.

Но для этого все равно придется сделать хоть один цикл колебания. А это нежелательно.
Это делается при настройке на заводе....и реально надо брать примерно четверть периода (либо три четверти с обратным знаком) - что то же самое :)

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #61 : 07 Ноябрь, 2013, 17:03:40 pm »
(Посмотри графики, PID Control (розовый) в стабильных положениях - 0)
А если пусть даже идеальный постоянный ветер? У тебя выход PIDа должен быть 0, а положение сервы - компенсировать ветер.

Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #62 : 07 Ноябрь, 2013, 17:04:17 pm »
У меня для этого ограничитель I Acc. Как упрощенный вариант того же самого. Я понимаю что не совсем тоже самое, но в упрощенном виде мне подошел. Попробую переделать, посмотрим разницу.

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #63 : 07 Ноябрь, 2013, 17:09:32 pm »
Я понимаю что не совсем тоже самое, но в упрощенном виде мне подошел. Попробую переделать, посмотрим разницу.
Да, переделать просто - задай некое "начальное" значение сервы, а потом его двигай ПИД контроллером - увидишь насколько интереснее станет регулировка. Он тогда, конечно, заводиться будет сильнее, но будет легко компенсировать ветер. Но на самом деле не только ветер, но и падение-рост оборотов, густоту воздуха и т.п.
« Последнее редактирование: 07 Ноябрь, 2013, 17:16:39 pm от AndRay »

Оффлайн Helimen

  • Сообщений: 2666
  • Пробежала полоса, зверем залегла, Расколола небеса
    • Игорь
    • Коноплёв
  • Город: Магадан
« Ответ #64 : 07 Ноябрь, 2013, 17:31:24 pm »
Задача I компоненты компенсация внешних воздействий, если по какой-то причине P компоненты недостаточно для достижения требуемого результата.


     Да, в практике так и получается, разгоняем вертолёт строго боком вперёд, и если этого параметра недостаточно, то возникает неизбежный снос, и чтобы постоянно не компенсировать его рукояткой, лечиться увеличением параметра "I".     Т.е. тенденция такая: чем выше скорость вертолёта в боковом движении, тем выше должно быть это значение для легкого и точного удержания курса. Это упрямые факты практики.  "P" - чуствительность; "I" - диапазон шага хв.ротора для параметра "P".  То есть я это понимаю так, особо глубоко непогружаясь в дебри, параметру "P"  обязательно нужно хоть какое-то значение "I", а то иначе параметру "P" не чем будет управлять. Это что касается GT5.  Ведь в нём нет такой функции, чтобы я мог в полёте переключить с режима "Удержания хвоста" в "Стандартный" и обратно.  Но выбрать один из этих двух режимов я всегда могу путём перенастройки параметра "I"  на земле. Допустим, если я хочу режим "Удержания хвоста", то ,как правило, я должен буду увеличить до определённого значения параметр "I"; а если мне нужен "Стандартный" режим, то, как правило, я должен буду уменьшить до определённого значения параметр "I". 
Люди перестают играть не потому что стареют, а стареют потому что перестают играть.

Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #65 : 07 Ноябрь, 2013, 17:39:18 pm »
Так он итак и в моем варианте компенсирует любое внешнее воздействие. (в том числе падение оборотов)

Попробовал изменить как ты предлагаешь - получается какая-то не регулируемая хрень. Реагирует медленно и самовозбуждается даже при маленьких значениях.
А происходит примерно следующее.
1. Мы  в покое, все хорошо, все по 0.
2. Даем команду - хочу скорость 50.
3. Он видит разницу 50 - 0 = 50 - дает команду серве сдвинуться на пример на 0.1
4. Проходит время, скорость наша уже 10, разница стала уже 40, он дает команду серве сдвинуться еще.
5. И так до тех пор, пока мы не наберем 50 - он будет давать команду серве увеличивать силу и скорость.
6. в итоге у нас бешеный перелет, после чего начинаем действовать в обратную сторону и получаем еще больший перелет в обратном направлении.
7. и т.д.

Но это же бред  ::) P компонента не должна разгонять, она должна уменьшать воздействие при приблежении к цели, и в идеальных условиях должна стабилизировать систему. (не любую конечно, без задержек и внешних воздействий)

Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #66 : 07 Ноябрь, 2013, 17:47:02 pm »
     Да, в практике так и получается, разгоняем вертолёт строго боком вперёд, и если этого параметра недостаточно, то возникает неизбежный снос, и чтобы постоянно не компенсировать его рукояткой, лечиться увеличением параметра "I".     Т.е. тенденция такая: чем выше скорость вертолёта в боковом движении, тем выше должно быть это значение для легкого и точного удержания курса. Это упрямые факты практики.  "P" - чуствительность; "I" - диапазон шага хв.ротора для параметра "P".  То есть я это понимаю так, особо глубоко непогружаясь в дебри, параметру "P"  обязательно нужно хоть какое-то значение "I", а то иначе параметру "P" не чем будет управлять. Это что касается GT5.  Ведь в нём нет такой функции, чтобы я мог в полёте переключить с режима "Удержания хвоста" в "Стандартный" и обратно.  Но выбрать один из этих двух режимов я всегда могу путём перенастройки параметра "I"  на земле. Допустим, если я хочу режим "Удержания хвоста", то ,как правило, я должен буду увеличить до определённого значения параметр "I"; а если мне нужен "Стандартный" режим, то, как правило, я должен буду уменьшить до определённого значения параметр "I". 
Да, правильно - I - это режим удержания хвоста.
При нулевом I, в случае порыва ветра все что сможет сделать P - это остановить дальнейшее вращение. А I - сможет еще и вернуть хвост назад в положение до порыва. Как раз за счет того что накопится ошибка и он будет эту накопленную ошибку компенсировать обратным смещением.
Единственное НО: P никак не зависит от I.  Это 3 независимых компоненты, и результат складывается из всех 3-х значений.

При порыве ветра:
1. Пришел порыв, появился снос
2. Появилась разница между требуемым и фактом ( нужно 0 - по факту 50 (снос)
3. P Среагировал на разницу, остановил вращение
   I интегратор записал ошибку к себе, дал команду вернуться назад
4. Возвращаемся назад, все по 0, все довольны

Т.е. в принципе можно и без I летать, будет режим без Heading Hold. Порывы будут гаситься, но не будет возврата в исходное положение. Эффективность противостоянию ветру (скорость остановки после порыва) в данном случае зависит только от P.

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #67 : 07 Ноябрь, 2013, 17:50:38 pm »
Вот, думал сразу написать про I компоненту, но, как оказалось, надо немного прояснить что же мы на само деле регулируем при регулировании. 

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


Итак модель.. Есть  нас сковородка ( пусть большая) а на ней, на ребре ( чтобы каталась ) лежит банка консервов..причем лежит не где-то, а пусть в точке А... соотвественно, дует ветерок ( ощутимый, способный катать банку - показан стрелкой)... Задача- перекатить и зафиксировать банку из точки А в некоторую точку Б на этой сковородке, и сделать так, чтобы несмотря на ветер она осталась в этой точке.

Итак, что мы хотим получить на выходе..Банка находится в точке Б, а сковородка находится под некоторым углом для компенсации ветра.

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

К примеру, можно регулировать угол наклона сковородки... можно регулировать угловую скорость поворота сковородки...можно - угловое ускорение сковородки.

И какое из них нам следует выбрать?  И дело не в том, что за один шаг невозможно изменить угол сковородки на ЛЮБОЙ, а тем более изменить скорость с любой на любую другую.... Дело в некоторых особенностях самого PID регулятора. 

Представим, что у нас произошло чудо и система внезапно оказалась в нужной точке сразу ( т.е.  и банка в положении Б, и угол сковородки - правильный)...И это означает что выход PID регулятора - нуль, т.к. делать ничего не надо!!!  И этот НУЛЬ PID регулятора соответствует НЕНУЛЕВОМУ наклону сковородки и, соответственно, ненулевому ветру.

Возьмем исходную ситуацию..Начнём будем из положения А в положение Б перекатывать банку....И пусть у нас регулятор настроен и он стабилизировал банку в положении Б ( с тем же самым углом сковородки, кстати, т.к. угол определяется ветром, а не регулятором).  Вопрос  - а что на выходе PID регулятора?! ( тут знающие товарищи вспомнят про I компоненту, которая содержит всю скорбь этого мира...и будут сильно неправы).

А теперь - фокус :)... У нас значение выхода PID регулятора - неизвестно, но известно что система в нужной точке. Мы выключим и включим регулятор (очень быстро)....А как мы выяснили, если регулятор включить в целевой точке системы- у него на выходе будет НУЛЬ!

Собственно, к чему это всё трюкачество...Оно к тому, что как только система стабилизировалась в исходной точке - выход PID регулятора - обнулился. А угол наклона сковородки - НЕТ!!! поэтому в качестве регулируемого параметра не стоит выбирать именно угол, а стоит подумать о том, что можно выбирать приращение угла ( скорость), или скорость приращения скорости ( ускорени). 

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #68 : 07 Ноябрь, 2013, 17:53:59 pm »
Но это же бред   P компонента не должна разгонять, она должна уменьшать воздействие при приблежении к цели, и в идеальных условиях должна стабилизировать систему. (не любую конечно, без задержек и внешних воздействий)

Перечитай первую и вторую части!!! :) P компонента имеет полное право разгонять!!! У тебя мячик-раскидайчик в детстве был? Там резинка тянет пропорционально...но НУЛЕВУЮ точку мячик пролетает на максимальной скорости.

Так что дави разгон D компонентой, а не P. Это жизнь.

Так что ты сейчас всё сделал правильно!!!



Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #69 : 07 Ноябрь, 2013, 17:57:47 pm »
Собственно, к чему это всё трюкачество...Оно к тому, что как только система стабилизировалась в исходной точке - выход PID регулятора - обнулился

Из всего вышесказанного не согласен с одним твоим основопологающим утверждением.
...как только система стабилизировалась в исходной точке - выход PID регулятора - обнулился...
Откуда эта аксиома?
Цитировать (выделенное)
http://ru.wikipedia.org/wiki/%D0%9F%D0%98%D0%94-%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80
Если система не испытывает внешних возмущений, то через некоторое время регулируемая величина стабилизируется на заданном значении, сигнал пропорциональной составляющей будет равен нулю, а выходной сигнал будет полностью обеспечивать интегральная составляющая.

Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #70 : 07 Ноябрь, 2013, 18:00:42 pm »
P компонента имеет полное право разгонять!!!
Так что дави разгон D компонентой, а не P. Это жизнь.
Не согласен :)
Вся информация что я читал про PID - нигде и никогда воздействие P не увеличивается со временем, по мере приближения к цели. Это целиком и полностью удел I компоненты, она действительно так себя ведет.

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #71 : 07 Ноябрь, 2013, 18:02:15 pm »
.как только система стабилизировалась в исходной точке - выход PID регулятора - обнулился...
Во-первых, из здравого смысла, во вторых я показал мат. трюк доказательства  -  с размещением системы сразу в исходной точке с этим же самым регулятором.  А в третьих - если выход не нулевой -он же на что-то действует? и где результат?

А википедия - она странная иногда :)

Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #72 : 07 Ноябрь, 2013, 18:03:14 pm »
Андрей, единственное, в чем я с тобой согласен - это в том, что стоит сделать более продвинутый интегратор, с возможностью ограничения не только максимального воздействия, но и длинной интегрирования. Ради эксперимента сделаю, скорее всего позволит лучше бороться с отскоком хвоста при остановках.
В остальном ты предлагаешь сделать какой-то  PID колибатор а не PID регулятор  :)

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #73 : 07 Ноябрь, 2013, 18:04:24 pm »
Вся информация что я читал про PID - нигде и никогда воздействие P не увеличивается со временем, по мере приближения к цели.
P- не увеличивается, увеличивается СКОРОСТЬ системы. Ну пни мячик - он покатился..Ты его вроде не трогаешь, а он катится и катится... А чтобы его остановить - его надо пнуть в другую сторону.

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #74 : 07 Ноябрь, 2013, 18:05:43 pm »
В остальном ты предлагаешь сделать какой-то  PID колибатор а не PID регулятор
Еще раз - PID регулятор - это очень извращённая колебательная система с трением и вынужденной силой :)  И наша задача - достичь положения за 0.75 периода где-то.