Контроль температуры в теплообменнике

В этом примере показано, как спроектировать обратную связь и компенсаторы feedforward, чтобы отрегулировать температуру химического реактора через теплообменник.

Процесс теплообменника

Химический реактор, названный "активный бак", изображен ниже. Главный вход поставляет жидкость, которая будет смешана в баке. Жидкость бака должна быть обеспечена при постоянной температуре путем варьирования количества пара, предоставленного теплообменнику (трубопровод, уложенный по дну) через его распределительный клапан. Изменения температуры входного потока являются основным источником воздействий в этом процессе.

Рисунок 1: активный реактор с теплообменником.

Используя результаты измерений, чтобы смоделировать динамику теплообменника

Чтобы вывести первый порядок плюс deadtime модель характеристик теплообменника, введите воздействие шага в напряжении клапана V и запишите эффект на температуре бака T в зависимости от времени. Измеренный ответ в нормированных единицах показывают ниже:

heatex_plotdata
title('Measured response to step change in steam valve voltage');

Значения t1 и t2 являются временами, где ответ достигает 28,3% и 63,2% его окончательного значения. Можно использовать эти значения, чтобы оценить постоянную времени tau и потеря времени theta для теплообменника:

t1 = 21.8; t2 = 36.0;
tau = 3/2 * ( t2 - t1 )
theta = t2 - tau
tau =

   21.3000


theta =

   14.7000

Проверьте эти вычисления путем сравнения первого порядка плюс deadtime ответ с измеренным ответом:

s = tf('s');
Gp = exp(-theta*s)/(1+tau*s)
Gp =
 
                     1
  exp(-14.7*s) * ----------
                 21.3 s + 1
 
Continuous-time transfer function.

hold on, step(Gp), hold off
title('Experimental vs. simulated response to step change');

Ответ модели и экспериментальные данные находятся в хорошем соглашении. Подобный тестовый эксперимент удара мог быть проведен, чтобы оценить ответ первого порядка на воздействие шага в температуре притока. Оборудованный моделями для теплообменника и воздействия притока, мы готовы спроектировать алгоритм управления.

Управление с обратной связью

Представление блок-схемы процесса разомкнутого цикла показывают ниже.

Рисунок 2: процесс разомкнутого цикла.

Передаточная функция

$$ G_p(s) = {e^{-14.7 s} \over 21.3s+1} $$

моделирует как изменение в напряжении V управление паровым открытием клапана влияет на температуру бака T, в то время как передаточная функция

$$ G_d(s) = {e^{-35 s} \over 25s+1}  $$

моделирует как изменение d в притоке температура влияет на T. Отрегулировать температуру бака T вокруг данного заданного значения Tsp, мы можем использовать следующую архитектуру обратной связи, чтобы управлять открытием клапана (напряжение V):

Рисунок 3: управление с обратной связью.

В этой настройке, контроллере пропорционального интеграла (PI)

$$ C(s) = K_c (1 + {1 \over \tau_c s} ) $$

вычисляет напряжение V на основе разрыва Tsp-T между желаемыми и измеренными температурами. Можно использовать формулы ITAE, чтобы выбрать соответствующие значения для параметров контроллера:

$$ K_c =  0.859 (\theta / \tau)^{-0.977} , \;\;\; \tau_c = ( \theta / \tau )^{0.680} \tau / 0.674 $$

Kc = 0.859 * (theta / tau)^(-0.977)
tauc = ( tau / 0.674 ) * ( theta / tau )^0.680
C = Kc * (1 + 1/(tauc*s));
Kc =

    1.2341


tauc =

   24.5582

Чтобы видеть, как хорошо контроллер ITAE выполняет, закройте обратную связь и симулируйте ответ на изменение сетбола:

Tfb = feedback(ss(Gp*C),1);
step(Tfb), grid on
title('Response to step change in temperature setpoint T_{sp}')
ylabel('Tank temperature')

Ответ довольно быстр с некоторым перерегулированием. Рассмотрение запасов устойчивости подтверждает, что запас по амплитуде слаб:

margin(Gp*C), grid

Сокращение пропорционального усиления Kc усиливает устойчивость за счет производительности:

C1 = 0.9 * (1 + 1/(tauc*s));  % reduce Kc from 1.23 to 0.9
margin(Gp*C1), grid

step(Tfb,'b', feedback(ss(Gp*C1),1),'r')
legend('Kc = 1.23','Kc = 0.9')

Управление feedforward

Вспомните, что изменения в температуре притока являются основным источником температурных колебаний бака. Чтобы отклонить такие воздействия, альтернатива управлению с обратной связью является архитектурой feedforward, показанной ниже:

Рисунок 4: управление Feedforward.

В этой настройке, контроллер feedforward F измерения использования температуры притока, чтобы настроить паровое открытие клапана (напряжение V). Управление Feedforward таким образом ожидает и вытесняет эффект изменений температуры притока.

Прямое вычисление показывает что полная передача от температурного воздействия d к температуре бака T

$$ T = (G_p F + G_d) d $$

Совершенное подавление помех требует

$$ G_p F + G_d = 0  \rightarrow F = -{G_d \over G_p} = - {21.3s+1 \over 25s+1} e^{-20.3 s}$$

В действительности погрешности моделирования предотвращают точное подавление помех, но управление feedforward поможет минимизировать температурные колебания, должные вливаться воздействия. Чтобы получить лучший смысл того, как схема feedforward выполнила бы, увеличьте идеальную задержку feedforward на 5 секунд и симулируйте ответ на ступенчатое изменение в температуре притока:

Gd = exp(-35*s)/(25*s+1);
F = -(21.3*s+1)/(25*s+1) * exp(-25*s);
Tff = Gp * ss(F) + Gd;   % d->T transfer with feedforward control

step(Tff), grid
title('Effect of a step disturbance in inflow temperature')
ylabel('Tank temperature')

Объединенное управление с обратной связью feedforward

Управление с обратной связью хорошо для заданного значения, отслеживающего в целом, в то время как управление feedforward может помочь с отклонением измеренных воздействий. Затем мы смотрим на преимущества объединения обеих схем. Соответствующую архитектуру управления показывают ниже:

Рисунок 5: управление с обратной связью feedforward.

Используйте connect создавать соответствующую модель с обратной связью от Tsp,d к T. Имя каналы ввода и вывода каждого блока, затем позвольте connect автоматически соедините схему:

Gd.u = 'd';  Gd.y = 'Td';
Gp.u = 'V';  Gp.y = 'Tp';
F.u = 'd';  F.y = 'Vf';
C.u = 'e';  C.y = 'Vc';
Sum1 = sumblk('e = Tsp - T');
Sum2 = sumblk('V = Vf + Vc');
Sum3 = sumblk('T = Tp + Td');
Tffb = connect(Gp,Gd,C,F,Sum1,Sum2,Sum3,{'Tsp','d'},'T');

Чтобы сравнить ответы с обратной связью с и без управления feedforward, вычислите соответствующую передаточную функцию с обратной связью для настройки только для обратной связи:

C.u = 'e';  C.y = 'V';
Tfb = connect(Gp,Gd,C,Sum1,Sum3,{'Tsp','d'},'T');

Теперь сравните два проекта:

step(Tfb,'b',Tffb,'r--'), grid
title('Closed-loop response to setpoint and disturbance step change')
ylabel('Tank temperature')
legend('Feedback only','Feedforward + feedback')

Два проекта имеют идентичную производительность для отслеживания заданного значения, но сложение управления feedforward явно выгодно для подавления помех. Это также отображается на Диаграмме Боде с обратной связью

bodemag(Tfb,'b',Tffb,'r--',{1e-3,1e1})
legend('Feedback only','Feedforward + feedback','Location','SouthEast')

Интерактивная симуляция

Чтобы получить дополнительное понимание и в интерактивном режиме настроить feedforward и усиления обратной связи, используйте сопутствующий графический интерфейс пользователя и модель Simulink®. Нажмите на ссылку ниже, чтобы запустить графический интерфейс пользователя.

Откройте модель Heat Exchanger и графический интерфейс пользователя

heatex