如何在Modelica模拟过程中确定上一时间步的值?
我有等式Q=m*c*(Ts2-Ts1-Tr)
我需要从中提取Ts2
和Ts1
的值。
Ts2
- 是时间步骤2的值Ts1
- 是前一时间段的值Ts
是输入信号,在此期间有变化。每一步
它有不同的价值。在我的情况下,时间步长为1秒。其他值是
固定的。我可以设置方程变量time
吗?
例如:
Ts2 (start=time);
Ts (start=time-1);
或者应该在这个模型中输入?
关于Tymofii
答案 0 :(得分:4)
已在a similar question中解决了此问题。
关键是描述物理行为的方程不能指时间步。这是因为在本质上没有“时间步长”或物理定律,因此系统的响应不能依赖于它。
你没有真正解释为什么你需要做你正在做的事情。您是否尝试提取模拟结果?您是否尝试与实验数据相关联?或者,你只是想解决一个微分方程吗?
目前尚不清楚自己想做什么。请详细说明,我们可以为您提供有关如何在Modelica中进行操作的一些指导。
<强>更新强>
使用“上一个间隔”中的值很好。例如,如果您想定期对解决方案进行采样,在Modelica中表达“z transform”或实现Kalman Filter,则可以非常轻松地执行每个解决方案(例如,请参阅“{这里有{3}}'关键字)。换句话说,可以存储任意数量的先前值。
您不能做的是使用连续解算器的时间步长来表达系统的行为方式。您引用的间隔必须独立于求解程序使用的任何间隔。