waituntil condition [prio number] [wait timespan:time]
stopuntil condition [prio number] [wait timespan:time]
waituntil/stopuntil 语句暂停方法执行,直到语句中设置的条件评估为真。 这意味着模拟继续运行,并且在此期间可以执行其他方法。 一旦满足条件,挂起的方法将立即被唤醒并继续执行。 如果方法在满足条件的时间点正在执行,则它们的执行将被中断,只有在被唤醒的方法一直执行完之后才会继续执行。
waituntil/stopuntil 语句现在还可以观察只有路径的最后一部分是可观察的表达式,例如 Station.Origin.Name。
声明包括:
•关键字waituntil或stopuntil
• 条件(布尔表达式)
• 可选关键字prio,以及用于分析优先级的整数表达式。
•关键字wait,如果你想设置一个时间限制,在这个时间之后语句将被唤醒,尽管条件还没有满足。 您可以使用关键字 waitExpired 来查询时间跨度是否已过。
笔记
不要在公式中使用这些语句。 在那里,解释器使用错误消息取消方法的执行。
当多个挂起的方法要同时被唤醒时,可能会出现优先级最高的方法执行完后,其他方法的条件再次变为false。
• 对于因等待而暂停的方法,直到对条件的新评估以及每个要唤醒的附加方法的优先级在处理每个已唤醒的方法后发生。
• 对于使用 stopuntil 暂停的方法,在任何情况下,只要条件满足一次,这些方法就会被唤醒。 这意味着不会对条件进行新的评估。
Plant Simulation 始终从左到右评估逻辑连接。 一旦表达式的值确定,评估就会终止。
waituntil Station.Cont /= void AND Station.Cont.Finished
只要 Station.Cont 的值为 void,Station.Cont.Finished 就不会被评估,因此不会引发运行时错误。
当您重置您的仿真模型时,Plant Simulation 会删除与 EventController 位于同一 Frame 或此 Frame 的子 Frame 中的方法的暂停。它还删除了方法的暂停,其调用者(匿名标识符?)位于与 EventController 相同的 Frame 或此 Frame 的子 Frame 中。这意味着当您重置 EventController 时,Plant Simulation 不再删除模型文件中其他仿真模型的方法的暂停。
waituntil/stopuntil-statement 不是基于事件的,因此不需要 EventController,而 wait-statement 需要一个。
请注意,方法 deleteSuspendedMethods 删除所有方法的所有挂起。
Plant Simulation 显示了一种带有紫色 LED 的暂停方法。
3D 将状态显示为图标顶部边框上的彩色矩形。