Используйте графический процессор, чтобы симулировать контроллер 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')

Откройте диалоговое окно Параметров конфигурации, нажав на Model Settings. Затем в Генерацию кода разделе выберите Generate графического процессора кода.

Теперь можно запустить модель, нажав Запуск или с помощью команды 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. Обычно во встроенных модулях управления развернутая модель содержит блок контроллера плюс несколько блоков интерфейса для входных/выходных сигналов.

Похожие темы