exponenta event banner

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

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

Продукт 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. Блоки источника и приемника не действуют в качестве входов и выходов. Блоки ввода можно использовать совместно с исходными блоками, используя блок Sum. Как только данные находятся в форме state-space или преобразованы в объект LTI, можно применить функции в продукте 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)
    

Для проектирования линейной системы управления можно использовать другие функции панели инструментов системы управления и продуктов Toolbox™ надежного управления.

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

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

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

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

Вы можете использовать linmod извлечение линейной модели из среды Simulink ®, содержащей блоки модели. Например, откройте ссылочную модельmdlref_dynamics и топ-модель mdlref_f14.

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

В mdlref_f14 модель, блок модели динамики самолета ссылается на mdlref_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 с рабочей точкой состояния и ввода для моделей, содержащих блоки модели. При использовании рабочих точек вектор состояния x относится к вектору общего состояния для верхней модели и всех ссылочных моделей. Необходимо ввести вектор состояния в формате структуры. Чтобы получить полный вектор состояния, используйте getInitialState.

x = Simulink.BlockDiagram.getInitialState(topModelName)

Совет

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

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

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

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

Доступ к библиотеке дополнительных компонентов можно получить, открыв значок «Блоки и панели инструментов»:

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

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

ss + a.

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

См. также

|

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