仿真测试避坑指南:一次参数设错,整个项目返工

发布于 更新于
1,618
详情介绍
智行者IC社区持续更新技术干货、实操教程、案例分享与常见问题解答,为学习者提供实用的学习参考资料。

Simulink R2023b,是我亲自去做了实际测试的, Plant Simulation 2201同样也是,在这测试过程中,我掉进过因为参数配置出现错误从而导致仿真结果产生偏移、模型跑起来直接飞掉然后崩溃的坑。

模型参数最优推荐值怎么设

最核心的仿真测试方面存在于求解器参数那个坑,好多人一开始就进行默认操作,结果仿真出现诸如曲线胡乱跳动,要不就是直接发散的情况,我所遭遇过最深的坑是初次走出校园步入职场那会儿搞电力电子仿真,把积分步长设定为自动模式,结果系统在开关切换的那个点瞬间发生了爆炸。

那正确的做法便是进入模型的Configuration Parameters,从中寻觅到Solver选项,在固定步长模式下选择ode4,将步长设定为1e – 6秒,此为1微秒步长的最优的被推荐数值。要说其理由呢,是因为大多数的电力电子系统开关频率处于10kHz到100kHz范围, 1微秒步长能够确保在每个开关周期内存在10到100个采样点,从而兼顾了精度以及速度。步长如果过度大,举例讲来,自动步长要是跑到10微秒,在此瞬间,系统会在开关动作时产生诸多数值振荡。

新手要避开的坑,常见的报错情况是出现 “Singularity likely” 呢,或者仿真会直接中断。其核心原因在于步长过大,进而导致雅可比矩阵奇异。解决的办法是,先把步长强制降低到 1e-7 秒进行试跑,要是正常的话,再逐步将其调大到 1e-6。另外,要检查模型当中是否存在代数环,要是有的话,就在环路里添加一个 1e-9 秒的 Unit Delay 模块来断环。

两种实操方案对比该选哪个

在进行机电联合仿真操作的时候,你将会遭遇两种可供选择的方案,方案A是借助Simulink以及Simscape展开多域建模,方案B是通过Simulink将CAD模型导入进而开展协同仿真,这两种方案我都切实进行过实际运行,它们各有各需要进行权衡取舍的地方。

在于参数全在软件内调的方案A的优势是,改一个阻尼系数直接改模块值就行,适合前期参数探索阶段。其缺点是,大系统下网络方程矩阵维数高,模型编译时间可能超过20分钟,迭代效率很低。

方案B具备这样的优势,即其导入的刚性体动力学计算是经由CAD求解器负责的,而Simulink仅仅进行控制部分的计算,如此一来整体的计算量被减半。然而它存在代价,那便是每次在修改几何参数的时候均需进行重新导出的操作,并且还得同时更新fmu文件,整个流程格外拖沓拖沓。

【新手避坑】,常见问题是,使用方案B时,会出现“Cannot load FMU”报错,其原因在于, fmu文件路径含有中文或者空格,又或者版本不匹配,解决办法为,将所有路径改为纯英文且无空格,并且要确认Simulink版本与导出fmu的CAD版本一致,比如R2023b对应R2023b。要是你的项目需要频繁更改结构参数,那优先选择方案A;要是结构确定了只调整控制算法,那就果断选方案B。

一个高频完整报错及一次解决

在进行液压伺服系统仿真期间,报错“Derivative of state ‘1’ in block ‘xxx/Integrator’ at time 0.0 is not finite”会呈现高额频次出现的情况,此情况会笔直导致建模构建无法成功运转起来。

解决流程的完整步骤分为四个部分。其一,进到Simulink的Simulation→Debug里,展开过零检测的开启操作。其二,对报错积分器的上游检查,查看其中是否存在除零类的操作,就像某一个除法模块的分母信号于早期时刻呈现为0这种情况。其三,在积分器的Initial condition处输入一个并非零的微小数值,例如采用1e – 10去替换0。其四,给上游信号源增添一个Initial Output模块,以此来强行让初始输出并非为0。

要注意新手会遇到这种情况,就是当在模型里运用了Memory模块时,会导致在初始时刻的时候,上一个步长这种状态处于未被定义的情况。其解决的办法则是将这个Memory模块置换成Unit Delay,而且要在Unit Delay的刚开始状态里填入0。

此方法并非适用于全部场景,要是你的模型属于纯离散事件系统,类如借助Plant Simulation来开展产线物流仿真,那么上面所提及的那套连续系统解法是完全不相关的,可供替代的方案是转换至事件驱动的仿真器,去检查有没有无限循环的触发事件,直接在被触发的Method代码当中添加一个计数器上限以免循环。

常见问题(FAQ)

电力电子仿真时步长设多少合适?
在 Configuration Parameters 的 Solver 选项里,固定步长模式选 ode4,步长设为 1e-6 秒。这样在 10kHz 到 100kHz 的开关频率下,每个开关周期有 10 到 100 个采样点。
仿真报 Singularity likely 或直接中断怎么办?
先把步长降到 1e-7 秒试跑,正常后再逐步调回 1e-6 秒。同时检查模型里有无代数环,有就在环路中加一个 1e-9 秒的 Unit Delay 模块断环。
导入 CAD 模型协同仿真时报 Cannot load FMU 如何排查?
检查 fmu 文件路径是否含中文或空格,改成纯英文无空格路径。同时确认仿真软件版本与导出 fmu 的 CAD 版本一致,比如都用 R2023b。
0 / 600
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
学硬件设计・来智行者 IC 社区
相关文章