В этом примере показано, как управлять нестабильным самолетом с насыщающими приводами.
Пример управления одной и той же установкой с помощью явного контроллера MPC см. в разделе Явное управление MPC самолета с нестабильными полюсами.
Линейная разомкнутая динамическая модель самолета имеет следующие матрицы состояния-пространства:
A = [-0.0151 -60.5651 0 -32.174;
-0.0001 -1.3411 0.9929 0;
0.00018 43.2541 -0.86939 0;
0 0 1 0];
B = [-2.516 -13.136;
-0.1689 -0.2514;
-17.251 -1.5766;
0 0];
C = [0 1 0 0;
0 0 0 1];
D = [0 0;
0 0];
Создайте завод и укажите начальные состояния как ноль.
plant = ss(A,B,C,D); x0 = zeros(4,1);
Управляемыми переменными являются углы подъема и флаперона. Углы атаки и тангажа являются измеряемыми выходами, подлежащими регулированию.
Реакция системы с разомкнутым контуром нестабильна.
pole(plant)
ans = -7.6636 + 0.0000i 5.4530 + 0.0000i -0.0075 + 0.0556i -0.0075 - 0.0556i
Обе манипулируемые переменные ограничены между +/- 25 градусами. Поскольку заводские входы и выходы имеют разные порядки величин, для упрощения настройки MPC используются также масштабные коэффициенты. Типичными вариантами масштабного коэффициента являются верхний/нижний предел или рабочий диапазон.
MV = struct('Min',{-25,-25},'Max',{25,25},'ScaleFactor',{50,50});
Оба выхода установки имеют ограничения для ограничения недопоставок на первом горизонте прогнозирования. Также задаются масштабные коэффициенты для выходных данных.
OV = struct('Min',{[-0.5;-Inf],[-100;-Inf]},... 'Max',{[0.5;Inf],[100;Inf]},... 'ScaleFactor',{1,200});
Задача управления состоит в получении смещения нуля для кусочно-постоянных привязок, избегая при этом нестабильности из-за насыщения входных данных. Поскольку переменные MV и OV уже масштабированы в контроллере MPC, веса MPC безразмерны и применяются к масштабированным значениям MV и OV. В этом примере два выходных сигнала распределяются поровну с одинаковыми весами OV.
Weights = struct('MV',[0 0],'MVRate',[0.1 0.1],'OV',[10 10]);
Создайте MPC-контроллер с указанной моделью завода, временем выборки и горизонтами.
Ts = 0.05; % Sample time p = 10; % Prediction horizon m = 2; % Control horizon mpcobj = mpc(plant,Ts,p,m,Weights,MV,OV);
Для выполнения этого примера необходимо приложение Simulink ®.
if ~mpcchecktoolboxinstalled('simulink') disp('Simulink(R) is required to run this example.') return end
Моделирование управления по замкнутому контуру линейной модели установки в Simulink. Для этого для блока контроллера MPC установите для свойства контроллера MPC значение mpcobj.
mdl = 'mpc_aircraft';
open_system(mdl)
sim(mdl)
-->Converting model to discrete time. -->Assuming output disturbance added to measured output channel #1 is integrated white noise. -->Assuming output disturbance added to measured output channel #2 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.



Отклик по замкнутому контуру показывает хорошую производительность отслеживания уставок.
[1] P. Kapasouris, M. Athans и G. Stein, «Проектирование систем управления с обратной связью для неустойчивых установок с исполнительными механизмами насыщения», Proc. IFAC Symp., on Nonlinear Control System Design, Pergamon Press, pp.302-307, 1990
[2] А. Бемпорад, А. Казавола и Е. Моска, «Нелинейное управление линейными системами с ограничением посредством управления прогностическими ссылками», IEEE ® Trans. Automatic Control, том AC-42, № 3, стр. 340-349, 1997.
bdclose(mdl)