我在组件中包含以下Modelica代码,该组件在系统模型中多次使用:
parameter fileName = "world.log"
equation
when initial() then
if not Modelica.Utilities.Files.exist(fileName) then
Streams.print("Hello World", fileName);
end if;
end when;
我希望在创建的文件中只找到一行代码,但是通常打印出5行或更多行,但有时似乎可以正常工作。在Windows 10上使用Dymola 2019。 有人可以澄清发生了什么吗?文件存在性检查似乎不可靠!?
答案 0 :(得分:1)
when initial()
与事件完全无关。它被转换成一个初始方程,因此可以执行多次。当只执行一次方程式时,外部对象要可靠得多。
答案 1 :(得分:0)
根据先前的答案和评论,以下内容似乎可行:
parameter fileName = "world.log"
protected
Modelica.SIunits.Time startTime;
equation
when initial() then
startTime := time;
end when;
when time >= startTime then
if not Modelica.Utilities.Files.exist(fileName) then
Streams.print("Hello World", fileName);
end if;
end when;