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

В этом примере показано, как выполнить смешанный Mu-Synthesis с musyn команда в Robust Control Toolbox™. Здесь musyn используется, чтобы спроектировать устойчивый контроллер для двух систем массового пружинного демпфера с неопределенностью в пружинной жесткости, соединяющей эти две массы. Этот пример взят из бумаги "Устойчивая эффективность смешанного 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

Можно использовать команду musyn синтезировать устойчивый контроллер для соединения разомкнутого контура IC. По умолчанию, musyn обработки все неопределенные действительные параметры, в этом примере 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,mu_c,infoc] = musyn(IC,1,1);

D-K ITERATION SUMMARY:
-----------------------------------------------------------------
                       Robust performance               Fit order
-----------------------------------------------------------------
  Iter         K Step       Peak MU       D Fit             D
    1           2.954        2.455        2.483            16
    2           1.146        1.145        1.155            18
    3           1.086        1.086        1.089            18
    4           1.085        1.084        1.085            18
    5           1.085        1.084        1.085            18

Best achieved robust performance: 1.08

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

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

Смешанный Mu-Synthesis составляет неопределенные действительные параметры непосредственно в процессе синтеза. Включите смешанный Mu-Synthesis путем установки MixedMU опция к 'on'.

opt = musynOptions('MixedMU','on');
[Km,mu_m] = musyn(IC,1,1,opt);

DG-K ITERATION SUMMARY:
-------------------------------------------------------------------
                       Robust performance                 Fit order
-------------------------------------------------------------------
  Iter         K Step       Peak MU       DG Fit           D      G
    1           2.954        2.081        2.371           16      8
    2           1.673        1.432        1.674           14      8
    3            0.96        1.022        1.265           18      8
    4          0.9183       0.9464        0.992           18      8
    5          0.8942       0.9215       0.9548           18      8
    6          0.8976       0.9099        0.919           20      8
    7          0.8878       0.9004       0.9273           18      8
    8          0.8859       0.8919        0.924           18      8
    9          0.8869       0.8917        0.927           20      8

Best achieved robust performance: 0.892

Смешанный 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.1952
           UpperBound: 2.1997
    CriticalFrequency: 1.4310

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

  struct with fields:

           LowerBound: 0.8854
           UpperBound: 0.8873
    CriticalFrequency: 0.1470

Смешанный-mu контроллер Km имеет усиление худшего случая 0,88 в то время как комплексный-mu контроллер Kc имеет усиление худшего случая 2,2, или в 2.5 раза больше.

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

Сравнить эффективность подавления помех 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'});

Введите белый шум в фильтр lowpass 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 контроллер может поставить лучшую эффективность в равной робастности.

Упрощение контроллера

Смешанный-mu контроллер Km имеет относительно старший разряд по сравнению с объектом. Чтобы получить более простой контроллер, используйте musynнастраивающая возможность фиксированного порядка. Это использует hinfstruct вместо hinfsyn для шага синтеза. Можно попробовать различные порядки найти самый простой контроллер, который обеспечивает устойчивую эффективность. Например, попытайтесь настроить контроллер пятого порядка. Используйте опцию "RandomStart", чтобы запустить несколько циклов Mu-Synthesis, каждый начинающий с различного начального значения K.

K = tunableSS('K',5,1,1);  % 5th-order tunable state-space model

opt = musynOptions('MixedMU','on','MaxIter',20,'RandomStart',2);
rng(0), [CL,mu_f] = musyn(lft(IC,K),opt);
=== Synthesis 1 of 3 ============================================


DG-K ITERATION SUMMARY:
-------------------------------------------------------------------
                       Robust performance                 Fit order
-------------------------------------------------------------------
  Iter         K Step       Peak MU       DG Fit           D      G
    1           22.03           15        15.16           10      6
    2           6.431        6.362        10.13           16      6
    3           5.532        5.509        5.546           18      6
    4           3.533        3.634         3.88           18      8
    5           2.612         2.61        4.724           20      8
    6           2.482        2.481         2.66           18      8
    7            1.66        2.007        3.984           18      8
    8           1.706        1.636        1.833           20      8
    9           1.218        1.298        1.763           18      8
   10           1.322        1.321        1.323           20      8
   11           1.206        1.205         1.47           20      8
   12           1.105        1.104        1.128           18      8
   13           1.067        1.066        1.143           20      8
   14           1.056        1.054        1.067           18      8
   15            1.03        1.029        1.112           20      8
   16            1.03        1.029         1.03           18      8
   17           1.012        1.011        1.062           18      8
   18           1.026        1.025        1.059           18      8
   19           1.016        1.015        1.064           18      8

Best achieved robust performance: 1.01


=== Synthesis 2 of 3 ============================================


DG-K ITERATION SUMMARY:
-------------------------------------------------------------------
                       Robust performance                 Fit order
-------------------------------------------------------------------
  Iter         K Step       Peak MU       DG Fit           D      G
    1           3.076        2.029        2.683           16      8
    2           1.668        1.656        1.664           18      8
    3           1.183        1.183        1.183           18      8
    4           1.058        1.056        1.118           16      8
    5           1.013        1.016        1.188           18      8
    6            1.03        1.029        1.032           18      8
    7           1.011        1.011        1.113           18      8

Best achieved robust performance: 1.01


=== Synthesis 3 of 3 ============================================


DG-K ITERATION SUMMARY:
-------------------------------------------------------------------
                       Robust performance                 Fit order
-------------------------------------------------------------------
  Iter         K Step       Peak MU       DG Fit           D      G
    1           3.194        3.084        3.084           16      8
    2           2.401        2.377        2.392           18      8
    3           1.724        1.701        2.569           16      8
    4           1.265        1.262        1.265           16      8
    5           1.059        1.138        1.426           18      8
    6           1.094        1.093        1.094           18      8
    7           1.048        1.047        1.235           18      8
    8           1.034        1.032        1.087           18      8
    9           1.033        1.031        1.049           18      8
   10           1.014        1.014        1.061           18      8
   11            1.02         1.02        1.033           18      8
   12           1.019        1.019        1.045           18      8

Best achieved robust performance: 1.01

Лучший контроллер почти поставляет желаемую устойчивую эффективность (устойчивая эффективность mu_f близко к 1). Сравните эти два контроллера.

clf, bode(Km,getBlockValue(CL,'K'))
legend('Full order','5th order')

Смотрите также

|

Похожие темы