Этот пример показывает проект ДЕМПФЕРА YAW для 747® самолет, использующий классические функции системы управления в Control System Toolbox™.
Упрощенная модель для обрезки самолета во время рейса круиза
имеет четыре состояния:
beta (sideslip angle), phi (bank angle), yaw rate, roll rate
и два входных параметров: руководящий принцип и отклонения элерона.
Все углы и скорости вращения исчисляются в радианах и радианы/секунда.
Учитывая матрицы A, 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. Чтобы показать только этот график, щелкните правой кнопкой и выберите "I/O Selector", затем нажмите (2,2) запись.
Этот график показывает самолет, колеблющийся вокруг ненулевого угла банка. Таким образом самолет поворачивается в ответ на импульс элерона. Это поведение будет важно позже.
Обычно демпферы отклонения от курса являются созданным с использованием уровнем отклонения от курса как обнаруженным выходом и руководящим принципом как вход. Смотрите частотную характеристику для этой пары ввода-вывода:
sys11 = sys('yaw','rudder'); % select I/O pair h = bodeplot(sys11); setoptions(h, 'FreqUnits','rad/s','MagUnits','dB','PhaseUnits','deg');
Этот график показывает, что руководящий принцип имеет много полномочий вокруг слегка ослабленного режима Голландского шага (1 рад/с).
Разумная цель проекта состоит в том, чтобы обеспечить дзэту коэффициента затухания> 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);
Примечание: feedback принимает отрицательную обратную связь по умолчанию
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)
Вы сверхстабилизировали спиральный режим. Спиральный режим обычно является очень медленным режимом, который позволяет самолету управлять банком и поворачиваться без постоянного входа элерона. Пилоты используются к этому поведению и не будут любить проект, который обычно не летит.
Необходимо убедиться, что спиральный режим не перемещается дальше в левую полуплоскость, когда мы замыкаем круг. Одним путем разработчики управления полетом решили эту проблему, при помощи фильтра размытия.
Фильтр размытия:
Используя Design Tool SISO (помогают sisotool), можно графически настроить параметры k и, чтобы найти лучшую комбинацию. В этом примере мы выбираем = 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
Лучшее затухание теперь о дзэте = 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')
Несмотря на то, что это не вполне удовлетворяет требования, этот проект существенно увеличивает затухание, позволяя пилоту обычно управлять самолетом.