Этот пример показывает, как разработать обратную связь и 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 архитектурой, показанной ниже:
Рисунок 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 может помочь с отклонением измеренных воздействий. Затем мы смотрим на преимущества объединения обеих схем. Соответствующую архитектуру управления показывают ниже:
Рисунок 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