Графическое изображение характеристик линейной системы химического реактора

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

Похожие темы