使用MPC控制器块内部函数调用和触发子系统
这个例子展示了如何配置和模拟MPC控制器模块放置在函数调用和触发子系统。
定义植物模型和MPC控制器
定义一个植物。
工厂= ss (tf (1 [3], [1 0.6 - 1]));
定义的MPC控制器工厂。
t = 0.1;%采样时间p = 10;%预测地平线m = 2;%控制地平线重量=结构(“MV”0,“MVRate”,0.01,机汇的1);%的重量MV =结构(“最小值”负无穷,“马克斯”正,“杀鼠灵”,-100,“RateMax”,100);%输入约束OV =结构(“最小值”2,“马克斯”2);%输出约束mpcobj = mpc(植物、t、p、m,重量、MV, OV);
配置和模拟MPC控制器块内部函数调用子系统
直接调用函数调用子系统在模拟另一个块。如果你定期调用函数调用子系统和MPC控制器对象中指定相同的样品时间得到完全相同的行为作为一个MPC控制器块直接放置在你们工厂的反馈循环,(没有一个子系统)和不继承相同的样品时间。如果你必须使用一个不同的样品时间,那么你应该:
确保操纵变量率(这取决于被控变量的最后一个值)是正确处理控制器权重和约束,
启用自定义估计而不是使用内置的估计,内置的估计使用样本时间MPC对象提供一个状态估计的MPC优化问题。
打开模型。
mdl1 =“mpc_rtwdemo_functioncall”;open_system (mdl1)
参考信号振幅的正弦波1
和频率的0.4
赫兹。MPC控制器块在MPC触发子系统。
open_system ([mdl1“函数调用子系统/政策委员会”])
配置控制器使用继承采样时间。为此,选择继承采样时间MPC控制器块的属性。
调用函数调用子系统定期使用正确的样品时间。
对于这个示例,因为控制器有一个示例以0.1秒的成绩,配置触发块内部函数调用子系统使用相同的样品时间。
对于这个示例,使用函数调用生成器块执行的函数调用子系统采样率为0.1秒。
模拟模型。
close_system ([mdl1“MPC在函数调用子系统/ MPC控制器”])open_system ([mdl1' /输入'])open_system ([mdl1/ /引用/输出的])sim (mdl1)
- - >将模型转换为离散时间。- - >输出假设干扰# 1添加到测量输出集成的白噪声。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。
控制器的努力和工厂工作区(由输出保存到基地到工作空间
在函数调用子系统)作为变量u_fc
和y_fc
,分别。
关闭仿真软件模型。万博1manbetx
bdclose (mdl1)
配置和模拟MPC控制器内部块触发子系统
每次执行触发事件发生时触发子系统。相同的考虑继承样品时间早了函数调用子系统适用。
打开模型。
mdl2 =“mpc_rtwdemo_triggered”;open_system (mdl2)
MPC的MPC控制器块触发子系统。
open_system ([mdl2“触发子系统/政策委员会”]);
MPC块配置为使用一种遗传样品时间,像你一样的函数调用子系统模型。
定期执行触发子系统与正确的样品时间。
对于这个示例,配置触发块内触发子系统使用下降
触发类型。
对于这个示例,使用脉冲发生器的块来提供一个周期触发信号的采样率为0.1秒。
模拟模型。
close_system ([mdl2“MPC在触发子系统/ MPC控制器”])open_system ([mdl2' /输入'])open_system ([mdl2/ /引用/输出的])sim (mdl2)
控制器的努力和工厂工作区(由输出保存到基地到工作空间
块触发子系统)作为变量u_tr
和y_tr
,分别。
关闭仿真软件模型。万博1manbetx
bdclose (mdl2)
比较反应
比较仿真结果从函数调用子系统和触发子系统生成的结果一个MPC控制器块,不是放在一个子系统,不继承采样时间。
mdl =“mpc_rtwdemo”;open_system (mdl) sim (mdl)
被控变量的反应进行比较。
图绘制(t, u,“b -”t u_fc“罗”,u_tr t (1: end-1)“k”。)标题(被控变量的)传说(“没有子系统”,函数调用的,“触发”)
比较反应装置的输出。
图绘制(t y“b -”t y_fc“罗”,y_tr t (1: end-1)“k”。)标题(“植物输出”)传说(“没有子系统”,函数调用的,“触发”)
这三个模型的结果数值相等。
关闭仿真软件模型。万博1manbetx
bdclose (mdl)