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

Сведения о линеаризации моделей

Simulink® продукт обеспечивает linmod, linmod2, и dlinmod функции для извлечения линейных моделей в виде матриц А, B, C и D. Матрицы пространства состояний описывают линейное соотношение вход-вывод как

x˙=Ax+Buy=Cx+Du,

где x, u и y являются векторами состояний, входных и выходных параметров, соответственно. Например, следующая модель называется lmod.

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

[A,B,C,D] = linmod('lmod')

A =
   -2    -1    -1
    1     0     0
    0     1    -1
B =
    1
    0
    0
C =
    0     1     0
    0     0    -1
D =
    0
    1

Входы и выходы должны быть определены с помощью блоков Inport и Outport из библиотеки Ports & Subsystems. Исходные и приемные блоки не выступают в качестве входных и выходных параметров. Блоки Inport могут использоваться в сочетании с исходными блоками, используя блок Sum. Если данные находятся в форме пространства состояний или преобразованы в объект LTI, можно применить функции в продукте Control System Toolbox™ для последующего анализа:

  • Преобразование в объект LTI

    sys = ss(A,B,C,D);
    
  • График частоты фазы и величины Bode

    bode(A,B,C,D) or bode(sys)
    
  • Линейная временная характеристика

    step(A,B,C,D) or step(sys)
    impulse(A,B,C,D) or impulse(sys)
    lsim(A,B,C,D,u,t) or lsim(sys,u,t)
    

Можно использовать другие функции в продуктах Control System Toolbox и Robust Control Toolbox™ для разработки линейной системы управления.

Когда модель нелинейна, может быть выбрана рабочая точка, в которой можно извлечь линеаризированную модель. Дополнительные аргументы в linmod задайте рабочую точку.

[A,B,C,D] = linmod('sys', x, u)

Для дискретных систем или смешанных непрерывных и дискретных систем используйте функцию dlinmod для линеаризации. Эта функция имеет тот же синтаксис вызова, что и linmod кроме того, что второй аргумент правой руки должен содержать шаг расчета, с которой можно выполнить линеаризацию.

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

Можно использовать linmod чтобы извлечь линейную модель из окружения Simulink ®, которая содержит блоки Model. Для примера откройте ссылочную модель mdlref_dynamics и верхняя часть mdlref_f14.

open_system('mdlref_dynamics');
open_system('mdlref_f14');

В mdlref_f14 модель, блок Aircraft Dynamics Model ссылается на m dlref_dynamics модель.

Чтобы линеаризировать mdlref_f14 модель, используйте linmod команда.

[A,B,C,D] = linmod('mdlref_f14');
### Starting serial model reference simulation build
### Successfully updated the model reference simulation target for: mdlref_dynamics

Build Summary

Simulation targets built:

Model            Action                       Rebuild Reason                              
==========================================================================================
mdlref_dynamics  Code generated and compiled  mdlref_dynamics_msf.mexa64 does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 18.032s

Полученная модель пространства состояний соответствует полному mdlref_f14 модель, включая ссылочную модель.

Можно вызвать linmod с состоянием и входной рабочей точкой для моделей, которые содержат блоки Model. При использовании рабочих точек вектор состояния x ссылается на вектор общего состояния для верхней модели и любых ссылочных моделей. Необходимо ввести вектор состояния с помощью формата структуры. Чтобы получить полный вектор состояния, используйте getInitialState.

x = Simulink.BlockDiagram.getInitialState(topModelName)

Совет

В режиме normal mode linmod команда применяет алгоритм линеаризации блоков за блоками к блокам внутри ссылочной модели. Если блок Model находится в режиме Accelerator, linmod команда использует числовое возмущение, чтобы линеаризировать ссылочную модель. Из-за ограничений на линеаризацию блоков многоскоростной модели в режиме Accelerator, следует использовать Режим normal mode симуляцию для всех моделей, на которые ссылаются блоки Model, при линеаризации со ссылочными моделями.

Линеаризация с использованием алгоритма 'v5'

Вызов linmod команда со 'v5' аргумент вызывает алгоритм возмущения, созданный до MATLAB® версия программного обеспечения 5.3. Этот алгоритм также позволяет вам задать значения возмущения, используемые для выполнения возмущения всех состояний и входов модели.

[A,B,C,D]=linmod('sys',x,u,para,xpert,upert,'v5')
Использование linmod с 'v5' опция для линеаризации модели, которая содержит блоки Производная или Задержка Транспорта, может быть проблематичной. Перед линеаризацией замените эти блоки специально разработанными блоками, которые избегают проблем. Эти блоки находятся в библиотеке Simulink Extras в подлибрарии линеаризации.

Вы получаете доступ к библиотеке Extras, открывая значок Blocksets & Toolboxes:

  • Для блока Производная используйте производную Switched для линеаризации.

При использовании блока Derivative можно также попытаться включить производный термин в другие блоки. Например, если у вас есть блок Derivative последовательно с блоком Transfer Fcn, он лучше реализован (хотя это не всегда возможно) с одним Transfer Fcn блоком формы

ss+a.

В этом примере блоки слева от этого рисунка могут быть заменены блоком справа.

См. также

|

Похожие темы