Страница 1 из 1
ПИД-регулятор. Интегральная составляющая.
Добавлено: Вт окт 21, 2014 16:34:24
mp26a
Здравствуйте!
Уже третий день мучаюсь, но так ничего на ум не пришло.
Хочу запрограммировать ПИД-регулятор для паяльной станции. Изучил тему. Но не до конца понял, каким образом уложиться в диапазон пропорциональности.
Итак формула ПИД регулятора: U = (Kp*Err + Ki*(PrevInteg + Err) + Kd*(Err - PrevErr)) / K * 100%
Где K - коэффициент диапозона пропорциональности (то бишь у меня регулятор начинает работать когда паяльник нагреется до 90, макс. возможная температура 400, K = 400 - 90 = 310)/
Накидал в Excel табличку с примерными температурами - допустим установл. температура 200, греем от 90 до 200. И заметил, что интегральная составляющая накапливается и общее значение U выходит за 100%. Конечно, дойдя до необходимого уровня интегральная составляющая не меняется далее. Особенно гигантское значение я получаю когда уст. температура 400 градусов. Подскажите, как с этим мириться? То есть вопрос у меня таков: как вычислять на каждом шаге ПИД регулирования процент от подаваемой на паяльник мощности из результата формулы?
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Вт окт 21, 2014 19:08:34
Zud
Интегральную составляющую можно просто ограничить (типа насыщение) так, чтобы она уходила без существенного выплеска температуры вверх.
А вообще, если у вас малая задержка в контуре управления, то можно просто управлять скоростью нагрева. Это позволит быстро компенсировать падение температуры после касания жала.
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Вт окт 21, 2014 19:39:54
vdavid
mp26a По-моему Вы немного запутались. Результат Вашей формулы как раз и дает порцию энергии, а не напряжение. Иными словами U - это на самом деле P при фиксированном t или t при фиксированном P. Что касается интегральной составляющей, то коэффициент Ki может быть (и часто бывает со знаком "-")

. Ну и ограничивать накопленную интегральную составляющую что сверху, что снизу все равно придется.
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Вт окт 21, 2014 19:46:14
dr.doc
Ki*(PrevInteg + Err) - А по этой части у Вас не квадратичная зависимость получается? Вы же, если я правильно понял, умножаете предыдущее значение интегратора, просуммированное с текущей ошибкой на коэффициент Ki?
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Вт окт 21, 2014 21:10:35
mp26a
vdavid писал(а):mp26a По-моему Вы немного запутались. Результат Вашей формулы как раз и дает порцию энергии, а не напряжение. Иными словами U - это на самом деле P при фиксированном t или t при фиксированном P. Что касается интегральной составляющей, то коэффициент Ki может быть (и часто бывает со знаком "-")

. Ну и ограничивать накопленную интегральную составляющую что сверху, что снизу все равно придется.
Да, это я понимаю, что результат должен быть - доля мощности, которую необходимо подать на нагреватель в следующем шаге регулирования. По поводу отрицательного Ki - спасибо за подсказку )
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Вт окт 21, 2014 21:11:57
mp26a
dr.doc писал(а):Ki*(PrevInteg + Err) - А по этой части у Вас не квадратичная зависимость получается? Вы же, если я правильно понял, умножаете предыдущее значение интегратора, просуммированное с текущей ошибкой на коэффициент Ki?
PrevInteg + Ki*Err ?
Просто на разных сайтах по разному пишут.
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Вт окт 21, 2014 21:12:30
mp26a
Zud писал(а):Интегральную составляющую можно просто ограничить (типа насыщение) так, чтобы она уходила без существенного выплеска температуры вверх.
А вообще, если у вас малая задержка в контуре управления, то можно просто управлять скоростью нагрева. Это позволит быстро компенсировать падение температуры после касания жала.
А как управлять?
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Ср окт 22, 2014 19:57:55
Zud
mp26a писал(а):Zud писал(а):можно просто управлять скоростью нагрева. Это позволит быстро компенсировать падение температуры после касания жала.
А как управлять?
Код: Выделить всё
заданная_скорость_изменения_температуры = 1*( заданная_температура - текущая_температура)
если ( текущая_скорость_изменения_температуры < заданной_скорости_изменения_температуры )
то включить_нагрев
иначе выключить_нагрев
вместо единички можно и другой коэффициент.
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Чт окт 23, 2014 07:29:08
vdavid
Zud, А что здесь "текущая_скорость_изменения_температуры"?
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Чт окт 23, 2014 23:33:48
Zud
vdavid, ну так просто производную по температуре взять. если сигнал не шумный и соответствует действительности, то будет норм.
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Пт окт 24, 2014 07:58:29
vdavid
Zud, Тогда получим просто P(П)-регулятор со всеми вытекающими

.
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Пт окт 24, 2014 19:13:25
Zud
Нет. Это будет не П-регулятор, а скорее релейный регулятор с быстрой реакцией на невязку. А что за проблемы ?
Re: ПИД-регулятор. Интегральная составляющая.
Добавлено: Пт окт 24, 2014 22:52:37
vdavid
Да никаких проблем. По методу управления это будет релейный регулятор. Но это же не влияет на способ регулирования. Если использовать
только производную, то получим Д-регулятор, который работать не может в принципе. Как в таком случае отслеживать целевую величину? Потому и переспросил. Просто я так и не понял Ваш первоначальный алгоритм. Ведь
Код: Выделить всё
заданная_скорость_изменения_температуры = 1*( заданная_температура - текущая_температура)
вовсе не скорость, а ошибка. Т.е. это не первая производная. А "текущая_скорость_изменения_температуры" не определена совсем.