这个例子展示了如何模拟和产生实时代码用于与编码器的Simulink™MPC控制器块。金宝app代码可以在单,双精度产生。
要运行这个例子,Simulink和Simu金宝applink的编码器是必需的。
如果〜mpcchecktoolboxinstalled('金宝appSIMULINK')DISP(的金宝appSimulink需要运行这个例子。“)返回结束如果〜mpcchecktoolboxinstalled('金宝appsimulinkcoder')DISP(需金宝app要Simulink编码器来运行这个例子。);返回结束
您必须具有写权限才能生成相关的文件和可执行文件。因此,在开始仿真和代码生成之前,将当前目录切换到一个临时目录。
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时;%控制范围权重=结构('MV',0,'MVRate',0.01%,'OV',1);%权重MV =结构(“最低”,-Inf,“最大”,天道酬勤,'RateMin',-100,'RateMax',100);%输入约束OV =结构(“最低”,-2,“最大”,2);%输出限制mpcobj = MPC(植物中,Ts,P,M,重量,MV,OV);
默认情况下,MPC控制器块使用双精度数据进行模拟和代码生成。
在Simulink中模拟该模型。金宝app
mdl1 ='mpc_rtwdemo';open_system (mdl1) sim (mdl1)
——>转换模型离散时间。——>假设被测输出通道1的输出干扰为集成白噪声。- - >”模型。“mpc”对象的“噪音”属性为空。假设每个测量的输出通道上都有白噪声。
控制器努力和电站输出被保存到基工作区作为变量ü
和ÿ
, 分别。
构建与模型rtwbuild
命令。
DISP(“生成C代码...请等待,直到它完成。”)set_param(mdl1,'RTWVerbose',“关”)rtwbuild (mdl1);
生成C代码...请等待,直到它完成。###启动构建过程:mpc_rtwdemo ###的构建过程的顺利完成:mpc_rtwdemo
在Windows®系统上,命名为的可执行文件mpc_rtwdemo.exe
出现在构建过程完成后的临时目录。
运行可执行文件。
如果ISPC DISP(“运行的可执行......”)状态=系统(mdl1);其他DISP(“这个例子只能运行在Windows系统上可执行。”)结束
示例仅在Windows系统上运行可执行文件。
成功的可执行文件完成后(状态= 0),命名为数据文件mpc_rtwdemo.mat
出现在临时目录中。
比较生成代码的响应(rt_u
和rt_y
)从以前的模拟在Simulink(响应金宝appü
和ÿ
)。
这些响应在数值上是相等的。
您还可以配置MPC块在仿真和代码生成使用单精度数据。
MDL2 ='mpc_rtwdemo_single';open_system(MDL2)
要做到这一点,设置输出数据类型MPC控制器块的属性来单
。
在Simulink中模拟该模型。金宝app
SIM(MDL2)
控制器努力和电站输出被保存到基工作区作为变量U1
和Y1
, 分别。
构建与模型rtwbuild
命令。
DISP(“生成C代码...请等待,直到它完成。”)set_param(MDL2,'RTWVerbose',“关”)rtwbuild (mdl2);
生成C代码...请等待,直到它完成。###启动构建过程:mpc_rtwdemo_single ###的构建过程的顺利完成:mpc_rtwdemo_single
在Windows系统上,可执行文件命名mpc_rtwdemo_single.exe
出现在临时目录生成过程完成后
运行可执行文件。
如果ISPC DISP(“运行的可执行......”)状态=系统(mdl2);其他DISP(“这个例子只能运行在Windows系统上可执行。”)结束
示例仅在Windows系统上运行可执行文件。
成功的可执行文件完成后(状态= 0),命名为数据文件mpc_rtwdemo_single.mat
出现在临时目录中。
比较生成代码的响应(rt_u1
和rt_y1
)从以前的模拟在Simulink(响应金宝appU1
和Y1
)。
这些响应在数值上是相等的。
关闭Simulink金宝app模型,并返回到原来的目录。
bdclose(mdl1)bdclose(MDL2)CD(CWD)