CAN通讯设备,尤其对于CAN适配器(各种USB/网络/PCIe转CAN设备)CAN记录仪、分析仪的一个很重要的指标就是每秒CAN帧的最大接收数量。这个指标关系到一个设备在高负载网络是否存在丢帧的情况,如何测试每秒接收帧数也就成了评估一个CAN设备的性能的关键。
本测试方案适用于绝大多数CAN接收设备,本文以ZLG的USB CAN盒和开源USB-CAN CANable为例进行测试。 测试设备:- 待测CAN设备,注意必须具备CAN帧数据导出或计数功能,以及必须支持只听模式
- 一台CAN发送设备,能正常发CAN帧,具备自动重复功能(按协议实现标准的CAN控制器都支持)
- 逻辑分析仪一台,用于抓CAN波形,并导出数据统计总线上实际发送的CAN帧数量。
测试原理:- 如何产生最大总线负载:利用CAN控制器的自动重发机制,由控制器硬件进行重复发送。
- 在最大1000K比特率下测试。
- 将待测接收设备设置为只听模式,再用发送设备发送一帧数据。
- 只听模式下接收设备不会对任何CAN帧发送ACK。
- 发送设备未收到ACK将持续重复发送,直到发送超时。(超时时间一般由软件设定或有一个默认值,或无限重发)
- 如何统计实际发生的帧数:用逻辑分析仪(或有其他类似设备)抓取总线或CAN收发器RX/TX波形。导出数据统计报文总数。
测试示例:这次测试CANable为待测接收设备,ZLG USB-CAN为发送设备,用salese logic 16逻辑分析仪抓包统计 打开CANable打开上位机cangaroo,设置比特率1000K,打开只听模式 

打开ZLG USB-CAN同样为1000K比特率 
设置逻辑分析仪将逻辑分析仪ch0接到CANable 的收发器CAN-RX pin上。 设置好CAN 1000K协议解析 
10M采样率,ch0下降沿触发,采样5S 发送数据通过ZLG CAN-test,发送一个8字节的数据帧(也可以用远程帧,每秒帧数会达到最大,但实际意义不大) 
点击发送后,由于CANable为只听模式,没有节点做应答,超时时间到后显示发送失败。 
这个时候查看逻辑分析仪,大概抓取了1.7s的数据波形。(ZLG USB-CANde的默认发送超时就是这个时间) 抓取总帧数从波形可以看到,在这1.7S内,总线已经达到理论最大负载。帧间隔时间只有11us,每隔0.13ms就有一帧数据。 

具体有多少帧数据,我们需要导出来看一下。 在Analyzers里面CAN协议设置选项中,将数据导出为csv文件。 
打开csv文件,拉到最后,可以看到统计的包数量为0-1287,共1288帧,耗时1.67s 这个数据就是实际发生的CAN帧总数了,如果待测设备也能收到这么多数据,那就说明在最大负载率下没有丢失数据。 
 实际接收帧数我们再从cangaroo中导出CANable接收到的数据 
然后用notepad++打开导出的文件,通过行号,可以看出导出的帧数。 前面有7行需要减去,最后是1295行:共计接收到1288帧,那么CANable的成绩是相当不错的,做到了1帧不丢。 

最后用同样的方式发送远程帧测试,CANable每秒最大的接收能力测试出来是15200帧左右,这个成绩相当猛了。 
|