Этот пример использует команды Robust Control Toolbox™ ucover
и musyn, чтобы спроектировать высокоэффективный контроллер для семейства нестабильных объектов.
Номинальная модель объекта управления состоит из нестабильной системы первого порядка.
Pnom = tf(2,[1 -2]);
Семейство встревоженных объектов является изменениями Pnom
. Все объекты имеют один нестабильный полюс, но местоположение этого полюса варьируется через семейство.
p1 = Pnom*tf(1,[.06 1]); % extra lag p2 = Pnom*tf([-.02 1],[.02 1]); % time delay p3 = Pnom*tf(50^2,[1 2*.1*50 50^2]); % high frequency resonance p4 = Pnom*tf(70^2,[1 2*.2*70 70^2]); % high frequency resonance p5 = tf(2.4,[1 -2.2]); % pole/gain migration p6 = tf(1.6,[1 -1.8]); % pole/gain migration
Для задач синтеза обратной связи мы должны заменить этот набор моделей с одной неопределенной моделью объекта управления, чья область значений поведений включает p1
через p6
. Это - одно использование команды ucover
. Эта команда берет массив моделей LTI Parray
и номинальная модель Pnom
и модели различие Parray-Pnom
как мультипликативная неопределенность в системной динамике.
Поскольку ucover
ожидает массив моделей, используйте stack
команда, чтобы собрать модели объекта управления p1
через p6
в один массив.
Parray = stack(1,p1,p2,p3,p4,p5,p6);
Затем используйте ucover
"покрывать" область значений поведений Parray
с неопределенной моделью формы
P = Pnom * (1 + Wt * Delta)
где вся неопределенность сконцентрирована в "несмоделированной динамике" Delta
(ultidyn
объект. Поскольку усиление Delta
однородно ограничен 1 на всех частотах, фильтр "формирования" Wt
используется, чтобы получить, как относительная сумма неопределенности меняется в зависимости от частоты. Этот фильтр также упоминается как функция взвешивания неопределенности. Попробуйте фильтр 4-го порядка Wt
для этого примера:
orderWt = 4;
Parrayg = frd(Parray,logspace(-1,3,60));
[P,Info] = ucover(Parrayg,Pnom,orderWt,'InputMult');
Получившаяся модель P
одно вход, объект неопределенного пространства состояний (USS) одно выхода с номинальной стоимостью Pnom
.
P
P = Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 5 states. The model uncertainty consists of the following blocks: Parrayg_InputMultDelta: Uncertain 1x1 LTI, peak gain = 1, 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.
tf(P.NominalValue)
ans = 2 ----- s - 2 Continuous-time transfer function.
Предвещать график величины подтверждает что формирующий фильтр Wt
"покрывает" относительное изменение поведения объекта. В зависимости от частоты уровень неопределенности составляет 30% в 5 рад/секунда (-10dB = 0.3), 50% в 10 рад/секунда и 100% вне 29 рад/секунда.
Wt = Info.W1; bodemag((Pnom-Parray)/Pnom,'b--',Wt,'r'); grid title('Relative Gaps vs. Magnitude of Wt')
Спроектировать устойчивый контроллер для неопределенной модели объекта управления P
, мы выбираем желаемую полосу пропускания замкнутой системы и минимизируем чувствительность к воздействиям на объекте выход. Структуру управления показывают ниже. Сигналы d
и n
воздействие загрузки и шум измерения. Диспетчер использует шумное измерение объекта выход y
сгенерировать управляющий сигнал u
.
Рисунок 1: структура управления.
Фильтры Wperf
и Wnoise
выбраны, чтобы осуществить желаемую пропускную способность и некоторый соответствующий спад. Передаточная функция с обратной связью от [d;n]
к y
y = [Wperf * S , Wnoise * T] [d;n]
где S=1/(1+PC)
и T=PC/(1+PC)
чувствительность и дополнительные функции чувствительности. Если мы проектируем контроллер, который сохраняет усиление с обратной связью от [d;n]
к y
ниже 1, затем
|S| < 1/|Wperf| , |T| < 1/|Wnoise|
Путем выбора соответствующей величины профилирует для Wperf
и Wnoise
, мы можем осуществить маленькую чувствительность (S
) в пропускной способности и соответствующем спаде (T
) вне пропускной способности.
Например, выберите Wperf
когда фильтр lowpass первого порядка с усилением DC 500 и усилением перекрестно соединяет в желаемой пропускной способности desBW
:
desBW = 4.5; Wperf = makeweight(500,desBW,0.33); tf(Wperf)
ans = 0.33 s + 4.248 -------------- s + 0.008496 Continuous-time transfer function.
Точно так же выберите Wnoise
как фильтр высоких частот второго порядка с величиной 1 в 10*desBW
. Это обеспечит коэффициент усиления разомкнутого контура PC
к спаду с наклоном-2 для частот вне 10*desBW
.
NF = (10*desBW)/20; % numerator corner frequency DF = (10*desBW)*50; % denominator corner frequency Wnoise = tf([1/NF^2 2*0.707/NF 1],[1/DF^2 2*0.707/DF 1]); Wnoise = Wnoise/abs(freqresp(Wnoise,10*desBW))
Wnoise = 0.1975 s^2 + 0.6284 s + 1 ------------------------------ 7.901e-05 s^2 + 0.2514 s + 400 Continuous-time transfer function.
Проверьте что границы 1/Wperf
и 1/Wnoise
на S
и T
действительно осуществите желаемую пропускную способность и спад.
bodemag(1/Wperf,'b',1/Wnoise,'r',{1e-2,1e3}), grid title('Performance and roll-off specifications') legend('Bound on |S|','Bound on |T|','Location','NorthEast')
Затем используйте connect
создавать соединение разомкнутого контура (блок-схема в рисунке 1 без блока контроллера). Задайте каждый блок, появляющийся в рисунке 1, назовите сигналы входящими и из каждого блока и позвольте connect
сделайте проводное соединение:
P.u = 'u'; P.y = 'yp'; Wperf.u = 'd'; Wperf.y = 'Wperf'; Wnoise.u = 'n'; Wnoise.y = 'Wnoise'; S1 = sumblk('e = -ym'); S2 = sumblk('y = yp + Wperf'); S3 = sumblk('ym = y + Wnoise'); G = connect(P,Wperf,Wnoise,S1,S2,S3,{'d','n','u'},{'y','e'});
G
неопределенная система с 2 выходами, с 3 входами, подходящая для устойчивого синтеза контроллера с musyn.
Проект выполняется с автоматизированной устойчивой командой проекта musyn. Целевая пропускная способность составляет 4,5 рад/с.
ny = 1; nu = 1; [C,muPerf] = musyn(G,ny,nu);
D-K ITERATION SUMMARY: ----------------------------------------------------------------- Robust performance Fit order ----------------------------------------------------------------- Iter K Step Peak MU D Fit D 1 353.6 249.5 251.9 0 2 70.74 9.964 10.05 4 3 1.98 1.604 1.621 8 4 1.164 1.164 1.188 10 5 1.089 1.089 1.098 10 6 1.05 1.05 1.055 10 7 1.027 1.027 1.032 8 8 1.016 1.016 1.023 8 9 1.013 1.013 1.02 8 10 1.011 1.011 1.012 8 Best achieved robust performance: 1.01
Когда устойчивый показатель эффективности muPerf
близок 1, контроллер достигает целевой полосы пропускания замкнутой системы и спада. Как показывает опыт, если muPerf
меньше 0.85, затем эффективность может быть улучшена, и если muPerf
больше 1.2, затем желаемая полоса пропускания замкнутой системы не достижима для заданной неопределенности объекта.
Здесь muPerf
приблизительно 1, таким образом, цели достигнуты. Получившийся контроллер C
имеет 18 состояний:
size(C)
State-space model with 1 outputs, 1 inputs, and 16 states.
Можно использовать reduce
и musynperf
команды, чтобы упростить этот контроллер. Вычислите приближения порядков 1 - 17.
NxC = order(C); Cappx = reduce(C,1:NxC);
Для каждого контроллера уменьшаемого порядка используйте musynperf
вычислить устойчивый показатель эффективности и сравнить его с muPerf
. Сохраните контроллер самый низкоуровневый с эффективностью не хуже, чем 1,05 * muPerf
, ухудшение эффективности 5% или меньше.
for k=1:NxC Cr = Cappx(:,:,k); % controller of order k bnd = musynperf(lft(G,Cr)); if bnd.UpperBound < 1.05 * muPerf break % abort with the first controller meeting the performance goal end end order(Cr)
ans = 6
Это дает к контроллеру 6-го порядка Cr
с сопоставимой эффективностью. Сравните Cr
с контроллером полного порядка C
.
opt = bodeoptions; opt.Grid = 'on'; opt.PhaseMatching = 'on'; bodeplot(C,'b',Cr,'r--',opt) legend('Full-order C','Reduced-order Cr','Location','NorthEast')
Постройте ответы разомкнутого контура моделей объекта управления p1
через p6
с упрощенным контроллером Cr
.
bodeplot(Parray*Cr,'g',{1e-2,1e3},opt);
Постройте ответы на воздействие шага на объекте выход. Они сопоставимы с желаемой полосой пропускания замкнутой системы и устойчивы к изменениям объекта, как ожидалось от Устойчивого mu-значения Эффективности приблизительно 1.
step(feedback(1,Parray*Cr),'g',10/desBW);
Тот же процесс проектирования может быть повторен для различных значений полосы пропускания замкнутой системы desBW
. Выполнение так приводит к следующим результатам:
Используя desBW
= 8 выражений хороший проект с устойчивой эффективностью muPerf
из 1,09. Переходные процессы через Parray
семейство сопоставимо с полосой пропускания замкнутой системы 8 рад/с.
Используя desBW
= 20 выражений плохой проект с устойчивой эффективностью muPerf
из 1,35. Это ожидается, потому что эта целевая пропускная способность около очень большой неопределенности объекта. Некоторые переходные процессы для объектов p1,...,p6
на самом деле нестабильны.
Используя desBW
= 0,3 выражения плохой проект с устойчивой эффективностью muPerf
из 2,2. Это ожидается потому что Wnoise
налагает спад прошлые 3 рад/с, который слишком близок к собственной частоте нестабильного полюса (2 рад/с). Другими словами, соответствующее управление нестабильной динамики требует более высокой пропускной способности, чем заданный.
makeweight
| musyn
| ucover