Этот пример показывает, как построить график линеаризации модели Simulink в определенных условиях во время симуляции. Программное обеспечение Simulink Control Design предоставляет блоки, которые можно добавить к моделям Simulink, чтобы вычислить и построить график линейных систем во время симуляции. В этом примере линейную систему химреагента с непрерывным перемешиванием вычисляют и строят график на диаграмме Боде, когда реактор переходит через различные рабочие точки.
Откройте модель Simulink химического реактора:
open_system('scdcstr')
Реактор имеет три входа и два выхода:
The FeedCon0
, FeedTemp0
и Coolant Temp
блоки моделируют концентрацию сырья, температуру питания и входы температуры хладагента соответственно.
The T
и CA
порты CSTR
блок моделирует температуру реактора и выходы остаточной концентрации соответственно.
Этот пример фокусируется на реакции от температуры хладагента, Coolant Temp
, к остаточной концентрации, CA
, когда концентрация сырья и температура подачи постоянны.
Для получения дополнительной информации о моделировании реакторов см. Seborg, D.E. et al., «Process Dynamics and Control», 2nd Ed., Wiley, pp.34-36.
Модель реактора содержит Bode Plot
блок из библиотеки Линейных графиков для анализа Simulink Control Design. Блок сконфигурирован с:
Вход линеаризации при температуре хладагента Coolant Temp
.
Выход линеаризации при остаточной концентрации CA
.
Блок также сконфигурирован для выполнения линеаризации на восходящих ребрах внешнего триггерного сигнала. Триггерный сигнал вычисляется в Linearization trigger signal
блок, который создает растущее ребро, когда остаточная концентрация:
При установившемся значении 2
В узкой области значений около 5
При установившемся значении 9
Двойной клик по Bode Plot
позволяет просматривать строение блоков.
Нажатие кнопки Показа Plot в диалоговом окне Параметров блоков открывает Диаграмму Боде окно, в котором показана реакция вычисляемой линейной системы из Coolant Temp
на CA
. Чтобы вычислить линейную систему и просмотреть ее ответ, симулируйте модель с помощью одного из следующих:
Нажмите на Run
кнопка в окне Диаграмма Боде.
Выберите симуляция > запуск в окне модели.
Введите следующую команду:
sim('scdcstr')
Диаграмма Боде показывает линеаризированный реактор в трех рабочих точках, соответствующих триггерным сигналам, заданным в Linearization trigger signal
блок:
При 5 с линеаризация происходит при низкой остаточной концентрации.
При 38 с. линеаризация имеет высокую остаточную концентрацию.
Через 27 секунд линеаризация происходит, когда реактор переходит от низкой до высокой остаточной концентрации.
Линеаризация при низких и высоких остаточных концентрациях аналогична, но линеаризация во время перехода имеет значительно отличающиеся характеристики усиления и фазы постоянного тока. На низких частотах фаза отличается на 180 степени, что указывает на наличие либо нестабильного полюса, либо нуля.
Вкладка Logging в Bode Plot
блок задает, чтобы вычисленные линейные системы были сохранены как переменная рабочей области.
Линейные системы регистрируются в структуре с time
и values
поля.
LinearReactor
LinearReactor = struct with fields: time: [3x1 double] values: [1x1x3x1 ss] blockName: 'scdcstr/Bode Plot'
The values
поле сохраняет линейные системы как массив систем в пространстве состояний LTI. Для получения дополнительной информации см. Раздел «Массивы моделей».
Можно извлечь отдельные системы путем индексации в values
поле.
P1 = LinearReactor.values(:,:,1); P2 = LinearReactor.values(:,:,2); P3 = LinearReactor.values(:,:,3);
Диаграмма Боде линейной системы в момент 27 с, когда реактор переходит от низкой к высокой остаточной концентрации, указывает, что система может быть нестабильной. Отображение линейных систем в формате полюс-ноль подтверждает это:
zpk(P1) zpk(P2) zpk(P3)
ans = From input "Coolant Temp" to output "CSTR/2": -0.1028 ---------------------- (s^2 + 2.215s + 2.415) Continuous-time zero/pole/gain model. ans = From input "Coolant Temp" to output "CSTR/2": -0.07514 --------------------- (s+0.7567) (s-0.3484) Continuous-time zero/pole/gain model. ans = From input "Coolant Temp" to output "CSTR/2": -0.020462 --------------------- (s+0.8542) (s+0.7528) Continuous-time zero/pole/gain model.
Закройте модель Simulink:
bdclose('scdcstr') clear('LinearReactor','P1','P2','P3')