为什么Dymola / Modelica中的min,max属性不起作用?

时间:2019-10-29 06:29:07

标签: attributes modelica dymola

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

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

但是min和max属性不起作用。该值无限制地变化,并且仅按我设置的值工作。

有人能找出问题所在吗?

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

2 个答案:

答案 0 :(得分:4)

您需要在

中手动激活支票
  

仿真设置->调试

看起来像这样:

Min/Max assertion settings

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

有关更精确的描述,请参见Dymola手册1,第5.6.8节“变量的边界检查”,其中提供了一些更详细的说明。这也是上述屏幕截图的来源。

答案 1 :(得分:3)

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

Advanced.AssertNonLinearInsideMinMax = true;

设置Advanced.AssertNonLinearInsideMinMax = true;可能就足够了。 除了标志编辑器GUI之外,您还可以在命令窗口中设置标志。