Этот пример показывает, как использовать 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])
Рисунок 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])
Рисунок 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])
Рисунок 3: Му ограничивает для Самолета с помощью основанной на усилении нижней границы.