exponenta event banner

Решение проблемы дискретного набора MPC в Simulink

В этом примере показано, как с помощью Simulink решить задачу MPC, в которой некоторые управляемые переменные принадлежат дискретному набору.

Создание модели завода

Зафиксируйте начальное число случайного генератора для воспроизводимости.

rng(0);

Создание строго соответствующей установки дискретного времени с 4 состояниями, двумя входами и одним выходом.

plant = drss(4,1,2);
plant.D = 0;

Увеличить полномочия на управление первым вводом, чтобы лучше проиллюстрировать его вклад в управление.

plant.B(:,1)=plant.B(:,1)*2;

Проектирование контроллера MPC

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

mpcobj = mpc(plant,0.1,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.MV(1).Type = 'integer'; в этом случае первая управляемая переменная будет ограничена целым числом.

mpcobj.MV(1).Type = [-1 -0.7 -0.3 0 0.2 0.5 1];

Используйте ограничения скорости для применения максимальных значений приращения и уменьшения для первой управляемой переменной.

mpcobj.MV(1).RateMin = -0.5;
mpcobj.MV(1).RateMax = 0.5;

Установите ограничения для второй управляемой переменной, тип по умолчанию которой (непрерывный) не был изменен.

mpcobj.MV(2).Min = -2;
mpcobj.MV(2).Max = 2;

Управление моделью установки в Simulink

Создание выходного опорного сигнала, равного нулю из шагов 20 кому 35 и равно 0.6 до и после.

r = ones(1,50)*0.6;
r(20:35) = 0;

Создайте моделирование замкнутого контура Simulink с помощью блока контроллера MPC с помощью mpcobj объект, переданный в качестве параметра, для управления установкой двойного интегратора. Для этого примера откройте ранее существовавшую модель Simulink dcsdemo.slxc.

open('dcsdemo.slx')

Теперь модель можно запустить, щелкнув Выполнить (Run) или используя команду MATLAB sim.

sim('dcsdemo.slx')
-->No sample time provided for plant model. Assuming sample time = controller's sample time = 0.1.
-->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.
ans = 
  Simulink.SimulationOutput:

                   tout: [51x1 double] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

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

См. также

Связанные темы