我正在Dymola中建立模型。我已将此模型的质量定义为参数,因为它将被转换为其他模块并在其中调用。但是在仿真过程中,质量应该在不同的时间间隔内变化。例如,在最初的100秒内,质量应保持为500kg,在100到200秒内,乘客将进入,因此应计算包括乘客质量在内的新质量。但是已经表明,“问题在结构上是唯一的”,因为已将参数值分配了两次。有人可以提供一些解决此问题的提示吗?非常感谢。
答案 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)。根据您的描述,我宁愿不使用这种可能性,因为您的变量似乎旨在随时间变化。
更好的替代方法似乎是将质量定义为变量。完成后,您可以:
inner
/ outer
(基本上是全局变量)是此用例的可行概念。 MultiBody库world
模型中使用了此概念。使用这两种解决方案时,您都必须修改原始质量模型,因为m
必须是变量而不是质量。