逐步执行模型的工作原理
默认情况下,AnyMath 连续执行模型的模拟—这是几乎总是使用的主要模式。 一步一步的模型执行模式可用于调试模型:它允许您一步一步地推进仿真。 求解器并专注于兴趣点来分析信号和模型状态。
-
* 正常(连续)模拟 --AnyMath*自动执行模型的模拟,直到它完成(或被迫停止)。 该模式适用于大多数任务:检查模型,获取图形,执行一系列运行。 如果您只需要"完全"获得模拟的结果,则使用常规(连续)模拟。
-
* 分步执行(调试模拟)*--您手动控制模拟的进度:您按照求解器的步骤操作,可以在感兴趣的点停止,以便详细分析模型的信号和状态。
在分步执行模式 AnyMath 允许:
-
使用选项将模拟向前或向后推进一定数量的步骤"向前迈进"和"后退»;
-
返回由于保存的快照的工作点的模型-一个状态足以继续模拟从选定的时间点。
开始行动
默认情况下,"逐步模型执行"选项处于禁用状态。 要打开它,去窗口 设置 并在"调试"选项卡上,在"分步执行"部分中,选择*分步执行复选框。*:

在本节中,您可以配置分步执行的参数。
启用该选项后,仿真控制面板会发生变化:用于逐步调试的元素被添加到通常的开始/停止按钮-后退和前进。
正常模拟(分步执行选项被禁用)
|
分步执行(启用选项)
|
通过"步骤"是指求解器的时间步长。 在步骤之间,求解器可以执行内部(中间)计算;它们很重要,例如,对于断点的操作(参见Pause at breakpoints)。
-
保存的最大回退步数 --AnyMath存储的快照总数,以便退后一步。
-
存储的后退步骤之间的间隔时间 --在保存快照之间跳过求解器的多少步骤。
-
通过以下方式前后移动 --按下时求解器推进(或回滚)模拟的步骤数 向前迈进 / 后退 .
|
仿真快照存储在 AnyMath 内存中,可能会减慢模型的执行速度。 从小值开始(例如,几十个或前几百个图像),并仅在必要时增加它们:最佳值取决于模型的大小。 |
当你向前一步,AnyMath 继续模拟。 但是,后退时,AnyMath 不会"向后"模拟系统。 为了提供退后一步,AnyMath 在仿真运行时保存模型操作点的快照。 当你点击 后退 AnyMath 从这些快照之一恢复模型的工作点。
|
AnyMath 仅当逐步执行启用且逐步后退处于活动状态时,才会收集用于逐步后退的模拟快照。 如果您已经在模拟过程中启用了后退一步,那么您需要在后退一步之前至少向前一步。 你不能退到模拟的那一刻,这是在退步打开之前。 |
向前一步
当按下时,求解器的仿真会进行多少个步骤 向前迈进 ,响应参数 通过以下方式前后移动 . 它设置求解器步骤的数量(在时间上),通过这些步骤 AnyMath 在一次点击中向前移动模拟。
例如,让我们想象一下仿真的时间线;我们将用绿色圆圈及时显示求解器每个步骤的状态,而弯曲的箭头则说明仿真的进展。:

该图像显示了仿真进度如何变化,如果值 通过以下方式前后移动 同样 1 或 2:
-
在模拟开始时(* 状态0*),参数值为
2. 当你点击 向前迈进 模拟通过* 状态1*并在* 状态2*停止。 -
当模拟在时间求解器的第二步之后暂停时,假设您将参数值更改为
1. 现在当你点击 向前迈进 仿真将进入* 状态3*--下一次求解器步骤。 -
假设您将参数值更改回
2在时间求解器的第四个主要步骤之后,仿真暂停。 现在当你点击 向前迈进 模拟将前进到* 状态6*。
模拟快照
模拟快照(保存的步骤)--后退所需:它们包含一个足以从选定的时间点继续模拟的状态。 快照存储在 AnyMath 内存中,不会保存到文件系统中。 拍摄快照需要内存,并且会影响仿真性能。
这些参数用于控制后退存储的数据量。:
-
保存的最大回退步数 --要保存的快照总数;
-
存储的后退步骤之间的间隔时间 --在保存快照之间跳过求解器的时间步数。
保存快照的选项与该选项无关 通过以下方式前后移动 :快照的间隔和数量决定 多久 和 多少 状态被保存,以及 通过以下方式前后移动 --按下时,模拟会移动多少步 向前迈进 或 后退 .

图像显示了如何使用值保存快照 存储的后退步骤之间的间隔时间 = 3. AnyMath 在模拟开始时,在时间求解器的第三个主要步骤之后和第六个步骤之后保存快照。
当您需要以较小的增量前进以便分析兴趣点时,可以在仿真期间更改图像之间的间隔。 例如,该图像显示了如果您更改了快照之间的间隔,则上一个示例中的模拟将如何保存快照 3 上 1:

-
AnyMath*在模拟开始时保存快照 状态0*;
-
经过三个步骤的时间求解* 工程师 保存快照 状态3*;
-
当模拟在* 状态3*暂停时,您更改参数的值 存储的后退步骤之间的间隔时间 与
3上1; -
AnyMath*为求解器的每个时间步长保存模拟状态的快照,直至*状态6。
退后一步
退后一步时,AnyMath 依赖于模型操作点的保存快照。 根据是否存在所需时间求解器步骤的快照,AnyMath 的行为不同。:
-
如果有所需步骤的快照--*AnyMath*将恢复它;
-
如果没有快照--*AnyMath*将恢复最近的上一个快照,并将模拟向前运行到所需的时刻。
例如,在仿真中的时间求解器的第六步之后,您处于暂停状态,:
-
每三个时间步骤保存一个快照;
-
当你点击 后退 回去一步。
当你点击 后退 然后 AnyMath 恢复在时间求解器的第三步之后拍摄的快照,并向前运行模拟两步,在时间求解器的第五步之后停止。

该图显示了模拟的时间线;状态由绿色圆圈表示,对于保存为快照的每个状态,绿色的阴影较暗。 实心弯曲箭头显示按下时模拟的进度 后退 . 黄色弯曲的箭头说明了 AnyMath 如何后退一步。
当模拟暂停时,您可以更改设置。 新值将在下次模拟前进时应用。 根据模拟步骤的设置,这可能会在按下后立即发生 后退 .
在断点暂停
如果模型包含活动 断点,则当满足断点条件时模拟可以停止。 后退时,AnyMath 忽略断点。
默认情况下,AnyMath 在最近的计算点暂停仿真,该计算点由求解器确定。 如果断点条件在主要时间步长之间触发,那么停止将在当前时间步长内发生在求解器的内部(中间)步骤处。
当你点击 向前迈进 当由于断点而暂停时,模拟将继续并完成当前时间步长。 当你点击 后退 ,则 AnyMath 返回到当前时间步的开始。

