0

我正在使用 JFMI ( https://ptolemy.berkeley.edu/java/jfmi/ ) 从 Java 与 FMI ( 在 C 中) 进行通信。

对于通信,我使用现有函数(例如,simulation.write(inPort.getName()).with((Double) value);)。

但是,我面临两个问题:

  • fmuTemplate.c 包含用于配置浮点数、整数和其他变量的全局变量。但是,配置对我来说似乎不合逻辑。例如,如果我写 NUMBER_OF_REALS 是 2,而 NUMBER_OF_INTEGERS 是 2,我只能使用两次写入实数/浮点数或两次写入整数。如果我想使用 4 个标量变量(2 个浮点数,2 个整数),我需要定义 NUMBER_OF_REALS 2 和 NUMBER_OF_INTEGERS 4。就好像顺序是递增的一样。
  • 将字符串从 Java 写入 FMI 似乎会使程序崩溃(“invalidState:fmi2SetString: Illegal call sequence.”)。

您是否遇到过类似的问题?如果是的话,你能分享你的经验吗?

最好的问候,谢谢。

4

1 回答 1

1

JFMI 不是仅适用于 FMI 1.0 吗?

无论如何,我会考虑使用 JavaFMI 或 FMI4j,因为它们仍然在积极维护并且可以从 maven Central 获得。

JavaFMI 支持 FMI 1.0 和 2.0 进行协同仿真,并具有更稳定的 API。FMI4j 速度更快(JNI 与 JNA)并支持 FMI 2.0 进行协同仿真和模型交换。

于 2018-09-08T16:17:00.873 回答