[CAN BUS]CAN分析仪(或其他CAN设备)的最大接收能力测试方法---CAN 接收压力测试(每秒最大接收帧数)
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每秒最大的接收能力测试出来是8600帧左右,这个成绩相当猛了。