此示例显示了如何使用Simulink®Coder™模拟和生成MPC控制器块的实时码。金宝app可以在单个和双重诊断中生成代码。
要运行此示例,需要Simulink和Sim金宝appulink编码器。
如果〜mpcchecktoolboxinstalled('金宝appsimulink')disp('金宝appSimulink需要运行此示例。'的)返回结尾如果〜mpcchecktoolboxinstalled('金宝appsimulinkcoder')disp('金宝appSimulink编码器需要运行此示例。);返回结尾
您必须具有写入权限以生成相关文件和可执行文件。因此,在开始仿真和代码生成之前,将当前目录更改为临时目录。
CWD = PWD;tmpdir = tempname;MKDIR(TMPDIR);CD(TMPDIR);
定义SISO植物。
植物= SS(TF([3 1],[1 0.6 1]));
定义工厂的MPC控制器。
ts = 0.1;%采样时间p = 10;%预测地平线m = 2;%控制地平线权重= struct('mv',0,'mvrate',0.01,'ov',1);%重量mv = struct('min',-inf,'最大限度',inf,'ratemin',-100,'ratemax',100);%输入约束ov = struct('min',-2,'最大限度',2);%输出约束MPCOBJ = MPC(植物,TS,P,M,重量,MV,OV);
默认情况下,MPC控制器块使用双精度数据进行仿真和代码生成。
在Simulink中模拟模型。金宝app
mdl1 ='mpc_rtwdemo';Open_System(MDL1)SIM(MDL1)
- >将模型转换为离散时间。- >假设添加到测量的输出干扰,输出通道#1是集成的白噪声。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。
控制器的工作量和工厂输出作为变量保存到基础工作空间中你
和y
, 分别。
用它构建模型SLBUILD.
命令。
DISP('生成C代码......请等到它完成。)set_param(mdl1,'rtwverbose'那'离开')SLBUILD(MDL1);
生成C代码......请等到它完成。###开始构建过程:MPC_RTWDEMO ###成功完成构建过程:MPC_RTWDEMO构建摘要顶级模型目标构建:模型动作重建原因============================================================================================ mpc_rtwdemo代码生成和编译的代码生成信息文件不存在。1个中的1个(0型号已达到迄今为止)构建持续时间:0H 0M 42.282S
在Windows®系统上,一个名为的可执行文件mpc_rtwdemo.exe.
在构建过程完成后出现在临时目录中。
运行可执行文件。
如果ispc disp('运行可执行文件......')状态=系统(MDL1);别的DISP(“该示例仅在Windows系统上运行可执行文件。的)结尾
该示例仅在Windows系统上运行可执行文件。
可执行文件成功完成后(Status = 0),一个名为的数据文件mpc_rtwdemo.mat.
出现在临时目录中。
比较生成的代码的响应(RT_U.
和RT_Y.
)在Simulink中的先前模拟中的响应(金宝app你
和y
)。
响应是数值相等的。
您还可以配置MPC块以在仿真和代码生成中使用单精度数据。
mdl2 ='mpc_rtwdemo_single';Open_System(MDL2)
为此,请设置输出数据类型MPC控制器块的属性单身的
。
在Simulink中模拟模型。金宝app
SIM(MDL2)
控制器的工作量和工厂输出作为变量保存到基础工作空间中U1.
和Y1.
, 分别。
用它构建模型SLBUILD.
命令。
DISP('生成C代码......请等到它完成。)set_param(mdl2,'rtwverbose'那'离开')SLBUILD(MDL2);
生成C代码......请等到它完成。###启动构建过程:MPC_RTWDEMO_SENGELE ###成功完成构建过程:MPC_RTWDEMO_SINGLE构建摘要内置顶部模型目标:模型动作重建原因=================================================================================================== mpc_rtwdemo_single代码生成的代码和编译的代码生成信息文件不存在。1个中构建的1个(0型号已最新的型号)构建持续时间:0H 0M 28.411s
在Windows系统上,一个名为的可执行文件mpc_rtwdemo_single.exe.
构建过程完成后出现在临时目录中
运行可执行文件。
如果ispc disp('运行可执行文件......')状态=系统(MDL2);别的DISP(“该示例仅在Windows系统上运行可执行文件。的)结尾
该示例仅在Windows系统上运行可执行文件。
可执行文件成功完成后(Status = 0),一个名为的数据文件mpc_rtwdemo_single.mat
出现在临时目录中。
比较生成的代码的响应(RT_U1
和RT_Y1
)在Simulink中的先前模拟中的响应(金宝appU1.
和Y1.
)。
响应是数值相等的。
关闭Simulink金宝app模型,并返回原始目录。
BDCLOSE(MDL1)BDCLOSE(MDL2)CD(CWD)