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

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

Продукт Simulink® обеспечивает linmod, linmod2 и функции dlinmod, чтобы извлечь линейные модели в форме матриц пространства состояний A, 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(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.

Примечание

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

Например, считайте модель f14 mdlref_f14. Блок Model Динамики Самолета обращается к модели mdlref_dynamics.

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

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

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

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

x = Simulink.BlockDiagram.getInitialState(topModelName)

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

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

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

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

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

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

ss+a.

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

Смотрите также

|