|
ПИД регулирование, все что с ним связано |
|
|
|
Mar 20 2005, 23:05
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 18-03-05
Пользователь №: 3 481

|
Цитата(Akakiy @ Nov 18 2004, 20:05) Может кто нибудь видел сишные исходники ПИД регулятора. Хотчется глянуть как народ решает эту задачку. линк вдогонку http://www.jashaw.com/pid/code.htmэто конечно примитивщина, но на 1й раз пойдет теория http://atm.h1.ru/root/theory/theory.html на "сруском" а вообще для прграммирования удобней u(k+1)=K1*u(k)-K2*u(k-1)+K3*u(k-2) u(i)- управляющее воздействие на i шаге K1,2,3-коэффициенты
|
|
|
|
|
Apr 5 2005, 04:25
|
Участник

Группа: Свой
Сообщений: 54
Регистрация: 23-03-05
Пользователь №: 3 615

|
Модель ПИ регулятора.
Управление осуществляется по формуле:
Управление = Управление + Кп * (Текущее_рассогласование - Предыдущее_ рассогласование) + 1/ Ти * Текущее_рассогласование.
Управление(Out) выход регулятора шкала 0-100 Кп - коэффициент пропорциональности = 0.1 Ти - время интегрирования = 5 с
Регулятор должен вызываться с какой то периодичностью допустим раз в 1 секунду, тогда значение Ти будет в секундах
Интегральная часть (Ui) = 1/ Ти * Текущее_рассогласование
Шаг 1 Pv Расход воздуха равен 10 м3/ч Sp Задание по воздуху 20 м3/ч Текущее_рассогласование = Sp- Pv = 20 - 10 = 10 Предыдущее_рассогласование = 0 При первом включении регулятора Ui = - Кп * Текущее_рассогласование , что бы выход регулятора был равен 0. Out = 0 + 0.1 * ( 10 - 0 ) + (- 0.1 * 10 ) = 0
Через 1 секунду
Шаг 2 Pv Расход воздуха равен 10 м3/ч Sp Задание по воздуху 20 м3/ч Текущее_рассогласование = Sp- Pv = 20 - 10 = 10 Предыдущее_рассогласование = 10 Ui = 1/5 * 10 = 2 Out = 0 + 0.1 * ( 10 - 10 ) + 1/5 * 10 = 2
Через 1 секунду
Шаг 3 Pv Расход воздуха равен 15 м3/ч Sp Задание по воздуху 20 м3/ч Текущее_рассогласование = Sp- Pv = 20 - 15 = 5 Предыдущее_рассогласование = 10 Ui = 1/5 * 10 = 2 Out = 2 (Out) + 0.1 * ( 5 - 10 ) + 1/5 * 10 = 2 - 0.5 +2 = 3.5
И т д
Если выход регулятора будет больше 100 или меньше 0 то выход регулятора нужно замораживать
|
|
|
|
|
Apr 27 2005, 16:57
|
Группа: Новичок
Сообщений: 9
Регистрация: 26-04-05
Пользователь №: 4 522

|
Прежде всего нужно начать с того, каков объект и его передаточная функция. Тип регулятора и инженерные методы его синтеза выбираются исходя из модели объекта. Да, классический случай прост, но, например для температурных процессов можно добавить форсирование, так как они медленные... и.т.д А задача программирования достаточно проста. Выбрать дискретный регулятор(модель) и вперед. Есть простой способ получения С кода регулятора. Берется MATLAB с Control System ToolBox, синтезируется и моделируется в нем система управления, а далее можно получить C- код регулятора, там даже некое API есть и библиотеки нужные, как это сделать, написано в документации.
|
|
|
|
|
Apr 28 2005, 15:03
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
Цитата(pschl @ Apr 27 2005, 19:57) Прежде всего нужно начать с того, каков объект и его передаточная функция. Тип регулятора и инженерные методы его синтеза выбираются исходя из модели объекта. Вот такой обобщенный вопрос: А если не знаем объект и его передаточную функцию - и все это черный ящик. И модель объекта построить сложно, чтоб адекватно все свойства отражала. Есть только входные воздействия и выходные отклики (и мы знаем какой он должен быть с вероятностью < 1). Что делать ?? То есть, как строить систему с обучением в общем я знаю, но как обучать, чтобы добиться лучшего приближения и макс. быстрой стабилизации(захвата) - очень хочу знать. Что значит "форсирование" Цитата(pschl @ Apr 27 2005, 19:57) ..можно добавить форсирование, так как они медленные...
|
|
|
|
|
May 5 2005, 04:34
|
Участник

Группа: Свой
Сообщений: 27
Регистрация: 28-04-05
Пользователь №: 4 557

|
Была аналогичная проблема. Достаточно долгий выход на режим из за перерегулирования и достатачно длительного затем успокоения системы. Причем требовалось убрать перерегулирование температуры совсем. Задача была в поддержании температур в диапазоне от 30 до 400 градусов с точностью не менее 0.2 градусов. выход на режим осуществляется с со скоростью от 0.5 до 100 грд/мин. Перерегулирование происходит по двум причинам 1. влияние интегральной, накопившейся за время выхода на режим. 2. из за тепловой инерции системы. Решилось следующим образом: Был взят класический ПИД закон. при выходе на заданную температуру интегральная составляющая не участвует. т.к. ее влияние важно только на этапе поддержания. Затем империческим путем определена тепловая инерция системы. т.е. Перелет без участия интегральной. Таким образом получили формулу расчета, дельты когда при выходе на режим регулирование надо прекращать. Тзаданная = Тзаданная - дельта. После прекращения регулирования ждем падения скорости прироста температуры практически до нуля. и начинаем регулирование. Чтобы не было провала в регулировании из за отсутствия интегральной ее надо начинать накапливать с температуры зависящей от скорости выхода и заданной температуры. (формулу получили также империческим путем)
Кстати. Можно еще не ждать перелета, а принудительно понижать скорость на конечном этапе. Таким образом время выхода на режим уменьшается в разы
|
|
|
|
|
May 5 2005, 06:07
|
Участник

Группа: Свой
Сообщений: 27
Регистрация: 28-04-05
Пользователь №: 4 557

|
Кстати ПИД регудятор можно усовершенствовать. Добавив к нему постоянную составляющую, зависящую от заданного значения. Мы ведь знаем какое воздействие надо оказывать на систему в состоянии поддержания. Возьмем это воздействие вычтем где-то 5-10%. и добавим к резульату ПИД расчета. Тем самым мы уменьшим время выхода на режим поддержания. т.к. интегральную составляющую надо копить меньше
|
|
|
|
|
May 6 2005, 11:40
|

Частый гость
 
Группа: Свой
Сообщений: 146
Регистрация: 4-11-04
Из: Московская область
Пользователь №: 1 040

|
Цитата ..при выходе на заданную температуру интегральная составляющая не участвует. т.к. ее влияние важно только на этапе поддержания. .. Цитата(yuriyc @ May 5 2005, 09:07) Кстати ПИД регудятор можно усовершенствовать. Добавив к нему постоянную составляющую, зависящую от заданного значения. Удивительно, как иногда разные разработчики независимо друг от друга приходят к одним и тем же выводам. Что удивительно приятно. Могу лишь добавить, что иногда может быть удобно определить массив "постоянных составляющих" для разных температур. Так сказать, "равновесную кривую". А значения между этими точками считать посредством кусочно-линейной апроксимации.
--------------------
- ЗАМЕНЯТЬ ДЕТАЛИ НА ХОДУ ВОСПРЕЩАЕТСЯ !!! -
|
|
|
|
|
May 6 2005, 17:23
|
Участник

Группа: Свой
Сообщений: 27
Регистрация: 28-04-05
Пользователь №: 4 557

|
Цитата(-Tумблер- @ May 6 2005, 14:40) Могу лишь добавить, что иногда может быть удобно определить массив "постоянных составляющих" для разных температур. Так сказать, "равновесную кривую". А значения между этими точками считать посредством кусочно-линейной апроксимации. Полностью согласен. При не линейности характеристик это очень даже поможет  Скорее это будет даже более правильным решением
|
|
|
|
|
May 11 2005, 06:34
|
Участник

Группа: Свой
Сообщений: 27
Регистрация: 28-04-05
Пользователь №: 4 557

|
Цитата(khach @ May 6 2005, 22:46) При ПИД регулировке нагревателей (и охладителей) столкнулся с ситуацией, когда постоянная времени "вверх" сильно отличаеться от постоянной времени "вниз". Кто нибудь сталкивался с регуляторами с двумя P (одна-"вверх", другая -"вниз")? И что говорит академическая теория устойчивости о таких системах? Ну на счет академическай теории устойчивости о таких системах не скажу. Не вкурсе. Но мне кажется, что конечная устойчивость будет связана с точностью управляющего воздействия. Так в систевах нагрева ее можно довести до сотых градуса используя электронагреватели. А вот при охлаждении уже нет такого результата. Так для крио установок на жидном азоте, заявленная точность крана впрыска +-5грд/сельсия. Охладить можно до -400грд. Тут уже вопрос в реализации системы и общем диапазоне рабочих температур. Точность можно повысить, я думаю, за счет константы холода и регулированным подогревом. Что касается постоянной времени, то если нагрев принудительный, то охлаждение наверняка естественное ну или обдув воздухом. Отсюда и разница. Эфективность то нагрева выше.
|
|
|
|
|
May 11 2005, 09:47
|

Частый гость
 
Группа: Свой
Сообщений: 146
Регистрация: 4-11-04
Из: Московская область
Пользователь №: 1 040

|
Цитата(khach @ May 6 2005, 22:46) Кто нибудь сталкивался с регуляторами с двумя P (одна-"вверх", другая -"вниз")? И что говорит академическая теория устойчивости о таких системах? Специально ничего такого от академической науки найти не удалось. Что касается регуляторов температуры, то подозреваю что "все они такие". Причем в Якутии это будет не так, как в Сахаре. Что можно было бы предложить ? Если очень надо, можно использовать разные передаточные функции регулятора для процесса нагревания и охлаждения. Видимо, так можно улучшить динамические свойства системы. Общие законы устойчивости, конечно, не меняются. '' ..достаточный запас по фазе на частоте единичного усиления разомкнутой системы..''
--------------------
- ЗАМЕНЯТЬ ДЕТАЛИ НА ХОДУ ВОСПРЕЩАЕТСЯ !!! -
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|