【问题标题】:How to determine value from previous time step during simulation in Modelica?如何在 Modelica 仿真期间确定上一个时间步的值?
【发布时间】:2013-05-15 06:52:00
【问题描述】:

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

  • Ts2 - 时间步 2 的值
  • Ts1 - 是前一个时间步的值
  • Ts 是输入信号,它会随着时间的推移而变化。每一步 它有不同的价值。在我的情况下,时间步长是 1s。其他值为 固定。

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

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

还是应该在这个模型里面输入?

问候Tymofii

【问题讨论】:

标签: modelica dymola openmodelica


【解决方案1】:

a similar question 已经解决了这个问题。

关键是描述物理行为的方程不能参考时间步长。这是因为自然界或物理定律中没有“时间步长”,因此系统的响应不能依赖于它。

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

不清楚你想做什么。请详细说明,我们可能会给您一些关于如何在 Modelica 中进行操作的指导。

更新

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

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

【讨论】:

  • 谢谢,这正是我的情况。我想将前一个区间的变量值放入方程中。是不是说这样建模型不正确?
  • 我更新了上面的答案以澄清事情。但是你需要解释这个先前的值是用来做什么的。为什么需要先前的值?您的系统是否有某种“记忆”或其他影响其行为的状态?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2023-03-07
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
相关资源
最近更新 更多