关于仿真初始化失败导致的仿真失败问题!!!
产品缺陷
发布于 2024-12-18 19:30:49
查看 35过去557天
我们建立了一个包含7个子系统模块的复杂动力模型。在原先的simulink模型中,提供了memory模块来打破模型仿真时的代数环问题,模型可以正常运行。
注解:代数环是指在模型仿真过程中,由于模型的输出反馈到某个输入端,且该输入是直接馈入的,导致在同一个采样点内输入和输出互相依赖,无法独立求解,从而形成的一个求解循环。这种情况会导致解算器无法正常解算,产生错误。
当我们在sysplorer中利用blocks搭建完成该模型后,没有找到相应的memory模块来解决代数环问题。先前在mohub提问,给出的建议是利用unitDelay模块。我们尝试加入了和原先simulink模型中同样位置的unitDelay模块,以尝试解决仿真的代数环问题。
结果发现,翻译不会报错,但仿真出现初始化失败问题。给出的提示是其中某些除法模块出现了0/0.
问题是:这些报错0/0的除法模块的两个输入均来自于其他模块,当模型正常启动后,这些都不会为0.但,现在是初始化过不去,所以肯定报这种错误。而且,我们在仿真中发现,当出现仿真初始化错误后,即时某些阶跃模块设置为常数,但是仿真启动后,提示仿真初始化出错,这些模块仍然显示输出为0.
而simulink模型加入memory模块可以打破代数环,正常仿真。
sysplorer似乎无法解决这个,类似鸡生蛋,还是蛋生鸡的信号代数环?
请问,有办法吗?
图1: simulink模型:加入代数环

图2:sysplorer中模型:加入延时模块

图3: 仿真运行出错,初始化过不去

图4: 模型翻译结果,没有错误

所属专栏:Sysplorer基础平台
产品信息:Sysplorer系统建模仿真环境
系统信息:Win10或11