主要内容

通过使用控制函数调用子系统绑定行动

使用。将指定的数据和事件绑定到状态绑定行动。绑定到一个状态的事件只能由该状态中的动作或其子动作传播。还可以将函数调用事件绑定到一种状态,以启用或禁用该事件触发的函数调用子系统。函数调用子系统在进入绑定事件的状态时启用,在退出该状态时禁用。函数调用子系统的执行完全绑定到调用它的状态的活动。

将函数调用子系统绑定到状态

默认情况下,函数调用子系统由定义相关函数调用输出事件的图表控制。这种关联意味着函数调用子系统在图表唤醒时启用,并在图表进入睡眠状态之前保持活动状态。要实现更精细的控制级别,您可以通过使用绑定行动(见绑定操作).

您可以将函数调用输出事件绑定到一个状态。当您创建这种类型的绑定时,由事件调用的函数调用子系统也被绑定到状态。在这种情况下,当进入状态时功能调用子系统是启用的,当退出状态时功能调用子系统是禁用的。

当您将一个函数调用子系统绑定到一个状态时,您可以在启用和禁用该子系统时微调该子系统的行为,如下节所述:

当子系统被禁用时处理输出

虽然函数调用子系统在禁用时不会执行,但模型中的其他块可以使用它们的输出信号。如果一个函数调用子系统被绑定到一个状态,那么您可以将它的输出保持在前一个时间步长的值上,或者在子系统被禁用时将输出重置为初始值。遵循以下步骤:

  1. 双击外港块,打开“块参数”对话框。

    “输出块参数”对话框。

  2. 选择一个选项输出时禁用

    选择: :
    举行 保持最近的产值
    重置 将输出重置为初始值
  3. 点击好吧记录设置。

    请注意

    设置输出时禁用只有当函数调用子系统绑定到一个状态时才有意义,如将函数调用子系统绑定到状态

子系统启用时状态控制行为

如果一个函数调用子系统绑定到一个状态,那么您可以将子系统状态变量保持在它们从上一个时间步长的值上,或者在子系统执行时将状态变量重置为初始条件。通过这种方式,绑定状态获得了对函数调用子系统状态变量的完全控制。遵循以下步骤:

  1. 双击子系统的触发端口,打开“块参数”对话框。

    “触发端口的阻塞参数”对话框。

  2. 选择一个选项州时启用

    选择: :
    举行 维护包含触发器端口的子系统的最新状态值
    重置 恢复到包含此触发器端口的子系统状态的初始条件
    继承

    从函数调用启动器的父子系统继承这个设置。如果启动器的父节点是模型根节点,则保留继承的设置。如果触发器有多个启动器,则所有启动器的父级必须具有相同的设置:要么是全部举行或全部重置

  3. 点击好吧记录设置。

    请注意

    设置州时启用只有当函数调用子系统绑定到一个状态时才有意义,如将函数调用子系统绑定到状态

将函数调用子系统绑定到状态

该模型使用触发器事件触发函数调用子系统E绑定到图表的状态。在解算器窗格中,模型指定固定步长为1的固定步长求解器。

图表包含两种状态。事件E结合国家一个与行动

绑定:E

事件E为图表定义的范围为输出仿真软件金宝app以及一种触发类型函数调用

函数调用子系统包含一个触发器端口块、一个输入端口、一个输出端口和一个简单的框图。该框图使用单位延迟(Unit Delay)块在每个时间步骤中将计数器增加1。

触发器端口的“块参数”对话框包含以下设置:

  • 触发类型函数调用

  • 州时启用重置.当启用函数调用子系统时,此设置将其状态值重置为零。

  • 样品时间类型触发.此设置将函数调用子系统设置为仅在启用时由调用事件触发时才执行。

设置样品时间类型周期使样品时间字段,默认值为1。属性中指定的每个时间步骤强制执行函数调用子系统样品时间字段,而它是启用的。为实现这一点,绑定函数调用子系统的调用事件的状态必须发送时间步长与指定的采样率相一致的事件样品时间字段。状态可以以模拟采样率发送带有入口或操作期间的事件。

  • 对于固定步长采样,样品时间值必须是固定步长的整数倍。

  • 对于变步长采样,采样时间值没有限制。

要了解状态如何控制绑定的函数调用子系统,请开始模拟模型。

  • 在时间t = 0时,默认过渡到状态一个发生。状态一个执行其绑定和进入操作。绑定操作绑定事件E一个,启用函数调用子系统并将其状态变量重置为0。入口操作触发函数调用子系统并执行它的框图。该框图使用单位延迟块将计数器增加1。Unit Delay块输出值为0,并保持新值为1,直到下一次调用子系统。

  • 在时间t = 1时,来自模型测试状态的下一个更新事件一个为即将离任的过渡。状态转换B不发生因为时间操作符蜱虫后(10)允许仅在接收到十个更新事件后进行转换。状态一个保持活动状态,并且在动作触发函数调用子系统时保持活动状态。单位延迟块输出其保持值为1。子系统还增加它的计数器以产生值2,单位延迟块将保持该值直到下一次触发执行。

  • 接下来的8个更新事件在每个时间步骤中增加一个子系统输出。

  • 在时间t = 10时,从状态一个B发生。因为绑定到状态一个不再活动时,函数调用子系统将被禁用,其输出降回0。

  • 在时间t = 11时,从状态B一个发生。同样,绑定操作启用了函数调用子系统。随后的更新事件会在每个时间步骤中增加一个子系统输出,直到下一个状态转换B发生在时间t = 21。

避免使用绑定的Muxed触发器事件

绑定事件为图表中的单个状态提供了对函数调用子系统的控制。当您允许其他事件通过mux触发函数调用子系统时,此控制将不起作用。例如,这个模型定义了两个函数调用事件来使用Mux块触发函数调用子系统。

在表格中,E1结合国家一个,但E2没有。状态B发送触发事件E2在它的进入动作中。

模拟此模型时,从状态转换时输出不会重置一个B发生。

当您通过mux向函数调用子系统提供多个触发器事件时,不建议绑定。Muxed触发器事件会干扰事件绑定并导致未定义的行为。