Можно создавать и анализировать модели неопределенного состояния-пространства, состоящие из матриц неопределенного состояния-пространства. В этом примере создайте систему MIMO с параметрической неопределенностью и проанализируйте ее на предмет надежной стабильности и наихудшей производительности.
Рассмотрим систему с двумя входами и двумя выходами, модель которой имеет параметрическую неопределенность в матрицах состояния и пространства. Сначала создайте неопределенный параметр 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 - неопределенная система с двумя входами и двумя выходами с зависимостью от трех неопределенных элементов, 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 математически является таким же, как:
-1G
Lo является G*K, и CSo математически совпадает с
) -1
Проверить передачу возмущений на входе установки на выход установки путем построения графика ответов 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