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

Этот пример показывает, как разработать обратную связь и 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: процесс разомкнутого цикла.

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

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

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

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

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

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

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

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

В действительности погрешности моделирования предотвращают точное подавление помех, но управление 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