воскресенье, 3 января 2016 г.

Текущие новости по проекту tSol

Попробовал в работе дифференциальный ПИД-регулятор им. Л.И.Ридико. Впечатления от него несколько противоречивые: с одной стороны, он очень быстро реагирует на изменение, но с другой – там глубина буфера состояний всего на 2 интерации, что, по-моему, скорее мешает, чем помогает.

Реверсил его по вот этому краткому описанию:

..Полученное значение температуры t поступает на PID-регулятор. Регулятор реализован в дифференциальной форме, т.е. пропорциональная составляющая превращается в дифференциальную, интегральная - в пропорциональную, а дифференциальная - во вторую производную. На выходе получаем дифференциал воздействия. Такой подход позволяет избавится от интегральной составляющей вместе с проблемой ее ограничения:

dP = Kp*(t[i]-t[i-1]) - Ki*(tset-t[i]) + Kd*(t[i]-2*t[i-1] + t[i-2])

Из дифференциала мощности и предыдущего значения мощности получаем текущее значение мощности, которую нужно подать на нагреватель:

P[i] = P[i-1] - dP

Правда, я сознательно упростил решение и не стал ставить КИХ-фильтр с децимацией на входе ПИД, а просто сделал оверсемплинг на 2 разряда (x16) с децимацией. Возможно, что причина в этом – у Ридико стоит КИХ с периодом 100 мс, который (насколько я понимаю) ослабляет влияние шумовых сигналов >5 Гц. Но не полностью уверен – надо будет почитать теорию КИХ-фильтров.

Надо будет попробовать: а) увеличить оверсемплинг до 3 разрядов (x64) и б) применить ПИД-регулятор из C-приложения к апноту AVR221 компании Atmel.

UPD. И еще из наблюдений. Так как это дифференциальный регулятор, он не реагирует на статическое состояние. Поэтому контролируемый параметр должен отличаться от уставки не менее чем на 1 . Что, впрочем, имеет значение только при использовании имитатора WSP 80.

Комментариев нет:

Отправить комментарий

Ваш комментарий откроется после проверки и подтверждения.
Благодарю за понимание необходимости проверки!