如何参考Dymola实验的开始时间和结束时间作为变量?

时间:2018-09-19 08:47:03

标签: modelica dymola

对于简单的测试模型,我通常使用类似于以下的语法:

// Assuming the start time is 0 and stop time is 1
x = xMin + (xMax - xMin) * time;
y = f(x);

为正确起见,无论模拟设置如何,我都想使用:

x = xMin + (xMax - xMin) * (time - startTime) / (stopTime - startTime);
y = f(x);

但是,我不确定如何引用“模拟设置/常规”表单中定义的值。

我尝试仅引用StartTime,startTime,starttime,timestart,timeStart等,但没有成功。

我知道可以使用注释设置StartTime和StopTime,但是这些值仅在首次打开模型时设置,因此可能无法真正反映模拟的开始时间和停止时间。

2 个答案:

答案 0 :(得分:3)

当前无法访问Dymola内部模拟的停止时间以在模型中使用,但是您可以按以下方式获得开始时间:

  parameter Real startTime(fixed=false);
initial equation
  startTime=time;

请注意,如果您使用Simulation> Continue> Continue,startTime将不会更新,而是继续使用其原始值。

答案 1 :(得分:2)

并不完美,但是您可以从外部提供信息:

将开始和结束时间作为参数添加到模型中

parameter Modelica.SIunits.Time stopTime = 0;
parameter Modelica.SIunits.Time startTime = 1;

并使用函数执行仿真

function sim
  input Modelica.SIunits.Time startTime = 1;
  input Modelica.SIunits.Time stopTime = 2;
algorithm 
  DymolaCommands.SimulatorAPI.simulateExtendedModel(
    "model-name", startTime, stopTime, 
    initialNames={"startTime", "stopTime"}, 
    initialValues={startTime, stopTime});
end sim;