В этом примере показано, как спроектировать контроллер прогнозирования модели для сервомеханизма постоянного тока при ограничениях напряжения и крутящего момента вала.
Аналогичный пример использования явного MPC см. в разделе Явное управление MPC сервомотором постоянного тока с ограничением на неизмеренном выходе.
Линейная динамическая модель с разомкнутым контуром определена в plant. Переменная tau - максимально допустимый крутящий момент, используемый в качестве выходного ограничения.
[plant,tau] = mpcmotormodel;
Укажите типы входных и выходных сигналов для контроллера MPC. Второй выход, крутящий момент, не поддается измерению.
plant = setmpcsignals(plant,'MV',1,'MO',1,'UO',2);
Управляемая переменная ограничена между +/- 220 вольт. Поскольку заводские входы и выходы имеют разные порядки величин, для упрощения настройки MPC используются также масштабные коэффициенты. Типичными вариантами масштабного коэффициента являются верхний/нижний предел или рабочий диапазон.
MV = struct('Min',-220,'Max',220,'ScaleFactor',440);
Ограничения крутящего момента накладываются только на первых трех этапах прогнозирования.
OV = struct('Min',{-Inf, [-tau;-tau;-tau;-Inf]},... 'Max',{Inf, [tau;tau;tau;Inf]},... 'ScaleFactor',{2*pi, 2*tau});
Задача управления состоит в том, чтобы получить нулевое смещение отслеживания для углового положения. Поскольку имеется только одна управляемая переменная, крутящий момент вала может плавать в пределах ограничения, устанавливая его вес равным нулю.
Weights = struct('MV',0,'MVRate',0.1,'OV',[0.1 0]);
Создание контроллера MPC со временем выборки Ts, горизонт прогнозирования pи горизонт управления m.
Ts = 0.1; p = 10; m = 2; mpcobj = mpc(plant,Ts,p,m,Weights,MV,OV);
sim ФункцияИспользуйте sim функция моделирования управления по замкнутому контуру линейной модели установки в MATLAB.
disp('Now simulating nominal closed-loop behavior'); Tstop = 8; % seconds Tf = round(Tstop/Ts); % simulation iterations r = [pi*ones(Tf,1) zeros(Tf,1)];% reference signal [y1,t1,u1] = sim(mpcobj,Tf,r);
Now simulating nominal closed-loop behavior -->Converting model to discrete time. Assuming no disturbance added to measured output channel #1. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
Результаты графика.
subplot(3,1,1) stairs(t1,y1(:,1)) hold on stairs(t1,r(:,1)) hold off title('Angular Position') subplot(3,1,2) stairs(t1,y1(:,2)) title('Torque') subplot(3,1,3) stairs(t1,u1) title('Voltage')

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




Отклик по замкнутому контуру идентичен результату моделирования в MATLAB.
[1] А. Бемпорад и Е. Моска, «Выполнение жестких ограничений в неопределенных линейных системах путем управления ссылками», Automatica, vol. 34, no. 4, pp. 451-461, 1998.
bdclose(mdl)