【发布时间】:2021-08-18 19:05:38
【问题描述】:
在OpenModelcia中,模型的所有变量只有在使用延迟运算符时才保存在环形缓冲区中,还是无论我们是否使用延迟都自动完成?如果是这样,我们可以从外部函数 C 访问环形缓冲区吗?
【问题讨论】:
标签: delay modelica openmodelica
在OpenModelcia中,模型的所有变量只有在使用延迟运算符时才保存在环形缓冲区中,还是无论我们是否使用延迟都自动完成?如果是这样,我们可以从外部函数 C 访问环形缓冲区吗?
【问题讨论】:
标签: delay modelica openmodelica
由于 Modelica 模型可能在任何时间点失败,所有变量都保存在某种备份中,用于 C 运行时在所谓的thread data 中的某些缓冲区中。在某些情况下,OpenModelica 编译器能够恢复最后一步并重试,但略有不同。
例如,断言抛出错误,因为某些变量已变为负数但不允许这样做,因此编译器会以较小的步长再次尝试。
此备份独立于 delay 运算符的存在完成,并且始终完成。
对于延迟运算符,使用different data structure,这可能是您所指的RINGBUFFER。仅当 Modelica 模型中有 delay 运算符时才分配。
没有提供 API 函数来访问 OpenModelica 模拟的(此)内部数据。因此,只有您自己编写这样的函数才能访问环形缓冲区,这当然是可能的。 问题是您首先要完成的工作。
【讨论】: