В этом примере показано, как смоделировать усиление и неопределенность фазы в обратной связи с помощью umargin
блок системы управления. Пример также показывает, как проверять обратную связь на устойчивую устойчивость против такой неопределенности.
Рассмотрите обратную связь SISO с передаточной функцией разомкнутого контура
.
L = tf(3.5,[1 2 3 0]);
bode(L)
grid on
Из-за неопределенности объекта и других источников изменчивости, усиление цикла и фаза подвергаются колебаниям. В общем случае можно определить сумму неопределенности посредством экспериментирования на системе или аппроксимировать его на основе понимания или опыта. В данном примере предположите, что коэффициент усиления разомкнутого контура может увеличиться или уменьшиться на 50%, и фаза на ±30 °. Можно использовать umargin
блокируйтесь, чтобы смоделировать такую неопределенность. umargin
представляет изменение как неопределенный мультипликативный факторный F
с номинальной стоимостью 1. Множество значений F может взять, получает усиление и неопределенность фазы, которую вы задаете.
Создать umargin
блокируйте, используйте getDGM
вычислить самый маленький диск неопределенности, который получает усиление и изменение фазы, которое вы хотите представлять. Используйте выход getDGM
создать F.
DGM = getDGM(1.5,30,'tight'); F = umargin('F',DGM)
F = Uncertain gain/phase "F" with relative gain change in [0.472,1.5] and phase change of ±30 degrees.
Визуализируйте F, чтобы видеть область значений значений, принявших этим фактором (справа) и областью значений усиления и изменений фазы, которые это моделирует F
(слева).
plot(F)
Графики показывают, что усиление может варьироваться между 47% и 150% его номинальной стоимости (принимающий изменение фазы), и фаза может варьироваться на ±30 ° (принимающий изменение усиления). Когда и усиление и фаза варьируются, их изменение остается в теневой области в левом графике.
Неопределенность F умножает ответ разомкнутого контура, давая к системе с обратной связью как в следующей схеме.
Включите эту неопределенность в модель с обратной связью.
T = feedback(L*F,1)
T = Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 3 states. The model uncertainty consists of the following blocks: F: Uncertain gain/phase, gain × [0.472,1.5], phase ± 30 deg, 1 occurrences Type "T.NominalValue" to see the nominal value, "get(T)" to see all properties, and "T.Uncertainty" to interact with the uncertain elements.
Результатом является неопределенное пространство состояний (uss
) модель системы с обратной связью, содержащей неопределенный блок F. В целом коэффициент усиления разомкнутого контура может содержать другие неопределенные блоки также.
Выборка неопределенности и графический вывод переходного процесса с обратной связью предлагают плохую робастность таким изменениям усиления/фазы.
clf
rng default
step(T)
Чтобы определить количество этой плохой робастности, используйте robstab
измерять устойчивый запас устойчивости для заданной неопределенности.
SM = robstab(T)
SM = struct with fields:
LowerBound: 0.8303
UpperBound: 0.8319
CriticalFrequency: 1.4482
Устойчивый запас устойчивости - только 0,83, означая, что обратная связь может только противостоять 83% заданной неопределенности. Фактор 0.83 находится в нормированных единицах. Чтобы перевести это значение в фактическую безопасную область значений усиления и изменений фазы, используйте uscale
. Эта команда берет смоделированный диск неопределенности и масштабный коэффициент, и преобразует его в новый диск неопределенности.
Fsafe = uscale(F,0.83)
Fsafe = Uncertain gain/phase "F" with relative gain change in [0.564,1.42] and phase change of ±24.8 degrees.
Отображение показывает, что 83% неопределенности задали в F
(и поэтому в L
) суммы, чтобы получить изменение между 56% и 142% номинальной стоимости, и изменение фазы ±25 °. Постройте диск Fsafe
видеть полный спектр одновременного усиления и изменений фазы, которые может терпеть система с обратной связью.
plot(Fsafe)
В модели L
, неопределенность усиления и фазы является единственным источником неопределенности. Поэтому можно получить тот же результат непосредственно вычислительным находящиеся на диске поля с diskmargin
. Убедитесь с учетом "скоса" модели F
неопределенности, который смещает неопределенность к увеличению усиления или уменьшению.
sigma = F.Skew; DM = diskmargin(L,sigma)
DM = struct with fields:
GainMargin: [0.5626 1.4178]
PhaseMargin: [-24.8091 24.8091]
DiskMargin: 0.4274
LowerBound: 0.4274
UpperBound: 0.4274
Frequency: 1.4505
WorstPerturbation: [1x1 ss]
Это возвращает находящиеся на диске запасы по амплитуде и фазе для обратной связи L
. Эти значения совпадают с областями значений, отображенными для масштабированной неопределенности Fsafe
.
В вычислениях выше, вы использовали getDGM
сопоставлять ±50%-е усиление и неопределенность фазы на ±30 ° в диск неопределенности F
. Вы использовали 'tight'
опция, которая выбирает самый маленький диск, который получает и заданное усиление и неопределенность фазы. Исследование области значений усиления и изменений, охваченных F снова, показывает, что область значений усиления смещается к уменьшению усиления.
plot(F)
В качестве альтернативы можно использовать 'balanced'
опция getDGM
использовать модель с равными объемами (относительного) увеличения усиления и уменьшения. Сбалансированная область значений соответствует нулевому скосу (sigma
= 0) в diskmargin
.
DGM = getDGM(1.5,30,'balanced'); Fbal = umargin('Fbal',DGM); plot(Fbal)
На этот раз область значений усиления, показанная в левом графике, симметрична.
Затем сравните диск значений для двух моделей F
неопределенности и
Fbal
. Диск неопределенности больше для 'balanced'
опция.
clf DGM = F.GainChange; DGMbal = Fbal.GainChange; diskmarginplot([DGM;DGMbal],'disk') legend('F','Fbal') title('Two models for 50% gain and 30 degree phase variations')
Теперь вычислите устойчивый запас устойчивости для системы с Fbal
и сравните безопасные области значений усиления и изменений фазы для этих двух моделей.
SM2 = robstab(feedback(L*Fbal,1)); Fbalsafe = uscale(Fbal,SM2.LowerBound); DGMsafe = Fsafe.GainChange; DGMbalsafe = Fbalsafe.GainChange; diskmarginplot([DGMsafe;DGMbalsafe]) legend('F','Fbal') title('Safe ranges of gain and phase variations')
'tight'
подходящий F
дает к более крупной безопасной области и становится ближе к исходной цели робастности (3,5 поля усиления дБ и 30 запасов по фазе степеней).
diskmarginplot
| getDGM
| plot (umargin)
| umargin