exponenta event banner

Линеаризация моделей Simulink

Как правило, реальные системы являются нелинейными. Для проектирования MPC-контроллера для нелинейной системы можно смоделировать установку в Simulink ®.

Хотя контроллер MPC может регулировать нелинейную установку, модель, используемая в контроллере, должна быть линейной. Другими словами, контроллер использует линейную аппроксимацию нелинейной установки. Точность этого приближения существенно влияет на производительность контроллера.

Чтобы получить такую линейную аппроксимацию, необходимо провести линеаризацию нелинейной установки в указанной рабочей точке.

Примечание

Для линеаризации нелинейных моделей Simulink необходимо установить программное обеспечение Simulink Control Design™.

Можно линеаризовать модель Simulink:

Линеаризация с использованием кода MATLAB

В этом примере показано, как получить линейную модель завода с помощью сценария MATLAB.

В этом примере модель CSTR, CSTR_OpenLoop, линеаризован. Входными данными модели являются температура хладагента (управляемая переменная контроллера MPC), ограничивающая концентрацию реагентов в потоке сырья и температура сырья. Модельные состояния представляют собой температуру и концентрацию ограничивающего реагента в потоке продукта. Оба состояния измеряются и используются для управления с обратной связью.

Получение стационарной рабочей точки

Рабочая точка определяет номинальные условия линеаризации модели. Обычно это стационарное состояние.

Предположим, что планируется использовать CSTR с выходной концентрацией, C_A, при 2 кмоль/м3. Номинальная концентрация сырья составляет 10 кмоль/м3, а номинальная температура сырья - 300 К. Создайте объект спецификации рабочей точки для определения установившихся условий .

opspec = operspec('CSTR_OpenLoop');
opspec = addoutputspec(opspec,'CSTR_OpenLoop/CSTR',2);
opspec.Outputs(1).Known = true;
opspec.Outputs(1).y = 2;

op1 = findop('CSTR_OpenLoop',opspec);
 Operating point search report:
---------------------------------

 Operating point search report for the Model CSTR_OpenLoop.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) CSTR_OpenLoop/CSTR/C_A
      x:             2      dx:      -4.6e-12 (0)
(2.) CSTR_OpenLoop/CSTR/T_K
      x:           373      dx:      5.48e-11 (0)

Inputs: 
----------
(1.) CSTR_OpenLoop/Coolant Temperature
      u:           299    [-Inf Inf]

Outputs: 
----------
(1.) CSTR_OpenLoop/CSTR
      y:             2    (2)

Расчетная рабочая точка: C_A = 2 кмоль/м3 иT_K = 373 К. Обратите внимание, что установившаяся температура хладагента также указана как 299 К, что является номинальным значением регулируемой переменной контроллера ПДК.

Чтобы указать:

  • Значения известных входов, используйте Input.Known и Input.u поля opspec

  • Начальные догадки для значений состояния, используйте State.x поле opspec

Например, следующий кодекс определяет температуру хладагента как 305 K и начальные предполагаемые значения C_A и T_K состояния перед вычислением установившейся рабочей точки:

opspec = operspec('CSTR_OpenLoop');
opspec.States(1).x = 1;
opspec.States(2).x = 400;
opspec.Inputs(1).Known = true;
opspec.Inputs(1).u = 305;

op2 = findop('CSTR_OpenLoop',opspec);
 Operating point search report:
---------------------------------

 Operating point search report for the Model CSTR_OpenLoop.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) CSTR_OpenLoop/CSTR/C_A
      x:          1.78      dx:      -4.8e-14 (0)
(2.) CSTR_OpenLoop/CSTR/T_K
      x:           377      dx:       5.4e-13 (0)

Inputs: 
----------
(1.) CSTR_OpenLoop/Coolant Temperature
      u:           305

Outputs: None 
----------

Задание входных и выходных данных линеаризации

Если входной и выходной сигналы линеаризации уже определены в модели, как в CSTR_OpenLoop, затем используйте следующее для получения набора сигналов.

io = getlinio('CSTR_OpenLoop');

В противном случае укажите входной и выходной сигналы, как показано здесь.

io(1) = linio('CSTR_OpenLoop/Coolant Temperature',1,'input');
io(2) = linio('CSTR_OpenLoop/Feed Concentration',1,'input');
io(3) = linio('CSTR_OpenLoop/Feed Temperature',1,'input');
io(4) = linio('CSTR_OpenLoop/CSTR',1,'output');
io(5) = linio('CSTR_OpenLoop/CSTR',2,'output');

Линеаризация модели

Линеаризация модели с использованием указанной рабочей точки, op1и входные/выходные сигналы, io.

sys = linearize('CSTR_OpenLoop',op1,io)
sys =
 
  A = 
            C_A      T_K
   C_A       -5  -0.3427
   T_K    47.68    2.785
 
  B = 
        Coolant Temp  Feed Concent  Feed Tempera
   C_A             0             1             0
   T_K           0.3             0             1
 
  C = 
           C_A  T_K
   CSTR/1    0    1
   CSTR/2    1    0
 
  D = 
           Coolant Temp  Feed Concent  Feed Tempera
   CSTR/1             0             0             0
   CSTR/2             0             0             0
 
Continuous-time state-space model.

Линеаризация с использованием линеаризатора модели в конструкции управления Simulink

В этом примере показано, как линеаризовать модель Simulink с помощью линеаризатора модели, предоставляемого программным обеспечением Simulink Control Design.

Открыть модель Simulink

В этом примере используется модель CSTR, CSTR_OpenLoop.

open_system('CSTR_OpenLoop')

Задание входных и выходных данных линеаризации

Входы и выходы линеаризации уже указаны для CSTR_OpenLoop. Входные сигналы соответствуют выходам Feed Concentration, Feed Temperature, и Coolant Temperature блоки. Выходные сигналы являются входами в CSTR Temperature и Residual Concentration блоки.

Чтобы указать сигнал как вход или выход линеаризации, сначала откройте вкладку Линеаризация (Linearization). Для этого в галерее Simulink Apps щелкните Диспетчер линеаризации. Затем в окне модели Simulink щелкните сигнал.

Чтобы указать сигнал как a:

  • Ввод линеаризации на вкладке Линеаризация (Linearization) в галерее Вставить точки анализа (Insert Analysis Points) щелкните Входное возмущение (Input Perturbation).

  • Выходные данные линеаризации на вкладке Линеаризация (Linearization) в коллекции Вставить точки анализа (Insert Analysis Points) щелкните Выходные измерения (Output Measurement).

Открыть линеаризатор модели

Чтобы открыть линеаризатор модели, в галерее «Приложения» щелкните Линеаризатор модели.

Указать остаточную концентрацию как известное ограничение обрезки

В окне модели Simulink щелкните значок CA выходной сигнал от CSTR блок. Затем на вкладке Линеаризация (Linearization) в коллекции Вставить точки анализа (Insert Analysis Points) щелкните Обрезать ограничение вывода (Trim Output Constraint).

В линеаризаторе модели на вкладке «Линейный анализ» выберите «Рабочая точка» > «Обрезать модель».

В диалоговом окне Обрезать модель (Trim the model) на вкладке Выходы (Outputs) выполните следующие действия.

  • Установите флажок Известно для Channel - 1 под CSTR_OpenLoop/CSTR.

  • Установите соответствующее значение в значение 2 кмоль/м3.

Создание и проверка рабочей точки

В диалоговом окне Отсечь модель (Trim the model) щелкните Начало отсечения (Start trimming).

Рабочая точка op_trim1 отображается в рабочем пространстве линейного анализа.

Двойной щелчок op_trim1 для просмотра результирующей рабочей точки.

В диалоговом окне «Редактирование» перейдите на вкладку «Ввод».

При необходимости температура хладагента в установившемся состоянии составляет 299 К.

Линеаризация модели

На вкладке «Линейный анализ» в раскрывающемся списке «Рабочая точка» выберите op_trim1.

Щелкните Шаг (Step), чтобы линеаризовать модель.

Эта опция создает линейную модель linsys1 в рабочей области линейного анализа и создает отклик шага для этой модели. linsys1 использование optrim1 в качестве рабочей точки.

Ступенчатая реакция от концентрации сырья к выходу CSTR/2 отображает интересный обратный отклик. Изучение линейной модели показывает, что CSTR/2 - остаточная концентрация CSTR, C_A. Когда концентрация сырья увеличивается, C_A первоначально увеличивается, потому что поступает больше реагента, что увеличивает скорость реакции. Это увеличение скорости приводит к более высокой температуре реактора (выход CSTR/1), что дополнительно увеличивает скорость реакции и C_A резко уменьшается.

Экспорт результата линеаризации

При необходимости можно повторить любой из этих шагов для повышения производительности модели. Как только результат линеаризации будет удовлетворен, в линеаризаторе модели перетащите его из рабочей области линейного анализа в рабочую область MATLAB. Теперь можно использовать линейную модель для проектирования MPC-контроллера.

См. также

(Simulink Control Design) | (Simulink Control Design)

Связанные темы