Как я могу переопределить или изменить значение предопределенного параметра в Dymola во время симуляции? - PullRequest
1 голос
/ 21 ноября 2019

Я строю модель в Димоле. Я определил массу этой модели как параметр, потому что она будет переведена в другие модули и вызвана в них. Но масса должна меняться во время симуляции в разные промежутки времени. Например, в течение первых 100 секунд масса должна оставаться 500 кг, а в течение 100–200 секунд пассажир должен войти в нее, чтобы рассчитать новую массу, включая массу пассажира. Но было показано, что «проблема структурно единственная», поскольку значения параметров были назначены дважды. Может кто-нибудь дать несколько советов, чтобы решить эту проблему? Большое спасибо.

Ответы [ 2 ]

4 голосов
/ 21 ноября 2019

Если вы определяете массу вашего компонента как input, а не parameter, вы можете изменить его во время моделирования, назначив, например, выход из TimeTable. Например,

model Component
  input Modelica.SIunits.Mass mass "Passenger dependent mass";
equation
...
end Component;

model systemModel
  TimeTable timeTable;
  Component component(mass=timeTable.y);
  OtherComponent otherComponent(mass=component.mass);
equation
  ...
end systemModel;

Обратите внимание, что другие компоненты, использующие массу, должны также иметь свои внутренние параметры массы, определенные как input, чтобы обеспечить более высокую изменчивость, чем параметры.

С наилучшими пожеланиями Rene JustNielsen

3 голосов
/ 21 ноября 2019

Параметры Modelica определяются тем, что они не изменяются со временем. Поэтому вам необходимо остановить симуляцию, изменить параметр и перезапустить симуляцию (см. Еще один вопрос ). Учитывая ваше описание, я бы предпочел не использовать эту возможность, так как кажется, что ваша переменная предназначена для изменения во времени.

Лучшей альтернативой, похоже, является определение массы как переменной. Если это сделано, вы можете:

  1. Перенести эту переменную из одной модели в другую, используя интерфейсы. Это может быть немного утомительно в зависимости от количества классов, использующих переменную.
  2. Использование inner / outer (в основном, глобальные переменные) является подходящей концепцией для этого варианта использования. Эта концепция используется в модели world библиотек MultiBody.

В обоих решениях вам придется изменить исходную массовую модель, так как m должна быть переменной вместо массы.

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