OpenModelica1.17下Modelica IntegerChange模块未按预期工作问题咨询
IntegerChange输出恒定false问题解决方案
根因分析
问题由两个常见的仿真配置问题共同导致:
RealToInteger模块默认关闭了事件生成,求解器不会定位整数变化的临界时刻- 仿真默认不存储瞬时事件点,脉冲信号无法在结果中被记录
具体解决步骤
步骤1:修改RealToInteger模块参数
打开RealToInteger模块的参数配置界面,勾选generateEvents选项为true。该参数开启后,实数值跨越整数边界时会强制触发仿真事件,求解器会自动定位到变化发生的精确时刻,保证IntegerChange能检测到输入值的前后差异。
步骤2:开启仿真事件存储
打开OpenModelica仿真设置,切换到「结果」标签页,勾选*Store events(存储事件点)*选项。IntegerChange的输出仅在事件发生的极短时间内为true,开启事件存储后这类瞬时值才会被写入结果文件,可视化时可以正常显示脉冲。
效果验证
修改配置后重新运行仿真,即可得到预期的整数跳变时输出脉冲的结果,原错误输出参考下图:
内容的提问来源于stack exchange,提问作者ekj
相关产品推荐
相关产品推荐

