ss

Модель пространства состояний

Описание

Использование ss создание реальных или комплексных моделей пространства состояний или преобразование динамических моделей систем в форму модели пространства состояний. Можно также использовать ss для создания обобщенного пространства состояний (genss) моделирует или неопределенное пространство состояний (uss (Robust Control Toolbox)) модели.

Модель в пространстве состояний является математическим представлением физической системы как множества входных, выходных и переменных состояния, связанных дифференциальными уравнениями первого порядка. Переменные состояния определяют значения выходных переменных. The ss объект модели может представлять модели SISO или MIMO в пространстве состояний за непрерывное время или дискретное время.

В непрерывном времени модель пространства состояний имеет следующую форму:

x˙=Ax+Buy=Cx+Du

Здесь, x, u и y представление состояний, входов и выходов соответственно, в то время как A, B, C и D являются матрицами пространства состояний. The ss объект представляет модель пространства состояний в MATLAB® хранение A, B, C и D наряду с другой информацией, такой как шаг расчета, имена и задержки, характерные для входов и выходов.

Можно создать объект модели пространства состояний путем либо определения состояния, входных и выходных матриц непосредственно, либо путем преобразования модели другого типа (такого как модель передаточной функции tf) в форму пространства состояний. Для получения дополнительной информации см. «Модели пространства состояний». Можно использовать ss объект модели в:

  • Выполните линейный анализ

  • Представление линейной инвариантной по времени модели (LTI) для выполнения системы управления

  • Объединитесь с другими моделями LTI, чтобы представлять более сложную систему

Создание

Описание

пример

sys = ss(A,B,C,D) создает объект модели пространства состояний в непрерывном времени следующей формы:

x˙=Ax+Buy=Cx+Du

Например, рассмотрим объект с Nx состояния, Ny выходы и Nu входы. Матрицы пространства состояний:

  • A является Nx-by- Nx матрица с реальным или комплексным значением.

  • B является Nx-by- Nu матрица с реальным или комплексным значением.

  • C является Ny-by- Nx матрица с реальным или комплексным значением.

  • D является Ny-by- Nu матрица с реальным или комплексным значением.

пример

sys = ss(A,B,C,D,ts) создает объект модели пространства состояний в дискретном времени следующей формы со шаг расчета ts (в секундах):

x[n+1]=Ax[n]+Bu[n]y[n]=Cx[n]+Du[n]

Чтобы оставить шаг расчета неопределенным, установите ts на -1.

пример

sys = ss(A,B,C,D,ltiSys) создает модель пространства состояний с такими свойствами, как входные и выходные имена, внутренние задержки и значения шага расчета, унаследованные от модели ltisys.

пример

sys = ss(D) создает модель пространства состояний, которая представляет статический коэффициент усиления D. Модель в пространстве выходных состояний эквивалентна ss([],[],[],D).

пример

sys = ss(___,Name,Value) устанавливает свойства модели пространства состояний с помощью одной или нескольких Name,Value парные аргументы для любой из предыдущих комбинаций входных аргументов.

пример

sys = ss(ltiSys) преобразует модель динамической системы ltiSys в модель пространства состояний. Если ltiSys содержит настраиваемые или неопределенные элементы, ss использует текущие или номинальные значения для этих элементов соответственно.

пример

sys = ss(ltiSys,component) преобразует в ss объект образует измеренный компонент, шумовой компонент или оба из заданных component идентифицированной линейной инвариантной по времени модели (LTI) ltiSys. Используйте этот синтаксис только при ltiSys является идентифицированной (LTI) моделью, такой как idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox), idpoly (System Identification Toolbox) или idgrey (System Identification Toolbox) объект.

sys = ss(ssSys,'minimal') возвращает минимальную реализацию пространства состояний без неконтролируемых или ненаблюдаемых состояний. Эта реализация эквивалентна minreal(ss(sys)) где matrix A имеет наименьшую возможную размерность.

Преобразование в форму пространства состояний не однозначно задано в случае SISO. Также не гарантируется минимальная реализация в случае MIMO. Для получения дополнительной информации см. «Рекомендуемое рабочее представление».

пример

sys = ss(ssSys,'explicit') возвращает явную реализацию в пространстве состояний (E = I) модели в пространстве состояний динамической системы ssSys. ss возвращает ошибку, если ssSys является неподходящим. Для получения дополнительной информации о явной реализации пространства состояний смотрите Модели пространства состояний.

Входные параметры

расширить все

Матрица состояний, заданная как Nx-by- Nx матрица где, Nx количество состояний. Этот вход устанавливает значение свойства A.

Матрица ввода в состояние, заданная как Nx-by- Nu матрица где, Nx количество состояний и Nu - количество входов. Этот вход устанавливает значение свойства B.

Матрица состояние-выход, заданная как Ny-by- Nx матрица где, Nx количество состояний и Ny - количество выходов. Этот вход устанавливает значение свойства C.

Сквозное соединение, заданная как Ny-by- Nu матрица где, Ny количество выходов и Nu - количество входов. Этот вход устанавливает значение свойства D.

Шаг расчета, заданный как скаляр. Для получения дополнительной информации см. Свойство Ts.

Динамическая система для преобразования в форму пространство состояний, заданную как динамическая системная модель SISO или MIMO или массив динамических системных моделей. Динамические системы, которые можно преобразовать, включают:

  • Непрерывные или дискретные числовые модели LTI, такие как tf, zpk, ss, или pid модели.

  • Обобщенные или неопределенные модели LTI, такие как genss или uss (Robust Control Toolbox) модели. (Использование неопределенных моделей требует программного обеспечения Robust Control Toolbox™.)

    Получившаяся модель пространства состояний принимает

    • текущие значения настраиваемых компонентов для настраиваемых блоков проекта системы управления.

    • номинальные значения модели для неопределенных блоков проекта системы управления.

  • Идентифицированные модели LTI, такие как idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox), idpoly (System Identification Toolbox), и idgrey (System Identification Toolbox) модели. Чтобы выбрать компонент идентифицированной модели для преобразования, задайте component. Если вы не задаете component, ss преобразует измеренный компонент идентифицированной модели по умолчанию. (Для использования идентифицированных моделей требуется программное обеспечение System Identification Toolbox™.)

Компонент идентифицированной модели для преобразования, заданный как один из следующих:

  • 'measured' - Преобразуйте измеренный компонент sys.

  • 'noise' - Преобразуйте шумовой компонент sys

  • 'augmented' - Преобразуйте как измеренную, так и шумовые компоненты sys.

component применяется только тогда, когда sys является идентифицированной моделью LTI.

Для получения дополнительной информации об идентифицированных моделях LTI и их измеренных и шумовых компонентах, смотрите Идентифицированные модели LTI.

Динамическая системная модель для преобразования в минимальную реализацию или явную форму, заданную как ss объект модели.

Выходные аргументы

расширить все

Системная модель, возвращенная как:

  • Пространство состояний (ss) объект модели, когда входы A, B, C и D являются числовыми матрицами или при преобразовании из другого типа объекта модели.

  • Обобщенная модель пространства состояний (genss) объект, когда одна или несколько матриц A, B, C и D включает настраиваемые параметры, такие как realp параметры или обобщенные матрицы (genmat). Для получения примера смотрите Создание модели пространства состояний с как фиксированными, так и настраиваемыми параметрами.

  • Модель неопределенного пространства состояний (uss) объект, когда один или несколько входов A, B, C и D включает неопределенные матрицы. Использование неопределенных моделей требует программного обеспечения Robust Control Toolbox.

Свойства

расширить все

Матрица состояний, заданная как Nx-by- Nx матрица, где Nx количество состояний. Матрица состояний может быть представлена многими способами в зависимости от желаемой реализации модели пространства состояний, такой как:

  • Моделируйте каноническую форму

  • Компаньонская каноническая форма

  • Наблюдаемая каноническая форма

  • Управляемая каноническая форма

Для получения дополнительной информации см. «Канонические реализации в пространстве состояний».

Матрица ввода в состояние, заданная как Nx-by- Nu матрица, где Nx количество состояний и Nu - количество входов.

Матрица состояние-выход, заданная как Ny-by- Nx матрица, где Nx количество состояний и Ny - количество выходов.

Сквозное соединение, заданная как Ny-by- Nu матрица, где Ny количество выходов и Nu - количество входов. D называется также как статическая матрица усиления, которая представляет отношение выхода к входу в установившемся условии.

Матрица для неявных или дескрипторных моделей пространства состояний, заданная как Nx-by- Nx матрица. E по умолчанию пуст, что означает, что уравнение состояния явное. Чтобы задать неявное уравнение состояния E dx/ dt = Ax + Bu, установите это свойство в квадратную матрицу того же размера, что и A. Посмотрите dss для получения дополнительной информации о создании моделей пространства дескрипторов.

Логическое значение, указывающее, включено или отключено масштабирование, задается как 0 или 1.

Когда Scaled установлено в 0 (отключен), затем большинство численных алгоритмов, действующих на модель пространства состояний sys автоматически переформулируйте вектор состояния, чтобы улучшить числовую точность. Можно предотвратить такое автомасштабирование путем установки Scaled на 1 (включено).

Для получения дополнительной информации о масштабировании см. prescale.

Имена состояний, заданные как одно из следующих:

  • Вектор символов - Для моделей первого порядка, например, 'velocity'.

  • Массив ячеек из символьных векторов - Для моделей с двумя или более состояниями

StateName пуст ' ' для всех состояний по умолчанию.

Путь состояния для облегчения управления путями блоков состояний при линеаризации, заданный как одно из следующего:

  • Вектор символов - Для моделей первого порядка

  • Массив ячеек из символьных векторов - Для моделей с двумя или более состояниями

StatePath пуст ' ' для всех состояний по умолчанию.

Состояние модулей, заданное как одно из следующих:

  • Вектор символов - Для моделей первого порядка, например, 'm/s'

  • Массив ячеек из символьных векторов - Для моделей с двумя или более состояниями

Использование StateUnit отслеживать модули каждого состояния. StateUnit не влияет на поведение системы. StateUnit пуст ' ' для всех состояний по умолчанию.

Внутренние задержки в модели, заданные как вектор. Внутренние задержки возникают, например, при закрытии циклов обратной связи в системах с задержками или при соединении запаздывающих систем последовательно или параллельно. Дополнительные сведения о внутренних задержках см. в разделе Закрытие циклов обратной связи с временными задержками.

Для моделей в непрерывном времени внутренние задержки выражаются в модуле времени, заданной TimeUnit свойство модели. Для моделей в дискретном времени внутренние задержки выражаются в виде целого числа, кратного шага расчета Ts. Для примера, InternalDelay = 3 означает задержку на три периода дискретизации.

Значения внутренних задержек можно изменить с помощью свойства InternalDelay. Однако количество записей в sys.InternalDelay не может измениться, потому что это структурное свойство модели.

Входная задержка для каждого входного канала, заданная как одно из следующего:

  • Скаляр - Задает входную задержку для системы SISO или ту же задержку для всех входов мультивхода.

  • Nu-by-1 вектор - Задайте отдельные задержки входных параметров для входа мультивхода, где Nu - количество входов.

Для систем непрерывного времени задайте входные задержки в модуле времени, заданной TimeUnit свойство. Для систем в дискретном времени задайте входные задержки в целочисленных множителях шага расчета, Ts.

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

Выходная задержка для каждого выходного канала, заданная как одно из следующего:

  • Скаляр - Задает выходную задержку для системы SISO или ту же задержку для всех выходов мультивыхода.

  • Ny-by-1 вектор - Задайте отдельные выходные задержки для вывода мультивыхода, где Ny - количество выходов.

Для систем непрерывного времени задайте выходные задержки в модуле времени, заданной TimeUnit свойство. Для систем в дискретном времени задайте выходные задержки в целочисленных множителях шага расчета, Ts.

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

Шаг расчета, заданная как:

  • 0 для систем непрерывного времени.

  • A положительной скалярной величины, представляющее период дискретной дискретной системы времени. Задайте Ts в модуле времени, заданной TimeUnit свойство.

  • -1 для системы в дискретном времени с неопределенным шагом расчета.

Примечание

Изменение Ts не дискретизирует и не переопределяет модель. Чтобы преобразовать между представлениями в непрерывном времени и в дискретном времени, используйте c2d и d2c. Чтобы изменить шаг расчета системы дискретного времени, используйте d2d.

Модули переменной времени, заданные как одно из следующего:

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

Изменение TimeUnit не влияет на другие свойства, но изменяет общее поведение системы. Использовать chgTimeUnit для преобразования между модулями времени без изменения поведения системы.

Входные имена каналов, заданные как одно из следующих:

  • Вектор символов, для моделей с одним входом.

  • Массив ячеек из векторов символов для мультивходов.

  • '', имена для каких-либо входов каналов не заданы.

Кроме того, можно назначить входные имена для мультивходов с помощью автоматического расширения вектора. Для примера, если sys является моделью с двумя входами, введите:

sys.InputName = 'controls';

Имена входа автоматически расширяются на {'controls(1)';'controls(2)'}.

Можно использовать сокращённое обозначение u для ссылки на InputName свойство. Для примера, sys.u эквивалентно sys.InputName.

Использование InputName кому:

  • Идентифицируйте каналы на отображении модели и графиках.

  • Извлечение подсистем систем MIMO.

  • Задайте точки соединения при соединении моделей.

Входные модули канала, заданные как один из следующих:

  • Вектор символов, для моделей с одним входом.

  • Массив ячеек из векторов символов для мультивходов.

  • '', никаких модулей, заданных для любых входных каналов.

Использование InputUnit для определения модулей входного сигнала. InputUnit не влияет на поведение системы.

Входные группы каналов, заданные как структура. Использование InputGroup присвоение входных каналов систем MIMO группам и указание каждой группы по имени. Имена полей InputGroup являются именами групп, а значения полей являются входными каналами каждой группы. Для примера:

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

создает входные группы с именем controls и noise которые включают входные каналы 1 и 2, и 3 и 5, соответственно. Затем можно извлечь подсистему из controls входы для всех выходов с помощью:

sys(:,'controls')

По умолчанию InputGroup - структура без полей.

Выходы каналов, заданные как одно из следующих:

  • Вектор символов, для моделей с одним выходом.

  • Массив ячеек из векторов символов для мультивыходов.

  • '', имена для каких-либо выходов каналов не заданы.

Кроме того, можно назначить выходные имена для мультивыходов с помощью автоматического расширения вектора. Для примера, если sys является двухвыпускной моделью, введите:

sys.OutputName = 'measurements';

Выходы данных автоматически расширяются на {'measurements(1)';'measurements(2)'}.

Можно также использовать сокращённое обозначение y для ссылки на OutputName свойство. Для примера, sys.y эквивалентно sys.OutputName.

Использование OutputName кому:

  • Идентифицируйте каналы на отображении модели и графиках.

  • Извлечение подсистем систем MIMO.

  • Задайте точки соединения при соединении моделей.

Выход модулей канала, заданный как один из следующих:

  • Вектор символов, для моделей с одним выходом.

  • Массив ячеек из векторов символов для мультивыходов.

  • '', никакие модули не заданы для каких-либо выходов каналов.

Использование OutputUnit для определения модулей выходного сигнала. OutputUnit не влияет на поведение системы.

Выходные группы каналов, заданные как структура. Использование OutputGroupприсвоение выходных каналов систем MIMO группам и указание каждой группы по имени. Имена полей OutputGroup - имена групп, а значения полей являются выходными каналами каждой группы. Для примера:

sys.OutputGroup.temperature = [1];
sys.InputGroup.measurement = [3 5];

создает выходные группы с именем temperature и measurement которые включают выходные каналы 1, и 3 и 5, соответственно. Затем можно извлечь подсистему из всех входов в measurement выходы с использованием:

sys('measurement',:)

По умолчанию OutputGroup - структура без полей.

Имя системы, заданное как вектор символов. Для примера, 'system_1'.

Заданный пользователем текст, который необходимо связать с системой, заданный как вектор символов или массив ячеек векторов символов. Для примера, 'System is MIMO'.

Пользовательские данные, которые необходимо связать с системой, заданные как любой тип данных MATLAB.

Сетка дискретизации для массивов моделей, заданная как массив структур.

Использование SamplingGrid чтобы отследить значения переменных, сопоставленные с каждой моделью в массиве моделей, включая идентифицированные линейные инвариантные по времени (IDLTI) массивы моделей.

Установите имена полей структуры в имена переменных выборки. Установите значения полей к выборочным значениям переменных, сопоставленным с каждой моделью в массиве. Все переменные выборки должны быть числовыми скалярами, и все массивы выборочных значений должны совпадать с размерностями массива моделей.

Для примера можно создать массив линейных моделей 11 на 1, sysarr, путем создания моментальных снимков линейной изменяющейся во времени системы в определенные моменты времени t = 0:10. Следующий код хранит временные выборки с помощью линейных моделей.

 sysarr.SamplingGrid = struct('time',0:10)

Точно так же можно создать массив моделей 6 на 9, M, путем независимой выборки двух переменных, zeta и w. Следующий код сопоставляет (zeta,w) значения в M.

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

Когда вы отображаете Mкаждая запись в массиве включает соответствующие zeta и w значения.

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

Для массивов моделей, сгенерированных линеаризацией Simulink® моделируйте в нескольких значениях параметров или рабочих точках, программное обеспечение заполняет SamplingGrid автоматически со значениями переменных, соответствующими каждой записи в массиве. Например, команды Simulink Control Design™ linearize (Simulink Control Design) и slLinearizer (Simulink Control Design) заполните SamplingGrid автоматически.

По умолчанию SamplingGrid - структура без полей.

Функции объекта

Следующие списки содержат репрезентативное подмножество функций, с которыми можно использовать ss объекты модели. В целом любая функция, применимая к динамическим системным моделям, применима к ss объект.

расширить все

stepПереходный процесс динамической системы; переходные характеристики
impulseГрафик импульсной характеристики динамической системы; данные импульсной характеристики
lsimПостройте моделируемую временную характеристику динамической системы на произвольные входы; симулированные отклики
bodeДиаграмма Боде частотной характеристики, или данные величины и фазы
nyquistГодограф Найквиста частотной характеристики
nicholsГрафик Николса частотной характеристики
bandwidthПолоса пропускания частотной характеристики
poleПолюса динамической системы
zeroНули и усиление динамической системы SISO
pzplotДиаграмма нулей и полюсов динамической модели системы с опциями индивидуальной настройки графика
marginЗапас по амплитуде, запас по фазе и частоты среза
zpkМодель с нулями , полюса и усиления
tfМодель передаточной функции
c2dПреобразуйте модель из непрерывной в дискретное время
d2cПреобразуйте модель из дискретного в непрерывное время
d2dПовторная выборка модели в дискретном времени
feedbackCоединение обратной связи многих моделей
connectБлок взаимосвязей динамических систем
seriesПоследовательное соединение двух моделей
parallelПараллельное соединение двух моделей
pidtuneАлгоритм настройки ПИДа для линейной модели объекта управления
rlocusКорневой годограф динамической системы
lqrПроект линейно-квадратичного регулятора (LQR)
lqgЛинейно-квадратичный-Гауссов (LQG) проект
lqiЛинейно-квадратичное-интегральное управление
kalmanПроект фильтра Калмана для оценки состояния

Примеры

свернуть все

Создайте модель пространства состояний SISO, заданную следующими матрицами пространства состояний:

A=[-1.5-210]B=[0.50]C=[01]D=0

Задайте матрицы A, B, C и D и создайте модель пространства состояний.

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D)
sys =
 
  A = 
         x1    x2
   x1  -1.5    -2
   x2     1     0
 
  B = 
        u1
   x1  0.5
   x2    0
 
  C = 
       x1  x2
   y1   0   1
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

Создайте модель пространства состояний со шаг расчета 0,25 секунд и следующими матрицами пространства состояний:

A=[01-5-2]B=[03]C=[01]D=[0]

Задайте матрицы пространства состояний.

A = [0 1;-5 -2];
B = [0;3];
C = [0 1];
D = 0;

Задайте шаг расчета.

Ts = 0.25;

Создайте модель пространства состояний.

sys = ss(A,B,C,D,Ts);

В данном примере рассмотрим кубик, вращающийся вокруг своего угла с тензором инерции J и демпфирующую силу F 0,2 величины. Вход в систему является приводным крутящим моментом, в то время как скорости вращения являются выходами. Матрицы пространства состояний для куба:

A=-J-1F,B=J-1,C=I,D=0,where,J=[8-3-3-38-3-3-38]andF=[0.20000.20000.2]

Задайте A, B, C и D матрицы и создайте модель пространства состояний в непрерывном времени.

J = [8 -3 -3; -3 8 -3; -3 -3 8];
F = 0.2*eye(3);
A = -J\F;
B = inv(J);
C = eye(3);
D = 0;
sys = ss(A,B,C,D)
sys =
 
  A = 
             x1        x2        x3
   x1  -0.04545  -0.02727  -0.02727
   x2  -0.02727  -0.04545  -0.02727
   x3  -0.02727  -0.02727  -0.04545
 
  B = 
           u1      u2      u3
   x1  0.2273  0.1364  0.1364
   x2  0.1364  0.2273  0.1364
   x3  0.1364  0.1364  0.2273
 
  C = 
       x1  x2  x3
   y1   1   0   0
   y2   0   1   0
   y3   0   0   1
 
  D = 
       u1  u2  u3
   y1   0   0   0
   y2   0   0   0
   y3   0   0   0
 
Continuous-time state-space model.

sys является MIMO, поскольку система содержит 3 входы и 3 выходы, наблюдаемых из матриц C и D. Для получения дополнительной информации о моделях пространства состояний MIMO, см. MIMO Модели пространства состояний.

Создайте модель пространства состояний с помощью следующих матриц состояний в дискретном времени с несколькими входами и несколькими выходами с шагом расчета ts = 0.2 секунды:

A=[-700-10]B=[5002]C=[1-4-40.5]D=[0-220]

Задайте матрицы пространства состояний и создайте модель пространства состояний MIMO в дискретном времени.

A = [-7,0;0,-10];
B = [5,0;0,2];
C = [1,-4;-4,0.5];
D = [0,-2;2,0];
ts = 0.2;
sys = ss(A,B,C,D,ts)
sys =
 
  A = 
        x1   x2
   x1   -7    0
   x2    0  -10
 
  B = 
       u1  u2
   x1   5   0
   x2   0   2
 
  C = 
        x1   x2
   y1    1   -4
   y2   -4  0.5
 
  D = 
       u1  u2
   y1   0  -2
   y2   2   0
 
Sample time: 0.2 seconds
Discrete-time state-space model.

Создайте матрицы пространства состояний и задайте шаг расчета.

A = [0 1;-5 -2];
B = [0;3];
C = [0 1];
D = 0;
Ts = 0.05;

Создайте модель пространства состояний, задав состояние и входные имена с помощью пар "имя-значение".

sys = ss(A,B,C,D,Ts,'StateName',{'Position' 'Velocity'},...
    'InputName','Force');

Количество имен состояний и входных параметров должно совпадать с размерностями A, B, C, и D.

Наименование входов и выходов может быть полезно при работе с графиками отклика для систем MIMO.

step(sys)

Figure contains an axes. The axes with title From: Force To: Out(1) contains an object of type line. This object represents sys.

Заметьте входное имя Force в названии переходного процесса.

В данном примере создайте модель пространства состояний с теми же свойствами времени и входных модулей, унаследованными от другой модели пространства состояний. Рассмотрим следующие модели пространства состояний:

A1=[-1.5-210]B1=[0.50]C1=[01]D1=5A2=[7-102]B2=[0.852]C2=[1014]D2=2

Сначала создайте модель пространства состояний sys1 с TimeUnit и InputUnit значение свойства установлено на 'minutes'.

A1 = [-1.5,-2;1,0];
B1 = [0.5;0];
C1 = [0,1];
D1 = 5;
sys1 = ss(A1,B1,C1,D1,'TimeUnit','minutes','InputUnit','minutes');

Проверьте, что свойства модулей времени и входных параметров sys1 имеют значение 'minutes'.

propValues1 = [sys1.TimeUnit,sys1.InputUnit]
propValues1 = 1x2 cell
    {'minutes'}    {'minutes'}

Создайте вторую модель пространства состояний с свойствами, унаследованными от sys1.

A2 = [7,-1;0,2];
B2 = [0.85;2];
C2 = [10,14];
D2 = 2;
sys2 = ss(A2,B2,C2,D2,sys1);

Проверьте, что временные и входные модули sys2 были унаследованы от sys1.

propValues2 = [sys2.TimeUnit,sys2.InputUnit]
propValues2 = 1x2 cell
    {'minutes'}    {'minutes'}

В этом примере вы создадите статическую модель пространства состояний усиления MIMO.

Рассмотрим следующую статическую матрицу усиления с двумя входами и двумя выходами:

D=[2435]

Задайте матрицу усиления и создайте статическую модель пространства состояний усиления.

D = [2,4;3,5];
sys1 = ss(D)
sys1 =
 
  D = 
       u1  u2
   y1   2   4
   y2   3   5
 
Static gain.

Вычислите модель пространства состояний следующей передаточной функции:

H(s)=[s+1s3+3s2+3s+2s2+3s2+s+1]

Создайте модель передаточной функции.

H = [tf([1 1],[1 3 3 2]) ; tf([1 0 3],[1 1 1])];

Преобразуйте эту модель в модель пространства состояний.

sys = ss(H);

Исследуйте размер модели пространства состояний.

size(sys)
State-space model with 2 outputs, 1 inputs, and 5 states.

Количество состояний равно совокупному порядку записей SISO в H (s).

Чтобы получить минимальную реализацию H (s), введите

sys = ss(H,'minimal');
size(sys)
State-space model with 2 outputs, 1 inputs, and 3 states.

Получившаяся модель имеет порядок трех, что является минимальным количеством состояний, необходимых для представления H (s). Чтобы увидеть это количество состояний, рефактор H (s) как продукт системы первого порядка и системы второго порядка.

H(s)=[1s+2001][s+1s2+s+1s2+3s2+s+1]

В этом примере извлечите измеренные и шумовые компоненты идентифицированной полиномиальной модели в две отдельные модели пространства состояний.

Загрузка полиномиальной модели Бокса-Дженкинса ltiSys в identifiedModel.mat.

load('identifiedModel.mat','ltiSys');

ltiSys - идентифицированная модель вида в дискретном времени: y(t)=BFu(t)+CDe(t), где BF представляет измеренный компонент, CD шумовым компонентом.

Извлеките измеренные и шумовые компоненты как модели пространства состояний.

sysMeas = ss(ltiSys,'measured') 
sysMeas =
 
  A = 
            x1       x2
   x1    1.575  -0.6115
   x2        1        0
 
  B = 
        u1
   x1  0.5
   x2    0
 
  C = 
            x1       x2
   y1  -0.2851   0.3916
 
  D = 
       u1
   y1   0
 
  Input delays (sampling periods): 2 
 
Sample time: 0.04 seconds
Discrete-time state-space model.
sysNoise = ss(ltiSys,'noise')
sysNoise =
 
  A = 
           x1      x2      x3
   x1   1.026   -0.26  0.3899
   x2       1       0       0
   x3       0     0.5       0
 
  B = 
       v@y1
   x1  0.25
   x2     0
   x3     0
 
  C = 
             x1        x2        x3
   y1     0.319  -0.04738   0.07106
 
  D = 
          v@y1
   y1  0.04556
 
Input groups:        
    Name     Channels
    Noise       1    
                     
Sample time: 0.04 seconds
Discrete-time state-space model.

Измеренный компонент может служить моделью объекта управления, в то время как шумовой компонент может использоваться в качестве модели возмущения для разработки системы управления.

Создайте модель пространства дескрипторов (EI).

a = [2 -4; 4 2];
b = [-1; 0.5];
c = [-0.5, -2];
d = [-1];
e = [1 0; -3 0.5];
sysd = dss(a,b,c,d,e);

Вычислите явную реализацию системы (E = I).

syse = ss(sysd,'explicit')
syse =
 
  A = 
        x1   x2
   x1    2   -4
   x2   20  -20
 
  B = 
       u1
   x1  -1
   x2  -5
 
  C = 
         x1    x2
   y1  -0.5    -2
 
  D = 
       u1
   y1  -1
 
Continuous-time state-space model.

Подтвердите, что дескриптор и явная реализация имеют эквивалентную динамику.

bodeplot(sysd,syse,'g--')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent sysd, syse. Axes 2 contains 2 objects of type line. These objects represent sysd, syse.

В этом примере показано, как создать пространство состояний genss модель, имеющая как фиксированные, так и настраиваемые параметры.

A=[1a+b0ab],B=[-3.01.5],C=[0.30],D=0,

где a и b - настраиваемые параметры, начальные значения которых -1 и 3, соответственно.

Создайте настраиваемые параметры, используя realp.

a = realp('a',-1);
b = realp('b',3);

Задайте обобщенную матрицу, используя алгебраические выражения a и b.

A = [1 a+b;0 a*b];

A - обобщенная матрица, Blocks свойство содержит a и b. Начальное значение A является [1 2;0 -3], от начальных значений a и b.

Создайте матрицы пространства состояний с фиксированным значением.

B = [-3.0;1.5];
C = [0.3 0];
D = 0;

Использовать ss для создания модели пространства состояний.

sys = ss(A,B,C,D)
sys =

  Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks:
    a: Scalar parameter, 2 occurrences.
    b: Scalar parameter, 2 occurrences.

Type "ss(sys)" to see the current value, "get(sys)" to see all properties, and "sys.Blocks" to interact with the blocks.

sys является обобщенной моделью LTI (genss) с настраиваемыми параметрами a и b.

В данном примере рассмотрим модель пространства состояний SISO, заданную следующими матрицами пространства состояний:

A=[-1.5-210]B=[0.50]C=[01]D=0

Принимая во внимание вход задержку 0,5 секунды и выход задержку 2,5 секунды, создайте объект модели пространства состояний, чтобы представлять матрицы A, B, C и D.

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D,'InputDelay',0.5,'OutputDelay',2.5)
sys =
 
  A = 
         x1    x2
   x1  -1.5    -2
   x2     1     0
 
  B = 
        u1
   x1  0.5
   x2    0
 
  C = 
       x1  x2
   y1   0   1
 
  D = 
       u1
   y1   0
 
  Input delays (seconds): 0.5 
  Output delays (seconds): 2.5 
 
Continuous-time state-space model.

Можно также использовать get команда для отображения всех свойств объекта MATLAB.

get(sys)
                A: [2x2 double]
                B: [2x1 double]
                C: [0 1]
                D: 0
                E: []
           Scaled: 0
        StateName: {2x1 cell}
        StatePath: {2x1 cell}
        StateUnit: {2x1 cell}
    InternalDelay: [0x1 double]
       InputDelay: 0.5000
      OutputDelay: 2.5000
               Ts: 0
         TimeUnit: 'seconds'
        InputName: {''}
        InputUnit: {''}
       InputGroup: [1x1 struct]
       OutputName: {''}
       OutputUnit: {''}
      OutputGroup: [1x1 struct]
            Notes: [0x1 string]
         UserData: []
             Name: ''
     SamplingGrid: [1x1 struct]

Для получения дополнительной информации об указании временной задержки для модели LTI, смотрите Определение временных задержек.

В данном примере рассмотрим объект системы в пространстве состояний, который представляет следующие матрицы состояний:

A=[-1.2-1.60100010],B=[100],C=[00.51.3],D=0,Матрицы пространства состояний

Создайте объект пространства состояний sys использование ss команда.

A = [-1.2,-1.6,0;1,0,0;0,1,0];
B = [1;0;0];
C = [0,0.5,1.3];
D = 0;
sys = ss(A,B,C,D);

Затем вычислите модель пространства состояний с обратной связью для модуля отрицательного усиления и найдите полюса объекта системы в пространстве состояний с обратной связью sysFeedback.

sysFeedback = feedback(sys,1);
P = pole(sysFeedback)
P = 3×1 complex

  -0.2305 + 1.3062i
  -0.2305 - 1.3062i
  -0.7389 + 0.0000i

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

rlocus(sys)

Figure contains an axes. The axes contains 5 objects of type line. This object represents sys.

Изменения в усилении цикла являются только одним аспектом устойчивой устойчивости. В целом, несовершенное моделирование объекта означает, что и коэффициент усиления, и фаза точно не известны. Поскольку ошибки моделирования имеют наиболее пагубный эффект вблизи частоты среза усиления (частота, где коэффициент усиления без разомкнутого контура составляет 0 дБ), также важно, сколько изменений фазы может быть допустимо на этой частоте.

Вы можете отобразить коэффициент усиления и запасов по фазе на Диаграмму Боде следующим образом.

bode(sys)
grid

Figure contains 2 axes. Axes 1 contains an object of type line. This object represents sys. Axes 2 contains an object of type line. This object represents sys.

Более подробный пример см. в разделе Оценка усиления и Запасах по фазе.

В данном примере спроектируйте 2-DOF ПИД-регуляторы с целевой шириной полосы 0,75 рад/с для системы, представленной следующими матрицами:

A=[-0.5-0.110],B=[10],C=[01],D=0.

Создайте объект пространства состояний sys использование ss команда.

A = [-0.5,-0.1;1,0];
B = [1;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D)
sys =
 
  A = 
         x1    x2
   x1  -0.5  -0.1
   x2     1     0
 
  B = 
       u1
   x1   1
   x2   0
 
  C = 
       x1  x2
   y1   0   1
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

Используя целевую полосу пропускания, используйте pidtune чтобы сгенерировать контроллер 2-DOF.

wc = 0.75;
C2 = pidtune(sys,'PID2',wc)
C2 =
 
                       1              
  u = Kp (b*r-y) + Ki --- (r-y) + Kd*s (c*r-y)
                       s              

  with Kp = 0.513, Ki = 0.0975, Kd = 0.577, b = 0.344, c = 0
 
Continuous-time 2-DOF PID controller in parallel form.

Использование типа 'PID2' причины pidtune чтобы сгенерировать контроллер 2-DOF, представленный как pid2 объект. Отображение подтверждает этот результат. На отображении также показано, что pidtune настраивает все коэффициенты контроллера, включая веса уставок b и c, для баланса эффективности и робастности.

Интерактивную настройку ПИД в Live Editor см. в задаче Tune ПИД-регулятора Live Editor. Эта задача позволяет вам в интерактивном режиме проектировать ПИД-регулятор и автоматически генерирует код MATLAB для вашего live скрипта.

Для интерактивной настройки ПИД в автономном приложении используйте PID Tuner. Смотрите ПИД-регулятор Design для Fast Reference Tracking для примера разработки контроллера с помощью приложения.

Рассмотрим космический объект G с пятью входами и четырьмя выходами и контроллером обратной связи пространства состояний K с тремя входами и двумя выходами. Выходные выходы 1, 3 и 4 объекта G должен быть подключен контроллер K входы и контроллер выходы на входы 4 и 2 объекта управления.

В данном примере рассмотрим две модели пространства состояний в непрерывном времени для обеих G и K представлено следующим набором матриц:

AG=[-30.40.3-0.5-2.8-0.80.20.8-3],BG=[0.400.30.20-0.2-10.1-0.9-0.50.60.90.50.20],CG=[0-0.1-10-0.21.6-0.71.51.2-1.4-0.20],DG=[0000-100.4-0.700.900.30000.20000]

AK=[-0.22.10.7-2.2-0.1-2.2-0.42.3-0.2],BK=[-0.1-2.1-0.3-0.100.6100.8],CK=[-100-0.4-0.20.3],DK=[00000-1.2]

AG = [-3,0.4,0.3;-0.5,-2.8,-0.8;0.2,0.8,-3];
BG = [0.4,0,0.3,0.2,0;-0.2,-1,0.1,-0.9,-0.5;0.6,0.9,0.5,0.2,0];
CG = [0,-0.1,-1;0,-0.2,1.6;-0.7,1.5,1.2;-1.4,-0.2,0];
DG = [0,0,0,0,-1;0,0.4,-0.7,0,0.9;0,0.3,0,0,0;0.2,0,0,0,0];
sysG = ss(AG,BG,CG,DG)
sysG =
 
  A = 
         x1    x2    x3
   x1    -3   0.4   0.3
   x2  -0.5  -2.8  -0.8
   x3   0.2   0.8    -3
 
  B = 
         u1    u2    u3    u4    u5
   x1   0.4     0   0.3   0.2     0
   x2  -0.2    -1   0.1  -0.9  -0.5
   x3   0.6   0.9   0.5   0.2     0
 
  C = 
         x1    x2    x3
   y1     0  -0.1    -1
   y2     0  -0.2   1.6
   y3  -0.7   1.5   1.2
   y4  -1.4  -0.2     0
 
  D = 
         u1    u2    u3    u4    u5
   y1     0     0     0     0    -1
   y2     0   0.4  -0.7     0   0.9
   y3     0   0.3     0     0     0
   y4   0.2     0     0     0     0
 
Continuous-time state-space model.
AK = [-0.2,2.1,0.7;-2.2,-0.1,-2.2;-0.4,2.3,-0.2];
BK = [-0.1,-2.1,-0.3;-0.1,0,0.6;1,0,0.8];
CK = [-1,0,0;-0.4,-0.2,0.3];
DK = [0,0,0;0,0,-1.2];
sysK = ss(AK,BK,CK,DK)
sysK =
 
  A = 
         x1    x2    x3
   x1  -0.2   2.1   0.7
   x2  -2.2  -0.1  -2.2
   x3  -0.4   2.3  -0.2
 
  B = 
         u1    u2    u3
   x1  -0.1  -2.1  -0.3
   x2  -0.1     0   0.6
   x3     1     0   0.8
 
  C = 
         x1    x2    x3
   y1    -1     0     0
   y2  -0.4  -0.2   0.3
 
  D = 
         u1    u2    u3
   y1     0     0     0
   y2     0     0  -1.2
 
Continuous-time state-space model.

Определите feedout и feedin векторы, основанные на входах и выходах, которые будут соединены в цикле обратной связи.

feedin = [4 2];
feedout = [1 3 4];
sys = feedback(sysG,sysK,feedin,feedout,-1)
sys =
 
  A = 
           x1      x2      x3      x4      x5      x6
   x1      -3     0.4     0.3     0.2       0       0
   x2    1.18   -2.56    -0.8    -1.3    -0.2     0.3
   x3  -1.312   0.584      -3    0.56    0.18   -0.27
   x4   2.948  -2.929   -2.42  -0.452   1.974   0.889
   x5   -0.84   -0.11     0.1    -2.2    -0.1    -2.2
   x6   -1.12   -0.26      -1    -0.4     2.3    -0.2
 
  B = 
            u1       u2       u3       u4       u5
   x1      0.4        0      0.3      0.2        0
   x2    -0.44       -1      0.1     -0.9     -0.5
   x3    0.816      0.9      0.5      0.2        0
   x4  -0.2112    -0.63        0        0      0.1
   x5     0.12        0        0        0      0.1
   x6     0.16        0        0        0       -1
 
  C = 
           x1      x2      x3      x4      x5      x6
   y1       0    -0.1      -1       0       0       0
   y2  -0.672  -0.296     1.6    0.16    0.08   -0.12
   y3  -1.204   1.428     1.2    0.12    0.06   -0.09
   y4    -1.4    -0.2       0       0       0       0
 
  D = 
          u1     u2     u3     u4     u5
   y1      0      0      0      0     -1
   y2  0.096    0.4   -0.7      0    0.9
   y3  0.072    0.3      0      0      0
   y4    0.2      0      0      0      0
 
Continuous-time state-space model.
size(sys)
State-space model with 4 outputs, 5 inputs, and 6 states.

sys - результирующая модель пространства состояний замкнутого цикла, полученная путем соединения заданных входов и выходов G и K.

Представлено до R2006a