Этот пример показывает проект YAW DAMPER для самолета 747 ®, используя классические функции управления в Control System Toolbox™.
Упрощенная модель дифферента самолета во время круизного рейса
имеет четыре состояния:
beta (sideslip angle), phi (bank angle), yaw rate, roll rate
и два входа: отклонения руля и элерона.
Все углы и скорости вращения указаны в радианах и радианах/сек.
Учитывая матрицы А, B, C, D модели обрезки, используйте команду SS, чтобы создать модель пространства состояний в MATLAB ®:
A=[-.0558 -.9968 .0802 .0415; .598 -.115 -.0318 0; -3.05 .388 -.4650 0; 0 0.0805 1 0]; B=[ .00729 0; -0.475 0.00775; 0.153 0.143; 0 0]; C=[0 1 0 0; 0 0 0 1]; D=[0 0; 0 0]; sys = ss(A,B,C,D);
и пометьте входы, выходы и состояния:
set(sys, 'inputname', {'rudder' 'aileron'},... 'outputname', {'yaw rate' 'bank angle'},... 'statename', {'beta' 'yaw' 'roll' 'phi'});
Эта модель имеет пару слегка демпфированных полюсов. Они соответствуют тому, что называется голландским режимом крена. Чтобы увидеть эти режимы, введите
axis(gca,'normal') h = pzplot(sys); setoptions(h,'FreqUnits','rad/s','Grid','off');
Щелкните правой кнопкой мыши и выберите «Grid», чтобы построить график значений демпфирования и собственной частоты. Вам нужно спроектировать компенсатор, который увеличивает демпфирование этих двух полюсов.
Начните с некоторого анализа без разомкнутого контура, чтобы определить возможные стратегии управления. Наличие легкодемпфированных режимов подтверждается 'рассматривая импульсную характеристику:'
impulseplot(sys)
Чтобы просмотреть ответ в течение меньшей временной системы координат 20 секунд, вы также можете ввести
impulseplot(sys,20)
Посмотрите на график от элерона до угла крена phi. Чтобы отобразить только этот график, щелкните правой кнопкой мыши и выберите «Выбор ввода/вывода», затем щелкните на записи (2,2).
Этот график показывает самолет, колеблющийся вокруг ненулевого угла крена. Таким образом самолет поворачивается в ответ на элеронный импульс. Это поведение будет важно позже.
Обычно демпферы рыскания проектируются с использованием скорости рыскания в качестве измеренного выхода и руля направления в качестве входа. Проверьте частотную характеристику для этой пары ввода-вывода:
sys11 = sys('yaw','rudder'); % select I/O pair h = bodeplot(sys11); setoptions(h, 'FreqUnits','rad/s','MagUnits','dB','PhaseUnits','deg');
Этот график показывает, что руль имеет большой авторитет вокруг легкодемпфированного голландского режима крена (1 рад/с).
Разумная цель проекта состоит в обеспечении коэффициента затухания zeta > 0,35, с естественной частотой Wn < 1,0 рад/с. Самый простой компенсатор - коэффициент усиления. Используйте метод корневого годографа, чтобы выбрать адекватное значение усиления обратной связи:
h = rlocusplot(sys11); setoptions(h,'FreqUnits','rad/s')
Упс, похоже, нам нужна положительная обратная связь!
h = rlocusplot(-sys11); setoptions(h,'FreqUnits','rad/s')
Это выглядит лучше. Щелкните на синей кривой и переместите черный квадрат, чтобы отследить значения усиления и демпфирования. Лучшее достижимое затухание с обратной связью составляет около 0,45 для усиления K = 2,85.
Теперь закройте этот цикл обратной связи SISO и посмотрите на импульсную характеристику
k = 2.85; cl11 = feedback(sys11,-k);
Примечание: обратная связь принимает отрицательную обратную связь по умолчанию
impulseplot(sys11,'b--',cl11,'r') legend('open loop','closed loop','Location','SouthEast')
Реакция выглядит довольно хорошо.
Теперь закройте цикл вокруг полной модели MIMO и посмотрите, как выглядит реакция элерона. Цикл обратной связи включает вход 1 и выход 1 объекта:
cloop = feedback(sys,-k,1,1); impulseplot(sys,'b--',cloop,'r',20) % MIMO impulse response
Реакция скорости рыскания в настоящее время хорошо демпфирована.
При перемещении элерона, однако, система больше не продолжает банк, как нормальный самолет, как видно из
impulseplot(cloop('bank angle','aileron'),'r',18)
Вы слишком стабилизировали режим спирали. Спиральный режим обычно является очень медленным режимом, который позволяет самолету взлетать и поворачиваться без постоянного входа элерона. Пилоты привыкли к такому поведению и не будут любить проекта, которая не летает нормально.
Вы должны убедиться, что спиральный режим не перемещается дальше в левую-половинную плоскость, когда мы закрываем цикл. Одним из способов, которым конструкторы управления полетом исправили эту проблему, является использование омываемого фильтра.
Промывочный фильтр:
Используя SISO Design Tool (help sisotool), можно графически настроить параметры k и a, чтобы найти лучшую комбинацию. В этом примере мы выбираем a = 0,2 или постоянную времени 5 секунд.
Сформируйте промывочный фильтр для a = 0,2 и k = 1
H = zpk(0,-0.2,1);
соедините промывку последовательно с вашей моделью проекта и используйте корневой годограф для определения усиления фильтра k:
oloop = H * (-sys11); % open loop' h = rlocusplot(oloop); setoptions(h, 'FreqUnits','rad/s') sgrid
Лучшее демпфирование теперь около zeta = 0,305 для k = 2,34. Закройте цикл с помощью модели MIMO и проверьте импульсную характеристику:
k = 2.34; wof = -k * H; % washout compensator cloop = feedback(sys,wof,1,1); impulseplot(sys,'b--',cloop,'r',20)
Промывочный фильтр также восстановил нормальное поведение переключателя, как видно, рассматривая импульсную характеристику от элерона до угла крена.
impulseplot(sys(2,2),'b--',cloop(2,2),'r',20) legend('open loop','closed loop','Location','SouthEast')
Хотя это не совсем соответствует требованиям, этот проект существенно увеличивает демпфирование, позволяя пилоту нормально управлять самолетом.