仿真测试误差太大?三步校准法实测有效

发布于 更新于
2,014
详情介绍

亲测MATLAB/Simulink R2022b 和某国产半实物仿真平台 历经因模型精度欠缺、时钟未同步导致误差超20%的情况。

第一步:强制校准模型解算步长

将固定步长参数直接填进1e – 5(也就是0.01毫秒)吧。这一步骤能够迫使模型依照统一的时间间隔去进行计算,以此来防止因步长自适应而引发的时序偏差。

【新手避坑】

通常出现的报错情况是什么呢 是“步长太小,仿真时间过长”。那出错的原因是啥呀 是通过把步长设置得过低从而导致电脑的算力没办法跟得上哇。快速的解决办法是怎样的呢 是先采用1e – 4进行试跑,要是误差仍然处于能够接受的范围内那就保持,要不然就逐渐地调小,同时开启性能加速选项。可千万别一开始就设置成1e – 6,不然会把你等死的。

第二步:统一时钟域并锁定采样率

【新手避坑】

被报错的现象呈现为: “数据出现丢帧”或者是“时间戳发生错乱”。其核心的原因在于:软件时钟跟硬件时钟在默认状态下是不同步的。有快速解决的办法:在硬件配置面板当中勾选、强制时钟同步,随后再去重启仿真,别询问我启动它的原因是什么,很多配置一旦不去重启就不会产生效果。

实操方案对比

方案A,采用统一的时钟频率,并且锁定采样率,这种方式适合高精度的场景当中,像是电机控制这类情况就行,其误差能够被压制到3%以内。

方案B:直接采用默认异步时钟,此情况适宜快速原型验证,误差存在跑到15%的可能性,然而配置比较省事。

在选择的逻辑方面,要是你所操作执行的是针对产品层面的仿真工作,那么必然得是方案A才行。要是仅仅是运行一下模型从而查看某种趋势,那方案B用来使用就是能够满足需求的。

第三步:逐层验证模型输出并做残差修正

在完成前面两步操作之后,开始运行仿真,在诊断查看器当中调出信号日志,将所有关键输出信号进行选中,用右键点击信号线,从中选择数据检查这一选项,用来对比仿真值与实测值之间的均方根误差。

【新手避坑】

经常出现的报错是: “残差震荡呈现出不收敛的情况”。有完整且成体系不受其他干扰的解决流程:先要查看滤波器的截止频率是不是过高,建议调节之后降低到300Hz这里;下面在模型里添加饱和限幅模块,把输出范围限定在物理实际值的正负多百分之十的区间;最后呢,如果还是存在震荡的情况,在误差反馈回路当中串联接入一个一阶低通滤波器,将这里设定的时间常数成为0.005秒。这三步完成之后,百分之九十九的震荡问题都能够得到解决。

此套方法对脉冲信号或者阶跃响应很陡峭的场景(像爆炸冲击仿真这类)并不适用,这是由于固定步长会导致瞬态细节遗失。替代的方案是,换用变步长ode45求解器,并且在跳变点附近手动加密采样点。简单来讲,稳态误差采用我的方法,而瞬态误差则要更换方式。

常见问题(FAQ)

固定步长设置多少合适,设小了会怎样?
直接填 1e-5,也就是 0.01 毫秒,能迫使模型按统一时间间隔计算。若报错提示步长太小、仿真时间过长,可以先改用 1e-4 试跑,误差在可接受范围内就保持,再逐步调小。
仿真数据出现丢帧或时间戳错乱是什么原因?
软件时钟和硬件时钟默认不同步。在硬件配置面板里勾选强制时钟同步,然后重启仿真。
残差不收敛、一直震荡该怎么处理?
先检查滤波器截止频率是否过高,建议降到 300Hz;再在模型里加饱和限幅模块,把输出限制在物理实际值的正负百分之十;仍有震荡就在误差反馈回路串入一阶低通滤波器,时间常数设 0.005 秒。
0 / 600
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
所有的成功,都源自一个勇敢的开始
相关文章