ПИД-регулятор. Интегральная составляющая.

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт дек 26, 2013 13:44:06

Сообщение 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 градусов. Подскажите, как с этим мириться? То есть вопрос у меня таков: как вычислять на каждом шаге ПИД регулирования процент от подаваемой на паяльник мощности из результата формулы?
Реклама
Zud
Встал на лапы
Аватара пользователя
Сообщения: 129
Зарегистрирован: Пн авг 19, 2013 03:23:00
Откуда: замкадье

Сообщение Zud »

Интегральную составляющую можно просто ограничить (типа насыщение) так, чтобы она уходила без существенного выплеска температуры вверх.

А вообще, если у вас малая задержка в контуре управления, то можно просто управлять скоростью нагрева. Это позволит быстро компенсировать падение температуры после касания жала.
Реклама
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

mp26a По-моему Вы немного запутались. Результат Вашей формулы как раз и дает порцию энергии, а не напряжение. Иными словами U - это на самом деле P при фиксированном t или t при фиксированном P. Что касается интегральной составляющей, то коэффициент Ki может быть (и часто бывает со знаком "-") :) . Ну и ограничивать накопленную интегральную составляющую что сверху, что снизу все равно придется.
Последний раз редактировалось vdavid Вт окт 21, 2014 19:46:55, всего редактировалось 1 раз.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

Ki*(PrevInteg + Err) - А по этой части у Вас не квадратичная зависимость получается? Вы же, если я правильно понял, умножаете предыдущее значение интегратора, просуммированное с текущей ошибкой на коэффициент Ki?
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт дек 26, 2013 13:44:06

Сообщение mp26a »

vdavid писал(а):mp26a По-моему Вы немного запутались. Результат Вашей формулы как раз и дает порцию энергии, а не напряжение. Иными словами U - это на самом деле P при фиксированном t или t при фиксированном P. Что касается интегральной составляющей, то коэффициент Ki может быть (и часто бывает со знаком "-") :) . Ну и ограничивать накопленную интегральную составляющую что сверху, что снизу все равно придется.
Да, это я понимаю, что результат должен быть - доля мощности, которую необходимо подать на нагреватель в следующем шаге регулирования. По поводу отрицательного Ki - спасибо за подсказку )
Реклама
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт дек 26, 2013 13:44:06

Сообщение mp26a »

dr.doc писал(а):Ki*(PrevInteg + Err) - А по этой части у Вас не квадратичная зависимость получается? Вы же, если я правильно понял, умножаете предыдущее значение интегратора, просуммированное с текущей ошибкой на коэффициент Ki?
PrevInteg + Ki*Err ?
Просто на разных сайтах по разному пишут.
Реклама
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт дек 26, 2013 13:44:06

Сообщение mp26a »

Zud писал(а):Интегральную составляющую можно просто ограничить (типа насыщение) так, чтобы она уходила без существенного выплеска температуры вверх.

А вообще, если у вас малая задержка в контуре управления, то можно просто управлять скоростью нагрева. Это позволит быстро компенсировать падение температуры после касания жала.
А как управлять?
Zud
Встал на лапы
Аватара пользователя
Сообщения: 129
Зарегистрирован: Пн авг 19, 2013 03:23:00
Откуда: замкадье

Сообщение Zud »

mp26a писал(а):
Zud писал(а):можно просто управлять скоростью нагрева. Это позволит быстро компенсировать падение температуры после касания жала.
А как управлять?

Код: Выделить всё

заданная_скорость_изменения_температуры = 1*( заданная_температура - текущая_температура)
если ( текущая_скорость_изменения_температуры  < заданной_скорости_изменения_температуры ) 
  то включить_нагрев
  иначе выключить_нагрев
вместо единички можно и другой коэффициент.
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

Zud, А что здесь "текущая_скорость_изменения_температуры"?
Zud
Встал на лапы
Аватара пользователя
Сообщения: 129
Зарегистрирован: Пн авг 19, 2013 03:23:00
Откуда: замкадье

Сообщение Zud »

vdavid, ну так просто производную по температуре взять. если сигнал не шумный и соответствует действительности, то будет норм.
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

Zud, Тогда получим просто P(П)-регулятор со всеми вытекающими :( .
Zud
Встал на лапы
Аватара пользователя
Сообщения: 129
Зарегистрирован: Пн авг 19, 2013 03:23:00
Откуда: замкадье

Сообщение Zud »

Нет. Это будет не П-регулятор, а скорее релейный регулятор с быстрой реакцией на невязку. А что за проблемы ?
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

Да никаких проблем. По методу управления это будет релейный регулятор. Но это же не влияет на способ регулирования. Если использовать только производную, то получим Д-регулятор, который работать не может в принципе. Как в таком случае отслеживать целевую величину? Потому и переспросил. Просто я так и не понял Ваш первоначальный алгоритм. Ведь

Код: Выделить всё

заданная_скорость_изменения_температуры = 1*( заданная_температура - текущая_температура)
вовсе не скорость, а ошибка. Т.е. это не первая производная. А "текущая_скорость_изменения_температуры" не определена совсем.
Ответить

Вернуться в «Теория»