Этот пример показывает, как построить график линеаризации модели 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')