Модель пространства состояний
Использование ss
создание реальных или комплексных моделей пространства состояний или преобразование динамических моделей систем в форму модели пространства состояний. Можно также использовать ss
для создания обобщенного пространства состояний (genss
) моделирует или неопределенное пространство состояний (uss
(Robust Control Toolbox)) модели.
Модель в пространстве состояний является математическим представлением физической системы как множества входных, выходных и переменных состояния, связанных дифференциальными уравнениями первого порядка. Переменные состояния определяют значения выходных переменных. The ss
объект модели может представлять модели SISO или MIMO в пространстве состояний за непрерывное время или дискретное время.
В непрерывном времени модель пространства состояний имеет следующую форму:
Здесь, x
, u
и y
представление состояний, входов и выходов соответственно, в то время как A
, B
, C
и D
являются матрицами пространства состояний. The ss
объект представляет модель пространства состояний в MATLAB® хранение A
, B
, C
и D
наряду с другой информацией, такой как шаг расчета, имена и задержки, характерные для входов и выходов.
Можно создать объект модели пространства состояний путем либо определения состояния, входных и выходных матриц непосредственно, либо путем преобразования модели другого типа (такого как модель передаточной функции tf
) в форму пространства состояний. Для получения дополнительной информации см. «Модели пространства состояний». Можно использовать ss
объект модели в:
Выполните линейный анализ
Представление линейной инвариантной по времени модели (LTI) для выполнения системы управления
Объединитесь с другими моделями LTI, чтобы представлять более сложную систему
создает объект модели пространства состояний в непрерывном времени следующей формы:sys
= ss(A
,B
,C
,D
)
Например, рассмотрим объект с Nx
состояния, Ny
выходы и Nu
входы. Матрицы пространства состояний:
A
является Nx
-by- Nx
матрица с реальным или комплексным значением.
B
является Nx
-by- Nu
матрица с реальным или комплексным значением.
C
является Ny
-by- Nx
матрица с реальным или комплексным значением.
D
является Ny
-by- Nu
матрица с реальным или комплексным значением.
преобразует в 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. Для получения дополнительной информации см. «Рекомендуемое рабочее представление».
возвращает явную реализацию в пространстве состояний (E = I) модели в пространстве состояний динамической системы sys
= ss(ssSys
,'explicit')ssSys
. ss
возвращает ошибку, если ssSys
является неподходящим. Для получения дополнительной информации о явной реализации пространства состояний смотрите Модели пространства состояний.
A
- Матрица состоянийNx
-by- Nx
матрицаМатрица состояний, заданная как Nx
-by- Nx
матрица где, Nx
количество состояний. Этот вход устанавливает значение свойства A.
B
- Матрица ввода в состояниеNx
-by- Nu
матрицаМатрица ввода в состояние, заданная как Nx
-by- Nu
матрица где, Nx
количество состояний и Nu
- количество входов. Этот вход устанавливает значение свойства B.
C
- Матрица «состояние-выход»Ny
-by- Nx
матрицаМатрица состояние-выход, заданная как Ny
-by- Nx
матрица где, Nx
количество состояний и Ny
- количество выходов. Этот вход устанавливает значение свойства C.
D
- Исходная матрицаNy
-by- Nu
матрицаСквозное соединение, заданная как Ny
-by- Nu
матрица где, Ny
количество выходов и Nu
- количество входов. Этот вход устанавливает значение свойства D.
ts
- Шаг расчетаШаг расчета, заданный как скаляр. Для получения дополнительной информации см. Свойство Ts.
ltiSys
- Динамическая система для преобразования в форму пространства состоянийДинамическая система для преобразования в форму пространство состояний, заданную как динамическая системная модель 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™.)
component
- Компонент идентифицированной модели'measured'
(по умолчанию) | 'noise'
| 'augmented'
Компонент идентифицированной модели для преобразования, заданный как один из следующих:
'measured'
- Преобразуйте измеренный компонент sys
.
'noise'
- Преобразуйте шумовой компонент sys
'augmented'
- Преобразуйте как измеренную, так и шумовые компоненты sys
.
component
применяется только тогда, когда sys
является идентифицированной моделью LTI.
Для получения дополнительной информации об идентифицированных моделях LTI и их измеренных и шумовых компонентах, смотрите Идентифицированные модели LTI.
ssSys
- Динамическая системная модель для преобразования в минимальную реализацию или явную формуss
объект моделиДинамическая системная модель для преобразования в минимальную реализацию или явную форму, заданную как ss
объект модели.
sys
- Модель выходной системыss
объект модели | genss
объект модели | uss
объект моделиСистемная модель, возвращенная как:
Пространство состояний (ss
) объект модели, когда входы A
, B
, C
и D
являются числовыми матрицами или при преобразовании из другого типа объекта модели.
Обобщенная модель пространства состояний (genss
) объект, когда одна или несколько матриц A
, B
, C
и D
включает настраиваемые параметры, такие как realp
параметры или обобщенные матрицы (genmat
). Для получения примера смотрите Создание модели пространства состояний с как фиксированными, так и настраиваемыми параметрами.
Модель неопределенного пространства состояний (uss
) объект, когда один или несколько входов A
, B
, C
и D
включает неопределенные матрицы. Использование неопределенных моделей требует программного обеспечения Robust Control Toolbox.
A
- Матрица состоянийNx
-by- Nx
матрицаМатрица состояний, заданная как Nx
-by- Nx
матрица, где Nx
количество состояний. Матрица состояний может быть представлена многими способами в зависимости от желаемой реализации модели пространства состояний, такой как:
Моделируйте каноническую форму
Компаньонская каноническая форма
Наблюдаемая каноническая форма
Управляемая каноническая форма
Для получения дополнительной информации см. «Канонические реализации в пространстве состояний».
B
- Матрица ввода в состояниеNx
-by- Nu
матрицаМатрица ввода в состояние, заданная как Nx
-by- Nu
матрица, где Nx
количество состояний и Nu
- количество входов.
C
- Матрица «состояние-выход»Ny
-by- Nx
матрицаМатрица состояние-выход, заданная как Ny
-by- Nx
матрица, где Nx
количество состояний и Ny
- количество выходов.
D
- Исходная матрицаNy
-by- Nu
матрицаСквозное соединение, заданная как Ny
-by- Nu
матрица, где Ny
количество выходов и Nu
- количество входов. D
называется также как статическая матрица усиления, которая представляет отношение выхода к входу в установившемся условии.
E
- Матрица для неявных моделей пространства состоянийNx
-by- Nx
матрицаМатрица для неявных или дескрипторных моделей пространства состояний, заданная как Nx
-by- Nx
матрица. E
по умолчанию пуст, что означает, что уравнение состояния явное. Чтобы задать неявное уравнение состояния E
dx/ dt = Ax + Bu, установите это свойство в квадратную матрицу того же размера, что и A. Посмотрите
dss
для получения дополнительной информации о создании моделей пространства дескрипторов.
Scaled
- Логическое значение, указывающее, включено или отключено масштабирование0
(по умолчанию) | 1
Логическое значение, указывающее, включено или отключено масштабирование, задается как 0
или 1
.
Когда Scaled
установлено в 0
(отключен), затем большинство численных алгоритмов, действующих на модель пространства состояний sys
автоматически переформулируйте вектор состояния, чтобы улучшить числовую точность. Можно предотвратить такое автомасштабирование путем установки Scaled
на 1
(включено).
Для получения дополнительной информации о масштабировании см. prescale
.
StateName
- имена состояний' '
(по умолчанию) | вектор символов | массив ячеек из векторов символовИмена состояний, заданные как одно из следующих:
Вектор символов - Для моделей первого порядка, например, 'velocity'
.
Массив ячеек из символьных векторов - Для моделей с двумя или более состояниями
StateName
пуст ' '
для всех состояний по умолчанию.
StatePath
- Путь к состоянию' '
(по умолчанию) | вектор символов | массив ячеек из векторов символовПуть состояния для облегчения управления путями блоков состояний при линеаризации, заданный как одно из следующего:
Вектор символов - Для моделей первого порядка
Массив ячеек из символьных векторов - Для моделей с двумя или более состояниями
StatePath
пуст ' '
для всех состояний по умолчанию.
StateUnit
- Государственные модули' '
(по умолчанию) | вектор символов | массив ячеек из векторов символовСостояние модулей, заданное как одно из следующих:
Вектор символов - Для моделей первого порядка, например, 'm/s'
Массив ячеек из символьных векторов - Для моделей с двумя или более состояниями
Использование StateUnit
отслеживать модули каждого состояния. StateUnit
не влияет на поведение системы. StateUnit
пуст ' '
для всех состояний по умолчанию.
InternalDelay
- Внутренние задержки в моделиВнутренние задержки в модели, заданные как вектор. Внутренние задержки возникают, например, при закрытии циклов обратной связи в системах с задержками или при соединении запаздывающих систем последовательно или параллельно. Дополнительные сведения о внутренних задержках см. в разделе Закрытие циклов обратной связи с временными задержками.
Для моделей в непрерывном времени внутренние задержки выражаются в модуле времени, заданной TimeUnit
свойство модели. Для моделей в дискретном времени внутренние задержки выражаются в виде целого числа, кратного шага расчета Ts
. Для примера, InternalDelay = 3
означает задержку на три периода дискретизации.
Значения внутренних задержек можно изменить с помощью свойства InternalDelay
. Однако количество записей в sys.InternalDelay
не может измениться, потому что это структурное свойство модели.
InputDelay
- Входная задержка0
(по умолчанию) | скалярный | Nu
-by-1 векторВходная задержка для каждого входного канала, заданная как одно из следующего:
Скаляр - Задает входную задержку для системы SISO или ту же задержку для всех входов мультивхода.
Nu
-by-1 вектор - Задайте отдельные задержки входных параметров для входа мультивхода, где Nu
- количество входов.
Для систем непрерывного времени задайте входные задержки в модуле времени, заданной TimeUnit
свойство. Для систем в дискретном времени задайте входные задержки в целочисленных множителях шага расчета, Ts
.
Для получения дополнительной информации см. раздел Задержки в линейных системах.
OutputDelay
- Выход0
(по умолчанию) | скалярный | Ny
-by-1 векторВыходная задержка для каждого выходного канала, заданная как одно из следующего:
Скаляр - Задает выходную задержку для системы SISO или ту же задержку для всех выходов мультивыхода.
Ny
-by-1 вектор - Задайте отдельные выходные задержки для вывода мультивыхода, где Ny
- количество выходов.
Для систем непрерывного времени задайте выходные задержки в модуле времени, заданной TimeUnit
свойство. Для систем в дискретном времени задайте выходные задержки в целочисленных множителях шага расчета, Ts
.
Для получения дополнительной информации см. раздел Задержки в линейных системах.
Ts
- Шаг расчета0
(по умолчанию) | положительный скалярный | -1
Шаг расчета, заданная как:
0
для систем непрерывного времени.
A положительной скалярной величины, представляющее период дискретной дискретной системы времени. Задайте Ts
в модуле времени, заданной TimeUnit
свойство.
-1
для системы в дискретном времени с неопределенным шагом расчета.
TimeUnit
- модули измерения переменной времени'seconds'
(по умолчанию) | 'nanoseconds'
| 'microseconds'
| 'milliseconds'
| 'minutes'
| 'hours'
| 'days'
| 'weeks'
| 'months'
| 'years'
| ...Модули переменной времени, заданные как одно из следующего:
'nanoseconds'
'microseconds'
'milliseconds'
'seconds'
'minutes'
'hours'
'days'
'weeks'
'months'
'years'
Изменение TimeUnit
не влияет на другие свойства, но изменяет общее поведение системы. Использовать chgTimeUnit
для преобразования между модулями времени без изменения поведения системы.
InputName
- Входные имена каналов''
(по умолчанию) | вектор символов | массив ячеек из векторов символовВходные имена каналов, заданные как одно из следующих:
Вектор символов, для моделей с одним входом.
Массив ячеек из векторов символов для мультивходов.
''
, имена для каких-либо входов каналов не заданы.
Кроме того, можно назначить входные имена для мультивходов с помощью автоматического расширения вектора. Для примера, если sys
является моделью с двумя входами, введите:
sys.InputName = 'controls';
Имена входа автоматически расширяются на {'controls(1)';'controls(2)'}
.
Можно использовать сокращённое обозначение u
для ссылки на InputName
свойство. Для примера, sys.u
эквивалентно sys.InputName
.
Использование InputName
кому:
Идентифицируйте каналы на отображении модели и графиках.
Извлечение подсистем систем MIMO.
Задайте точки соединения при соединении моделей.
InputUnit
- Входные модули канала''
(по умолчанию) | вектор символов | массив ячеек из векторов символовВходные модули канала, заданные как один из следующих:
Вектор символов, для моделей с одним входом.
Массив ячеек из векторов символов для мультивходов.
''
, никаких модулей, заданных для любых входных каналов.
Использование InputUnit
для определения модулей входного сигнала. InputUnit
не влияет на поведение системы.
InputGroup
- Входные группы каналовВходные группы каналов, заданные как структура. Использование InputGroup
присвоение входных каналов систем MIMO группам и указание каждой группы по имени. Имена полей InputGroup
являются именами групп, а значения полей являются входными каналами каждой группы. Для примера:
sys.InputGroup.controls = [1 2]; sys.InputGroup.noise = [3 5];
создает входные группы с именем controls
и noise
которые включают входные каналы 1
и 2
, и 3
и 5
, соответственно. Затем можно извлечь подсистему из controls
входы для всех выходов с помощью:
sys(:,'controls')
По умолчанию InputGroup
- структура без полей.
OutputName
- Выходы каналов''
(по умолчанию) | вектор символов | массив ячеек из векторов символовВыходы каналов, заданные как одно из следующих:
Вектор символов, для моделей с одним выходом.
Массив ячеек из векторов символов для мультивыходов.
''
, имена для каких-либо выходов каналов не заданы.
Кроме того, можно назначить выходные имена для мультивыходов с помощью автоматического расширения вектора. Для примера, если sys
является двухвыпускной моделью, введите:
sys.OutputName = 'measurements';
Выходы данных автоматически расширяются на {'measurements(1)';'measurements(2)'}
.
Можно также использовать сокращённое обозначение y
для ссылки на OutputName
свойство. Для примера, sys.y
эквивалентно sys.OutputName
.
Использование OutputName
кому:
Идентифицируйте каналы на отображении модели и графиках.
Извлечение подсистем систем MIMO.
Задайте точки соединения при соединении моделей.
OutputUnit
- модули выходного канала''
(по умолчанию) | вектор символов | массив ячеек из векторов символовВыход модулей канала, заданный как один из следующих:
Вектор символов, для моделей с одним выходом.
Массив ячеек из векторов символов для мультивыходов.
''
, никакие модули не заданы для каких-либо выходов каналов.
Использование OutputUnit
для определения модулей выходного сигнала. OutputUnit
не влияет на поведение системы.
OutputGroup
- Выходы каналовВыходные группы каналов, заданные как структура. Использование OutputGroup
присвоение выходных каналов систем MIMO группам и указание каждой группы по имени. Имена полей OutputGroup
- имена групп, а значения полей являются выходными каналами каждой группы. Для примера:
sys.OutputGroup.temperature = [1]; sys.InputGroup.measurement = [3 5];
создает выходные группы с именем temperature
и measurement
которые включают выходные каналы 1
, и 3
и 5
, соответственно. Затем можно извлечь подсистему из всех входов в measurement
выходы с использованием:
sys('measurement',:)
По умолчанию OutputGroup
- структура без полей.
Name
- Имя системы''
(по умолчанию) | вектор символовИмя системы, заданное как вектор символов. Для примера, 'system_1'
.
Notes
- Пользовательский текст{}
(по умолчанию) | вектор символов | массив ячеек из векторов символовЗаданный пользователем текст, который необходимо связать с системой, заданный как вектор символов или массив ячеек векторов символов. Для примера, 'System is MIMO'
.
UserData
- Пользовательские данные[]
(по умолчанию) | любой тип данных MATLABПользовательские данные, которые необходимо связать с системой, заданные как любой тип данных MATLAB.
SamplingGrid
- Матрица дискретизации для массивов моделейСетка дискретизации для массивов моделей, заданная как массив структур.
Использование 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 | Полоса пропускания частотной характеристики |
pidtune | Алгоритм настройки ПИДа для линейной модели объекта управления |
rlocus | Корневой годограф динамической системы |
lqr | Проект линейно-квадратичного регулятора (LQR) |
lqg | Линейно-квадратичный-Гауссов (LQG) проект |
lqi | Линейно-квадратичное-интегральное управление |
kalman | Проект фильтра Калмана для оценки состояния |
Создайте модель пространства состояний SISO, заданную следующими матрицами пространства состояний:
Задайте матрицы 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 = [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
, 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
секунды:
Задайте матрицы пространства состояний и создайте модель пространства состояний 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)
Заметьте входное имя Force
в названии переходного процесса.
В данном примере создайте модель пространства состояний с теми же свойствами времени и входных модулей, унаследованными от другой модели пространства состояний. Рассмотрим следующие модели пространства состояний:
Сначала создайте модель пространства состояний 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 = [2,4;3,5]; sys1 = ss(D)
sys1 = D = u1 u2 y1 2 4 y2 3 5 Static gain.
Вычислите модель пространства состояний следующей передаточной функции:
Создайте модель передаточной функции.
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) как продукт системы первого порядка и системы второго порядка.
В этом примере извлечите измеренные и шумовые компоненты идентифицированной полиномиальной модели в две отдельные модели пространства состояний.
Загрузка полиномиальной модели Бокса-Дженкинса ltiSys
в identifiedModel.mat
.
load('identifiedModel.mat','ltiSys');
ltiSys
- идентифицированная модель вида в дискретном времени: , где представляет измеренный компонент, шумовым компонентом.
Извлеките измеренные и шумовые компоненты как модели пространства состояний.
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.
Измеренный компонент может служить моделью объекта управления, в то время как шумовой компонент может использоваться в качестве модели возмущения для разработки системы управления.
Создайте модель пространства дескрипторов (E ≠ I).
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--')
В этом примере показано, как создать пространство состояний genss
модель, имеющая как фиксированные, так и настраиваемые параметры.
где 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, заданную следующими матрицами пространства состояний:
Принимая во внимание вход задержку 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, смотрите Определение временных задержек.
В данном примере рассмотрим объект системы в пространстве состояний, который представляет следующие матрицы состояний:
Создайте объект пространства состояний 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)
Изменения в усилении цикла являются только одним аспектом устойчивой устойчивости. В целом, несовершенное моделирование объекта означает, что и коэффициент усиления, и фаза точно не известны. Поскольку ошибки моделирования имеют наиболее пагубный эффект вблизи частоты среза усиления (частота, где коэффициент усиления без разомкнутого контура составляет 0 дБ), также важно, сколько изменений фазы может быть допустимо на этой частоте.
Вы можете отобразить коэффициент усиления и запасов по фазе на Диаграмму Боде следующим образом.
bode(sys) grid
Более подробный пример см. в разделе Оценка усиления и Запасах по фазе.
В данном примере спроектируйте 2-DOF ПИД-регуляторы с целевой шириной полосы 0,75 рад/с для системы, представленной следующими матрицами:
Создайте объект пространства состояний 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 = [-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
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.