В этом примере показано, как построить линеаризацию модели Simulink при конкретных условиях в процессе моделирования. Программное обеспечение Simulink Control Design обеспечивает блоки, которые можно добавить в модели Simulink, чтобы вычислить и построить линейные системы в процессе моделирования. В этом примере линейная система непрерывно размешиваемого химического реактора вычислена и построена на Диаграмме Боде как реакторные переходы через различные рабочие точки.
Откройте модель Simulink химического реактора:
open_system('scdcstr')
Реактор имеет три входных параметров и два выходных параметров:
FeedCon0
, FeedTemp0
и Coolant Temp
блоки моделируют концентрацию канала, питают температуру и входные параметры температуры хладагента соответственно.
T
и CA
порты CSTR
блокируйтесь моделируют реакторную температурную и остаточную концентрацию выходные параметры соответственно.
Этот пример фокусируется на ответе от температуры хладагента, Coolant Temp
, к остаточной концентрации, CA
, когда концентрация канала и температура канала являются постоянными.
Для получения дополнительной информации о моделировании реакторов смотрите Seborg, D.E. и др., "Динамика процесса и Управление", 2-й Эд., Вайли, pp.34-36.
Реакторная модель содержит Bode Plot
блок из библиотеки Simulink Control Design Linear Analysis Plots. Блок сконфигурирован с:
Вход линеаризации при температуре хладагента Coolant Temp
.
Линеаризация выход при остаточной концентрации CA
.
Блок также сконфигурирован, чтобы выполнить линеаризацию на возрастающих ребрах внешнего триггерного сигнала. Триггерный сигнал вычисляется в Linearization trigger signal
блокируйтесь, который производит возрастающее ребро, когда остаточная концентрация:
В значении устойчивого состояния 2
В узком диапазоне приблизительно 5
В значении устойчивого состояния 9
Двойной клик по Bode Plot
блок позволяет вам просмотреть настройку блока.
Нажатие на Show Plot в диалоговом окне Block Parameters открывает окно Bode Plot, которое показывает ответ вычисленной линейной системы от Coolant Temp
к CA
. Чтобы вычислить линейную систему и просмотреть ее ответ, симулируйте модель с помощью одного из следующего:
Нажмите Run
кнопка в окне Bode Plot.
Выберите Simulation> Run в окне модели Simulink.
Введите следующую команду:
sim('scdcstr')
Диаграмма Боде показывает линеаризовавший реактор в трех рабочих точках, соответствующих триггерным сигналам, заданным в Linearization trigger signal
блок:
В 5 секунд линеаризация для низкой остаточной концентрации.
В 38 секунд линеаризация для высокой остаточной концентрации.
В 27 секунд линеаризация как реакторные переходы от минимума до высокой остаточной концентрации.
Линеаризация при низких и высоких остаточных концентрациях подобна, но линеаризация во время перехода имеет существенно отличающееся усиление DC и характеристики фазы. В низких частотах фаза отличается 180 градусами, указывая на присутствие или нестабильного полюса или нуля.
Вкладка Logging в Bode Plot
блок указывает, что вычисленные линейные системы сохранены как переменная рабочей области.
В линейные системы входят структура с time
и values
поля .
LinearReactor
LinearReactor = struct with fields: time: [3x1 double] values: [1x1x3x1 ss] blockName: 'scdcstr/Bode Plot'
values
поле хранит линейные системы как массив систем в пространстве состояний LTI. Для получения дополнительной информации смотрите Массивы моделей (Control System Toolbox).
Можно получить отдельные системы путем индексации в 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')