input event 发生在Stateflow®图表之外,但仅在该图表中可见。这种类型的事件使其他Simulink®块(包括其他状态流程图)能够通知其外部发生的特定事件图表。要定义输入事件:
将事件添加到状态流程图中。
将事件的Scope属性设置为Input from Simulink。在Simulink模型中,Stateflow块的顶部出现一个触发端口。
输入事件可以通过控制信号(边缘触发器)的变化或Simulink块的函数调用来激活状态流程图。
要指定边缘触发的输入事件,请将Trigger属性设置为以下选项之一:
Rising
Falling
Either
要指定函数调用输入事件,请将Trigger属性设置为function call。
您不能在同一状态流图中混合使用边缘触发和函数调用输入事件。混合这些输入事件会导致在解析和模拟过程中出错。
使用边缘触发器激活状态流图
边缘触发的输入事件导致状态流程图在模拟的当前时间步内执行。对于这种类型的输入事件,控制信号的变化充当触发器。
边缘触发器类型 | 描述 |
---|---|
Rising | 上升边缘触发器。当控制信号从零或负值变为正值时,图表被激活。 |
Falling | 下降沿触发器。当控制信号从正值变为零值或负值时,图表被激活。 |
Either | 上升沿或下降沿触发器。当控制信号在任一方向上变化时超过零时,图表被激活。 |
在所有情况下,控制信号的值必须过零才能成为有效的边缘触发器。例如,从-1变为1的信号是有效的上升沿触发器。从1变为2的信号不是有效的上升沿触发器。
何时使用边缘触发事件
当你的模型需要定期或周期性执行图表时,使用边缘触发的输入事件来激活图表。
多边缘触发输入事件的行为
在任何给定的时间步,都会根据端口号按升序检查输入事件。图表为每个有效事件唤醒一次。对于边缘触发的输入事件,可以在同一时间步中出现多个边缘,在该时间步中多次唤醒图表。在这种情况下,事件会根据其端口号按升序唤醒图表。
使用函数调用激活状态流图
函数调用输入事件导致在模拟的当前时间步期间执行状态流程图。对于这种类型的输入事件,还必须为调用Stateflow图的块定义一个函数调用输出事件。
何时使用Function-Call输入事件
当你的模型需要在函数调用的同一时间步访问图表的输出数据时,使用函数调用输入事件激活图表。函数调用输入事件会激活循环调度器图表。
多种Function-Call 输入事件的行为
对于函数调用输入事件,只存在一个触发事件。事件的调用者显式调用并执行图表。在单个时间步中,只有一个函数调用有效。
输入事件与控制信号的关联
在图表中定义一个或多个输入事件时,图表块的顶部会显示一个触发端口。多个外部Simulink块可以通过连接到触发端口的信号向量触发输入事件。输入事件的port属性指定了连接到触发器端口的控制信号向量的索引。
你默认情况下,端口值按照添加输入事件的顺序显示。可以通过修改事件的Port属性来更改这些分配。更改输入事件的Port属性时,其余输入事件的端口值会自动重新编号。
输入事件允许的数据类型
对于触发端口的多个输入事件,所有信号必须具有相同的数据类型。使用不同数据类型的信号作为输入事件会导致模拟过程中出现错误。例如,你可以将两个double类型的输入信号复用,用作图表的输入事件。
不能复用不同数据类型的两个输入信号,如布尔值和双精度。