0

哪个调用顺序是正确的?

1. fmi2SetReal/Integer/Boolean/String

fmi2SetupExperiment

fmi2进入初始化模式

或者

2. fmi2SetupExperiment

fmi2SetReal/整数/布尔值/字符串

fmi2进入初始化模式

按照标准:

“在调用 fmi2EnterInitializationMode 函数之前,可以使用“fmi2SetXXX”函数设置所有具有属性的变量。在调用 fmi2EnterInitializationMode 之前必须至少调用一次 fmi2SetupExperiment,以便定义 startTime。

但是没有指定顺序。

FMI 标准中的伪代码有 fmi2SetXXX 后跟 fmi2SetupExperiment


//通信步长

h = 0.01;

// 设置所有变量的起始值(“ScalarVariable //start”)

s1_fmi2SetReal/Integer/Boolean/String(s1, ...);

s2_fmi2SetReal/Integer/Boolean/String(s2, ...);

//初始化奴隶

s1_fmi2SetupExperiment(s1, fmi2False, 0.0, startTime, fmi2True, stopTime);

s2_fmi2SetupExperiment(s1, fmi2False, 0.0, startTime, fmi2True, stopTime);

s1_fmi2EnterInitializationMode(s1);


哪个调用顺序是正确的,为什么?

提前致谢。

4

1 回答 1

0

FMI 标准版本 2.0.1的调用序列的3.2.3 状态机部分中,声明您可以调用and ,其中 SEA 是 Real、Integer、Boolean、String 之一,用于可变性不等于“常量”的变量,在实例化状态下具有 initial="exact" 或 "approx"。fmi2SetSEAfmi2SetupExperiment

因此顺序无关紧要,两种方式都必须得到 FMI 2.0 支持工具的每个实现的支持。

并且因为fmi2SetupExperiment并且fmiSetSEA不要更改相同的数据,所以只要fmi2EnterInitializationMode没有被调用,它就不应该有任何关系。

于 2019-11-06T12:39:19.627 回答