Engee 文档

有限自动机调试器

页面进行中。

基于有限自动机 创建模型是描述复杂离散逻辑的有效方法。为了简化对这类自动机的分析,并对其行为进行控制,Engee 内置了一个调试器,允许您逐步跟踪执行情况,并检测有限自动机的错误。

调试器可在Chart 块内使用,通过为statestateflow state 和/或transitionstateflow default transition 设置断点即可启用调试器:

state machines breakpoint 1

断点显示为红色标记state machines breakpoint 1 (如果禁用,则显示为灰色state machines breakpoint 2 )。

*断点*是有限自动机调试器的一个重要工具,可用于设置停止模型执行的条件。这样就可以研究模型在有限自动机执行过程中某一特定步骤的行为。因此,断点可用于

  • 逐步控制有限自动机的仿真;

  • 查看特定步骤的变量值

  • 分析何时以及哪些状态开始激活或终止;

  • 检查状态机运算符组 (进入组、期间组和退出组)是否被执行;

  • 分析转换的有效性,包括带有时间逻辑边缘跟踪变化指示器 操作符的转换;

  • 诊断隐藏的逻辑错误和未出现在模型输出中的不稳定状态。

使用断点

断点可设置为

  • *状态*stateflow state - 进入时、执行过程中和退出时;

  • *过渡*stateflow default transition - 检查条件时或执行过渡之前。

要在状态stateflow state 或过渡stateflow default transition 上添加断点,请左键单击所需元素,然后单击出现的断点图标。激活的断点将用红色标记标出:

sm breakpoints 1

state machines breakpoint 4

您可以为状态和转换设置不同类型的断点。为此,请用鼠标左键单击断点:

在状态中

在过渡处

state machines breakpoint 3

  • 进入状态时 (entry)--在执行`entry`之前模拟停止;

  • 处于状态时 (during)--在每个时钟周期执行`during`之前停止模拟;

  • 离开状态时 (exit) - 执行`exit`后立即暂停模拟,然后转入另一状态。

state machines breakpoint 11

  • 当过渡有效时 - 当过渡有效并可以执行时,模拟暂停;

  • 当过渡被测试时 - 当检查过渡条件时暂停模拟。如果过渡不包含逻辑条件(例如无条件过渡),则无法使用此参数。

将光标移至断点上时,将显示所选类型:

state machines breakpoint 4
state machines breakpoint 12

根据要监控的状态/转换操作点,可以启用任意复选框组合。如果取消选中所有复选框,则会删除断点。

要暂时禁用断点(使其保留在状态/过渡上但不触发),请再次单击断点图标:

state machines breakpoint 3

断点列表

要切换到断点列表,请左键单击已创建的断点,然后选择 断点列表

state machines breakpoint 5

这将打开有限自动机模型的所有断点列表:

state machines breakpoint 6

通过断点列表,您可以

  • 跟踪模型模拟过程中哪些断点被触发以及触发的次数。执行次数显示在 "执行次数"栏中。被触发的断点将以绿色高亮显示:

    state machines breakpoint 14 x

  • 左键单击列表中的断点,然后单击 Delete breakpoint 图标state machines breakpoint 7 ,即可删除断点。

  • 用鼠标左键单击列表中的断点,然后单击 Add breakpoint 图标,添加断点state machines breakpoint 8 。在打开的窗口中选择所需的参数—​触发器类型,必要时选择条件:

    state machines breakpoint 9

  • 启用/禁用断点—​为此请控制相应点上的复选框state machines breakpoint 10

  • 在所需行的 "条件"列中输入表达式,为断点指定条件。例如,y  5或"(y == 0) & (n > 5)"。条件可以指定有限自动机逻辑 支持的逻辑表达式。Chart 块中可用的输入、输出和所有变量的值都将用于这些表达式。

模型执行控制

分步执行仅在 Chart 块中可用,不会影响工作区中模型的全局执行。退出 Chart 块后,面板将被隐藏,Engee 返回正常模拟模式。
Chart 块的活动断点不会与断点模型脚本 冲突。

Chart 块内设置第一个断点后,画布左上角将出现一个逐步仿真控制面板:

state machines breakpoint 14

有三个运行控制命令可供选择:

  1. `Step In`state machines breakpoint 14 1 - 在当前状态或转换中移动到下一个执行步骤。该命令分步执行有限自动机元素的细节。它可以是

    • 进入有限自动机图;

    • 检查过渡条件

    • 执行过渡操作

    • 激活状态

    • 执行 "进入"、"持续 "或 "退出 "操作符组;

    • 过渡到子状态 或嵌套过渡图

  2. `Step Over`state machines breakpoint 14 2 - 完整地执行当前步骤,不进入内部部分。该命令用于顺序通过有限自动机的关键执行步骤:

    • 激活有限自动机;

    • 状态转换;

    • 检查可用的转换

    • 执行转换动作

    • 执行状态动作

  3. `Step Out`state machines breakpoint 14 3 - 终止当前状态、转换、子状态或嵌套转换图的执行,并返回上一级执行。该命令允许您退出当前嵌套层级,并在执行输入的层级继续执行自动机。


为了直观地跟踪自动机模型的当前执行阶段,使用了高亮显示功能—​在模型本身和断点列表的执行过程中,活动元素均以绿色高亮显示:

state machines breakpoint 14 4

除了用颜色突出显示外,系统还以图标的形式提供提示,当您将光标移至图标上时,系统会弹出辅助信息,说明模型在当前阶段的具体运行情况:

  • sm before entering 进入状态前

  • sm during 状态内部

  • sm before exit 离开状态前

  • sm before testing transition 检查过渡条件前

  • sm before transition 过渡前

例如

state machines breakpoint 14 5 state machines breakpoint 14 6

查看和编辑变量

在逐步模拟有限自动机的过程中,您不仅可以观察哪些状态和转换被激活,还可以监控 Chart 块内使用的变量值。

为此,请打开 Chart 块的设置窗口debug article icon 1 - 它将显示所有可用变量。

state machines breakpoint 14 7

在该窗口中,您可以

  • 查看每一步变量的当前值;

  • 查看变量值的变化—​这些变化将以绿色高亮显示,与断点列表类似;

  • 在模型停止时直接手动更改某些变量的值。

    只有在仿真暂停和有活动断点时才能编辑变量值。

*更改变量值:

  1. 将光标移至 ""列中所需的行上;

  2. 单击当前值;

  3. 输入新值并按 Enter 键。

可更改*局部变量*和*输出信号*。输入信号的值由外部建模环境(图表 块之外)设置。

实用链接