Engee 文档

Engee 中的模型调试

调试在模型开发中起着关键作用,它使我们能够检查模型各个部分的操作及其行为是否符合我们的预期。这一过程有助于识别和消除错误,检查数据是否正确传输,尺寸是否符合预期。如果模型的输出不正确,调试可以让我们了解系统的行为在哪里以及如何偏离我们的预期。

本文将介绍使用 Engee 工具调试模型的主要方法。

模型的初始调试

在模型开发的初始阶段,确保其组件和连接(信号线)正常工作非常重要。初始调试允许您识别基本错误,如错误的块参数、错误的输入数据或错误的执行逻辑。

信号图

最简单的检查方法是标记要记录的信号signal logging 1 并在图表上观察模型开始出现错误的地方(更多详情请参见文章图表 )。

禁用和跳过区块

在调试模型的过程中,经常需要暂时不执行某些块,这类似于文本编程语言中的代码注释。

要禁用/跳过某个程序块,请右键单击该程序块并在右键菜单中选择必要的选项:

  • 禁用程序块 - 从模型中完全排除该程序块,就像它不存在一样。它的输入和输出被断开,不会以任何方式参与建模过程。这样您就可以测试模型在没有该程序块的情况下是如何工作的。因此,如果模块断开连接,则不会有信号通过,与其输出相关的组件也不会接收数据。

    comment out 1

  • 跳过程序块 - 程序块保留在模型中,但其功能被忽略。程序块的输入直接连接到其输出,数据通过时保持不变。这相当于将所有区块的输入连接到其相应的输出。

    comment through 1

    某些区块无法通行。

设置窗口的 "属性 "选项卡

settings first cn

选择模拟模式

参数 模式 允许您根据调试任务和性能自定义仿真执行模式。对于调试而言,该模式对于最大限度缩短启动时间和简化模型处理尤为有用。共有两种模式可供选择:

  • 快速初始化 - 通过简化键入和禁用优化,模型运行速度尽可能快。这种模式便于调试,因为可以快速检查模型中的变化,而无需长时间等待启动。对于频繁更改模型结构或参数的情况尤其有用。

  • 快速计数 - 优先考虑的是高性能和减少计算时间。虽然这种模式在调试时不太灵活,但在验证的最后阶段,当需要确保计算的正确性和稳定性时,它还是很有用的。

因此,建议在初始阶段使用 快速初始化 模式快速查找和消除错误,在最后阶段使用 快速计数 检查模型性能。

仿真速度控制

通过 控制模拟速度 参数,您可以设置模拟时间与实际时间的比率,即 1 实际秒钟内应经过多少秒钟的模拟。

该设置对调试非常有用,因为放慢模拟速度有助于更好地分析模型的实时行为。您可以

  • 图表 上清晰跟踪信号变化;

  • 方便地使用动画,逐步检查模型的执行情况。

因此,放慢仿真速度可以创造一个可控的工作环境,让您在调试的早期阶段就能与模型互动、分析信号行为并排除故障。

设置窗口的 "调试"选项卡

显示信息

调试模型时,重要的是能够直观地跟踪关键特征,以了解数据是如何在块中传输和处理的。在 Engee 中可以显示不同类型的信息:

information display 1

  • 数据类型 - 显示模型块之间信号线的数据类型。如果模型中存在不正确的数据类型,选择 数据类型 将自动显示诊断窗口,并带有错误提示。

    *数据类型显示示例

    datatypes function engee

  • 信号尺寸 - 显示模型块之间信号线的尺寸(见处理不同尺寸的信号 )。模型信号可以是标量、矢量和矩阵。

    使用不同信号的映射示例
    • *标量信号*是没有方向的单一数据值,是最简单的信号类型:

      example dimension scalar

    • 矢量信号 - 同类型数据的有序集合,以矢量形式组织,有方向,可能包含多个元素。

      example dimension vector

    • 矩阵信号 - 由行和列组成的二维数据数组,可包含不同类型的数据。矩阵可用于同时表示多个信号。

      example dimension matrix

  • 信号采样频率 - 显示模型块的采样率。采样步长过小会导致数据量增大,从而减慢模拟速度。步长过大则会导致模型计算精度下降。要控制信号的采样率,可以使用块*速率转变* 。

    *采样率示例

    rate transition example 1

    在*DSP 正弦波* 块中,第一个通道(D1,*DSP 正弦波*块)的振幅为 1,频率为 2 Hz,采样步长为 0.001,第二个通道(D2,*DSP 正弦波-1*块)的采样步长为 0.01。在*速率转换*块中设置采样步长:D1 为 0.005,D2 为 0.02。这样您就可以在图表上看到:D1 信号平滑、准确,D2 信号有阶梯,细节较少。

    • 颜色突出 - 通过 信号采样频率 选项的子项,可以用颜色突出显示以下选项之一:当前采样率信号、信号源或不突出显示任何内容(默认选择)。离散信号可以根据信号的采样率用不同的颜色显示(如上例)。

  • 区块的执行顺序 - 您可以了解模型块的执行顺序。模型执行顺序将以数字显示,其中 1 表示模型中第一个可执行块。该选项有助于控制程序块的执行顺序,避免不必要的依赖性,并提高模型的可读性。

    *执行顺序示例

    order feature models

信号记录

信号记录允许您记录模拟结果并对其进行分析,以便进一步诊断和调试。在 Engee 中,有两种记录信号的方法:

signal recording 1

  • 将模拟结果保存到工作区 - 可以将模型模拟结果保存到工作区(变量窗口img65 ),作为 "simout "变量。这样您就可以在模拟结束后访问数据,并将其用于分析、可视化或进一步处理。有关保存模拟结果的更多信息,请参阅文章软件处理 Engee 中的模拟结果

    • 物理变量 - 允许您从选定的块中写入数据。只有 物理建模 库中的区块适合记录。右键单击要记录信号的区块,在右键菜单中选择 记录物理信号 选项:

      physical variables recording 1 cn

      记录的变量将显示在模块 图表 graphs icon 1 和应用程序数据检查员 中。

      *记录信号示例

      模块 图表 中记录的变量 :

      graphs variables 1 cn

      应用程序中的记录变量 数据检查员

      data inspector variables 1 cn

  • 物理变量初始化的结果 - 在物理变量窗口variable viewer icon 中显示物理变量的值。

实时调试

Engee* 环境允许您实时监控模型的执行。这种方法结合了多种工具,有助于逐步监控信号、块及其动态过程的状态:

interactive debugging 1

  • 分步执行 - 允许您一次运行一个时间步骤的模型。启用该设置后,*Engee*建模菜单顶部将增加额外的按钮:

    stepping through sim

    在此模式下,您可以自定义参数:

    • 存储步数 - 参数定义内存中将存储多少模拟步骤。这对了解模型如何达到当前状态以及调试都很有用,因为它允许您比较每一步的变化。

    • 保存步骤的间隔时间 - 参数设置存储模型状态的时间步数。

    • 前进/后退 - 参数设置模型前进的步数:

      • 前进一步move forward - 模拟按指定步数继续进行。例如,如果参数 "前进/后退步长 "的值为 "2",则模拟将前进两步。

      • 后退move back - 模拟按指定步数后退。Engee 恢复模型状态的工作点,并返回所选的步数。

  • 显示信号的瞬时值 - 在模拟或逐步执行过程中,允许标记信号以显示瞬时值。这种方法非常直观,便于对程序块之间的数据传输进行直观分析。

    instant values 1

  • 动画速度 - 控制有限自动机 的速度(在*图表* 块内支持)。它有四种模式:关闭(默认)、慢速、中速和快速。

    image3

断点

调试模型最重要的工具之一是断点。断点允许您在仿真的适当时刻暂停模型的执行,以检查系统状态、查找错误或检查各个块和设置的运行情况。

要打开断点编辑器,请进入设置窗口debug article icon 1 ,在 调试 选项卡中选择 打开断点列表

breakpoints adding 1

这将打开断点编辑器:

breakpoints 1

请看一个例子,使用断点在特定阶段停止仿真。为此,请将模块*正弦波* 和*终结者* 组装成模型,并打开信号记录功能:

sine wave terminator model

用鼠标左键选择信号线,然后在断点编辑器中点击breakpoint add 。在打开的窗口中,选择小于零,如图所示:

breakpoints editing 1

创建的断点将在信号线上显示红色标记:

sine wave terminator model 1

运行模拟。模拟将在第三秒暂停,模型图将如下所示:

sine wave terminator model 2

被触发的断点将在编辑器中标为绿色,触发次数将显示在 触发器 一栏中:

sine wave terminator model 3