exponenta event banner

Управление пружинно-массово-демпферной системой с использованием смешанного синтеза Mu

В этом примере показано, как осуществлять смешанный синтез mu с помощью musyn в Toolbox™ надежного управления. Здесь musyn используется для проектирования надежного контроллера для двухмассовой пружинно-демпферной системы с неопределенностью жесткости пружины, соединяющей две массы. Этот пример взят из статьи «Надежные характеристики синтеза смешанных мю для системы масс-пружин с неопределенностью жесткости», Д. Баррос, С. Фекри и М. Атанс, Средиземноморская конференция по контролю 2005 года.

Технические характеристики

Рассмотрим систему масса-пружина-демпфер на рисунке 1. Весна 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-синтез

Можно использовать команду musyn синтезировать надежный контроллер для межсоединений с разомкнутым контуром IC. По умолчанию musyn обрабатывает все неопределенные реальные параметры, в этом примере k1, как сложная неопределенность. Напомним, что k1 - вещественный параметр с номинальным значением 2 и диапазоном от 1,2 до 2,8. В комплексном мю-синтезе он заменяется комплексным неопределенным параметром, изменяющимся на диске с центром 2 и радиусом 0,8. На графике ниже сравнивается диапазон значений k1, когда k1 рассматривается как вещественное (красное х) и комплексное (синее *).

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 с использованием комплексного мю-синтеза (обработка 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.452        2.483            16
    2           1.145        1.143        1.154            18
    3           1.086        1.086         1.09            18
    4           1.082        1.081        1.083            18
    5           1.085        1.085        1.086            18

Best achieved robust performance: 1.08

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

Синтез смешанного мю

Смешанный синтез mu учитывает неопределенные реальные параметры непосредственно в процессе синтеза. Включите смешанный синтез mu, установив значение 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.367           16      8
    2           1.606        1.388        1.503           14     12
    3          0.9359        1.087         1.29           16      8
    4          0.9167       0.9923        1.099           16      8
    5           0.924       0.9477        1.008           16      8
    6          0.9223       0.9321       0.9606           16      8
    7           0.921       0.9242       0.9565           16      8
    8          0.9128       0.9184       0.9814           20      8
    9          0.9035         0.91       0.9242           20      8
   10          0.8942       0.9035       0.9196           20      8

Best achieved robust performance: 0.903

Смешанный синтез mu способен найти контроллер, который достигает желаемых показателей производительности и надежности. Сравнение откликов с разомкнутым контуром показывает, что контроллер смешанного 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.0837
           UpperBound: 2.0879
    CriticalFrequency: 1.4303

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

  struct with fields:

           LowerBound: 0.8926
           UpperBound: 0.8944
    CriticalFrequency: 0.1480

Смешанный контроллер 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'});

Ввести белый шум в фильтр нижних частот 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')

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

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

Смешанный контроллер mu Km имеет относительно высокий порядок по сравнению с растением. Для получения более простого контроллера используйте musynвозможность настройки фиксированного порядка. Используется hinfstruct вместо hinfsyn для стадии синтеза. Вы можете попробовать различные заказы, чтобы найти самый простой контроллер, который поддерживает надежную производительность. Например, попробуйте настроить контроллер пятого порядка. Используйте опцию «RandomStart» для выполнения нескольких циклов синтеза mu, каждый из которых начинается от другого начального значения 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           3.088        2.906        2.907           16      8
    2           2.314        2.163        2.163           20      8
    3           1.654        1.652        1.759           20      8
    4           1.263        1.259         1.26           18      8
    5           1.088        1.087        1.116           18      8
    6           1.021        1.037        1.163           18      8
    7           1.032        1.031        1.073           18      8
    8           1.037        1.036        1.087           18      8

Best achieved robust performance: 1.03


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


DG-K ITERATION SUMMARY:
-------------------------------------------------------------------
                       Robust performance                 Fit order
-------------------------------------------------------------------
  Iter         K Step       Peak MU       DG Fit           D      G
    1               3        2.904        2.904           16      8
    2           2.019        1.872        1.892           20      8
    3           1.589        1.529        1.553           12      8
    4           1.172         1.17         1.17           18      8
    5           1.018        1.016        1.115           16      8
    6           1.035        1.034        1.093           18      8
    7           1.031        1.031        1.069           18      8

Best achieved robust performance: 1.02


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


DG-K ITERATION SUMMARY:
-------------------------------------------------------------------
                       Robust performance                 Fit order
-------------------------------------------------------------------
  Iter         K Step       Peak MU       DG Fit           D      G
    1           3.017        2.919         2.92           16      8
    2           2.043        2.014        2.029           16      8
    3           1.555        1.586        1.677           18      8
    4           1.273        1.272        1.274           20      8
    5           1.162        1.158        1.206           20      8
    6           1.079        1.078        1.262           20      8
    7           1.081         1.08         1.09           18      8
    8           1.046        1.046        1.145           18      8
    9           1.033        1.033        1.033           18      8
   10           1.008        1.008        1.244           18      8
   11           1.044        1.042        1.043           20      8
   12           1.014        1.014        1.099           18      8

Best achieved robust performance: 1.01

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

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

См. также

|

Связанные темы