【车载开发系列】CAN总线通信---总线报文格式

Source

【车载开发系列】CAN总线通信—总线报文格式

一.什么是ISO15765

ISO15765协议是一种CAN总线上的诊断协议。其中ISO15765-1包括物理层和数据链路层,ISO15765-2对网络层进行说明,ISO15765-3则是规定到应用层的具体服务。
ISO15765-2定义了诊断模型中TP网络传输层对于不同CAN报文格式单帧和多帧的处理方式。

二.ISO15765的目的

ISO15765目的是为了解决ISO11898协议中定义的经典CAN数据链路层与ISO14229协议中定义的应用层,彼此之间数据长度不统一的问题
经典CAN数据链路层最大能够支持8个字节,但ISO14229并不仅仅是为了CAN总线设计的,最大容量达到4095个字节。

三.单帧传输的概念

当应用层的诊断服务数据可以利用单帧CAN数据传送时,可采用单帧传送方式,一般第一个字节一般用来表示报文的长度,所以单帧的数据长度是6/7字节。

四.多帧传输的概念

多帧传送方式中,网络层根据需要,将诊断数据进行拆分成一个首帧和多个连续帧。首帧包括了分段数据的总长度信息以及一些数据帧;每个连续帧的第一个字节包含拆分的顺序编号,后面的七个字节用于存放诊断数据。接收端在接收到连续帧后根据接收数据帧的编号重组服务数据。
其中多帧的场合数据长度>6/7字节,最多允许0xFFF=4095字节。

五.诊断报文格式

报文的类型包括了首帧FF,流控帧FC,连续帧CF和单帧SF四种。N_PCL中字节1的4-7位用来区分类型。
N_PCLType=0 单帧
N_PCLType=1 首帧
N_PCLType=2 连续帧
N_PCLType=3 流控帧
在这里插入图片描述

1)首帧FF

首帧用来描述数据的起始;
首帧只支持一条信息无法在单个CAN帧中发送时使用。例如,拆分的信息。拆分信息的第一帧编码为FF,在接收到FF时,接受网络层实体应重组这些信息。

2)连续帧CF

连续帧用来传输大的数据。
当发送拆分数据时,所有的连续帧跟着编码为连续帧( CF )。在接收到一个连续帧,接受网络层实体应当重组接收到的数据字节直到整个信息被接收到。接收实体在接收最后一帧信息并无接收错误之后,应传递这些信息到相邻的上。

3)流控帧FC

流控帧用来表示传输过程中对报文流控制。
流控制的目的是调整连续帧N _ PDUs发送的速率。流控协议数据单元的3种类型用
于支持这些功能。这些类型由协议控制信息的流状态( FS )域指示。

4)单帧SF

对于未拆分的信息,网络层提供了一个优化的网络协议,即将信息长度值仅放置在 PCI 字节里。单帧( SF )应当能支持在单个 CAN帧中的信息传输。

六.网络层时间控制机制

网络层时间管理是为了保证发送端和接收端不会因为等待而永久挂起,从而失去通信能力,因此每次通话的过程中设置了超时的时间参数,以便在网络层更好的控制总线的传输。
多帧报文发送方与接收方间的网络层定时
在这里插入图片描述

七.网络层时间控制术语

术语 描述
N_As 发送端将数据传送到接收端的最大时间
N_Ar 接收端将流控制传送到发送端的最大时间
N_Bs 发送端在成功发送首帧后到接收到流控帧的最大时间
N_Br 接收到首帧后到开始发送下一个流控帧的时间
N_Cs 发送端在收到流控帧之后到开始发送连续帧的时间
N_Cr 接收端在发送成功流控制后到收到连续帧的最大时间
STmin 连续帧之间的最小发送时间间隔。STmin是协议栈需要实现的一个定时器,不同于前面几个定时参数限制最大时间,这个定时器是限制最小时间间隔的,当发送完一个CF后,发送者需要延时STmin才能发送下一帧CF

八.诊断工具和ECU间定时

在这里插入图片描述

术语 描述 设定值
S3Server 会话超时,超时后返回默认会话模式 一般设定为5s
S3Client 发送下个TestPresent,以保持在非默认会话模式的时间 一般设定在2s
P2Server 诊断工具请求和ECU响应间的时间间隔。ECU端 一般最大50ms
P2Server 诊断工具接收到否定响应码78h后等待的超强超时时间间隔 最大5000ms
P2Client 诊断工具请求和ECU响应间的时间间隔,诊断工具端 一般最大不超过150ms
P2Client 诊断工具接收到否定响应码78h后等待的超强超时时间间隔 最大5100ms则超时
P4Server ECU接受一个请求到最终响应开始传输的时间间隔 一般最大值设定在120s