Анализ робастности MIMO

Можно создать и проанализировать модели неопределенного пространства состояний, состоящие из матриц неопределенного пространства состояний. В этом примере создайте систему 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)

Figure contains 4 axes. Axes 1 with title From: In(1) contains 21 objects of type line. This object represents G. Axes 2 contains 21 objects of type line. This object represents G. Axes 3 with title From: In(2) contains 21 objects of type line. This object represents G. Axes 4 contains 21 objects of type line. This object represents G.

Можно создать Диаграмму Боде образцов G. Высокочастотная неопределенность в модели также очевидна. Для наглядности запустите Диаграмму Боде за пределами резонанса.

bodeplot(G,{13 100})

Figure contains 8 axes. Axes 1 with title From: In(1) contains 21 objects of type line. This object represents G. Axes 2 contains 21 objects of type line. This object represents G. Axes 3 contains 21 objects of type line. This object represents G. Axes 4 contains 21 objects of type line. This object represents G. Axes 5 with title From: In(2) contains 21 objects of type line. This object represents G. Axes 6 contains 21 objects of type line. This object represents G. Axes 7 contains 21 objects of type line. This object represents G. Axes 8 contains 21 objects of type line. This object represents G.

Анализ робастности в замкнутой системе

Загрузите контроллер и проверьте, что он имеет два входа и два выхода.

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 математически такой же, как:

K(I+GK)-1G

Lo является G*K, и CSo математически то же самое, что и

K(I+GK)-1

Исследуйте передачу нарушений порядка на входе объекта на выход объекта путем построения характеристик F.PSi. График некоторых выборок вместе с номиналом.

bodemag(F.PSi.NominalValue,'r+',F.PSi,'b-',{1e-1 100})

Figure contains 4 axes. Axes 1 with title From: du(1) contains 22 objects of type line. These objects represent untitled1, untitled2. Axes 2 contains 22 objects of type line. These objects represent untitled1, untitled2. Axes 3 with title From: du(2) contains 22 objects of type line. These objects represent untitled1, untitled2. Axes 4 contains 22 objects of type line. These objects represent untitled1, untitled2.

Номинальные запасы устойчивости

Можно использовать 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})

Figure contains 4 axes. Axes 1 with title From: dy(1) contains an object of type line. This object represents untitled1. Axes 2 contains an object of type line. This object represents untitled1. Axes 3 with title From: dy(2) contains an object of type line. This object represents untitled1. Axes 4 contains an object of type line. This object represents untitled1.

Пиковое значение максимального сингулярного значения матрицы частотной характеристики можно вычислить используя 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)

Figure contains 4 axes. Axes 1 with title From: dy(1) contains 2 objects of type line. These objects represent untitled1, untitled2. Axes 2 contains 2 objects of type line. These objects represent untitled1, untitled2. Axes 3 with title From: dy(2) contains 2 objects of type line. These objects represent untitled1, untitled2. Axes 4 contains 2 objects of type line. These objects represent untitled1, untitled2.

Возмущенная реакция, которая является худшей комбинацией неопределенных значений с точки зрения усиления выхода чувствительности, не показывает значительного ухудшения команды реакции. Время урегулирования увеличивается примерно на 50%, с 2 до 4, а недиагональное связывание увеличивается примерно на 2 раза, но все еще довольно мало.

Можно также изучить наихудший случай частотной характеристики наряду с номинальной и выборочной системами с помощью wcsigmaplot.

wcsigmaplot(F.To,{1e-1,100})

Figure contains an axes. The axes contains 48 objects of type line. These objects represent Sampled uncertainty, Nominal, Worst perturbation, Worst-case gain (lower bound), Worst-case gain (upper bound).

См. также

| | | | | |