Реальный Mu-Analysis

Этот пример показывает, как использовать Robust Control Toolbox™ для анализа робастности неопределенной системы с только действительной параметрической неопределенностью. Вы вычисляете запасы устойчивости для твердого транспортного самолета с кузовом с помощью выхода закона управления с обратной связью. Для получения дополнительной информации о модели см. «Практический подход к анализу робастности с воздухоплавательными применениями» Г. Феррера. Анализ устойчивости для систем с только реальной параметрической неопределенностью может вызвать числовые трудности. В этом примере вы сравниваете три метода для вычисления запасов устойчивости для систем с только реальной параметрической неопределенностью.

Создание неопределенной модели для транспортного самолета

Модель твердого тела большого транспортного самолета имеет четыре состояния, два входа и четыре выхода. Состояниями являются боковая кромка (бета), скорость крена (p), скорость рыскания (r) и угол крена (phi). Входами являются отклонение руля направления (deltap) и отклонение элерона (deltar). Выходы: боковое ускорение (ny), скорость крена (p), скорость рыскания (r) и угол крена (phi). Уравнения состояния зависят от 14 аэродинамических коэффициентов, каждый коэффициент имеет 10-процентную неопределенность.

Создайте неопределенности для аэродинамических коэффициентов.

deg2rad = pi/180;      % conversion factor from degs to radians
rad2deg = 1/deg2rad;   % conversion factor from radians to degs
gV = 0.146418;         % g/V
tan_theta0 = 0.14;     % tan(theta0)
alpha0 = 8*deg2rad;    % (rad)

Ybeta = ureal('Ybeta',-0.082,'Percentage',10);
Yp = ureal('Yp',0.010827,'Percentage',10);
Yr = ureal('Yr',0.060268,'Percentage',10);
Ydeltap = ureal('Ydeltap',0.002,'Percentage',10);
Ydeltar = ureal('Ydeltar',0.0118,'Percentage',10);
Lbeta = ureal('Lbeta',-0.84,'Percentage',10);
Lp = ureal('Lp',-0.76,'Percentage',10);
Lr = ureal('Lr',0.74,'Percentage',10);
Ldeltap = ureal('Ldeltap',0.095,'Percentage',10);
Ldeltar = ureal('Ldeltar',0.06,'Percentage',10);
Nbeta = ureal('Nbeta',0.092,'Percentage',10);
Np = ureal('Np',-0.23,'Percentage',10);
Nr = ureal('Nr',-0.114,'Percentage',10);
Ndeltar = ureal('Ndeltar',-0.151,'Percentage',10);

Уравнения состояния для динамики самолета твёрдого тела:

A = [Ybeta (Yp+sin(alpha0)) (Yr-cos(alpha0)) gV; ...
    Lbeta  Lp Lr 0; Nbeta Np Nr 0; 0 1 tan_theta0 0];
B = [Ydeltap Ydeltar; Ldeltap Ldeltar; 0 Ndeltar; 0 0];
C = -1/gV*deg2rad*[Ybeta Yp Yr 0];
C = [C; zeros(3,1) eye(3)];
D = -1/gV*deg2rad*[Ydeltap Ydeltar];
D = [D; zeros(3,2)];
AIRCRAFT = ss(A,B,C,D);

Модель самолета имеет приводы для руля направления и элерона. Каждый привод моделируется с помощью системы второго порядка, и полученная динамика добавляется к входу модели твердого тела. P - разомкнутый контур модель самолета и приводов.

N1 = [-1.77, 399];
D1 = [1 48.2 399];
deltap_act = tf(N1,D1);

N2 = [2.6 -1185 27350];
D2 = [1 77.7 3331 27350];
deltar_act = tf(N2,D2);

P = AIRCRAFT*blkdiag(deltap_act,deltar_act);

Создание системы замкнутого цикла

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

K = [-629.8858 11.5254 3.3110 9.4278; ...
  285.9496 0.3693 -2.6301 -0.5489];

CLOOP = feedback(P,K);

Анализ устойчивости: итерация степени

Можно использовать robstab вычислить надежные запасы устойчивости для этой системы. Этот пример фокусируется на методах вычисления нижних границ на mu, что эквивалентно вычислению верхней границы запаса устойчивости. По умолчанию robstab использует комбинацию итерации степени и нижнюю границу на основе усиления для вычисления mu нижняя граница. Сначала исследуйте итерацию степени. 'm' опции для mussv используется для принудительного robstab для использования только итерации степени.

ropt = robOptions('Mussv','m5','VaryFrequency','on');
[SM1,WCU1,INFO1] = robstab(CLOOP,ropt);

Итерация степени является быстрой и обычно обеспечивает хорошие ограничения для проблем со сложной неопределенностью. Однако он имеет тенденцию плохо работать для систем с только реальной параметрической неопределенностью. В этом примере итерация степени находит нижнюю границу в нуле для mu на большинстве частот. Таким образом, верхняя граница запаса устойчивости не предоставляет никакой информации.

semilogx(INFO1.Frequency,1./INFO1.Bounds)
xlim([1e-3 1e3])

Figure contains an axes. The axes contains 2 objects of type line.

Фигура 1: Ограничения Mu для самолетов, использующих нижнюю границу итерации степени.

Анализ устойчивости: Комплексируйте реальную неопределенность

Один из способов упорядочить эту устойчивую задачу устойчивости - добавить небольшое количество комплексной неопределенности к действительной параметрической неопределенности с помощью complexify команда. Увеличение alpha увеличивает сложность задачи.

alpha = 0.05;
CLOOP_c = complexify(CLOOP,alpha);

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

[SM2,WC2,INFO2] = robstab(CLOOP_c,ropt);

На график показан верхний/нижний mu ограничения для комплексной задачи. Верхняя граница относительно неизменна комплексизацией, и поэтому комплексизация не существенно изменяет проблему.

semilogx(INFO2.Frequency,1./INFO2.Bounds)
xlim([1e-3 1e3])

Figure contains an axes. The axes contains 2 objects of type line.

Фигура 2: Ограничения Mu для самолетов, использующих итерацию степени + комплексифицируйте нижнюю границу.

Анализ устойчивости: нижняя граница на основе усиления

Для некоторых задач количество сложности, необходимой для упорядочения нижней границы, значительно изменяет задачу, и вместо этого следует использовать нижнюю границу, основанную на усилении. Установите 'g' как mussv опция принудительного robstab использовать нижнюю границу, основанную на усилении. Обратите внимание, что этот подход является более медленным в вычислительном отношении по сравнению с использованием итерации степени и комплексизации.

ropt = robOptions('Mussv','g','VaryFrequency','on');
[SM3,WC3,INFO3] = robstab(CLOOP,ropt);

semilogx(INFO3.Frequency,1./INFO3.Bounds)
xlim([1e-3 1e3])

Figure contains an axes. The axes contains 2 objects of type line.

Фигура 3: Ограничения Mu для самолетов, использующих нижнюю границу, основанную на усилении.

См. также

|

Похожие темы