为什么 Dymola/Modelica 中的属性最小值、最大值不起作用?

Why Attributes min, max in Dymola/Modelica doesn't work?

我正在尝试使用 'min'、'max' 属性来限制值,如下所示。

SI.Angle thetta_out(start=0, min=0, max=31.4)

但是 min 和 max 属性不起作用。该值不受限制地变化,只有起始值按照我设置的方式工作。

有人能找出问题所在吗?

我不想像 if- 语句那样编写逻辑来处理这个问题,因为这会使系统变慢和扭曲。

您需要在

中手动激活检查

Simulation Setup -> Debug

看起来像这样:

如果我没记错的话,默认情况下该设置处于非活动状态的原因与激活它时性能下降有关,再加上通常不需要它。

如需更准确的描述,您可以查看 Dymola 手册 1,第 5.6.8 节 "Bound checking for variables",其中提供了更详细的解释。这也是上面截图的来源。

最小值和最大值仅用作提示,不作为硬性限制。在 Dymola 中,您可以设置标志以将其强制执行为硬限制,转到“编辑”、“选项”、“标志”,然后搜索 "min":

设置Advanced.AssertNonLinearInsideMinMax = true;大概就够了。 作为标志编辑器 GUI 的替代方案,您还可以从命令 window.

设置标志