Можно создать и анализировать неопределенные модели в пространстве состояний, составленные из неопределенных матриц пространства состояний. В этом примере создайте систему MIMO с параметрической неопределенностью и анализируйте его для устойчивой устойчивости и эффективности худшего случая.
Рассмотрите 2D вход, 2D выход, система с двумя состояниями, модель которой имеет параметрическую неопределенность в матрицах пространства состояний. Сначала создайте неопределенный параметр p. Используя параметр, сделайте неопределенный A и C матрицы. 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 2D вход, 2D выход неопределенная система, с зависимостью от трех неопределенных элементов, Delta1, Delta2, и p. Это имеет четыре состояния, два от H и один каждый от формирующий фильтров W1 и W2, которые встраиваются в G.
Можно построить 2-секундный переходной процесс нескольких выборок G 10%-я неопределенность в собственной частоте очевидна.
stepplot(G,2)

Можно создать Диаграмму Боде выборок G. Высокочастотная неопределенность в модели также очевидна. Для ясности запустите Диаграмму Боде вне резонанса.
bodeplot(G,{13 100})
Загрузите контроллер и проверьте, что это 2D вводится и 2D выводится.
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. На самом деле система может терпеть более двух раз смоделированную неопределенность, не теряя устойчивость с обратной связью.
Можно построить Предвещать величину номинальной выходной функции чувствительности. Это ясно показывает достойное подавление помех во всех каналах в низкой частоте.
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