Продукт Simulink® обеспечивает
, linmod
linmod2
, и dlinmod
функции, чтобы извлечь линейные модели в форме матриц пространства состояний A, 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(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™.
Например, откройте модель mdlref_dynamics
, на которую ссылаются, и топ-модель
mdlref_f14
.
open_system([docroot '/toolbox/simulink/ug/examples/analysis/mdlref_dynamics']); open_system([docroot '/toolbox/simulink/ug/examples/analysis/mdlref_f14'])
mdlref_dynamics
.
Линеаризовать mdlref_f14
модель, вызовите linmod
команда на главном mdlref_f14
модель можно следующим образом.
[A,B,C,D] = linmod('mdlref_f14')
Получившаяся модель в пространстве состояний соответствует полному f14
модель, включая модель, на которую ссылаются.
Можно вызвать linmod
с состоянием и входной рабочей точкой для моделей, которые содержат блоки Model. При использовании рабочих точек, вектор состояния x
относится к общему вектору состояния для топ-модели и любых моделей, на которые ссылаются. Необходимо ввести вектор состояния с помощью формата структуры. Чтобы получить полный вектор состояния, вызвать
x = Simulink.BlockDiagram.getInitialState(topModelName)
Вызов 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 формы
В этом примере блоки слева от этого рисунка могут быть заменены блоком справа.