Отображение параметра в аннотации в DYMOLA - PullRequest
0 голосов
/ 02 октября 2018

У меня есть имитационная модель с использованием различных компонентов.Чтобы получить быстрый обзор используемых параметров, я использую функциональность аннотаций для отображения определенных параметров модели (например, m_flow_nominal) через:

textString="Nominal Flow Rate = %m_flow_nominal"

в диалоге аннотаций.Что выдаст что-то вроде

Номинальная скорость потока = 5

Это прекрасно работает для целочисленных параметров.


Iтакже есть параметр, который рассчитывается из других значений.Мол, скажем, Объем тела.Когда я пытаюсь отобразить эти параметры с помощью:

textString="Volume = %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 голосов
/ 02 октября 2018

Я думаю, что единственная возможность - использовать функцию 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

Для меня он также сразу адаптируется при изменении одного из соответствующих параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...