Управление Системы Массового Демпфера Spring Используя Смешанный Mu-Synthesis

Этот пример показывает, как выполнить смешанный Mu-Synthesis с командой dksyn в Robust Control Toolbox™. Здесь dksyn используется, чтобы разработать устойчивый контроллер для двух систем массового пружинного демпфера с неуверенностью в пружинной жесткости, соединяющей эти две массы. Этот пример взят из бумаги "Устойчивая производительность смешанного Mu-Synthesis для массово-пружинной системы с неуверенностью жесткости", Д. Баррос, С. Фекри и М. Атэнс, 2 005 средиземноморских Конференций по Управлению.

Требования по производительности

Рассмотрите систему массового пружинного демпфера в рисунке 1. Spring k2 и демпфер b2 присоединен к стене и массовому m2. Массовый m2 также присоединен к массовому m1 через пружинный k1 и демпфер b1. Масса 2 затронута силой воздействия f2. Системой управляют через силу f1, действующий на массовый m1.

Наша цель проекта состоит в том, чтобы использовать силу управления f1, чтобы ослабить эффект воздействия f2 на положении массового m2. Сила f1 непосредственно не действует на массовый m2, скорее это действует через пружинную жесткость k1. Следовательно любая неуверенность в пружинной жесткости k1 сделает проблему управления более трудной. Проблема управления формулируется как:

  • Контроллер измеряет шумное смещение массового m2 и прикладывает силу управления f1. Шум датчика, Wn, моделируется как постоянные 0.001.

  • Команда привода оштрафована фактором 0.1 в низкой частоте, и фактор 10 в высокой частоте с перекрестной частотой 100 рад/с (отфильтруйте Wu).

  • Модульное значение, фильтр окраски первого порядка, Wdist, на воздействии имеют полюс на уровне 0,25 рад/с.

  • Цель производительности состоит в том, чтобы ослабить воздействие на массовом m2 фактором 80 ниже 0,1 рад/с.

Номинальной стоимостью системных параметров является m1=1, m2=2, k2=1, b1=0.05, b2=0.05 и k1=2.

Wn = tf(0.001);
Wu = 10*tf([1 10],[1 1000]);
Wdist = tf(0.25,[1 0.25],'inputname','dist','outputname','f2');
Wp = 80*tf(0.1,[1 0.1]);
m1 = 1;
m2 = 2;
k2 = 1;
b1 = 0.05;
b2 = 0.05;

Моделирование неуверенности

Значение пружинной жесткости k1 сомнительно. Это имеет номинальную стоимость 2, и ее значение может отличаться между 1,2 и 2.8.

k1 = ureal('k1',2,'Range',[1.2 2.8]);

Существует также tau с временной задержкой между силой привода, которой управляют, f1 и его приложение к массовому m1. Максимальная задержка составляет 0,06 секунды. Пренебрежение этой задержки вводит мультипликативную ошибку exp(-s*tau)-1. Эта ошибка может быть обработана как несмоделированная динамика, ограниченная в значении фильтром высоких частот Wunmod = 2.6*s/(s + 40):

tau = ss(1,'InputDelay',0.06);
Wunmod = 2.6*tf([1 0],[1 40]);
bodemag(tau-1,Wunmod,logspace(0,3,200));
title('Multiplicative Time-Delay Error: Actual vs. Bound')
legend('Actual','Bound','Location','NorthWest')

Создайте неопределенную модель в пространстве состояний объекта с силой управления f1 и воздействие f2 как входные параметры.

a1c = [0 0 -1/m1  1/m2]'*k1;
a2c = [0 0  1/m1 -1/m2]'*k1 + [0 0 0 -k2/m2]';
a3c = [1 0 -b1/m1 b1/m2]';
a4c = [0 1 b1/m1 -(b1+b2)/m2]';
A  = [a1c a2c a3c a4c];
plant = ss(A,[0 0;0 0;1/m1 0;0 1/m2],[0 1 0 0],[0 0]);
plant.StateName = {'z1';'z2';'z1dot';'z2dot'};
plant.OutputName = {'z2'};

Добавьте несмоделированную динамику задержки в первом входе объекта.

Delta = ultidyn('Delta',[1 1]);
plant = plant * append(1+Delta*Wunmod,1);
plant.InputName = {'f1','f2'};

Постройте Предвещать ответ от f1 до z2 для 20 демонстрационных значений неуверенности. Неуверенность на значении k1 вызывает колебания собственных частот режимов объекта.

bode(plant(1,1),{0.1,4})

Система управления

Мы используем следующую структуру для синтеза контроллера:

Рисунок 2

Используйте connect, чтобы создать соответствующее соединение разомкнутого цикла IC. Обратите внимание на то, что IC является неопределенной моделью с неопределенными переменными k1 и Delta.

Wu.u = 'f1';  Wu.y = 'Wu';
Wp.u = 'z2';  Wp.y = 'Wp';
Wn.u = 'noise';  Wn.y = 'Wn';
S = sumblk('z2n = z2 + Wn');
IC = connect(plant,Wdist,Wu,Wp,Wn,S,{'dist','noise','f1'},{'Wp','Wu','z2n'})
IC =

  Uncertain continuous-time state-space model with 3 outputs, 3 inputs, 8 states.
  The model uncertainty consists of the following blocks:
    Delta: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences
    k1: Uncertain real, nominal = 2, range = [1.2,2.8], 1 occurrences

Type "IC.NominalValue" to see the nominal value, "get(IC)" to see all properties, and "IC.Uncertainty" to interact with the uncertain elements.

Комплексный Mu-Synthesis

Можно использовать команду dksyn, чтобы синтезировать устойчивый контроллер для соединения разомкнутого цикла IC. По умолчанию dksyn обрабатывает все неопределенные действительные параметры, в этом примере k1, как комплексная неуверенность. Вспомните, что k1 является действительным параметром с номинальной стоимостью 2 и область значений между 1,2 и 2.8. В комплексном Mu-Synthesis это заменяется комплексным неопределенным параметром, отличающимся по диску, сосредоточенному в 2 и с радиусом 0.8. График ниже сравнивает область значений k1 значений, когда k1 обработан как действительный (красный x) по сравнению с комплексом (синий *).

k1c = ucomplex('k1c',2,'Radius',0.8);  % complex approximation

% Plot 80 samples of the real and complex parameters
k1samp = usample(k1,80);
k1csamp = usample(k1c,80);
plot(k1samp(:),0*k1samp(:),'rx',real(k1csamp(:)),imag(k1csamp(:)),'b*')
hold on

% Draw value ranges for real and complex k1
plot(k1.Nominal,0,'rx',[1.2 2.8],[0 0],'r-','MarkerSize',14,'LineWidth',2)
the=0:0.02*pi:2*pi;
z=sin(the)+sqrt(-1)*cos(the);
plot(real(0.8*z+2),imag(0.8*z),'b')
hold off

% Plot formatting
axis([1 3 -1 1]), axis square
ylabel('Imaginary'), xlabel('Real')
title('Real vs. complex uncertainty model for k1')

Синтезируйте устойчивый контроллер Kc с помощью комплексного Mu-Synthesis (обрабатывающий k1 как комплексный параметр).

[Kc,gc,mu_c,infoc] = dksyn(IC,1,1);

% mu value when treating k1 as complex:
mu_c
mu_c =

    1.0788

Обратите внимание на то, что mu_c превышает 1 так контроллер, Kc не удается надежно достигнуть желаемого уровня производительности.

Смешанный Mu-Synthesis

Смешанный Mu-Synthesis составляет неопределенные действительные параметры непосредственно в процессе синтеза. Смешанный Mu-Synthesis включен с помощью опции dkitopt MixedMU. Опция dkitopt AutoScalingOrder используется, чтобы установить порядок D и масштабирований G, используемых в смешанном Mu-Synthesis. Приказы клиента брокеру со шкалой цен D, сопоставленные с комплексной неуверенностью, установлены в максимум пятого порядка и приказа клиента брокеру со шкалой цен G, сопоставленного с неопределенными действительными параметрами, установлены в максимум шестого порядка.

opt = dksynOptions('MixedMU','on','AutoScalingOrder',[5 6]);
[Km,gm,mu_m] = dksyn(IC,1,1,opt);

% mu value when treating k1 as real:
mu_m
mu_m =

    0.9552

Смешанный Mu-Synthesis может найти контроллер, который достигает желаемой производительности и целей робастности. Сравнение ответов разомкнутого цикла показывает, что смешанный-mu контроллер, который Km дает меньшему количеству поля фазы около 3 рад/с, потому что это только должно принять меры против действительных изменений k1.

clf
% Note: Negative sign because interconnection in Fig 2 uses positive feedback
bode(-Kc*plant.NominalValue(1,1),'b',-Km*plant.NominalValue(1,1),'r',{1e-2,1e2})
grid
legend('P*Kc - complex mu loop gain','P*Km - mixed mu loop gain','location','SouthWest')

Анализ худшего случая

Сравнение этих двух контроллеров указывает, что использование в своих интересах "реальности" k1 приводит к лучшему выполнению, большему количеству устойчивого контроллера.

Чтобы оценить худший случай производительность с обратной связью Kc и Km, сформируйте соединение с обратной связью рисунка 2 и используйте команду wcgain, чтобы определить, как большой норма воздействия к ошибке может добраться для заданной неуверенности объекта.

clpKc = lft(IC,Kc);
clpKm = lft(IC,Km);
[maxgainKc,badpertKc] = wcgain(clpKc);
maxgainKc
maxgainKc = 

  struct with fields:

           LowerBound: 2.1447
           UpperBound: 2.1488
    CriticalFrequency: 1.4276

[maxgainKm,badpertKm] = wcgain(clpKm);
maxgainKm
maxgainKm = 

  struct with fields:

           LowerBound: 0.9434
           UpperBound: 0.9468
    CriticalFrequency: 23.6263

Смешанный-mu контроллер Km надежно достигает желаемой производительности начиная с усиления худшего случая системы с обратной связью clpKm, является меньше чем 1. Комплексный-mu контроллер Kc, однако, не удается надежно соответствовать спецификациям начиная с усиления с обратной связью, достигает 4.2 значения худшего случая badpertKc неуверенности объекта.

Симуляции подавления помех

Чтобы сравнить производительность подавления помех Kc и Km, сначала создайте модели с обратной связью передачи от входного воздействия dist к f2, f1 и z2 (положение массового m2)

Km.u = 'z2';  Km.y = 'f1';
clsimKm = connect(plant,Wdist,Km,'dist',{'f2','f1','z2'});
Kc.u = 'z2';  Kc.y = 'f1';
clsimKc = connect(plant,Wdist,Kc,'dist',{'f2','f1','z2'});

Введите белый шум в фильтр нижних частот Wdist, чтобы моделировать входное воздействие f2. Номинальная производительность с обратной связью двух проектов почти идентична.

t = 0:.01:100;
dist = randn(size(t));
yKc = lsim(clsimKc.Nominal,dist,t);
yKm = lsim(clsimKm.Nominal,dist,t);

% Plot
subplot(311)
plot(t,yKc(:,3),'b',t,yKm(:,3),'r')
title('Nominal Disturbance Rejection Response')
ylabel('z2')

subplot(312)
plot(t,yKc(:,2),'b',t,yKm(:,2),'r')
ylabel('f1 (control)')
legend('Kc','Km','Location','NorthWest')

subplot(313)
plot(t,yKc(:,1),'k')
ylabel('f2 (disturbance)')
xlabel('Time (sec)')

Затем, сравните худшие варианты для Kc и Km путем установки неуверенности объекта на значения худшего случая, вычисленные с wcgain.

clsimKc_wc = usubs(clsimKc,badpertKc);
clsimKm_wc = usubs(clsimKm,badpertKm);
yKc_wc = lsim(clsimKc_wc,dist,t);
yKm_wc = lsim(clsimKm_wc,dist,t);

subplot(211)
plot(t,yKc_wc(:,3),'b',t,yKm_wc(:,3),'r')
title('Worse-Case Disturbance Rejection Response')
ylabel('z2')
subplot(212)
plot(t,yKc_wc(:,2),'b',t,yKm_wc(:,2),'r')
ylabel('f1 (control)')
legend('Kc','Km','Location','NorthWest')

Это показывает, что смешанный-mu контроллер Km значительно превосходит по характеристикам Kc в худшем варианте. Путем использования того, что k1 действителен, смешанный-mu контроллер может поставить лучшую производительность в равной робастности.