2 CAN总线数据链路层及交互层
CAN总线数据链路层由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结束。
帧起始(SOF )是标识一个数据帧的开始,用于同步一个显性位,而且只有在总线空闲期间CAN总线上的节点才能够发送帧起始(SOF)。
仲裁场包括ID, RTR, IDE和SRR,其中ID是用来惟一确定一条报文的,表明报文的含义和优先级,标准帧的ID为11位,扩展帧的ID为29位;RTR是远程传送请求位,数据帧的RTR为0,远程帧的RTR为1; IDE是标识符扩展位,标准帧的IDE为0,扩展帧的IDE为1; SRR是远程代替请求位,当需要将请求位远程代替时SRR为1。
控制场包括r0、r1和DLC,其中r0、r1是保留位,通常为0; DLC是数据长度码,用来表示数据场的字节数,有效的DLC为0~8,无效的DLC为9~15。
数据场是一个数据帧中含有内部数据的位置,CAN消息中具体的数据都在这个位置,数据是0~8个字节长度,包含CAN数据帧发送的内容。
CRC场包括CRC和DEL,其中CRC用于进行CRC校验;DEL是CRC界定符,用于界定CRC序列,具有固定的格式,通过1个隐性位在CRC界定符之前进行位填充。
ACK场包括ACK和DEL,是用于确定报文被至少一个节点正确接收,发送节点在ACK发送隐性位,正确接收到报文的节点将ACK发送显性,未正确接收到报文的节点将ACK发送隐性,发送节点检测DEL应答位是否被显性覆盖,如果没有覆盖,说明ACK错误。
帧结束是7个连续的隐性位,用来表示数据帧结束,节点在检测到11个连续的隐性位后认为总线空闲。
2.1 CAN总线数据正确性测试
通过已经建立的测试系统,使用CANoe测试工具对CAN总线上的网络节点进行测试。首先加载相应的数据库,并运行测试系统,如图10所示。在测试系统可以看到内部的数据,其中实线部分为CAN总线网络节点报文的ID值,点划线部分为CAN总线网络节点报文的DLC值,虚线部分为CAN总线网络节点报文的内部数据。
在CAN总线报文数据的测试中,也会有不合法的报文和数据,如图11所示,其中实线部分的CAN总线网络节点的报文无法被解析,不能确定此报文是由哪个节点发送和接收,因此,在网络中存在的这样的报文是不合法的。
2.2 CAN总线错误帧测试
在CAN总线网络正常通信时,是不允许错误帧出现的。如果在网络上出现错误帧,将会对CAN总线进行错误检测和错误界定,检测到错误条件的站通过发送错误标志指示错误。对于“错误主动”的节点,错误信息为“主动错误标志”;对于“错误被动”的节点,错误信息为“被动错误标志”。站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。只要检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(其他的错误条件除外)。
2.3 CAN总线数据交互测试
在CAN总线交互层,主要是对CAN总线网络中各个节点报文发送和接收的定义,其中包括报文发送模式、周期报文的周期时间、报文发送超时处理、报文接收超时处理,报文发送模式包括循环发送、事件触发发送、重复发送。循环发送是指该报文以规定的周期不断地发送;事件触发发送是指该报文的发送是以某个事件的触发为条件的;重复发送是指该报文以规定的次数重复进行发送。如图12所示,通过总线测试,黑线框中的部分为这些报文的发送周期。
每个CAN总线报文在交互的过程中,都传输和交换大量的数据,这些包含在报文中的信号代表了这些数据的含义,需要对这些数据在传输和交换时的具体内容进行测试,如图13所示,在测试系统中,这些数据被清晰地测试和记录。