exponenta event banner

Надежный контроллер для вращающегося спутника

Этот пример расширяет область стабильности MIMO для Spinning Satellite, создавая надежный контроллер, который преодолевает недостатки «наивной» конструкции.

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

Модель растения аналогична описанной в MIMO Stability Margins for Spinning Satellite.

a = 10;
A = [0 a;-a 0];
B = eye(2);
C = [1 a;-a 1];
D = 0;
Gnom = ss(A,B,C,D);

Номинальная смешанная чувствительность

Начните с базовой конструкции со смешанной чувствительностью с помощью mixsyn. Выберите весовые коэффициенты для достижения хорошей производительности и ограничения пропускной способности и усилий по управлению. (Подробные сведения об этом методе и выборе функций взвешивания см. в разделе Формирование цикла смешанной чувствительности.)

wS = makeweight(1e3,1,1e-1);
wKS = makeweight(0.5,[500 1e2],1e4,0,2);
wT = makeweight(0.5,20,100);
bodemag(wS,wKS,wT), grid
legend('wS','wKS','wT')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent wS, wKS, wT.

Вычислите оптимальный контроллер MIMO K1 с mixsyn.

[K1,~,gam] = mixsyn(Gnom,wS,wKS,wT);
gam
gam = 0.7166

Оптимальная производительность составляет около 0,7, что указывает на то, что mixsyn легко уложился в границы на S, KS, T. Замкните цикл обратной связи и постройте график ответа на шаг.

T = feedback(Gnom*K1,eye(2));
step(T,2), grid

Figure contains 4 axes. Axes 1 with title From: In(1) contains an object of type line. This object represents T. Axes 2 contains an object of type line. This object represents T. Axes 3 with title From: In(2) contains an object of type line. This object represents T. Axes 4 contains an object of type line. This object represents T.

Номинальные ответы быстрые с небольшим перепадом.

Поля диска

Чтобы оценить надежность этого контроллера, проверьте маржу диска на входах и выходах установки.

diskmarginplot(K1*Gnom,'b',Gnom*K1,'r--') 
grid
legend('At plant inputs','At plant outputs')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent At plant inputs, At plant outputs. Axes 2 contains 2 objects of type line. These objects represent At plant inputs, At plant outputs.

Оба хорошо с около 10 дБ запаса усиления и 50 градусов запаса фазы. Также проверьте границы диска, когда коэффициент усиления и фаза могут изменяться как на входах, так и на выходах установки.

MMIO = diskmargin(Gnom,K1)
MMIO = struct with fields:
           GainMargin: [0.9915 1.0085]
          PhaseMargin: [-0.4863 0.4863]
           DiskMargin: 0.0085
           LowerBound: 0.0085
           UpperBound: 0.0085
            Frequency: 9.9988
    WorstPerturbation: [1x1 struct]

Поля ввода-вывода чрезвычайно малы. В этой первой конструкции также отсутствует надежность. Вы можете подтвердить плохую надежность, вводя наименьшие дестабилизирующие возмущения, возвращаемые diskmargin на входах и выходах установки. (см. diskmargin для получения дополнительной информации о WorstPerturbation поле его выходных структур.)

WP = MMIO.WorstPerturbation;
bode(WP.Input,WP.Output)
title('Smallest destabilizing perturbation')
legend('Input perturbation','Output perturbation')

Figure contains 8 axes. Axes 1 with title From: In(1) contains 2 objects of type line. These objects represent Input perturbation, Output perturbation. Axes 2 contains 2 objects of type line. These objects represent Input perturbation, Output perturbation. Axes 3 contains 2 objects of type line. These objects represent Input perturbation, Output perturbation. Axes 4 contains 2 objects of type line. These objects represent Input perturbation, Output perturbation. Axes 5 with title From: In(2) contains 2 objects of type line. These objects represent Input perturbation, Output perturbation. Axes 6 contains 2 objects of type line. These objects represent Input perturbation, Output perturbation. Axes 7 contains 2 objects of type line. These objects represent Input perturbation, Output perturbation. Axes 8 contains 2 objects of type line. These objects represent Input perturbation, Output perturbation.

Tpert = feedback(WP.Output*Gnom*WP.Input*K1,eye(2));
step(Tpert,5)
grid

Figure contains 4 axes. Axes 1 with title From: In(1) contains an object of type line. This object represents Tpert. Axes 2 contains an object of type line. This object represents Tpert. Axes 3 with title From: In(2) contains an object of type line. This object represents Tpert. Axes 4 contains an object of type line. This object represents Tpert.

Ступенчатая реакция продолжает колебаться после начального переходного процесса, указывающего на предельную нестабильность. Убедитесь, что нарушенная система замкнутого контура Tpert имеет полюс на воображаемой оси с критической частотой MMIO.Frequency.

[wn,zeta] = damp(Tpert); 
[~,idx] = min(zeta); 
[zeta(idx) wn(idx) MMIO.Frequency]
ans = 1×3

    0.0000    9.9988    9.9988

Надежная конструкция

Создание неопределенной модели завода с параметром a (частота вращения) изменяется в диапазоне [7 13].

a = ureal('a',10,'range',[7 13]);
A = [0 a;-a 0];
B = eye(2);
C = [1 a;-a 1];
D = 0;
Gunc = ss(A,B,C,D);

Вы можете использовать musyn разработать надежный контроллер для этой неопределенной установки. Для повышения надежности используйте umargin элемент для моделирования усиления и фазовой неопределенности как на входе, так и на выходе, так что musyn обеспечивает надежность для моделируемого диапазона неопределенности. Предположим, что требуется по крайней мере 2 дБ запаса усиления при каждом вводе-выводе (всего 4 дБ для каждого канала). Если ваш umargin elements model, который весь диапазон вариаций, musyn может не дать хороших результатов, потому что он пытается обеспечить надежную производительность по сравнению с смоделированной неопределенностью, а также надежную стабильность. musyn скорее всего, не может поддерживать желаемую производительность для такого большого изменения коэффициента усиления. Вместо этого масштабируйте целевое значение до 1 дБ изменения коэффициента усиления в каждом вводе-выводе.

GM = 1.1; % about 1 dB
u1 = umargin('u1',GM);
u2 = umargin('u2',GM);
y1 = umargin('y1',GM);
y2 = umargin('y2',GM);
InputMargins = append(u1,u2);
OutputMargins = append(y1,y2);
Gunc = OutputMargins*Gunc*InputMargins;

Дополнить установку весами смешанной чувствительности и использовать musyn для оптимизации надежной производительности для смоделированной неопределенности, которая включает в себя оба параметра a и изменения коэффициента усиления и фазы на входах и выходах установки.

P = augw(Gunc,wS,wKS,wT);
[K2,gam] = musyn(P,2,2);
D-K ITERATION SUMMARY:
-----------------------------------------------------------------
                       Robust performance               Fit order
-----------------------------------------------------------------
  Iter         K Step       Peak MU       D Fit             D
    1           175.9        2.593        2.606            24
    2            1.21         1.21        1.223            54
    3           1.167        1.167         1.18            50
    4           1.169        1.168        1.174            66
    5            1.17         1.17        1.175            62

Best achieved robust performance: 1.17

Надежная производительность близка к 1, что указывает на то, что контроллер близок к надежному достижению целей смешанной чувствительности. Проверьте запас дисков на заводских вводах-выводах.

MMIO = diskmargin(Gnom,K2)
MMIO = struct with fields:
           GainMargin: [0.6409 1.5602]
          PhaseMargin: [-24.6856 24.6856]
           DiskMargin: 0.4376
           LowerBound: 0.4376
           UpperBound: 0.4456
            Frequency: 2.6184
    WorstPerturbation: [1x1 struct]

Маржа сейчас составляет около 1,6 дБ и 25 градусов, гораздо лучше, чем раньше. Сравните пошаговые ответы с каждым контроллером для 25 выборок неопределенности.

T1 = feedback(Gunc*K1,eye(2));
T2 = feedback(Gunc*K2,eye(2));
rng(0) % for reproducibility
T1s = usample(T1,25);
rng(0)
T2s = usample(T2,25);
opt = timeoptions; 
opt.YLim = {[-1 1.5]};
stepplot(T1s,T2s,4,opt)
grid
legend('Nominal design','Robust design','location','southeast')

Figure contains 4 axes. Axes 1 with title From: In(1) contains 50 objects of type line. These objects represent Nominal design, Robust design. Axes 2 contains 50 objects of type line. These objects represent Nominal design, Robust design. Axes 3 with title From: In(2) contains 50 objects of type line. These objects represent Nominal design, Robust design. Axes 4 contains 50 objects of type line. These objects represent Nominal design, Robust design.

Вторая конструкция является явным улучшением. Далее сравните функции чувствительности и дополнительной чувствительности.

sigma(eye(2)-T1s,eye(2)-T2s), grid
axis([1e-2 1e4 -80 20])
title('Sensitivity')
legend('Nominal design','Robust design','location','southeast')

Figure contains an axes. The axes contains 100 objects of type line. These objects represent Nominal design, Robust design.

sigma(T1s,T2s), grid
axis([1e-2 1e4 -80 20])
title('Complementary Sensitivity')
legend('Nominal design','Robust design','location','southeast')

Figure contains an axes. The axes contains 100 objects of type line. These objects represent Nominal design, Robust design.

В этом примере показано, как использовать umargin неопределенный элемент для улучшения запаса устойчивости как часть надежного синтеза контроллера.

См. также

| |

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