首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DYMOLA注释中参数的显示

DYMOLA注释中参数的显示
EN

Stack Overflow用户
提问于 2018-10-02 12:23:16
回答 1查看 257关注 0票数 4

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

代码语言:javascript
运行
复制
textString="Nominal Flow Rate = %m_flow_nominal"

在注释对话框中。它会发出类似的信息

名义流量=5

对于整数参数,这是非常好的工作方式。

我还有一个参数,它是根据其他值计算的。比如说,身体的体积。当我试图通过以下方式显示此参数时:

代码语言:javascript
运行
复制
textString="Volume = %volume"

而不是最后的值,我将给出的公式,体积是计算。例如

卷=a*b*c

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

以下是实际问题:

代码语言:javascript
运行
复制
  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";

在使用时

代码语言:javascript
运行
复制
textString="Number of boreholes = %nBorHol"

我得到了

钻孔数= nXBorHol*nYBorHol

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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()的缺点是,它有时需要在显示值之前初始化/模拟模型(我认为如果它不是根据文字或参数计算的话)。其优点是在模拟过程中对模型进行了更新。

对于您的情况,图标的实现可能如下所示:

代码语言:javascript
运行
复制
    annotation (Icon(graphics={Text(
      extent={{-100,-20},{100,20}},
      lineColor={0,0,0},
      textString="NoB=" + DynamicSelect("?", String(nBorHol)))}));

,这将导致图标显示

NoB=21

对于我来说,当更改相应的参数之一时,它也会立即进行调整。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52608262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档