主要内容

激活金宝app通过发送输出事件来阻止

一个输出事件是发生在状态流中的事件吗®图表,但在Simulink中可见金宝app®图表外的方块。这种类型的事件使图表能够就图表中发生的事件通知模型中的其他块。定义输出事件:

  1. 将事件添加到状态流图中,如在图表中定义事件

  2. 设置范围属性的事件输出仿真软件金宝app.对于您定义的每个输出事件,输出端口将出现在statflow块上。

  3. 输出事件可以通过控制信号(边缘触发器)的更改或对Simulink块的函数调用来激活模型中的其他块。金宝app

    • 要指定边缘触发的输出事件,请设置触发财产要么边缘

    • 要指定函数调用输出事件,请设置触发财产函数调用

有关更多信息,请参见通过广播事件同步模型组件

广播输出事件

要将输出事件从一个图表广播到另一个图表,请使用操作符发送.输出事件广播的格式为

发送(event_name)
在哪里event_name是输出事件。

激活金宝app使用边缘触发器来阻塞

边缘触发的输出事件激活Simulink块,使其在当前时间步长的仿真中执行。金宝app在这种输出事件中,控制信号的变化充当触发器。有关更多信息,请参见使用触发子系统(金宝app模型)

何时使用边缘触发输出事件

当您的模型需要定期或周期性地金宝app执行子系统时,要激活Simulink子系统,请使用边缘触发输出事件。例如,该模型使用边缘触发输出事件定期激活两个触发子系统。

该图表包含边缘触发的输出事件e1在模拟期间在0和1之间交替。

在状态流图中触发属性的边触发输出事件总是要么边缘.金宝appSimulink触发的子系统可以有一个不断上升的下降,或要么边缘触发。该模型显示了触发一个要么边缘子系统不断上升的边缘子系统:

  • 输出事件触发要么每个广播的边缘子系统。当事件信号从0切换到1或从1切换到0时触发。

  • 输出事件触发不断上升的每一次广播的边缘子系统。触发器只在事件信号从0切换到1时发生。

多个边缘触发输出事件的排队行为

对于每个时间步骤,图表只分派一次由边缘触发的输出事件的广播。当在一个时间步骤中有多个广播时,图表分派一个广播,并在连续的时间步骤中排队分派其余的广播。例如,在这个模型中,Caller图表使用边缘触发的输出事件output_cmd激活Callee图表。

调用者图试图在一个时间步骤中广播相同的由边缘触发的输出事件四次。

每次Callee图表被激活时,输出数据y增量。

当你模拟模型的时候t= 1时,调用者图分派四个输出事件中的一个。Callee图在这个时间步长中执行一次。调用者图表将其他三个事件广播排队,以便将来一次分派t= 2,t= 3,t= 4。因此,价值y每次以1的增量增长t= 1,t= 2,t= 3,t= 4。

激活金宝app通过使用函数调用来阻塞

函数调用输出事件激活Simulink块,使其在仿真的当前时间步骤中执行。金宝app这种类型的输出事件只对可以用函数调用触发的块有效。有关更多信息,请参见使用函数调用子系统(金宝app模型)

何时使用函数调用输出事件

使用函数调用输出事件来激活Simulink块时,您的模型需要访问块的输出数据,与函数调用相同的金宝app时间步骤。例如,该模型包含两个函数调用输出事件:

  • 在“从边缘到功能”图中,输出事件调用激活循环调度程序图。

  • 在循环调度程序图中,输出事件A1激活Simulink子系金宝app统。

有关更多信息,请参见在单个步骤中多次调度子系统

多个函数调用输出事件的交错行为

当一个函数调用输出事件在一个时间步长中有多个广播时,图表分派该时间步长的所有广播。函数调用子系统的执行与图表的执行是交错的,因此函数调用子系统的输出在图表中立即可用。例如,在这个模型中,Caller图表使用函数调用输出事件output_cmd激活Callee图表。

调用者图试图在一个时间步骤中广播相同的函数调用输出事件四次。

每次Callee图表被激活时,输出数据y增量。

当您模拟模型时,Caller图表会同时分派所有四个输出事件t= 1。Callee图在这个时间步长内执行四次。calllee图的执行与Caller图的执行交错,这样Callee图的输出立即可用。因此,| y |的值在某一时刻从0增加到4t= 1。

使用边缘触发事件来近似函数调用

如果你不能使用函数调用输出事件,例如用于HDL代码生成,你可以使用以下方法来近似函数调用:

  • 边缘触发的输出事件

  • 启用一个子系统

  • 连续两次事件广播

由边缘触发的连续输出事件的排队行为使您能够使用启用的子系统来近似函数调用。

例如,在这个模型中,边缘触发的输出事件output_cmd激活启用的子系统。

调用者图通过使用发送操作符。

仿真开始时,触发信号的值为0。在时间t= 20,海图发出output_cmd,将触发信号的值改为1。启用的子系统变为活动的,并在该时间步长期间执行。由于没有发生其他事件广播,启用的子系统将继续在每个时间步骤执行,直到模拟结束t= 40。Display块显示最终值为40。

为了近似函数调用,在同一个动作中添加第二个事件广播。

仿真开始时,触发信号的值为0。在时间t= 20,海图发出output_cmd,将触发信号的值改为1。启用的子系统变为活动的,并在该时间步长期间执行。图表将第二个事件排队,以便在下一个时间步骤分派。在时间t= 21时,图表分派第二个输出事件,该事件将触发器信号的值更改为0。启用的子系统停止执行,Display块显示最终值20。

尽管可以近似函数调用,但执行行为有细微的差别。执行一个函数调用子系统执行提供触发器的图表操作。执行启用的子系统图表操作的执行完成。

输出事件与输出端口的关联

当您在图表中定义输出事件时,输出事件端口将出现在图表块的右侧。输出事件必须是标量,但是可以在图表中定义多个输出事件。的港口属性指定输出端口的位置。

默认情况下,港口值按照添加输出事件的顺序出现。可以通过修改港口事件的属性。当你改变港口属性用于输出事件港口其余输出事件的值将自动重新编号。

另请参阅

相关的话题