В этом примере показано, как управлять нестабильным самолетом с насыщающими приводами, используя явное прогнозное управление моделью.
Пример управления одним и тем же заводом с помощью традиционного контроллера 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
Чтобы получить явный контроллер MPC, необходимо сначала разработать традиционный (неявный) прогнозирующий контроллер модели, который сможет достичь поставленных целей управления.
Ограничения СН
Обе манипулируемые переменные ограничены между +/- 25 градусами. Поскольку заводские входы и выходы имеют разные порядки величин, для упрощения настройки MPC используются также масштабные коэффициенты. Типичными вариантами масштабного коэффициента являются верхний/нижний предел или рабочий диапазон.
MV = struct('Min',{-25,-25},'Max',{25,25},'ScaleFactor',{50,50});
Ограничения OV
Оба выхода установки имеют ограничения для ограничения недоделки на первом шаге горизонта прогнозирования. Кроме того, задайте масштабные коэффициенты для выходных данных.
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
Создайте MPC-контроллер с указанной моделью завода, временем выборки и горизонтами.
Ts = 0.05; % Sample time p = 10; % Prediction horizon m = 2; % Control horizon mpcobj = mpc(plant,Ts,p,m,Weights,MV,OV);
Явный MPC выполняет эквивалентную явно кусочно-аффинную версию закона управления MPC, определенного традиционным контроллером MPC. Для создания явного MPC-контроллера из традиционного MPC-контроллера необходимо указать диапазон для каждого состояния контроллера, опорный сигнал, управляемую переменную и измеряемое возмущение. Это обеспечивает решение задачи многопараметрического квадратичного программирования в пространстве параметров, определяемом этими диапазонами.
Получение структуры диапазона для инициализации
Чтобы получить структуру диапазона, в которой можно указать диапазон для каждого параметра, используйте generateExplicitRange команда.
range = generateExplicitRange(mpcobj);
-->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.
Укажите диапазоны для состояний контроллера
Состояния контроллера MPC включают в себя состояния из модели установки, модели возмущения и модели шума в этом порядке. Установка диапазона переменной состояния иногда затруднена, когда состояние не соответствует физическому параметру. В этом случае для сбора данных, отражающих диапазоны состояний, рекомендуется многократное моделирование установки с разомкнутым контуром с типичными опорными сигналами и сигналами возмущения.
range.State.Min(:) = -10000; range.State.Max(:) = 10000;
Задание диапазонов для опорных сигналов
Обычно известен практический диапазон эталонных сигналов, используемых в номинальной рабочей точке установки. Диапазоны, используемые для создания явного контроллера MPC, должны быть по крайней мере такими же, как и практический диапазон.
range.Reference.Min = [-1;-11]; range.Reference.Max = [1;11];
Задание диапазонов для манипулируемых переменных
Если управляемые переменные ограничены, диапазоны, используемые для создания явного контроллера MPC, должны быть по крайней мере такими же, как эти пределы.
range.ManipulatedVariable.Min = [MV(1).Min; MV(2).Min] - 1; range.ManipulatedVariable.Max = [MV(1).Max; MV(2).Max] + 1;
Создать явный контроллер MPC
Использовать generateExplicitMPC для получения явного контроллера MPC с ранее заданными диапазонами параметров.
mpcobjExplicit = generateExplicitMPC(mpcobj, range); display(mpcobjExplicit)
Regions found / unexplored: 476/ 0 Explicit MPC Controller --------------------------------------------- Controller sample time: 0.05 (seconds) Polyhedral regions: 476 Number of parameters: 10 Is solution simplified: No State Estimation: Default Kalman gain --------------------------------------------- Type 'mpcobjExplicit.MPC' for the original implicit MPC design. Type 'mpcobjExplicit.Range' for the valid range of parameters. Type 'mpcobjExplicit.OptimizationOptions' for the options used in multi-parametric QP computation. Type 'mpcobjExplicit.PiecewiseAffineSolution' for regions and gain in each solution.
Чтобы объединить пары областей, соответствующие выигрыши которых одинаковы и объединение которых является выпуклым набором, используйте simplify с помощью команды 'exact' способ. Эта практика позволяет уменьшить объем памяти явного контроллера MPC без ущерба для производительности.
mpcobjExplicitSimplified = simplify(mpcobjExplicit, 'exact');
display(mpcobjExplicitSimplified)
Regions to analyze: 465/ 465 Explicit MPC Controller --------------------------------------------- Controller sample time: 0.05 (seconds) Polyhedral regions: 465 Number of parameters: 10 Is solution simplified: Yes State Estimation: Default Kalman gain --------------------------------------------- Type 'mpcobjExplicitSimplified.MPC' for the original implicit MPC design. Type 'mpcobjExplicitSimplified.Range' for the valid range of parameters. Type 'mpcobjExplicitSimplified.OptimizationOptions' for the options used in multi-parametric QP computation. Type 'mpcobjExplicitSimplified.PiecewiseAffineSolution' for regions and gain in each solution.
Количество кусочно-аффинных областей уменьшено.
Можно просмотреть любой 2-D раздел кусочно-аффинного раздела, определенного законом управления явным MPC.
Получение структуры параметров графика для инициализации
Чтобы получить структуру параметров, в которой можно указать, какое сечение 2-D нужно вывести на печать, используйте generatePlotParameters функция.
params = generatePlotParameters(mpcobjExplicitSimplified);
Задание параметров для 2-D графика
В этом примере выполняется график угла тангажа (4-я переменная состояния) и его привязки (2-й опорный сигнал). Все остальные параметры должны быть зафиксированы значениями в соответствующих диапазонах.
Исправьте другие переменные состояния.
params.State.Index = [1 2 3 5 6]; params.State.Value = [0 0 0 0 0];
Зафиксируйте другие опорные сигналы.
params.Reference.Index = 1; params.Reference.Value = 0;
Исправьте управляемые переменные.
params.ManipulatedVariable.Index = [1 2]; params.ManipulatedVariable.Value = [0 0];
Постройте график раздела 2-D
Использовать plotSection для вывода на печать 2-D сечения, определенного ранее.
plotSection(mpcobjExplicitSimplified,params); axis([-10 10 -10 10]) grid xlabel('Pitch angle (x_4)') ylabel('Reference on pitch angle (r_2)')

Для выполнения этого примера необходимо приложение Simulink ®.
if ~mpcchecktoolboxinstalled('simulink') disp('Simulink(R) is required to run this example.') return end
Моделирование управления по замкнутому контуру линейной модели установки в Simulink. Для этого для блока контроллера MPC установите свойство Явный контроллер MPC в значение mpcobjExplicitSimplified.
mdl = 'empc_aircraft';
open_system(mdl)
sim(mdl)



Отклик по замкнутому контуру идентичен традиционному контроллеру MPC, разработанному в самолетах с неустойчивыми полюсами.
[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)