如何在Modelica模拟过程中确定上一个时间步的值?

时间:2013-05-15 06:52:00

标签: modelica dymola openmodelica

如何在Modelica模拟过程中确定上一时间步的值? 我有等式Q=m*c*(Ts2-Ts1-Tr)我需要从中提取Ts2Ts1的值。

  • Ts2 - 是时间步骤2的值
  • Ts1 - 是前一时间段的值
  • Ts是输入信号,在此期间有变化。每一步 它有不同的价值。在我的情况下,时间步长为1秒。其他值是 固定的。

我可以设置方程变量time吗? 例如:

Ts2 (start=time);
Ts (start=time-1);

或者应该在这个模型中输入?

关于Tymofii

1 个答案:

答案 0 :(得分:4)

已在a similar question中解决了此问题。

关键是描述物理行为的方程不能指时间步。这是因为在本质上没有“时间步长”或物理定律,因此系统的响应不能依赖于它。

你没有真正解释为什么你需要做你正在做的事情。您是否尝试提取模拟结果?您是否尝试与实验数据相关联?或者,你只是想解决一个微分方程吗?

目前尚不清楚自己想做什么。请详细说明,我们可以为您提供有关如何在Modelica中进行操作的一些指导。

<强>更新

使用“上一个间隔”中的值很好。例如,如果您想定期对解决方案进行采样,在Modelica中表达“z transform”或实现Kalman Filter,则可以非常轻松地执行每个解决方案(例如,请参阅“{这里有{3}}'关键字)。换句话说,可以存储任意数量的先前值。

您不能做的是使用连续解算器的时间步长来表达系统的行为方式。您引用的间隔必须独立于求解程序使用的任何间隔。