【问题标题】:How to reference Dymola experiment start time and stop time as variables?如何将 Dymola 实验开始时间和停止时间作为变量引用?
【发布时间】:2018-09-19 08:47:03
【问题描述】:

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

// 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,但这些值仅在模型第一次打开时设置,因此可能无法真正反映模拟的开始时间和停止时间。

【问题讨论】:

    标签: modelica dymola


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        • 2011-05-25
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        • 2012-11-25
        相关资源
        最近更新 更多