Действительный 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 object. The axes object contains 2 objects of type line.

Рисунок 1: Му ограничивает для Самолета с помощью нижней границы итерации степени.

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

Один способ упорядочить эту устойчивую проблему устойчивости состоит в том, чтобы добавить небольшое количество комплексной неопределенности к действительной параметрической неопределенности с помощью 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 object. The axes object contains 2 objects of type line.

Рисунок 2: границы Му для Самолета с помощью итерации степени + усложняют нижнюю границу.

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

Для некоторых проблем сумма сложности, необходимой, чтобы упорядочить нижнюю границу значительно, изменяет проблему, и необходимо использовать основанную на усилении нижнюю границу вместо этого. Установите '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 object. The axes object contains 2 objects of type line.

Рисунок 3: Му ограничивает для Самолета с помощью основанной на усилении нижней границы.

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

|

Похожие темы