В этом примере показано, как моделировать усиление и фазовую неопределенность в контурах обратной связи с помощью umargin блок управления конструкцией. Пример также показывает, как проверить контур обратной связи на надежную стабильность против такой неопределенности.
Рассмотрим контур обратной связи SISO с функцией передачи с разомкнутым контуром
2s2 + 3s.
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