Simulink® продукт обеспечивает
, linmod
linmod2
, и dlinmod
функции для извлечения линейных моделей в виде матриц А, B, C и D. Матрицы пространства состояний описывают линейное соотношение вход-вывод как
где 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, при линеаризации со ссылочными моделями.
Вызов 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 блоком формы
В этом примере блоки слева от этого рисунка могут быть заменены блоком справа.