Используйте графический процессор, чтобы симулировать контроллер MPC в Simulink

В этом примере показано, как сгенерировать код CUDA и использовать графический процессор, чтобы вычислить оптимальные перемещения MPC в Simulink™.

Создайте модель объекта управления и спроектируйте контроллер MPC

Используйте двойной интегратор в качестве объекта.

plant = tf(1,[1 0 0]);

Создайте объект MPC для объекта со временем выборки 0,1 секунд и предсказание и управляйте горизонтом 10 и 3 шагов, соответственно.

mpcobj = mpc(plant, 0.1, 10, 3);
-->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.

Ограничьте переменную, которой управляют, между –1 и 1.

mpcobj.MV = struct('Min',-1,'Max',1); 

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

Создайте симуляцию замкнутого цикла Simulink с помощью блока MPC Controller с mpcobj объект передал в качестве параметра, чтобы управлять объектом с двойным интегратором. В данном примере откройте существующий ранее gpudemo Модель Simulink.

open_system('gpudemo')

Откройте диалоговое окно Configuration Parameters путем нажатия на Model Settings. Затем в разделе Code Generation выберите код Generate GPU.

Можно теперь запустить модель путем нажатия на Run или при помощи команды MATLAB sim. Прежде, чем запустить симуляцию модель сгенерирует код CUDA из модели Simulink и скомпилирует его, чтобы получить исполняемый файл MEX. Когда модель симулирована, этот файл называется, и симуляция выполняется на графическом процессоре.

sim('gpudemo')
-->Converting the "Model.Plant" property of "mpc" object to state-space.
-->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.

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

Здесь, целая модель Simulink выполняется на графическом процессоре. Чтобы развернуть только блок MPC на графическом процессоре, можно создать модель, имеющую только блок MPC внутри. Обычно во встроенных управляющих модулях, развернутая модель содержит блок контроллера плюс несколько интерфейсных блоков для сигналов ввода/вывода.

Похожие темы