此示例显示了如何使用Simulink®Coder™模拟和生成MPC控制器块的实时码。万博1manbetx可以在单个和双重诊断中生成代码。
要运行此示例,需要Simulink和Sim万博1manbetxulink编码器。
如果〜mpcchecktoolboxinstalled('万博1manbetxsimulink')disp('万博1manbetxSimulink需要运行此示例。)返回结尾如果〜mpcchecktoolboxinstalled('万博1manbetxsimulinkcoder')disp('万博1manbetxSimulink编码器需要运行此示例。');返回结尾
您必须具有写入权限以生成相关文件和可执行文件。因此,在开始仿真和代码生成之前,将当前目录更改为临时目录。
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中的模型。万博1manbetx
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 30.736s
在Windows®系统上,名为的可执行文件mpc_rtwdemo.exe.
在构建过程完成后出现在临时目录中。
运行可执行文件。
如果ispc disp('运行可执行...')状态=系统(MDL1);别的DISP(“该示例仅在Windows系统上运行可执行文件。)结尾
该示例仅在Windows系统上运行可执行文件。
可执行文件成功完成后(Status = 0),一个名为的数据文件mpc_rtwdemo.mat.
出现在临时目录中。
比较生成的代码中的响应(RT_U.
和RT_Y.
)在Simulink中的先前模拟中的响应(万博1manbetx你
和y
)。
响应是数值相等的。
您还可以配置MPC块以在仿真和代码生成中使用单精度数据。
mdl2 ='mpc_rtwdemo_single';Open_System(MDL2)
为此,请设置输出数据类型MPC控制器块的属性单身的
。
模拟Simulink中的模型。万博1manbetx
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 23.339S
在Windows系统上,一个名为的可执行文件mpc_rtwdemo_single.exe.
构建过程完成后出现在临时目录中
运行可执行文件。
如果ispc disp('运行可执行...')状态=系统(MDL2);别的DISP(“该示例仅在Windows系统上运行可执行文件。)结尾
该示例仅在Windows系统上运行可执行文件。
可执行文件成功完成后(Status = 0),一个名为的数据文件mpc_rtwdemo_single.mat
出现在临时目录中。
比较生成的代码中的响应(RT_U1
和RT_Y1.
)在Simulink中的先前模拟中的响应(万博1manbetxU1.
和y1.
)。
响应是数值相等的。
关闭Simulink万博1manbetx模型,然后返回原始目录。
BDCLOSE(MDL1)BDCLOSE(MDL2)CD(CWD)