Можно создать и анализировать неопределенные модели в пространстве состояний, составленные из неопределенных матриц пространства состояний. В этом примере создайте систему 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.1187 8.4281]
PhaseMargin: [-76.4669 76.4669]
DiskMargin: 1.5757
LowerBound: 1.5757
UpperBound: 1.5789
Frequency: 5.9877
WorstPerturbation: [2x2 ss]
Этот результат говорит вам, что усиление во входе объекта может варьироваться по обоим каналам независимо факторами между приблизительно 1/8 и 8 без системы с обратной связью, идущей нестабильный. Система может терпеть независимые и параллельные изменения фазы выше на приблизительно ±76 °. Поскольку многоконтурные поля принимают взаимодействия цикла во внимание, они имеют тенденцию быть меньшими, чем цикл за один раз поля.
Исследуйте многоконтурные поля на объекте выходные параметры.
MMo
MMo = struct with fields:
GainMargin: [0.1201 8.3290]
PhaseMargin: [-76.3074 76.3074]
DiskMargin: 1.5712
LowerBound: 1.5712
UpperBound: 1.5744
Frequency: 17.3984
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.6331
Этот анализ подтверждает что 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.1643
CriticalFrequency: 8.3353
Анализ указывает, что усиление худшего случая где-нибудь между 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