哪个呼叫顺序是正确的?
fmi2SetupExperiment
fmi2EnterInitializationMode
或
fmi2SetReal/Integer/Boolean/String
fmi2EnterInitializationMode
按照标准:
“在调用fmi2EnterInitializationMode函数之前,所有具有属性的变量必须在调用fmi2EnterInitializationMode之前至少调用一次”fmi2SetXXX“functions.fmi2SetupExperiment,以便定义startTime。”
但没有指定命令。
FMI标准中的伪代码有fmi2SetXXX和fmi2SetupExperiment
//通信步长
H= 0.01;
//设置所有变量开始值( "ScalarVariable // start")
S1_fmi2SetReal/整数/布尔/字符串(s1,.);
S2_fmi2SetReal/整数/布尔/字符串(s2,.);
//初始化奴隶
s1_fmi2SetupExperiment(s1,fmi2False,0.0,startTime,fmi2True,stopTime);
s2_fmi2SetupExperiment(s1,fmi2False,0.0,startTime,fmi2True,stopTime);
s1_fmi2EnterInitializationMode(s1);
哪个呼叫顺序是正确的,为什么?
提前谢谢。
发布于 2019-11-06 12:39:19
在第3.2.3节FMI标准版本2.0.1调用序列的状态机中,声明允许调用fmi2SetSEA和fmi2SetupExperiment,其中SEA是一个变量的实、整数、布尔、字符串,变量的可变性不等于“常数”,在状态实例化时具有initial=“精确”或“大约”。
因此,顺序并不重要,FMI2.0支持工具的每个实现都必须支持这两种方式。
而且,由于fmi2SetupExperiment和fmiSetSEA不更改相同的数据,所以只要不调用fmi2EnterInitializationMode,就不会有任何影响。
https://stackoverflow.com/questions/58077135
复制相似问题