Ставя цели для переменных, которыми управляют,

В этом примере показано, как спроектировать прогнозирующий контроллер модели для объекта с двумя входными параметрами и одним выходом с целевым заданным значением для одной из двух переменных, которыми управляют.

Задайте модель объекта управления

Линейная модель объекта управления имеет два входных параметров и один выход. Задайте объект как передаточную функцию, преобразуйте его в пространство состояний, задайте начальное состояние и извлеките матрицы объекта для дальнейшего использования в модели Simulink.

plant = ss(tf({[3 1],[2 1]},{[1 2*.3 1],[1 2*.5 1]}));
x0 = [0 0 0 0]';
A = plant.A;
B = plant.B;
C = plant.C;
D = plant.D;

Спроектируйте контроллер MPC

Создайте контроллер MPC со временем выборки 0.4 s, и предсказание и горизонты управления 20 и 5 шаги, соответственно.

mpcobj = mpc(plant,0.4,20,5);
-->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.

Задайте веса и для переменных, которыми управляют, и для выхода.

mpcobj.weights.manipulated = [0.3 0]; % weight difference MV#1 - Target#1
mpcobj.weights.manipulatedrate = [0 0];
mpcobj.weights.output = 1;

Задайте ограничения для плавающего курса, которым управляют.

mpcobj.MV = struct('RateMin',{-0.5;-0.5},'RateMax',{0.5;0.5});

Поставьте цель для одной переменной, которой управляют,

Задайте целевое заданное значение u = 2 для первой переменной, которой управляют.

mpcobj.MV(1).Target=2;

Симулируйте с Simulink

Задайте имя модели и откройте модель Simulink. Обратите внимание на то, что выходная ссылка является прямоугольной волной. Затем симулируйте модель, с помощью sim команда.

mdl = 'mpc_utarget';
open_system(mdl)
sim(mdl);
-->Converting model to discrete time.
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Первый график показывает, что первая переменная, которой управляют, достигает своего сетбола приблизительно после 6 секунд, в то время как объект выход достигает своей ссылки.

bdclose(mdl)        % close the Simulink model

Смотрите также

|

Похожие темы