主要内容

使用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_fcy_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_try_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)

另请参阅

对象

相关的例子

更多关于