Этот пример показывает, как использовать неопределенные объекты в Robust Control Toolbox™ для моделирования неопределенных систем и оценки устойчивой устойчивости и устойчивой эффективности с помощью инструментов анализа робастности.
Robust Control Toolbox позволяет создавать неопределенные элементы, такие как физические параметры, значения которых точно не известны, и объединять эти элементы в неопределенные модели. Затем можно легко проанализировать влияние неопределенности на производительность системы управления.
Для примера рассмотрим модель объекта
где gamma
может варьироваться в интервале [3,5] и tau
имеет среднее значение 0,5 с изменчивостью 30%. Можно создать неопределенную модель P (s), как в этом примере:
gamma = ureal('gamma',4,'range',[3 5]); tau = ureal('tau',.5,'Percentage',30); P = tf(gamma,[tau 1])
P = Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 1 states. The model uncertainty consists of the following blocks: gamma: Uncertain real, nominal = 4, range = [3,5], 1 occurrences tau: Uncertain real, nominal = 0.5, variability = [-30,30]%, 1 occurrences Type "P.NominalValue" to see the nominal value, "get(P)" to see all properties, and "P.Uncertainty" to interact with the uncertain elements.
Предположим, что вы разработали интегральный контроллер C
для номинального объекта (gamma
= 4 и tau
=0.5). Чтобы узнать, как изменения gamma
и tau
повлиять на эффективность объекта и системы с обратной связью, сформировать систему с обратной связью CLP
от C
и P.
KI = 1/(2*tau.Nominal*gamma.Nominal); C = tf(KI,[1 0]); CLP = feedback(P*C,1)
CLP = Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 2 states. The model uncertainty consists of the following blocks: gamma: Uncertain real, nominal = 4, range = [3,5], 1 occurrences tau: Uncertain real, nominal = 0.5, variability = [-30,30]%, 1 occurrences Type "CLP.NominalValue" to see the nominal value, "get(CLP)" to see all properties, and "CLP.Uncertainty" to interact with the uncertain elements.
Постройте график переходной характеристики объекта управления и системы с обратной связью. The step
команда автоматически генерирует 20 случайных выборок неопределенных параметров gamma
и tau
и строит графики соответствующих переходных характеристик.
subplot(2,1,1); step(P), title('Plant response (20 samples)') subplot(2,1,2); step(CLP), title('Closed-loop response (20 samples)')
Фигура 1: Переходные характеристики модели объекта и замкнутой системы
Нижний график показывает, что система с обратной связью является достаточно устойчивой, несмотря на значительные колебания усиления постоянного тока объекта. Это является желательной и общей характеристикой правильно разработанной системы обратной связи.
Этот пример основан на примере Отслеживания уставки двигателя постоянного тока с Изменений параметра путем добавления неопределенности параметра и неизмененной динамики, чтобы исследовать робастность сервопривода контроллера к такой неопределенности.
Номинальная модель двигателя постоянного тока определяется сопротивлением R
, индуктивность L
, постоянная ЭДС Kb
, постоянная якоря Km
, линейное приближение вязкого трения Kf
и инерционная нагрузка J
. Каждый из этих компонентов изменяется в пределах определенной области значений значений. Константы сопротивления и индуктивности варьируются в пределах ± 40% от их номинальных значений. Использование ureal
чтобы создать эти неопределенные параметры.
R = ureal('R',2,'Percentage',40); L = ureal('L',0.5,'Percentage',40);
По физическим причинам значения Kf
и Kb
одинаковы, даже если они неопределенны. В этом примере номинальное значение составляет 0,015 с областью значений от 0,012 до 0,019.
K = ureal('K',0.015,'Range',[0.012 0.019]); Km = K; Kb = K;
Вязкое трение, Kf
, имеет номинальное значение 0,2 с изменением его значения на 50%.
Kf = ureal('Kf',0.2,'Percentage',50);
Ток в электрической цепи и крутящий момент, приложенный к ротору, могут быть выражены в терминах приложенного напряжения и угловой скорости. Создайте передаточную функцию H
связывая эти переменные, и делайте AngularSpeed
выходные выходы H
для дальнейшего использования.
H = [1;0;Km] * tf(1,[L R]) * [1 -Kb] + [0 0;0 1;0 -Kf]; H.InputName = {'AppliedVoltage';'AngularSpeed'}; H.OutputName = {'Current';'AngularSpeed';'RotorTorque'};
Двигатель обычно управляет инерцией, динамические характеристики которой связывают приложенный крутящий момент со скоростью изменения угловой скорости. Для твердого тела это значение является константой. Более реалистичная, но неопределенная модель может содержать неизвестные демпфированные резонансы. Используйте ultidyn
объект для моделирования неопределенной линейной инвариантной по времени динамики. Установите номинальное значение инерции твердого тела равным 0,02, и мы включим 15% динамическую неопределенность в мультипликативной форме.
J = 0.02*(1 + ultidyn('Jlti',[1 1],'Type','GainBounded','Bound',0.15,... 'SampleStateDim',4));
Это простой вопрос, связанный с AngularSpeed
вход в RotorTorque
выход через неопределенную инерцию, J
, с использованием lft
команда. The AngularSpeed
вход равен RotorTorque/(J*s)
. Поэтому используйте «положительную» обратную связь от третьего выхода до второго входа H
для подключения. Это соединение приводит к системе с одним входом (AppliedVoltage
) и два выхода (Current
и AngularSpeed
).
Pall = lft(H,tf(1,[1 0])/J);
Выберите только AngularSpeed
выход для оставшейся части анализа системы управления.
P = Pall(2,:)
P = Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 2 states. The model uncertainty consists of the following blocks: Jlti: Uncertain 1x1 LTI, peak gain = 0.15, 1 occurrences K: Uncertain real, nominal = 0.015, range = [0.012,0.019], 2 occurrences Kf: Uncertain real, nominal = 0.2, variability = [-50,50]%, 1 occurrences L: Uncertain real, nominal = 0.5, variability = [-40,40]%, 1 occurrences R: Uncertain real, nominal = 2, variability = [-40,40]%, 1 occurrences Type "P.NominalValue" to see the nominal value, "get(P)" to see all properties, and "P.Uncertainty" to interact with the uncertain elements.
P
является одно- входной, одно- выходной неопределенной моделью двигателя постоянного тока. В целях анализа используйте следующий контроллер.
Cont = tf(84*[.233 1],[.0357 1 0]);
Во-первых, сравните переходную характеристику номинального двигателя постоянного тока с 15 выборками неопределенной модели двигателя постоянного тока. Использование usample
для явного определения количества случайных выборок.
clf step(usample(P,15),P.NominalValue,3) legend('Samples','Nominal')
Фигура 2: Переходная характеристика объекта
Аналогично сравните Bode-ответ номинальной (красной) и дискретизированной (синей) неопределенных моделей двигателя постоянного тока.
bode(usample(P,15),P.NominalValue); legend('Samples','Nominal')
Фигура 3: Реакция объекта Bode
В этом разделе анализируйте робастность контроллера двигателя постоянного тока. Номинальный анализ системы с обратной связью показывает, что цикл обратной связи очень надежен с запасом усиления 22 дБ и 66 o от запаса по фазе.
margin(P.NominalValue*Cont)
Фигура 4: Анализ робастности с обратной связью
The diskmargin
функция вычисляет коэффициент усиления и запасов по фазе диска. Путем моделирования изменений усиления и фазы на всех частотах и во всех циклах обратной связи, поля диска, как правило, являются более точными оценками робастности, особенно в многоканальных системах управления. Вычислите дисковые поля для цикла двигателя постоянного тока.
DM = diskmargin(P.NominalValue*Cont)
DM = struct with fields:
GainMargin: [0.2792 3.5822]
PhaseMargin: [-58.8054 58.8054]
DiskMargin: 1.1271
LowerBound: 1.1271
UpperBound: 1.1271
Frequency: 5.0062
WorstPerturbation: [1x1 ss]
Хотя и меньше, чем классический коэффициент усиления и запасов по фазе, основанные на диске поля по существу подтверждают, что номинальный цикл обратной связи очень устойчива. Теперь напомним, что моторный объект постоянного тока неопределен. Как смоделированная неопределенность влияет на эти запасы устойчивости? Для быстрого понимания постройте график дискового усиления и запасов по фазе для 20 образцов неопределенного разомкнутого контура характеристики.
diskmarginplot(P*Cont,P.NominalValue*Cont) legend('Samples','Nominal')
Некоторые комбинации неопределенности объектов приводят к меньшим запасам. На график показана только небольшая выборка. Используйте анализ наихудшего случая, чтобы выяснить, насколько плохие маржи могут действительно получить. The wcdiskmargin
функция непосредственно вычисляет коэффициент усиления и запасов по фазе в худшем случае для смоделированной неопределенности.
wcDM = wcdiskmargin(P*Cont,'siso')
wcDM = struct with fields:
GainMargin: [0.8729 1.1457]
PhaseMargin: [-7.7676 7.7676]
DiskMargin: 0.1358
LowerBound: 0.1358
UpperBound: 0.1361
CriticalFrequency: 4.9827
WorstPerturbation: [1x1 ss]
mag2db(wcDM.GainMargin)
ans = 1×2
-1.1812 1.1812
Здесь наихудшие поля составляют всего 1,2 дБ и 7,8 степени, сигнализируя, что замкнутый цикл почти нестабильен для некоторых комбинаций неопределенных элементов.
Функция чувствительности является стандартной мерой эффективности с обратной связью для системы обратной связи. Вычислите функцию неопределенной чувствительности S
и сравните графики величины Бода для номинальных и выбранных функций неопределенной чувствительности.
S = feedback(1,P*Cont); bodemag(S,S.Nominal) legend('Samples','Nominal')
Фигура 5: Величина функции чувствительности S.
Во временном интервале функция чувствительности указывает, насколько хорошо может быть отклонено нарушение порядка шага. Постройте график своей переходной характеристики, чтобы увидеть изменчивость характеристик подавления помех (номинал появляется красным цветом).
step(S,S.Nominal) title('Disturbance Rejection') legend('Samples','Nominal')
Фигура 6: Отклонение шагового нарушения порядка.
Используйте wcgain
функция для вычисления значения в худшем случае пикового усиления функции чувствительности.
[maxgain,worstuncertainty] = wcgain(S); maxgain
maxgain = struct with fields:
LowerBound: 7.5186
UpperBound: 7.5344
CriticalFrequency: 4.9955
С usubs
функцию можно заменить наихудшими значениями неопределенных элементов на функцию неопределенной чувствительности S
. Это дает функцию чувствительности в худшем случае Sworst
во всей области значений неопределенностей. Обратите внимание, что пиковый коэффициент усиления Sworst
соответствует нижним границам, вычисленным как wcgain
.
Sworst = usubs(S,worstuncertainty); norm(Sworst,inf)
ans = 7.5186
maxgain.LowerBound
ans = 7.5186
Теперь сравните переходные характеристики номинальной и худшей чувствительности.
step(Sworst,S.NominalValue,6); title('Disturbance Rejection') legend('Worst-case','Nominal')
Фигура 7: Номинальный и наихудший случай отказа от нарушения порядка шага
Очевидно, что некоторые комбинации неопределенных элементов значительно ухудшают способность контроллера быстро отклонять нарушения порядка. Наконец, постройте график величины номинальных и наихудших значений функции чувствительности. Заметьте, что пиковое значение Sworst
происходит на частоте maxgain.CriticalFrequency
:
bodemag(Sworst,S.NominalValue) legend('Worst-case','Nominal') hold on semilogx(maxgain.CriticalFrequency,20*log10(maxgain.LowerBound),'g*')
Фигура 8: Величина номинальной и наихудшей чувствительности
diskmargin
| uss
| usubs
| wcgain