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

Обычно действительные системы нелинейны. Чтобы спроектировать контроллер MPC для нелинейной системы, можно смоделировать объект в Simulink®.

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

Чтобы получить такое линейное приближение, вы линеаризируете нелинейный объект в заданной рабочей точке.

Примечание

Программное обеспечение Simulink Control Design™ должно быть установлено, чтобы линеаризировать нелинейные модели Simulink.

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

  • Из командной строки.

  • Использование Model Linearizer.

  • Использование MPC Designer. Для получения примера смотрите Linearize Simulink Models Using MPC Designer.

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

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

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

Получение установившейся рабочей точки

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

Предположим, что вы планируете управлять CSTR с выходом концентрацией C_A, при 2kmol/m3. Номинальная концентрация сырья 10kmol/m3, и номинальная температура подачи составляет 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 = 2kmol/m3 и 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.

Линеаризация с использованием Model Linearizer в Simulink Control Design

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

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

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

open_system('CSTR_OpenLoop')

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

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

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

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

  • Вход линеаризации, на вкладке Linearization, в галерее Insert Analysis Points, нажмите Input Perturbation.

  • Выход линеаризации на вкладке Linearization, в галерее Insert Analysis Points, нажмите Output Measurement.

Откройте Model Linearizer

Чтобы открыть Model Linearizer, в галерее Apps нажмите Model Linearizer.

Задайте остаточную концентрацию как известное ограничение обрезки

В окне модели нажмите CA выходной сигнал от CSTR блок. Затем на вкладке Linearization, в галерее Insert Analysis Points, нажмите Trim Output Constraint.

В Model Linearizer на вкладке Linear Analysis выберите Operating Point > Trim Model.

В диалоговом окне «Обрезка модели» на вкладке «Outputs»:

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

  • Установите соответствующий Value равным 2 кмоль/м3.

Создайте и проверьте рабочую точку

В диалоговом окне «Обрезка модели» нажмите кнопку Start trimming.

Рабочая точка op_trim1 отображается в Linear Analysis Workspace.

Дважды кликните op_trim1 для просмотра получившейся рабочей точки.

В диалоговом окне «Редактирование» выберите вкладку Input.

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

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

На вкладке Linear Analysis в раскрывающемся списке Operating Point выберите op_trim1.

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

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

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

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

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

См. также

(Simulink Control Design) | (Simulink Control Design)

Похожие темы