使用after运算符替换at运算符
如果将at运算符与绝对时间-时间逻辑一起使用,则在尝试模拟模型时会出现错误消息。请改用after运算符。
假设您想使用(5.33,秒)的转换来定义时间延迟。
将转换更改为after(5.33秒),如图所示。这样就不报错了。
使用带有后运算符的外部自循环转换来替换每个运算符
如果您使用带有绝对时间-时间逻辑的every运算符,则在尝试模拟模型时会出现错误消息。请改用带有after运算符的外部自循环转换。
假设您想在图表执行期间每2.5秒打印一次活动状态的状态消息,如Check_status的状态操作所示。
将状态操作替换为外部自循环转换,如图所示。
还要在状态中添加一个历史节点H,以便图表记住每次自循环转换之前的状态设置。
下面自己搭建一个流程图,
流程图分为off-state和on-state,当duration(data<30)满足30个步长后,进入on-state,然后每隔6个步长调用一次on-state,在on state里不断进行cold和hot两个chart的判断转换。
现在加入历史节点H。生成代码看看效果。
看一下生成的代码,可以看到比未加入历史节点时多了一个was_on_state标志位,这个就是记录保存历史状态的,以便下一次直接进入上一次的历史状态。
使用具有离散采样时间的图表可以更高效地生成代码
为不在触发或启用子系统内的离散图表生成的代码使用整数计数器来跟踪时间,而不是Simulink®提供的时间。这允许在开销和内存方面更有效地生成代码,并使该代码能够在“软件在环”(SIL)和“处理器在环”模拟模式中使用。