Engee 中的模型调试
调试在模型开发中起着关键作用,它使我们能够检查模型各个部分的操作及其行为是否符合我们的预期。这一过程有助于识别和消除错误,检查数据是否正确传输,尺寸是否符合预期。如果模型的输出不正确,调试可以让我们了解系统的行为在哪里以及如何偏离我们的预期。
本文将介绍使用 Engee 工具调试模型的主要方法。
设置窗口的 "属性 "选项卡
设置窗口的 "调试"选项卡
显示信息
调试模型时,重要的是能够直观地跟踪关键特征,以了解数据是如何在块中传输和处理的。在 Engee 中可以显示不同类型的信息:
-
数据类型 - 显示模型块之间信号线的数据类型。如果模型中存在不正确的数据类型,选择 数据类型 将自动显示诊断窗口,并带有错误提示。
*数据类型显示示例
-
信号尺寸 - 显示模型块之间信号线的尺寸(见处理不同尺寸的信号 )。模型信号可以是标量、矢量和矩阵。
使用不同信号的映射示例
-
*标量信号*是没有方向的单一数据值,是最简单的信号类型:
-
矢量信号 - 同类型数据的有序集合,以矢量形式组织,有方向,可能包含多个元素。
-
矩阵信号 - 由行和列组成的二维数据数组,可包含不同类型的数据。矩阵可用于同时表示多个信号。
-
-
信号采样频率 - 显示模型块的采样率。采样步长过小会导致数据量增大,从而减慢模拟速度。步长过大则会导致模型计算精度下降。要控制信号的采样率,可以使用块*Rate Transition* 。
*采样率示例
在*DSP Sine Wave* 块中,第一个通道(D1,*DSP 正弦波*块)的振幅为 1,频率为 2 Hz,采样步长为 0.001,第二个通道(D2,*DSP 正弦波-1*块)的采样步长为 0.01。在*速率转换*块中设置采样步长:D1 为 0.005,D2 为 0.02。这样您就可以在图表上看到:D1 信号平滑、准确,D2 信号有阶梯,细节较少。
-
颜色突出 - 通过 信号采样频率 选项的子项,可以用颜色突出显示以下选项之一:当前采样率信号、信号源或不突出显示任何内容(默认选择)。离散信号可以根据信号的采样率用不同的颜色显示(如上例)。
-
-
区块的执行顺序 - 您可以了解模型块的执行顺序。模型执行顺序将以数字显示,其中 1 表示模型中第一个可执行块。该选项有助于控制程序块的执行顺序,避免不必要的依赖性,并提高模型的可读性。
*执行顺序示例
信号记录
信号记录允许您记录模拟结果并对其进行分析,以便进一步诊断和调试。在 Engee 中,有两种记录信号的方法:
-
将模拟结果保存到工作区 - 可以将模型模拟结果保存到工作区(变量窗口
),作为 "simout "变量。这样您就可以在模拟结束后访问数据,并将其用于分析、可视化或进一步处理。有关保存模拟结果的更多信息,请参阅文章软件处理 Engee 中的模拟结果 。
-
物理变量 - 允许您从选定的块中写入数据。只有 Physical Modeling 库中的区块适合记录。右键单击要记录信号的区块,在右键菜单中选择 记录物理信号 选项:
记录的变量将显示在模块 图表
和应用程序数据检查员 中。
*记录信号示例
模块 图表 中记录的变量 :
应用程序中的记录变量 数据检查员 :
-
-
物理变量初始化的结果 - 在物理变量窗口
中显示物理变量的值。
实时调试
Engee* 环境允许您实时监控模型的执行。这种方法结合了多种工具,有助于逐步监控信号、块及其动态过程的状态:
-
分步执行 - 允许您一次运行一个时间步骤的模型。启用该设置后,*Engee*建模菜单顶部将增加额外的按钮:
在此模式下,您可以自定义参数:
-
存储步数 - 参数定义内存中将存储多少模拟步骤。这对了解模型如何达到当前状态以及调试都很有用,因为它允许您比较每一步的变化。
-
保存步骤的间隔时间 - 参数设置存储模型状态的时间步数。
-
前进/后退 - 参数设置模型前进的步数:
-
前进一步
- 模拟按指定步数继续进行。例如,如果参数 "前进/后退步长 "的值为 "2",则模拟将前进两步。
-
后退
- 模拟按指定步数后退。Engee 恢复模型状态的工作点,并返回所选的步数。
-
-
-
显示信号的瞬时值 - 在模拟或逐步执行过程中,允许标记信号以显示瞬时值。这种方法非常直观,便于对程序块之间的数据传输进行直观分析。
断点
调试模型最重要的工具之一是断点。断点允许您在仿真的适当时刻暂停模型的执行,以检查系统状态、查找错误或检查各个块和设置的运行情况。
要打开断点编辑器,请进入设置窗口 ,在 调试 选项卡中选择 打开断点列表 :
这将打开断点编辑器:
请看一个例子,使用断点在特定阶段停止仿真。为此,请将模块*Sine Wave* 和*Terminator* 组装成模型,并打开信号记录功能:
用鼠标左键选择信号线,然后在断点编辑器中点击 。在打开的窗口中,选择小于零,如图所示:
创建的断点将在信号线上显示红色标记:
运行模拟。模拟将在第三秒暂停,模型图将如下所示:
被触发的断点将在编辑器中标为绿色,触发次数将显示在 触发器 一栏中: