我有一个使用不同组件的仿真模型。为了快速了解使用的参数,我使用注释的功能通过以下方式显示某些模型参数(例如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
发布于 2018-10-02 12:45:51
我认为唯一的可能性是使用DynamicSelect()
函数。这可以用于在例如图标中显示一个不断变化的值。要使用它,您必须手动调整图标注释。它记录在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
对于我来说,当更改相应的参数之一时,它也会立即进行调整。
https://stackoverflow.com/questions/52608262
复制相似问题