HIL110讲,基于廉价淘宝继电器的高精度定时

文摘   2024-08-27 08:10   上海  
低成本,高性能,大用处,是车辆技术的持续追求。
最近在做一些测试方案的时候,用到了继电器控制,有一个经验心得值得给大家分享一下。
说实话,这个创意,让俺沾沾自喜了将近2年了,每次想起来,都感觉很得意。

方法论

项目组要求测试ECU的网络管理本地唤醒性能。
具体测试内容,可以参考下面的文章:
总线54讲,基于Python的AutoSAR网络管理自动化测试系统[详解]
说简单点,就是,ECU在休眠状态下,给它个KL15本地唤醒信号,看它多久能发出来网络管理报文。
需要计算一个时间差!!!
这个测试一般需要采用示波器,用通道1采集KL15电压,用另一个通道采集CAN电压(可以采集CAN高、CAN低,或者用虚拟通道显示差分电压)。
然后,用KL15的上升沿做触发,捕获波形,然后观察网络管理报文CAN电压和KL15的上升沿的时间差即可。

基本上就是上图所示的图,报文晚于KL15发出来,时差为δt1.
细心点的,可以再解析一下这个报文,看看它的id对不对,是不是网络管理5xx
分割线----------------------------
嗯,上述就是经典的硬线IO时间性能测试方法,不算复杂,比较准确。
但是,师子一号是不满足于此的,我们要追求更高的性价比。
观察一下这个测试任务,就可以发现,它的测试精度要求是毫秒级的,甚至5毫秒的精度也是可以接受的。
我们或许并没有必要使用示波器,毕竟它那么贵,开发调用也有难度,设备也比较笨重。
而且,这个测试方法略显繁琐,只有一张示波器图片,数据回溯不太方便,放大缩小之后就不清晰了,而且很难重新计算时间差。
有鉴于此,新的方法应运而出。
我们可以在KL15闭合的同一时刻,发一帧特征报文,要注意这个报文的id不同于整车任何一个ECU的任何一个报文。
比如,可以把这个特征报文id设置为0x0
这样,我们把报文录制下来之后,就可以通过计算网络管理报文时间戳和0x0的时间差,就能计算出结果了。
上面的方案,确实很实用,但是其最大的难点在于保证“同一”。
怎么才能确保0x0和KL15闭合的时刻,高度统一呢?
答案是,示波器标定!
步骤1:在LabVIEW中,通过串口写入继电器闭合(使KL15有效)命令的同时,发送一帧0x0报文。
步骤2:用示波器显示步骤1中,KL15的上升沿,和0x0的图形。
如果报文超前,说明报文发太早了。如上图所示,报文相比KL15,提前了δt,说明继电器动作慢了δt。
咋办呢?
好办得很,直接把报文发送做δt的延时即可!
这样以后,就再也不需要示波器了!
以后测试T_wakeup的话,直接用ECU发的0x5XX时间戳,减去0x0的时间戳即可!简单得不要不要的。
如果你还不放心,可以把上述示波器捕获,重试100遍,看看δt的分布律,如果高度集中,那说明这个继电器板非常可靠,时间很稳定!
如果时间分布非常集中,那我们还可以据此猜测,这个继电器接收串口命令,是采用中断的方式进行处理哒!
耶!
需要注意的是,设备的修改,可能需要重新使用示波器标定,比如电脑换了、继电器模块换了,甚至是CAN驱动换了等等。
【本文完】


【推荐】
汽车行业,千万不要去干外包
恒润和意昂,两扇窗户,看懂行业的过去、当下和未来

总线10讲,东半球最好用的excel2dbc工具,永远免费送

【课程】汽车和LabVIEW完美结合,干货十足,助您掌握核心技术,提升职场竞争力

专题技术交流群,用户讨论组,大合集(加各种工具交流群,请后台联系)

培训测试技术,居然需要将近2万?太过分了!!!
[汽车改装市场]针对新款大灯的LIN转换模块

车辆技术
致力于汽车研发测试技术的研究推广,帮助同行互通有无,为提升职业价值感,为产业崛起而奋斗!
 最新文章