在DYMOLA

时间:2018-10-02 12:23:17

标签: parameters annotations dymola

我有一个使用不同组件的仿真模型。为了快速了解所使用的参数,我使用注释功能通过以下方式显示某些模型参数(例如m_flow_nominal):

textString="Nominal Flow Rate = %m_flow_nominal"
在批注对话框中

。 会发出类似

的信息
  

标称流量= 5

这对于整数参数来说效果很好。


我还有一个从其他值计算得出的参数。就像,说一个身体的体积。当我尝试通过以下方式显示此参数时:

textString="Volume = %volume"

我将得到最终体积的公式,而不是最终值。例如

  

体积= a * b * c

在这种情况下,如何显示体积的最终值,而不是公式?


这是实际的问题:

  parameter Modelica.SIunits.Length xBorFie = 10 "Borefield length";
  parameter Modelica.SIunits.Length yBorFie = 30 "Borefield width";
  parameter Modelica.SIunits.Length dBorHol = 5 "Distance between two boreholes";

  parameter Integer nXBorHol = integer((xBorFie+dBorHol)/dBorHol) "Number of boreholes in x-direction";
  parameter Integer nYBorHol = integer((yBorFie+dBorHol)/dBorHol) "Number of boreholes in y-direction";
  final parameter Integer nBorHol = nXBorHol*nYBorHol "Number of boreholes";

使用时

textString="Number of boreholes = %nBorHol"

我知道

  

钻孔数= nXBorHol * nYBorHol

1 个答案:

答案 0 :(得分:4)

我认为唯一的可能性是使用DynamicSelect()函数。这可以用于显示例如一个图标。要使用它,您将必须手动修改Icon注释。它在Modelica语言规范3.4,第18.6.6节中有记录。

如何使用此DynamicSelect()的一些很好的例子是:

  • Modelica.Blocks.Interaction.Show.RealValue显示了如何显示值
  • Modelica.Blocks.Interfaces.partialBooleanSO显示了如何更改图标的线条和填充颜色
  • Modelica.StateGraph.Examples.Utilities.Tank显示了如何更改矩形的大小以显示罐内的液位

DynamicSelect()的缺点是有时需要在显示值之前初始化/模拟模型(我认为如果不是从文字或参数中计算出来的)。优点是,在查看模型时,它们会在仿真过程中进行更新。

根据您的情况,图标的实现可能类似于:

    annotation (Icon(graphics={Text(
      extent={{-100,-20},{100,20}},
      lineColor={0,0,0},
      textString="NoB=" + DynamicSelect("?", String(nBorHol)))}));

这将显示图标

  

NoB = 21

对我来说,当更改各个参数之一时,它也会立即适应。