![]()
一、引言
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位为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:接收端在接收连续帧过程中,等待下一个连续帧的最大时间。
以下是一个典型的多帧传输时序:
发送端发送首帧(FF),启动定时器N_Bs。
接收端收到首帧后,准备接收并发送流控帧(FC),启动定时器N_Br。
发送端收到流控帧后,停止N_Bs,开始发送连续帧(CF),并启动N_Cs。
接收端收到连续帧后,若还有更多帧,则继续等待,并重置N_Cr;若块大小达到,可能再次发送流控帧。
整个传输过程中,任何超时都将导致通信中止,并向上层报告错误。
这些时间参数的设定需根据实际系统要求配置,以保证在不同总线负载和ECU处理能力下通信的稳定性。
六、诊断工具与ECU间的定时
在实际诊断应用中,诊断工具(如CANalyzer、PCAN等)与ECU之间的通信必须严格遵守ISO15765定义的时间参数。工具通常作为发送端或接收端,需要正确实现网络层定时,否则可能导致通信失败。例如,工具在发送多帧请求后,必须在N_Bs内收到ECU的流控帧;同样,工具在收到流控帧后,需按STmin间隔发送连续帧。
七、总结
ISO15765协议通过引入网络层(ISO15765-2),巧妙地将CAN总线短帧与UDS长数据结合,为汽车诊断提供了高效、可靠的传输机制。其核心在于四种报文类型(SF、FF、CF、FC)的灵活运用,以及精细的时间控制机制。理解ISO15765对于开发汽车诊断工具、设计ECU软件以及排查通信故障具有重要意义。
随着汽车电子架构的演进,虽然更高带宽的CAN FD和以太网逐渐普及,但ISO15765作为经典的诊断协议,仍在大量现有车型中占据主导地位,是汽车工程师必须掌握的基础知识。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.