Simulink函数如何绑定到状态

Simulink函数的绑定行为

当Simulink函数位于某个状态内时,该函数会绑定到该状态。绑定会导致以下行为:
函数调用只能在状态操作和状态及其子状态内的转换中发生。
当进入状态时,该功能启用。
当状态退出时,该功能被禁用。

例如,以下Stateflow图表显示了绑定到状态的Simulink函数。
在这里插入图片描述

因为函数队列位于状态A1,所以函数绑定到该状态。
状态A1及其子状态A2和A3可以调用队列,但状态B1不能。
当进入状态A1时,队列启用。
当状态A1退出时,队列被禁用。

Simulink功能禁用时的控制子系统变量
如果Simulink函数绑定到状态,则可以将子系统变量保持在上次执行时的值,也可以将变量重置为初始值。请按照以下步骤操作:
1 在Simulink函数中,双击触发端口以打开“Block Parameters”对话框。
2 为States when enabling选择一个选项。

选项描述
held保存上次执行的子系统变量的值
reset将子系统变量重置为其初始值

将Simulink函数绑定到状态的示例

此示例显示了Simulink函数在绑定到状态时的行为。

在这里插入图片描述
函数队列包含一个框图,每次执行函数时,计数器都会递增1。
在这里插入图片描述
触发器端口的“Block Parameters”对话框显示如下。

在这里插入图片描述

在对话框中,将采样时间类型设置为周期性启用采样时间字段,默认值为1。这些设置告诉函数在启用时对采样时间字段中指定的每个时间步执行。

注:
如果使用固定步长解算器,则采样时间字段中的值必须是固定步长的整数倍。此限制不适用于可变步长求解器。

图表模拟

在这里插入图片描述
模拟图表时,会发生以下操作。
1 发生到状态A1的默认转换,其中包括将本地数据u1设置为1。
2 当输入A1时,功能队列被启用。
3 对队列的函数调用一直持续到(5,sec)后的条件为真。
4 发生从状态A1到B1的转变。
5 当A1退出时,功能队列被禁用。
6 再过两秒后,发生从B1到A1的转换。
重复步骤2至6,直到模拟结束。

变量被held时函数的行为

如果将States when enabling设置为held,则输出y1如下。
在这里插入图片描述
当状态A1在t=5时变为非活动状态时,Simulink函数保持计数器值。当A1在t=7时再次激活时,计数器的值与t=5时的值相同。因此,输出y1随着时间的推移继续增加。

变量重置时函数的行为

如果在启用重置时设置状态,则输出y1如下。
在这里插入图片描述
当状态A1在t=5时变为非活动状态时,Simulink函数不保存计数器值。当A1在t=7时再次激活时,计数器重置为零。因此,输出y1也重置。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值