对于简单的测试模型,我通常使用类似于以下的语法:
// 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,但是这些值仅在首次打开模型时设置,因此可能无法真正反映模拟的开始时间和停止时间。
答案 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;