реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> ПИД регулятор на ARM
alexander55
сообщение Jul 22 2008, 10:34
Сообщение #46


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(_Pasha @ Jul 22 2008, 14:32) *
Обманул я. Минуса все-таки не было. Сорри.

А я уже начал думать, что мы на пороге очередного открытия. 07.gif
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jul 22 2008, 11:05
Сообщение #47


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(alexander55 @ Jul 22 2008, 14:34) *
А я уже начал думать, что мы на пороге очередного открытия. 07.gif

Вы не поверите, но такое возможно. В некоторых случаях искусственные автоколебания могут даже стабилизировать неустойчивый процесс...
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jul 22 2008, 11:21
Сообщение #48


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(Tanya @ Jul 22 2008, 15:05) *
Вы не поверите, но такое возможно. В некоторых случаях искусственные автоколебания могут даже стабилизировать неустойчивый процесс...

Знаем, плавали. biggrin.gif
Например, в нелинейный системах (для нелинейности типа зоны нечуствительности) это дает линеаризацию нелинейностей (появляется уже квази-коэффициент передачи отличный от нуля).
Еще вспомнил гидравлическую систему с регулированием через золотник (такая пакость).
Go to the top of the page
 
+Quote Post
Dir
сообщение Jul 22 2008, 20:39
Сообщение #49


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830



Цитата(alexander55 @ Jul 22 2008, 08:45) *
Я уже не знаю с кем спорю.


??? А мое имя всуе без указания причин почему было произнесено? Я с вами не спорил и даже не знаю на какую тему спор. sad.gif sad.gif
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jul 23 2008, 04:32
Сообщение #50


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(Dir @ Jul 23 2008, 00:39) *
??? А мое имя всуе без указания причин почему было произнесено? Я с вами не спорил и даже не знаю на какую тему спор. sad.gif sad.gif

Извините, я спутал Вас с LS. biggrin.gif
Go to the top of the page
 
+Quote Post
SpyBot
сообщение Jul 23 2008, 18:42
Сообщение #51


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491



ИМХО против ограничения интегральной части выступают те, кто не работал с двигателями smile.gif
Т.е. понятно, что при регулировке температуры или потока газа, ошибка будет минимальной и, видимо, беспокоится об интегральной части не нужно.
Но в приводе двигателя, когда нагрузка может поменяться от минус фактически бесконечности smile.gif к плюс, интегральной части надо уделять самое пристальное внимание.
Да и вобще не понятно - измеряем целыми числами, на выходе (тот же ШИМ) тоже целые, так зачем нам плавучка??? smile.gif
Цитата(маша @ Jul 22 2008, 10:19) *
Вобщем мысль была такая: при ограничении интеграла по знаку ошибки, необходимо учитывать и величину ошибки... всё.

На таком принципе удавалось сделать более-менее устойчивый И-регулятор smile.gif
Go to the top of the page
 
+Quote Post
маша
сообщение Jul 24 2008, 05:13
Сообщение #52


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 7-11-05
Пользователь №: 10 537



Еще как вариант неявного ограничения интеграла это применение селективного регулятора с одним основным регулятором (например частоты того же двигателя) и несколькими ограничительными (макс давления, макс температуры, темпов набора, сброса частоты, мин и макс частоты, макс подачи топлива и т.д. и т.п.). Выходы нескольких регуляторов проходят селекторы (мин/макс) и получается один, который в итоге и регулирует нужный параметр. интеграл выбранного регулятора присваивается всем остальным. Интеграл приэтом может насытится только если не наступают ограничения, тогда конечно нужно применять дополнительные меры по защите интеграла.
Go to the top of the page
 
+Quote Post
Dir
сообщение Jul 24 2008, 06:09
Сообщение #53


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830



Цитата(SpyBot @ Jul 23 2008, 21:42) *
ИМХО против ограничения интегральной части выступают те, кто не работал с двигателями smile.gif
Т.е. понятно, что при регулировке температуры или потока газа, ошибка будет минимальной и, видимо, беспокоится об интегральной части не нужно.
Но в приводе двигателя, когда нагрузка может поменяться от минус фактически бесконечности smile.gif к плюс, интегральной части надо уделять самое пристальное внимание.
Да и вобще не понятно - измеряем целыми числами, на выходе (тот же ШИМ) тоже целые, так зачем нам плавучка??? smile.gif

Вообще то это я говорил, что делал регулятор для стабилизации потока и, наверное, должен ответить.
Приведите пример бесконечно отрицательной и бесконечно положительной нагрузки, тогда я вам может и поверю. А так нагрузка либо есть, либо ее нет. Соответственно нельзя приложить бесконечное регулирующее воздействие любого знака, чтобы компенсировать возмущение.
И, в конце концов, пояснит ли кто-нибуть чем конкретно не нравится простая и логичная операция из одной команды, которая не позволяет неограниченно расти интегральному терму, которое я привел в начале темы (топик 12):
Код
...
    fError = fSetPoint - fProcessValue;
...
    fsError = pid->fSumError + fError;
    fIterm = pid->fKi * fsError;
...
    fRet = fPterm + fDterm + fIterm + pid->fMinPID;
//
    if (fRet > pid->fMaxPID)
        return (WORD)(pid->fMaxPID);
    else if (fRet < pid->fMinPID)
        return (WORD)(pid->fMinPID);
    pid->fSumError = fsError;
    return (WORD)fRet;

Т.е. сравнимаем полученное регулирующее воздействие (fRet) с границами регулирования (pid->fMinPID, pid->fMaxPID) и если оно выходит за эти границы, то интегральный терм (pid->fSumError) замораживается, т.к. просто программа не доходит до его обновления. Мы, фактически, выбором этих границ и регулируем наш I-терм. О каком пристальном внимании речь? И просьба пояснить чем плохо именно данное решение, а не приводить примеры, вводящие дополнительные ограничения I-терма.
А насчет того, зачем тут плавучка я уже говорил: сравните текст программы в AVR221 в целочисленном виде и приведенный в топике 12 данной темы ее плавучий аналог и все станет ясно. Программа скукоживается в несколько раз, все внимание разработчика к процессу, а не к особенностям реализации в целых числах. Запасов производительности у ARMа, как правило, хватает.
PS. Для профи это, конечно, не аргумент. Они оперируют понятиями "робастности" и т.п. У них свои критерии и свои объекты регулирования: атомные станции, ракетоносители, авиатехника... А что делать простым программистам и электронщикам у которых такая задача как, например, управление потоком CO2 или его температурой стоит раз в 3 года и занимает 0,01%. Утром поставили задачу и до обеда ждут решения в железе. Отлаживать целочисленку ни времени, ни аргументов не хватает.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jul 24 2008, 06:10
Сообщение #54


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(SpyBot @ Jul 23 2008, 22:42) *
ИМХО против ограничения интегральной части выступают те, кто не работал с двигателями smile.gif
Т.е. понятно, что при регулировке температуры или потока газа, ошибка будет минимальной и, видимо, беспокоится об интегральной части не нужно.
Но в приводе двигателя, когда нагрузка может поменяться от минус фактически бесконечности smile.gif к плюс, интегральной части надо уделять самое пристальное внимание.
Да и вобще не понятно - измеряем целыми числами, на выходе (тот же ШИМ) тоже целые, так зачем нам плавучка??? smile.gif

На таком принципе удавалось сделать более-менее устойчивый И-регулятор smile.gif

Математика - это искусство называть совершенно разные вещи одинаковыми словами...
Уравнения могут быть такими же и для двигателя и для печки...
А весь сыр-бор, как всегда, разгорелся из-за терминологических разногласий.
Если ограничивать какой либо член в ПИД-регуляторе, то это уже не будет ПИД-регулятор...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jul 24 2008, 06:13
Сообщение #55


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(маша @ Jul 24 2008, 08:13) *
Еще как вариант неявного ограничения интеграла


Это ужЕ комбинация FUZZY LOGIC & PID - имхо, самый правильный и общий подход
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jul 24 2008, 07:46
Сообщение #56


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(Tanya @ Jul 24 2008, 10:10) *
Если ограничивать какой либо член в ПИД-регуляторе, то это уже не будет ПИД-регулятор...

Теория автоматического регулирования рассматривает все процессы при малых рассогласованиях и хорошо работает.
Одна из стандартных входных воздействий - ступенька подразумевает не насыщение регуляторов, не вход ШИМ на ограничение, не ограничение энергетических показателей исполнительных двигателей и т.д. и т.п.
Исследование нелинейных систем сводится только к расчету параметров возможного колебательного процесса качающейся замкнутой системы.
Здесь САУ и ТАР заканчиваются и начинается моделирование и опыт.
Понятно, что ограничение интегральной части в момент ограничение изменяет его структуру (пропадает интегральная часть, а точнее уменьшается коэффициент передачи интегральной части).
В любой системе реально присутствуют нелинейности, а где-то они выходят на передний план.
Задача сводится к тому, чтобы не вводить такие условия, при которых система устойчивая в малом становилась неустойчивой в большом.
Извините, за наукообразность, но тут уже без этого никак.
PS.
Чего это меня в курилку не пускают, я там никого не обижаю. Странно.
Go to the top of the page
 
+Quote Post
маша
сообщение Jul 24 2008, 08:23
Сообщение #57


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 7-11-05
Пользователь №: 10 537



Цитата(Dir @ Jul 24 2008, 10:09) *
И, в конце концов, пояснит ли кто-нибуть чем конкретно не нравится простая и логичная операция из одной команды, которая не позволяет неограниченно расти интегральному терму

Да куда же еще ему позволять расти интегральному терму, когда выход у вас уже в максимуме??? Это же равносильно ограничивать сам интеграл значениями fMaxPID и fMinPID, разница на П и Д составляющие небольшая и скорее всего не принципиальная. Это базовый вариант любого ПИД.
Нужно решать проблему, когда при неизменной уставке знак ошибки сохраняется длительное время, а интеграл накапливается. Вскоре он дойдет конечно же до максимума или минимума значения выхода. Но что будет с самим объектом, выдержит ли он максимальное управляющее воздействие чтобы отрегулировать параметр, который ни в какую не хочет регулироваться?
А может у вас есть еще методика расчета значений fMaxPID и fMinPID для всех режимов работы объекта? или это просто максимальное значения разрядности, например ШИМ?
Go to the top of the page
 
+Quote Post
Dir
сообщение Jul 24 2008, 19:32
Сообщение #58


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830



Цитата(маша @ Jul 24 2008, 11:23) *
А может у вас есть еще методика расчета значений fMaxPID и fMinPID для всех режимов работы объекта? или это просто максимальное значения разрядности, например ШИМ?


Особой методики нет. Просто экспериментальным путем подбираю эти макс. и мин. значения ШИМ, чтобы регулируемая величина достаточно быстро доходила до минимума и максимума и при возврате назад в регулируемую область ощутимой задержки не было. Обычно 2...4 итераций хватает. Занимает времени меньше, чем подбор коэффициентов ПИД. А потом, как правило, пересчитываю параметры регулятора так, чтобы диапазон регулировки ШИМ был от 5 до 95% для всего диапазона выходных величин.
PS. Пересчитывать или нет, переделывать или нет определяется чаще всего причинами, напрямую к регулированию касательства не имеющими.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jul 25 2008, 04:58
Сообщение #59


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(Dir @ Jul 24 2008, 23:32) *
Особой методики нет.

Пусть закон регулятора ПИ
U[i]=Kп*X[i] + Ки*Sum(X[i])
Пусть Umax - модуль максимальной величины U[i]
Sum_max=Umax/Ki - модуль максимального значения интегральной суммы, т.е.
ограничения в (+) Sum_max, а в (-) -Sum_max.
Не правда ли очень просто и ясно ?
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 19:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01496 секунд с 7
ELECTRONIX ©2004-2016