Управление боковой осью самолета с помощью Mu-Synthesis

Этот пример показывает, как использовать Mu-Analysis и синтеза в Robust Control Toolbox™. В нем описывается проект устойчивого контроллера для боковой оси самолета при заходе на посадку с приводом. Линеаризированная модель самолёта получена для угла атаки 10,5 степеней и воздушной скорости 140 узлов.

Эффективность Спецификаций

Рисунок ниже показывает блок системы с обратной связью. Схема включает номинальную модель самолета, контроллер K, а также элементы, захватывающие неопределенность модели и цели эффективности (см. следующие разделы для получения дополнительной информации).

Фигура 1: робастная Система управления для боковой оси самолета

Цель проекта состоит в том, чтобы самолет эффективно реагировал на боковые ручки пилота и входы педали руля направления. Спецификации эффективности включают:

  • Отделенные ответы от боковых p_cmd-палочек в скорость крена p и от педалей руля направления beta_cmd к углу бокового скольжения beta. Боковые палки и педали руля направления имеют максимальное отклонение +/-1 дюйм.

  • Реакция качества обработки самолета (HQ) от бокового прилипания к скорости крена p должен совпадать с ответом первого порядка.

HQ_p    = 5.0 * tf(2.0,[1 2.0]);
step(HQ_p), title('Desired response from lateral stick to roll rate (Handling Quality)')

Figure contains an axes. The axes contains an object of type line. This object represents HQ\_p.

Фигура 2: Желаемый ответ от бокового стержня к скорости крена.

  • Ответ качества обработки самолета от педалей руля направления на угол бокового скольжения beta должен соответствовать демпфированному ответу второго порядка.

HQ_beta = -2.5 * tf(1.25^2,[1 2.5 1.25^2]);
step(HQ_beta), title('Desired response from rudder pedal to side-slip angle (Handling Quality)')

Figure contains an axes. The axes contains an object of type line. This object represents HQ\_beta.

Фигура 3: Необходимый ответ от педали руля направления к углу бокового скольжения.

  • Приводы стабилизатора имеют предельные значения угла отклонения и скорости отклонения +/-20 ° и +/-50 °/с. Рулевые приводы имеют +/-30 град и +/-60 град/с угол отклонения и пределы скорости.

  • Три сигнала измерения (скорость крена p, скорость рыскания rи боковое ускорение yac ) фильтруются через сглаживающие фильтры второго порядка:

freq = 12.5 * (2*pi);  % 12.5 Hz
zeta = 0.5;
yaw_filt = tf(freq^2,[1 2*zeta*freq freq^2]);
lat_filt = tf(freq^2,[1 2*zeta*freq freq^2]);

freq = 4.1 * (2*pi);  % 4.1 Hz
zeta = 0.7;
roll_filt = tf(freq^2,[1 2*zeta*freq freq^2]);

AAFilters = append(roll_filt,yaw_filt,lat_filt);

От спецификаций до функций взвешивания

Алгоритмы проекта H-бесконечности стремятся минимизировать самое большое усиление замкнутой системы на частоте (H-норма бесконечности). Чтобы применить эти инструменты, мы должны сначала переустановить спецификации проекта как ограничения на усиления замкнутой системы. Мы используем функции взвешивания, чтобы «нормализовать» спецификации по частоте и одинаково взвешивать каждое требование.

Мы можем выразить спецификации проекта с точки зрения весовых функций следующим образом:

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

W_act = ss(diag([1/50,1/20,1/60,1/30]));
  • Используйте диагональный высокочастотный фильтр 3x3 W_n для моделирования содержимого частоты шума датчика в скорости крена, скорости рыскания и боковых каналах ускорения.

W_n = append(0.025,tf(0.0125*[1 1],[1 100]),0.025);
clf, bodemag(W_n(2,2)), title('Sensor noise power as a function of frequency')

Figure contains an axes. The axes contains an object of type line. This object represents untitled1.

Фигура 4: Степень шума датчика как функция от частоты

  • Реакция боковой палочки на p и от педали руля направления до beta должна совпадать с целевыми параметрами качества обработки HQ_p и HQ_beta. Это согласованная с моделью цель: минимизировать различие (пиковый коэффициент усиления) между желаемой и фактической передаточными функциями замкнутой системы. Эффективность ограничена из-за нуля правой половины в модели на 0,002 рад/с, поэтому точное отслеживание синусоидов ниже 0,002 рад/с невозможно. Соответственно, мы взвесим первую спецификацию качества обработки с полосно-пропускающим фильтром W_p это подчеркивает частотную область значений от 0,06 до 30 рад/сек.

W_p = tf([0.05 2.9 105.93 6.17 0.16],[1 9.19 30.80 18.83 3.95]);
clf, bodemag(W_p), title('Weight on Handling Quality spec')

Figure contains an axes. The axes contains an object of type line. This object represents W\_p.

Фигура 5: Вес на обработку качественных спецификаций.

  • Точно так же выберите W_beta=2*W_p для второй спецификации качества обработки

W_beta = 2*W_p;

Здесь мы масштабировали веса W_act, W_n, W_p, и W_beta таким образом, коэффициент усиления с обратной связью между всеми внешними входами и всеми взвешенными выходами меньше 1 на всех частотах.

Номинальная модель самолета

Пилот может командовать боковой характеристикой самолета боковой палкой и педалями руля направления. Самолет имеет следующие характеристики:

  • Два входа управления: отклонение дифференциального стабилизатора delta_stab в степенях и отклонении руля направления delta_rud в степенях.

  • Три измеренных выхода: скорость крена p в град/с, скорость рыскания r в град/с и боковое ускорение yac в g's.

  • Один вычисленный выход: угол скольжения beta.

Номинальная модель бокового направления LateralAxis имеет четыре состояния:

  • Поперечная скорость v

  • Скорость рыскания r

  • Скорость крена p

  • Крен угла phi

Эти переменные связаны уравнениями пространства состояний:

x˙=Ax+Bu,y=Cx+Du

где x = [v; r; p; phi], u = [delta_stab; delta_rud], и y = [beta; p; r; yac].

load LateralAxisModel
LateralAxis
LateralAxis =
 
  A = 
               v         r         p       phi
   v      -0.116    -227.3     43.02     31.63
   r     0.00265    -0.259   -0.1445         0
   p    -0.02114    0.6703    -1.365         0
   phi         0    0.1853         1         0
 
  B = 
        delta_stab   delta_rud
   v        0.0622      0.1013
   r     -0.005252    -0.01121
   p      -0.04666    0.003644
   phi           0           0
 
  C = 
                 v          r          p        phi
   beta     0.2469          0          0          0
   p             0          0       57.3          0
   r             0       57.3          0          0
   yac   -0.002827  -0.007877    0.05106          0
 
  D = 
         delta_stab   delta_rud
   beta           0           0
   p              0           0
   r              0           0
   yac     0.002886    0.002273
 
Continuous-time state-space model.

Полная модель планера также включает модели приводов A_S и A_R. Выходами привода являются их соответствующие скорости отклонения и углы. Скорости привода используются для компенсации усилия приведения в действие.

A_S = [tf([25 0],[1 25]); tf(25,[1 25])];
A_S.OutputName = {'stab_rate','stab_angle'};

A_R = A_S;
A_R.OutputName = {'rud_rate','rud_angle'};

Учет ошибок моделирования

Номинальная модель только аппроксимирует истинное поведение самолета. Для учета немоделированной динамики можно ввести относительный термин или мультипликативную неопределенность W_in*Delta_G на входе объекта, где динамика ошибок Delta_G иметь коэффициент усиления менее 1 на частотах и весовую функцию W_in отражает частотные области значений, в которых модель является более или менее точной. Обычно больше ошибок моделирования на высоких частотах, так что W_in - высокий проход.

% Normalized error dynamics
Delta_G = ultidyn('Delta_G',[2 2],'Bound',1.0);

% Frequency shaping of error dynamics
w_1 = tf(2.0*[1 4],[1 160]);
w_2 = tf(1.5*[1 20],[1 200]);
W_in = append(w_1,w_2);

bodemag(w_1,'-',w_2,'--')
title('Relative error on nominal model as a function of frequency')
legend('stabilizer','rudder','Location','NorthWest');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent stabilizer, rudder.

Фигура 6: Относительная погрешность на номинальной модели самолета как функция от частоты.

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

Теперь, когда у нас есть количественные ошибки моделирования, мы можем создать неопределенную модель динамики самолета, соответствующую штриховому блоку на фигуре 7 (так же, как на фигуре 1):

Фигура 7: Динамика самолета.

Используйте connect функция для объединения номинальной модели планера LateralAxis, модели привода A_S и A_R, и описание ошибки моделирования W_in*Delta_G в одну неопределенную модель Plant_unc отображение [delta_stab; delta_rud] к выходам привода и объекта:

% Actuator model with modeling uncertainty
Act_unc = append(A_S,A_R) * (eye(2) + W_in*Delta_G);
Act_unc.InputName = {'delta_stab','delta_rud'};

% Nominal aircraft dynamics
Plant_nom = LateralAxis;
Plant_nom.InputName = {'stab_angle','rud_angle'};

% Connect the two subsystems
Inputs = {'delta_stab','delta_rud'};
Outputs = [A_S.y ; A_R.y ; Plant_nom.y];
Plant_unc = connect(Plant_nom,Act_unc,Inputs,Outputs);

Это создает модель неопределенного пространства состояний (USS) Plant_unc самолета:

Plant_unc
Plant_unc =

  Uncertain continuous-time state-space model with 8 outputs, 2 inputs, 8 states.
  The model uncertainty consists of the following blocks:
    Delta_G: Uncertain 2x2 LTI, peak gain = 1, 1 occurrences

Type "Plant_unc.NominalValue" to see the nominal value, "get(Plant_unc)" to see all properties, and "Plant_unc.Uncertainty" to interact with the uncertain elements.

Анализ того, как ошибки моделирования влияют на отклики разомкнутого контура

Мы можем анализировать эффект моделирования неопределенности, выбирая случайные выборки немоделированной динамики Delta_G и построение графика номинальных и возмущенных временных характеристик (анализ Монте-Карло). Для примера, для канала дифференциального стабилизатора, вес неопределенности w_1 подразумевает 5% ошибку моделирования на низкой частоте, увеличивающуюся до 100% после 93 рад/сек, как подтверждено диаграммой Боде ниже.

% Pick 10 random samples
Plant_unc_sampl = usample(Plant_unc,10);

% Look at response from differential stabilizer to beta
figure('Position',[100,100,560,500]) 
subplot(211), step(Plant_unc.Nominal(5,1),'r+',Plant_unc_sampl(5,1),'b-',10)
legend('Nominal','Perturbed')

subplot(212), bodemag(Plant_unc.Nominal(5,1),'r+',Plant_unc_sampl(5,1),'b-',{0.001,1e3})
legend('Nominal','Perturbed')

Figure contains 2 axes. Axes 1 with title From: delta_stab To: beta contains 11 objects of type line. These objects represent Nominal, Perturbed. Axes 2 with title From: delta_stab To: beta contains 11 objects of type line. These objects represent Nominal, Perturbed.

Фигура 8: Переходная характеристика и схема Боде.

Разработка контроллера боковой оси

Продолжите разработку контроллера, который надежно достигает спецификаций, где надежно означает для любой возмущенной модели самолета, сопоставимой с границами ошибок моделирования W_in.

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

Фигура 9: Модель разомкнутого контура, отображающая внешние входные сигналы на выходы, связанные с производительностью.

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

Фигура 10: Блок для модели создания разомкнутого контура.

% Label block I/Os
AAFilters.u = {'p','r','yac'};    AAFilters.y = 'AAFilt';
W_n.u = 'noise';                  W_n.y = 'Wn';
HQ_p.u = 'p_cmd';                 HQ_p.y = 'HQ_p';
HQ_beta.u = 'beta_cmd';           HQ_beta.y = 'HQ_beta';
W_p.u = 'e_p';                    W_p.y = 'z_p';
W_beta.u = 'e_beta';              W_beta.y = 'z_beta';
W_act.u = [A_S.y ; A_R.y];        W_act.y = 'z_act';

% Specify summing junctions
Sum1 = sumblk('%meas = AAFilt + Wn',{'p_meas','r_meas','yac_meas'});
Sum2 = sumblk('e_p = HQ_p - p');
Sum3 = sumblk('e_beta = HQ_beta - beta');

% Connect everything
OLIC = connect(Plant_unc,AAFilters,W_n,HQ_p,HQ_beta,...
   W_p,W_beta,W_act,Sum1,Sum2,Sum3,...
   {'noise','p_cmd','beta_cmd','delta_stab','delta_rud'},...
   {'z_p','z_beta','z_act','p_cmd','beta_cmd','p_meas','r_meas','yac_meas'});

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

OLIC
OLIC =

  Uncertain continuous-time state-space model with 11 outputs, 7 inputs, 26 states.
  The model uncertainty consists of the following blocks:
    Delta_G: Uncertain 2x2 LTI, peak gain = 1, 1 occurrences

Type "OLIC.NominalValue" to see the nominal value, "get(OLIC)" to see all properties, and "OLIC.Uncertainty" to interact with the uncertain elements.

Напомним, что при конструкции функций взвешивания контроллер удовлетворяет спецификациям всякий раз, когда коэффициент усиления в замкнутом контуре меньше 1 на всех частотах и для всех направлений ввода-вывода. Сначала разработайте контроллер H-бесконечности, который минимизирует коэффициент усиления с обратной связью для номинальной модели самолета:

nmeas = 5;		% number of measurements
nctrls = 2;		% number of controls
[kinf,~,gamma_inf] = hinfsyn(OLIC.NominalValue,nmeas,nctrls);
gamma_inf
gamma_inf = 0.9700

Вот hinfsyn вычислил контроллер kinf что сохраняет коэффициент усиления с обратной связью ниже 1, чтобы характеристики могли быть удовлетворены для номинальной модели самолета.

Затем выполните Mu-Synthesis, чтобы увидеть, могут ли спецификации быть достигнуты надежно, принимая во внимание ошибки моделирования (неопределенность Delta_G). Используйте команду musyn для выполнения синтеза и использования musynOptions для установки частотной сетки, используемой для Mu-Analysis.

fmu = logspace(-2,2,60);
opt = musynOptions('FrequencyGrid',fmu);
[kmu,CLperf] = musyn(OLIC,nmeas,nctrls,opt);
D-K ITERATION SUMMARY:
-----------------------------------------------------------------
                       Robust performance               Fit order
-----------------------------------------------------------------
  Iter         K Step       Peak MU       D Fit             D
    1           5.097        3.487        3.488            12
    2            1.31        1.292        1.312            20
    3           1.242        1.242        1.693            12
    4           1.693        1.544        1.545            16
    5           1.223        1.223        1.551            12
    6           1.533        1.464        1.465            20
    7           1.278        1.277        1.302            12

Best achieved robust performance: 1.22
CLperf
CLperf = 1.2226

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

Сравнение контроллеров в частотном диапазоне

Сравните эффективность и робастность контроллера H-бесконечности kinf и mu контроллера kmu. Следует напомнить, что характеристики эффективности достигаются, когда коэффициент усиления замкнутого цикла меньше 1 для каждой частоты. Используйте lft функция для закрытия цикла вокруг каждого контроллера:

clinf = lft(OLIC,kinf);
clmu = lft(OLIC,kmu);

Какова худшая эффективность (с точки зрения усиления в системе с обратной связью) каждого контроллера для ошибок моделирования, ограниченных W_in? The wcgain команда помогает вам ответить на этот сложный вопрос непосредственно без необходимости обширной сетки и симуляции.

% Compute worst-case gain as a function of frequency
opt = wcOptions('VaryFrequency','on');

% Compute worst-case gain (as a function of frequency) for kinf
[mginf,wcuinf,infoinf] = wcgain(clinf,opt);

% Compute worst-case gain for kmu
[mgmu,wcumu,infomu] = wcgain(clmu,opt);

Теперь можно сравнить номинальную и худшую эффективность для каждого контроллера:

clf
subplot(211)
f = infoinf.Frequency;
gnom = sigma(clinf.NominalValue,f);
semilogx(f,gnom(1,:),'r',f,infoinf.Bounds(:,2),'b');
title('Performance analysis for kinf')
xlabel('Frequency (rad/sec)')
ylabel('Closed-loop gain');
xlim([1e-2 1e2])
legend('Nominal Plant','Worst-Case','Location','NorthWest');

subplot(212)
f = infomu.Frequency;
gnom = sigma(clmu.NominalValue,f);
semilogx(f,gnom(1,:),'r',f,infomu.Bounds(:,2),'b');
title('Performance analysis for kmu')
xlabel('Frequency (rad/sec)')
ylabel('Closed-loop gain');
xlim([1e-2 1e2])
legend('Nominal Plant','Worst-Case','Location','SouthWest');

Figure contains 2 axes. Axes 1 with title Performance analysis for kinf contains 2 objects of type line. These objects represent Nominal Plant, Worst-Case. Axes 2 with title Performance analysis for kmu contains 2 objects of type line. These objects represent Nominal Plant, Worst-Case.

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

Напротив, контроллер mu kmu имеет несколько худшую эффективность для номинального объекта по сравнению с kinf, но он поддерживает эту эффективность последовательно для всех возмущенных моделей (худший коэффициент усиления около 1,25). Поэтому контроллер mu является более устойчивым к ошибкам моделирования.

Валидация робастного контроллера во временной области

Чтобы дополнительно проверить робастность контроллера mu kmu во временном интервале можно сравнить временные характеристики номинальных и наихудших моделей замкнутого цикла с идеальной характеристикой «Handling Quality». Для этого сначала создайте «истинную» модель замкнутой системы CLSIM где все функции взвешивания и образцы модели HQ были удалены:

kmu.u = {'p_cmd','beta_cmd','p_meas','r_meas','yac_meas'};
kmu.y = {'delta_stab','delta_rud'};

AAFilters.y = {'p_meas','r_meas','yac_meas'};

CLSIM = connect(Plant_unc(5:end,:),AAFilters,kmu,{'p_cmd','beta_cmd'},{'p','beta'});

Затем создайте тестовые сигналы u_stick и u_pedal показано ниже

time = 0:0.02:15;
u_stick = (time>=9 & time<12);
u_pedal = (time>=1 & time<4) - (time>=4 & time<7);

clf
subplot(211), plot(time,u_stick), axis([0 14 -2 2]), title('Lateral stick command')
subplot(212), plot(time,u_pedal), axis([0 14 -2 2]), title('Rudder pedal command')

Figure contains 2 axes. Axes 1 with title Lateral stick command contains an object of type line. Axes 2 with title Rudder pedal command contains an object of type line.

Теперь можно вычислить и построить график идеальных, номинальных и худших характеристик тестовых команд u_stick и u_pedal.

% Ideal behavior
IdealResp = append(HQ_p,HQ_beta);
IdealResp.y = {'p','beta'};

% Worst-case response
WCResp = usubs(CLSIM,wcumu);

% Compare responses
clf
lsim(IdealResp,'g',CLSIM.NominalValue,'r',WCResp,'b:',[u_stick ; u_pedal],time)
legend('ideal','nominal','perturbed','Location','SouthEast');
title('Closed-loop responses with mu controller KMU')

Figure contains 2 axes. Axes 1 contains 5 objects of type line. These objects represent Driving inputs, ideal, nominal, perturbed. Axes 2 contains 5 objects of type line. These objects represent Driving inputs, ideal, nominal, perturbed.

Реакция с обратной связью почти идентична для номинальных и наихудших систем с обратной связью. Обратите внимание, что ответ скорости крена самолета сначала хорошо отслеживает команду скорости крена, а затем отклоняется от этой команды. Это связано с нулем правой половины плоскости в модели самолета со скоростью 0,024 рад/сек.

См. также

|

Похожие темы