打开网易新闻 查看精彩图片

一、引言

ISO15765是一种广泛应用于汽车电子系统的诊断通信协议,它定义了如何在控制器局域网(CAN)总线上实现诊断服务的传输。该协议解决了经典CAN数据链路层(ISO11898)与统一诊断服务(ISO14229)之间的数据长度不匹配问题,为车载诊断(OBD)和ECU刷写等应用提供了可靠的通信机制。

ISO15765由多个部分构成,其中核心部分包括:

  • ISO15765-1:规定物理层和数据链路层,主要基于CAN总线。

  • ISO15765-2:定义网络层(TP层),负责数据的分包与重组,是本文重点讨论的内容。

  • ISO15765-3:规定应用层服务,与ISO14229(UDS)相兼容。

本文将重点围绕ISO15765-2网络层协议展开,详细介绍其设计目的、报文格式、传输机制以及时间控制等关键内容。

二、协议设计目的

ISO15765的核心目标是解决ISO11898(经典CAN)与ISO14229(UDS)之间的数据长度不匹配问题。经典CAN数据链路层每个CAN帧最多承载8字节数据,而ISO14229作为面向多种总线的诊断协议,其应用层服务数据最大可达4095字节。为了在CAN这种短帧总线上传输长达数千字节的诊断数据,必须在网络层引入分包与重组机制。ISO15765-2正是为此而生,它定义了如何将大型诊断数据拆分为多个CAN帧发送,并在接收端重新组装,从而实现透明传输。

三、单帧与多帧传输 3.1 单帧传输(SF)

当诊断服务数据的长度不超过CAN单帧的可用载荷时,可采用单帧方式直接发送。在ISO15765中,第一个字节通常用于表示数据长度,因此实际可用数据长度为6或7字节(取决于是否扩展地址)。例如,若应用层发送6字节数据,则单帧格式为:第一个字节的高4位表示帧类型(单帧为0),低4位表示数据长度;后续6字节为实际数据。

3.2 多帧传输

若数据长度超过单帧容量(>6或7字节),则需使用多帧传输。发送端网络层将数据拆分为一个首帧(FF)和多个连续帧(CF),并等待接收端通过流控帧(FC)来协调发送节奏。多帧传输最大支持4095字节(0xFFF)。

  • 首帧(FF):包含分段数据的总长度(12位,最大4095)以及部分数据(通常6字节)。接收端收到首帧后,准备接收后续连续帧。

  • 连续帧(CF):每个连续帧的第一个字节包含顺序编号(SN,从1开始循环),后续7字节为数据。接收端根据编号重组数据。

  • 流控帧(FC):由接收端发送,用于控制发送端连续帧的发送速率,包括允许发送的连续帧数量(BS)和最小间隔时间(STmin)。

四、诊断报文格式

ISO15765-2定义了四种网络层协议数据单元(N_PDU),通过N_PCI(协议控制信息)的第一个字节的高4位来区分类型:

N_PCI Type

描述

用途

单帧 (SF)

0

单帧

传输不超过6/7字节的数据

首帧 (FF)

1

首帧

多帧传输的第一帧,包含总长度和起始数据

连续帧 (CF)

2

连续帧

多帧传输的后续帧,包含顺序编号和数据

流控帧 (FC)

3

流控帧

接收端用于控制发送端的速率,包含流状态(FS)、块大小(BS)和最小间隔时间(STmin)

4.1 首帧(FF)

当数据长度超过单帧容量时,首帧作为多帧传输的起点。其N_PCI的第一个字节高4位为1,低4位与第二个字节共同构成12位数据总长度(0xFFF以内)。首帧可携带最多6字节数据,剩余数据将在后续连续帧中传输。

4.2 连续帧(CF)

连续帧用于传输剩余数据。第一个字节高4位为2,低4位为顺序编号(SN),取值范围0~15,循环使用。接收端根据SN将数据按序重组。连续帧每个最多携带7字节数据。

4.3 流控帧(FC)

流控帧由接收端在收到首帧后发送,用于协调发送端的连续帧发送。其N_PCI第一个字节高4位为3,低4位为流状态(FS),后续两个字节分别表示块大小(BS)和最小间隔时间(STmin)。

  • 流状态(FS)

    • 0:继续发送(CTS)

    • 1:等待(WT)

    • 2:溢出(OVFLW,表示接收端缓冲区不足)

  • 块大小(BS):允许发送的连续帧数量,0表示无限制。

  • STmin:连续帧之间的最小间隔时间,以毫秒或微秒为单位。

4.4 单帧(SF)

单帧用于未分片的数据。第一个字节高4位为0,低4位表示数据长度(0~7,但实际可用为0~6或0~7取决于是否扩展地址)。后续字节为实际数据。

五、网络层时间控制机制

为保证通信的可靠性,防止发送端和接收端因等待而永久挂起,ISO15765-2定义了一系列超时参数,用于控制网络层的时间行为。这些超时机制确保在异常情况下能够及时终止通信,避免总线阻塞。

5.1 关键时间参数

  • N_As:发送端从请求发送到成功发送CAN帧的最大时间。

  • N_Ar:接收端从接收到请求到发送响应帧的最大时间。

  • N_Bs:发送端在发送首帧后,等待接收端流控帧的最大时间。

  • N_Br:接收端在发送流控帧后,等待发送端下一个连续帧的最大时间。

  • N_Cs:发送端在发送连续帧后,等待接收端下一个流控帧或完成接收的最大时间。

  • N_Cr:接收端在接收连续帧过程中,等待下一个连续帧的最大时间。

5.2 多帧传输中的时间流

以下是一个典型的多帧传输时序:

  1. 发送端发送首帧(FF),启动定时器N_Bs。

  2. 接收端收到首帧后,准备接收并发送流控帧(FC),启动定时器N_Br。

  3. 发送端收到流控帧后,停止N_Bs,开始发送连续帧(CF),并启动N_Cs。

  4. 接收端收到连续帧后,若还有更多帧,则继续等待,并重置N_Cr;若块大小达到,可能再次发送流控帧。

  5. 整个传输过程中,任何超时都将导致通信中止,并向上层报告错误。

这些时间参数的设定需根据实际系统要求配置,以保证在不同总线负载和ECU处理能力下通信的稳定性。

六、诊断工具与ECU间的定时

在实际诊断应用中,诊断工具(如CANalyzer、PCAN等)与ECU之间的通信必须严格遵守ISO15765定义的时间参数。工具通常作为发送端或接收端,需要正确实现网络层定时,否则可能导致通信失败。例如,工具在发送多帧请求后,必须在N_Bs内收到ECU的流控帧;同样,工具在收到流控帧后,需按STmin间隔发送连续帧。

七、总结

ISO15765协议通过引入网络层(ISO15765-2),巧妙地将CAN总线短帧与UDS长数据结合,为汽车诊断提供了高效、可靠的传输机制。其核心在于四种报文类型(SF、FF、CF、FC)的灵活运用,以及精细的时间控制机制。理解ISO15765对于开发汽车诊断工具、设计ECU软件以及排查通信故障具有重要意义。

随着汽车电子架构的演进,虽然更高带宽的CAN FD和以太网逐渐普及,但ISO15765作为经典的诊断协议,仍在大量现有车型中占据主导地位,是汽车工程师必须掌握的基础知识。