В этом примере показано, как симулировать прогнозирующий контроллер модели с несоответствием между прогнозирующей моделью объекта управления и фактическим объектом, а также измеренными и неизмеренными воздействиями, с помощью sim
команда.
Прогнозирующая модель объекта управления имеет 2 переменные, которыми управляют, 2 неизмеренных входных воздействия и 2 измеренных выходных параметров. Фактический объект имеет различную динамику.
Задайте параметры номинального объекта, на основе которого контроллер MPC. Системы от мВ до MO и UD к MO идентичны.
p1 = tf(1,[1 2 1])*[1 1; 0 1]; plant = ss([p1 p1],'minimal'); plant.InputName = {'mv1','mv2','ud3','ud4'};
Задайте входные параметры 1 и 2 как переменные, которыми управляют, 3 и 4 как неизмеренные воздействия.
plant = setmpcsignals(plant,'MV',[1 2],'UD',[3 4]); % Create the controller object with sampling period, prediction and control % horizons: mpcobj = mpc(plant,1,40,2);
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000. -->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000. -->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.
Для неизмеренных входных воздействий диспетчер MPC будет использовать следующее неизмеренное возмущение.
distModel = eye(2,2)*ss(-.5,1,1,0); mpcobj.Model.Disturbance = distModel;
Задайте параметры фактического объекта в замкнутом цикле с контроллером MPC.
p2 = tf(1.5,[0.1 1 2 1])*[1 1; 0 1]; psim = ss([p2 p2],'minimal'); psim = setmpcsignals(psim,'MV',[1 2],'UD',[3 4]);
Задайте ссылочные траектории и неизмеренные воздействия, вводящие фактический объект.
dist = ones(1,2); % unmeasured disturbance signal refs = [1 2]; % output reference signal Tf = 20; % total number of simulation steps
Создайте объект опций симуляции MPC. Это позволяет вам задавать и неизмеренные воздействия и объект, отличающийся, чем тот, который диспетчер MPC использует в качестве модели предсказания.
options = mpcsimopt(mpcobj); options.unmeas = dist; % unmeasured disturbance signal options.model = psim; % real plant model
Запустите симуляцию MPC с обратной связью с несоответствием модели и непредвиденными неизмеренными входными параметрами воздействия.
sim(mpcobj,Tf,refs,options);
-->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. -->Converting model to discrete time.
Эффективность отслеживания замкнутого цикла приемлема несмотря на присутствие несоответствий модели и неизмеренных входных воздействий.