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

Этот пример показывает, как выполнить смешанный синтез с musyn команда в Robust Control 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'};

Постройте график характеристики Bode от 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.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 не достигает требуемого уровня эффективности.

Смешанный синтез Му

Синтез mixed-mu учитывает неопределенные действительные параметры непосредственно в процессе синтеза. Включите синтез mixed-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

Синтез mixed-mu способен найти контроллер, который достигает желаемых показателей эффективности и робастности. Сравнение реакций без разомкнутого контура показывает, что контроллер mixed-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

Контроллер mixed-mu Km имеет худший коэффициент усиления 0,88, в то время как контроллер complex-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')

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

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

Контроллер mixed-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           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')

См. также

|

Похожие темы