OpenModelica中周期时变实变量的建模

OpenModelica中周期时变实变量的建模,modelica,openmodelica,Modelica,Openmodelica,我想建模的是一个周期性的时变实变量,下面的代码无法模拟。有人有什么建议吗 class try discrete Real x(start = 1); algorithm when sample(0,4) then x := 1; // reinit(x, 1) also does not work end when; equation der(x) = 1; end try; 所有错误消息如下所示: 转换18:32:29 0:0-0:0内部错误转换模块失败 转换18:32

我想建模的是一个周期性的时变实变量,下面的代码无法模拟。有人有什么建议吗

class try
discrete Real x(start = 1);
algorithm
when sample(0,4) then 
   x :=  1; // reinit(x, 1) also does not work
end when;
equation
      der(x) = 1;
end try;
所有错误消息如下所示:
转换18:32:29 0:0-0:0内部错误转换模块失败
转换18:32:29 0:0-0:0内部错误BackendDAETransform.reduceIndexDummyDer失败
翻译18:32:29 0:0-0:0内部错误BackendDAETransform.selectDummyState:没有要选择的状态
符号18:32:29 10:3-10:13模型结构奇异,错误发现排序方程0.0=1.0;
对于变量

问题在于,如果希望变量x在采样时间间隔之间继续,则必须删除离散关键字,这将正常工作:

class try
 Real x(start = 1);
algorithm 
when sample(0,4) then
   reinit(x, 1);
end when;
equation 
      der(x) = 1;
end try;
再见,
马可

但结果仍然不是我想要的。x不会每4秒重新初始化为1。它的行为类似于
der(x)=1
,没有任何事件中断。奇怪的是,我用Wolfram的SystemModeler(据我所知,它在场景后面使用OpenModelica)尝试了Marco的版本,效果很好。就我所知,Marco的版本看起来不错。非常奇怪,我用Open Modelica尝试了它,我认为我们发现了一个bug,因为我之前编写的版本的行为与算法部分不存在一样,但是如果你将when语句移动到等式部分下,它工作得很好:model try Real x(start=1);当样本(0,4)然后reinit(x,1)时的方程;结束时;der(x)=1;结束尝试;真奇怪。马可的最新版本现在可以使用了。我认为将
when
语句放在算法部分或等式部分都可以。顺便问一下,你知道如何获取OpenModelica的转储文件吗?