在仿真过程中如何重新定义或更改Dymola中预定义参数的值?

时间:2019-11-21 09:32:43

标签: modelica dymola

我正在Dymola中建立模型。我已将此模型的质量定义为参数,因为它将被转换为其他模块并在其中调用。但是在仿真过程中,质量应该在不同的时间间隔内变化。例如,在最初的100秒内,质量应保持为500kg,在100到200秒内,乘客将进入,因此应计算包括乘客质量在内的新质量。但是已经表明,“问题在结构上是唯一的”,因为已将参数值分配了两次。有人可以提供一些解决此问题的提示吗?非常感谢。

2 个答案:

答案 0 :(得分:4)

如果您将组件的质量定义为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,以允许比参数更高的可变性。

最好的问候 雷内·贾斯·尼尔森

答案 1 :(得分:3)

Modelica参数由以下事实定义:它们不会随时间变化。因此,您将需要停止仿真,更改参数并重新启动仿真(请参见另一个question)。根据您的描述,我宁愿不使用这种可能性,因为您的变量似乎旨在随时间变化。

更好的替代方法似乎是将质量定义为变量。完成后,您可以:

  1. 使用接口将该变量从一个模型转移到另一个模型。根据使用该变量的类的数量,这可能会有些乏味。
  2. 使用inner / outer(基本上是全局变量)是此用例的可行概念。 MultiBody库world模型中使用了此概念。

使用这两种解决方案时,您都必须修改原始质量模型,因为m必须是变量而不是质量。