Можно создать и проанализировать модели неопределенного пространства состояний, состоящие из матриц неопределенного пространства состояний. В этом примере создайте систему MIMO с параметрической неопределенностью и проанализируйте ее на устойчивую стабильность и худшую эффективность.
Рассмотрим систему с двумя входами, двумя выходами, двумя состояниями, модель которой имеет параметрическую неопределенность в матрицах пространства состояний. Сначала создайте неопределенный параметр p
. Используя параметр, сделайте неопределенным A
и C
матрицы. The B
матрица оказывается не неопределенной, хотя вы добавите неопределенность входа частотной области к модели позже.
p = ureal('p',10,'Percentage',10); A = [0 p;-p 0]; B = eye(2); C = [1 p;-p 1]; H = ss(A,B,C,[0 0;0 0])
H = Uncertain continuous-time state-space model with 2 outputs, 2 inputs, 2 states. The model uncertainty consists of the following blocks: p: Uncertain real, nominal = 10, variability = [-10,10]%, 2 occurrences Type "H.NominalValue" to see the nominal value, "get(H)" to see all properties, and "H.Uncertainty" to interact with the uncertain elements.
Можно просмотреть свойства неопределенной системы H
использование get
команда.
get(H)
NominalValue: [2x2 ss] Uncertainty: [1x1 struct] A: [2x2 umat] B: [2x2 double] C: [2x2 umat] D: [2x2 double] E: [] StateName: {2x1 cell} StateUnit: {2x1 cell} InternalDelay: [0x1 double] InputDelay: [2x1 double] OutputDelay: [2x1 double] Ts: 0 TimeUnit: 'seconds' InputName: {2x1 cell} InputUnit: {2x1 cell} InputGroup: [1x1 struct] OutputName: {2x1 cell} OutputUnit: {2x1 cell} OutputGroup: [1x1 struct] Notes: [0x1 string] UserData: [] Name: '' SamplingGrid: [1x1 struct]
Большинство свойств ведут себя так же, как и соответствующие свойства ss
объекты. Свойство NominalValue
сам по себе является ss
объект.
Модель для H
не содержит динамику привода. По-другому, модели привода являются унифицированным усилением для всех частот.
Тем не менее, поведение привода для канала 1 является скромно неопределенным (например, 10%) на низких частотах, и поведение высокой частоты за пределами 20 рад/с не точно моделируется. Аналогичные операторы для привода в канале 2 с большей скромной неопределенностью на низкой частоте (например, 20%), но с точностью до 45 рад/с.
Использование ultidyn
объекты Delta1
и Delta2
наряду с формирующими фильтрами W1
и W2
чтобы добавить эту форму частотного диапазона неопределенности в модель.
W1 = makeweight(.1,20,50); W2 = makeweight(.2,45,50); Delta1 = ultidyn('Delta1',[1 1]); Delta2 = ultidyn('Delta2',[1 1]); G = H*blkdiag(1+W1*Delta1,1+W2*Delta2)
G = Uncertain continuous-time state-space model with 2 outputs, 2 inputs, 4 states. The model uncertainty consists of the following blocks: Delta1: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences Delta2: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences p: Uncertain real, nominal = 10, variability = [-10,10]%, 2 occurrences Type "G.NominalValue" to see the nominal value, "get(G)" to see all properties, and "G.Uncertainty" to interact with the uncertain elements.
Обратите внимание, что G
является неопределенной системой с двумя входами и двумя выходами, с зависимостью от трех неопределенных элементов, Delta1
, Delta2
, и p
. Имеет четыре состояния, два от H
и по одному из формирующих фильтров W1
и W2
, которые встроены в G
.
Можно построить график 2-секундной переходной характеристики нескольких выборок G
10% -ная неопределенность в естественной частоте очевидна.
stepplot(G,2)
Можно создать Диаграмму Боде образцов G
. Высокочастотная неопределенность в модели также очевидна. Для наглядности запустите Диаграмму Боде за пределами резонанса.
bodeplot(G,{13 100})
Загрузите контроллер и проверьте, что он имеет два входа и два выхода.
load('mimoKexample.mat')
size(K)
State-space model with 2 outputs, 2 inputs, and 9 states.
Можно использовать команду loopsens
сформировать все стандартные строения обратной связи объекта управления/контроллера, включая чувствительность и дополнительную чувствительность как на входе, так и на выходе. Потому что G
является неопределенным, все системы с обратной связью также являются неопределенными.
F = loopsens(G,K)
F = struct with fields:
Si: [2x2 uss]
Ti: [2x2 uss]
Li: [2x2 uss]
So: [2x2 uss]
To: [2x2 uss]
Lo: [2x2 uss]
PSi: [2x2 uss]
CSo: [2x2 uss]
Poles: [13x1 double]
Stable: 1
F
- структура со многими полями. Полюсы номинальной системы с обратной связью находятся в F.Poles
, и F.Stable
равен 1, если номинальная система с обратной связью является стабильной. В остальных 10 полях S
означает чувствительность, T
или комплементарной чувствительности и L
для коэффициента усиления без разомкнутого контура. Суффиксы i
и o
см. вход и выход объекта. Наконец, P
и C
см. объект и контроллер.
Следовательно, Ti
математически такой же, как:
Lo
является G*K
, и CSo
математически то же самое, что и
Исследуйте передачу нарушений порядка на входе объекта на выход объекта путем построения характеристик F.PSi
. График некоторых выборок вместе с номиналом.
bodemag(F.PSi.NominalValue,'r+',F.PSi,'b-',{1e-1 100})
Можно использовать allmargin
исследовать коэффициент усиления и цикла в запасы по фазе времени, а также diskmargin
для цикла -в момент времени дисковых полей и одновременных многопараметрических полей. Маржи вычисляются для номинальной системы и не отражают модели неопределенности в G
.
Например, исследуйте дисковые поля для изменений усиления или фазы на выходах и входах объекта. (Общие сведения об анализе полей на диске см. в разделе Анализ устойчивости с использованием полей диска.)
[DMo,MMo] = diskmargin(G*K); [DMi,MMi] = diskmargin(K*G);
Поля цикла -в момент времени возвращаются в массивах структур DMo
и DMi
. Каждый из этих массивов содержит по одному элементу для каждого из двух каналов обратной связи. Например, исследуйте поля на выходе объекта для второго канала обратной связи.
DMo(2)
ans = struct with fields:
GainMargin: [0.0682 14.6726]
PhaseMargin: [-82.2022 82.2022]
DiskMargin: 1.7448
LowerBound: 1.7448
UpperBound: 1.7448
Frequency: 4.8400
WorstPerturbation: [2x2 ss]
Этот результат говорит вам, что коэффициент усиления во втором объекте выхода может варьироваться по факторам между примерно 0,07 и примерно 14,7, без нестабильности второго цикла. Точно так же цикл может допускать изменения фазы на выходе до приблизительно ± 82 °.
Структуры MMo
и MMi
содержат поля для параллельных и независимых изменений в обоих каналах. Например, исследуйте многоуровневые поля на входах объекта управления.
MMi
MMi = struct with fields:
GainMargin: [0.1186 8.4289]
PhaseMargin: [-76.4682 76.4682]
DiskMargin: 1.5758
LowerBound: 1.5758
UpperBound: 1.5790
Frequency: 5.9828
WorstPerturbation: [2x2 ss]
Этот результат говорит вам, что коэффициент усиления на входе объекта управления может изменяться в обоих каналах независимо от факторов между приблизительно 1/8 и 8 без нестабильности системы с обратной связью. Система может допускать независимые и параллельные изменения фазы примерно ± 76 °. Поскольку поля мультицикла учитывают цикл взаимодействия, они, как правило, меньше, чем цикл - в момент времени.
Исследуйте многоуровневые поля на выходах объекта.
MMo
MMo = struct with fields:
GainMargin: [0.1201 8.3280]
PhaseMargin: [-76.3058 76.3058]
DiskMargin: 1.5712
LowerBound: 1.5712
UpperBound: 1.5744
Frequency: 17.4276
WorstPerturbation: [2x2 ss]
Поля на выходах объекта аналогичны полям на входах. Этот результат не всегда верен в многоуровневых системах обратной связи.
Наконец, исследуйте поля с учетом одновременных изменений на входах и выходах объекта.
MMio = diskmargin(G,K)
MMio = struct with fields:
GainMargin: [0.5676 1.7619]
PhaseMargin: [-30.8440 30.8440]
DiskMargin: 0.5517
LowerBound: 0.5517
UpperBound: 0.5528
Frequency: 9.0688
WorstPerturbation: [1x1 struct]
Когда вы рассматриваете все такие изменения одновременно, поля несколько меньше, чем у одних только входов или выходов. Тем не менее, эти числа указывают на в целом устойчивую систему с обратной связью. Система может терпеть значительные одновременные изменения усиления или ± 30 ° одновременные изменения фазы во всех входных и выходных каналах объекта.
С diskmargin
, вы определяете различные запасы устойчивости номинальной мультивыпускной системы. Эти поля вычисляются только для номинальной системы и не отражают неопределенность, явно смоделированную ureal
и ultidyn
объекты. Когда вы работаете с детальной моделью неопределенности, запасы устойчивости вычисляются diskmargin
может не точно отражать, насколько близка система от нестабильности. Затем можно использовать robstab
вычислить устойчивый запас устойчивости для заданной неопределенности.
В этом примере используйте robstab
вычислить устойчивый запас устойчивости для неопределенной обратной связи цикла состоящей из G
и K
. Можно использовать любую из передаточных функций с обратной связью в F = loopsens(G,K)
. Все они, F.Si, F.To
, и т.д., имеют одинаковую внутреннюю динамику, и, следовательно, их свойства устойчивости одинаковы.
opt = robOptions('Display','on'); stabmarg = robstab(F.So,opt)
Computing peak... Percent completed: 100/100 System is robustly stable for the modeled uncertainty. -- It can tolerate up to 221% of the modeled uncertainty. -- There is a destabilizing perturbation amounting to 222% of the modeled uncertainty. -- This perturbation causes an instability at the frequency 13.6 rad/seconds.
stabmarg = struct with fields:
LowerBound: 2.2129
UpperBound: 2.2173
CriticalFrequency: 13.6333
Этот анализ подтверждает, что diskmargin
предложенный анализ. Система с обратной связью довольно устойчива с точки зрения устойчивости к изменениям, моделируемым неопределенными параметрами Delta1
, Delta2
, и p
. Фактически, система может переносить более чем в два раза смоделированную неопределенность, не теряя устойчивости замкнутой системы.
Можно построить график величины Bode номинальной выходной функции чувствительности. Он наглядно показывает достойное подавление помех во всех каналах на низкой частоте.
bodemag(F.So.NominalValue,{1e-1 100})
Пиковое значение максимального сингулярного значения матрицы частотной характеристики можно вычислить используя norm
.
[PeakNom,freq] = getPeakGain(F.So.NominalValue)
PeakNom = 1.1317
freq = 7.1300
Пик - около 1,13. Каков максимальный выход чувствительности, который достигается, когда неопределенные элементы Delta1
, Delta2
, и p
варьировать в своих областях значений? Можно использовать wcgain
чтобы ответить на это.
[maxgain,wcu] = wcgain(F.So); maxgain
maxgain = struct with fields:
LowerBound: 2.1599
UpperBound: 2.1641
CriticalFrequency: 8.3336
Анализ указывает, что худший коэффициент усиления находится где-то между 2.1 и 2.2. Частота достижения пика составляет около 8,5.
Использование usubs
чтобы заменить значения для Delta1
, Delta2
, и p
которые достигают усиления 2,1. Сделайте замену в выход комплементарной чувствительности и сделайте переходную характеристику.
step(F.To.NominalValue,usubs(F.To,wcu),5)
Возмущенная реакция, которая является худшей комбинацией неопределенных значений с точки зрения усиления выхода чувствительности, не показывает значительного ухудшения команды реакции. Время урегулирования увеличивается примерно на 50%, с 2 до 4, а недиагональное связывание увеличивается примерно на 2 раза, но все еще довольно мало.
Можно также изучить наихудший случай частотной характеристики наряду с номинальной и выборочной системами с помощью wcsigmaplot
.
wcsigmaplot(F.To,{1e-1,100})
diskmargin
| loopsens
| robstab
| ultidyn
| usubs
| wcgain
| wcsigmaplot