Modelica 变量自动重置为“0”中的零;当sample()时;陈述

Modelica 变量自动重置为“0”中的零;当sample()时;陈述,modelica,openmodelica,Modelica,Openmodelica,以下Modelica代码将变量“bb”设置为123后重置为0。有人能解释为什么吗?我正在使用OpenModelica v1.13.2 模型测试2 导入Modelica.Utilities.Streams.print; 实b(开始=0,固定=真); 实际bb(开始=0,固定=真); 整数c(开始=0,固定=true); 算法 当样本为(0,0.1)时 c:=pre(c)+1; 如果c==1,那么 b:=12.3; elseif c==2,则 bb:=123; 如果结束; 打印(字符串(时间)+”、

以下Modelica代码将变量“bb”设置为123后重置为0。有人能解释为什么吗?我正在使用OpenModelica v1.13.2

模型测试2
导入Modelica.Utilities.Streams.print;
实b(开始=0,固定=真);
实际bb(开始=0,固定=真);
整数c(开始=0,固定=true);
算法
当样本为(0,0.1)时
c:=pre(c)+1;
如果c==1,那么
b:=12.3;
elseif c==2,则
bb:=123;
如果结束;
打印(字符串(时间)+”、“字符串(b)+”、“字符串(bb));
结束时;
结束试验2;
模拟打印:

0, 12.3, 0
0, 12.3, 123
0, 12.3, 0
...(repeats)
另外,该情节的屏幕截图:


根据Modelica 3.4规范,结果不正确,bb不应设置为零:

在算法开始时,应将
bb
设置为
pre(bb)
,即123;根据“11.1.2在模型中执行算法”


注意,when-in表达式的语义给出了类似的结果,但方式不同,在这种情况下,特定的when子句被隐式映射到if-then-else,其中else分支将根据“8.3.5.1”节设置
bb=pre(bb)

将代码复制到Dymola,并打印[0,12.3,0];[0.1, 12.3, 123]; [0.2, 12.3, 123] ... bb
bb
停留在123。因此,它似乎与OpenModelica有关。