Этот пример показывает, как использовать Robust Control Toolbox™ для создания моделей неопределенного пространства состояний и анализа робастности систем управления с обратной связью с неопределенными элементами.
Мы покажем, как задать неопределенные физические параметры и создать неопределенные модели пространства состояний из этих параметров. Вы увидите, как вычислить эффекты случайных и наихудших изменений параметра с помощью функций usample
и robstab
.
В этом примере мы используем следующую систему, состоящую из двух тележек без трения, соединенных пружиной k
:
Фигура 1: Система с двумя тележками и пружинами.
Вход управления является силой u1
применяется к левой тележке. Выходом, которым будут управлять, является положение y1
правой тележки. Управление с обратной связью имеет следующую форму:
В сложение мы используем тройной свинцовый компенсатор:
Создаем этот компенсатор с помощью этого кода:
s = zpk('s'); % The Laplace 's' variable C = 100*ss((s+1)/(.001*s+1))^3;
Система с двумя тележками и пружинами моделируется блоком, показанной ниже.
Фигура 2. Блок модели с двумя тележками и пружинами.
Задача управления тележками осложняется тем, что значения коэффициента упругости k
и массы тележки m1,m2
известны только с 20% точностью: , , и . Чтобы захватить эту изменчивость, мы создадим три неопределенных вещественных параметра, используя ureal
функция:
k = ureal('k',1,'percent',20); m1 = ureal('m1',1,'percent',20); m2 = ureal('m2',1,'percent',20);
Мы можем представлять модели тележек следующим образом:
Учитывая неопределенные параметры m1
и m2
, мы создадим модели неопределенного пространства состояний (USS) для G1 и G2 следующим образом:
G1 = 1/s^2/m1; G2 = 1/s^2/m2;
Сначала мы создадим модель объекта управления P
соответствующий блоку, показанной выше (P
карты u1 - y1):
% Spring-less inner block F(s)
F = [0;G1]*[1 -1]+[1;-1]*[0,G2]
F = Uncertain continuous-time state-space model with 2 outputs, 2 inputs, 4 states. The model uncertainty consists of the following blocks: m1: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences m2: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences Type "F.NominalValue" to see the nominal value, "get(F)" to see all properties, and "F.Uncertainty" to interact with the uncertain elements.
Соедините с пружиной k
P = lft(F,k)
P = Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 4 states. The model uncertainty consists of the following blocks: k: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences m1: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences m2: Uncertain real, nominal = 1, variability = [-20,20]%, 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.
Управление с обратной связью u1 = C * (r-y1) работает на объекте P
как показано ниже:
Фигура 3: Неопределенная модель системы с обратной связью.
Мы используем feedback
функция для вычисления передачи с обратной связью от r до y1.
% Uncertain open-loop model is
L = P*C
L = Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 7 states. The model uncertainty consists of the following blocks: k: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences m1: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences m2: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences Type "L.NominalValue" to see the nominal value, "get(L)" to see all properties, and "L.Uncertainty" to interact with the uncertain elements.
Неопределенный перенос с обратной связью от r до y1 является
T = feedback(L,1)
T = Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 7 states. The model uncertainty consists of the following blocks: k: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences m1: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences m2: Uncertain real, nominal = 1, variability = [-20,20]%, 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.
Обратите внимание, что с G1
и G2
неопределенны, оба P
и T
являются моделями неопределенного пространства состояний.
Номинальная передаточная функция объекта управления
Pnom = zpk(P.nominal)
Pnom = 1 ------------- s^2 (s^2 + 2) Continuous-time zero/pole/gain model.
Далее мы оцениваем номинальную передаточную функцию с обратной связью Tnom
, а затем проверяйте, что все полюса номинальной системы имеют отрицательные действительные части:
Tnom = zpk(T.nominal); maxrealpole = max(real(pole(Tnom)))
maxrealpole = -0.8232
Будет ли цикл обратной связи оставаться стабильным для всех возможных значений k,m1,m2
в заданной области значений неопределенности? Мы можем использовать robstab
функция, чтобы ответить на этот вопрос строго.
% Show report and compute sensitivity opt = robOptions('Display','on','Sensitivity','on'); [StabilityMargin,wcu] = robstab(T,opt);
Computing peak... Percent completed: 100/100 System is robustly stable for the modeled uncertainty. -- It can tolerate up to 288% of the modeled uncertainty. -- There is a destabilizing perturbation amounting to 289% of the modeled uncertainty. -- This perturbation causes an instability at the frequency 575 rad/seconds. -- Sensitivity with respect to each uncertain element is: 12% for k. Increasing k by 25% decreases the margin by 3%. 47% for m1. Increasing m1 by 25% decreases the margin by 11.8%. 47% for m2. Increasing m2 by 25% decreases the margin by 11.8%.
Отчет указывает, что замкнутый цикл может переносить до трех раз больше изменчивости в k,m1,m2
прежде чем идти нестабильно. Он также предоставляет полезную информацию о чувствительности устойчивости к каждому параметру. Переменная wcu
содержит наименьшие изменения дестабилизирующего параметра (относительно номинальных значений).
wcu
wcu = struct with fields:
k: 1.5773
m1: 0.4227
m2: 0.4227
Обратите внимание, что пиковое усиление на частоте передачи с обратной связью T
указывает на уровень перерегулирования в переходной характеристике с обратной связью. Чем ближе это усиление к 1, тем меньше перерегулирование. Используем wcgain
для вычисления коэффициента усиления в худшем случае PeakGain
от T
в заданной области значений неопределенностей.
[PeakGain,wcu] = wcgain(T); PeakGain
PeakGain = struct with fields:
LowerBound: 1.0471
UpperBound: 1.0731
CriticalFrequency: 7.7158
Замените изменение параметра в худшем случае wcu
в T
для вычисления передачи с обратной связью в худшем случае Twc
.
Twc = usubs(T,wcu); % Worst-case closed-loop transfer T
Наконец, выберите из случайных выборок неопределенных параметров и сравните соответствующие передачи с обратной связью с передачей с наихудшим случаем Twc
.
Trand = usample(T,4); % 4 random samples of uncertain model T clf subplot(211), bodemag(Trand,'b',Twc,'r',{10 1000}); % plot Bode response subplot(212), step(Trand,'b',Twc,'r',0.2); % plot step response
Фигура 4: Блок-схема и переходная характеристика.
В этом анализе мы видим, что компенсатор C работает устойчиво для заданной неопределенности на k, m1, m2.
robstab
| ureal
| uss
| usubs
| wcgain