不论是燃油车还是新能源车,对于测试行业的小伙伴来说,如何去判断行车电脑的数据是否正确尼,下面分享下通过脚本来计算行车电脑数据,以此与实际ECU显示的进行对比。
例如:实车的小伙伴说驾驶中观察仪表的平均电耗(或是其他)太大,感觉不正确,要求我们调查下,那么如何判断实车数据是否正确?
第一步:请求小伙伴将行车中的CANoe截取的log发过来,通过replay功能回放该数据,然后通过代码来监控并计算数据,平均电耗 = 总电耗/行驶里程
第二步:对于行驶中的电耗进行累加即可,该类问题具体代码如下
总电耗累计
on message 0xXXX
{
//总线获取电压
xxxVoltage = this.xxxVoltage.phys;
//总线获取电流
xxxCurrent = this.xxxCurrent.phys;
//write("电流 =%f",xxxCurrent);
//电耗总量
totalkwh = totalkwh + (xxxVoltage * xxxCurrent)/(360000*1000)
}
第三步:监控脉冲,计算行驶里程。方式是通过前一次和后一次的脉冲差来累计里程,具体最大的脉冲差根据公司定义
on message 0xXXX
{
FL当前值 = this.xxxxFLRC.phys;
FR当前值 = this.xxxxFRRC.phys;
RL当前值 = this.xxxxRLRC.phys;
RR当前值= this.xxxxRRRC.phys;
//左前轮脉冲差计算
if(FL当前值> 临时信号变量 )
{
脉冲差=FL当前值- 临时信号变量;
临时信号变量 = FL当前值;
if(判断脉冲差是否大于0 and 小于最大脉冲差)
将脉冲差赋值给一个变量进行后面的累加
}
}
else if (FL当前值 =临时信号变量)
{
return;
}
else
{
临时信号变量 = FL当前值
}
..........
右前,左后,右后代码都一样
//脉冲差总和计算
Total = 左前轮脉冲差和 + 右前轮脉冲差和 +右前轮脉冲差和 +右前轮脉冲差和
//判断几个车轮脉冲是否有效,正常情况都是有效的Valid_No就等于4;上面的脉冲差和的计算也要判断,无效的车轮脉冲步计算再内,小伙伴可以自己添加判断条件
Valid_No = (1 - this.xxFLSts) + (1 - this.xxFRSts) + (1 - xxxRLSts) +(1 - xxRRSts);
//仪表里程计算
ODO = ODO+(Total *2*π*半径)/(一轮脉冲值 * 1000 * Valid_No);
第三步:最后一步就是通过平均电耗=耗电总量/行驶里程,得出来的平均电耗是否与ECU显示一致,如果一致则表明ECU开发没有问题,如果不一致就找开发确认代码。
平均电耗=( totalkwh*xx)/ODO;xx为电耗周期换为s
write("平均电耗 =%f",平均电耗);
对于电耗油耗的值,一些公司做了一些滤波算法或是最高值限制,该算法可借鉴https://blog.csdn.net/q751197694/article/details/51798900
以上就是对实车中平均电耗是否正确做的判断,其他数据均可参考下,且做行车电脑的仿真开发也差不对可以借鉴下。不正之处欢迎指出,谢谢!