目录
一、前言
ISO15765-2定义了诊断模型中TP网络传输层对于不同CAN报文格式单帧和多帧的处理方式。ISO15765目的是为了解决ISO 11898协议中定义的经典CAN数据链路层与ISO 14229协议中定义的应用层,彼此之间数据长度不统一的问题,比如:经典CAN数据链路层最大能够支持8个字节,但ISO 14229并不仅仅是为了CAN总线设计的,最大容量达到4095个字节。
二、术语
物理通信:使用物理寻址的方式进行通信场景,客户端与服务器之间一对一的诊断通信方式,属于单播方式。
功能通信:使用功能寻址的方式进行通信场景,客户端向多个服务器发出同一功能的诊断请求,一对多的通信方式,属于广播方式;比如禁止/允许所有ECU发送诊断报文。
SA(源地址):发送节点地址(网络层节点地址)
TA(目标地址):接收节点地址(网络层节点地址)
注:在11位CANID中不使用源地址和目标地址
PDU(协议数据单元):是一组信息和数据的集合,表示发送方和接收方对等实体之间传递的信息和数据,包括PCI(协议控制信息)和Data(数据)。
SF(单帧传输):数据长度<6/7字节(第一个字节一般表示数据字节个数)
多帧传输:数据长度>6/7字节,最多允许0xFFF=4095字节,报文类型包括首帧(FF):描述数据传输的起始;流控帧(FC):传输过程中,报文流控制;CF(连续帧):传输数据
三、网络层报文
3.1PDU
PDU是协议数据单元,不同类型的报文的PDU不同。
N_PDU:{N_AI, N_PCI, N_Data}
N_AI:表示寻址信息(address information),隐含源地址,目标地址,寻址方式信息。网络层的地址映射到CANID上
N_PCI:协议控制单元,用于标示N_PDU类型:单帧、第一帧、连续帧和流控制帧
N_Data:数据,包含应用层协议控制信息A_PCI和数据A_Data
3.2N_PCI
N_PCI表示协议控制信息,PCI的第一个字节会标示出是什么类型。需要注意的是连续帧第一个是21-2F,然后是20-2F,20-2F。
注:上述的顺序是MSB在前,LSB在后
流控帧的含义:
FS:
0表示继续发送。让发送方继续发送接下来的连续帧,表示接收方已经做好准备接受最大BS数量的连续帧。
1表示等待。发送方等待下一帧流控帧并重置自己的计时。用于接收方没有处理完上一帧接收到的连续帧
2表示过载。发送方打算发送的数据长度超过了接收方的存储能力。
BS:1-FF表示发送方在发送BS数值的连续帧之后,需要等待接收方的流控帧。0表示不需要任何流控帧,直接发送全部的数据。
STmin:表示发送方发送的两个连续帧之间,最小需要的时间间隔。00~7F单位ms;F1~F9表示0.1~0.9ms;0表示按照发送方最快的速度发送。假如STmin设置为1ms,那么发送方可以以1ms发送也可以1.2ms间隔发送
总的来说流控帧控制发送方以多少大小,多少速度的方式发来数据,太大了或者太快了受不了。
示例:
单帧:
0表示单帧,2表示有两个字节10 01
连续帧:
1表示首帧,00F表示有15个字节长度,从
四、网络传输
4.1单帧报文
示例:
4.2多帧报文传输
发送方首先发送第一帧(首帧),接收方回复流控制帧表示后面的数据以什么格式发送。
示例:
4.3网络层时间参数
S:send发送方
R:receive接收方
N_As:发送方发送完首帧的时间,主要取决CAN速率
N_Br:接收方接收到首帧,发出流控制帧的时间(Developer设计)
N_Cs:发送方接收到流控制帧,发出连续帧的时间(Developer设计)
五、网络层地址格式
将N_PDU映射到CAN数据帧的不同位置,构成了4种地址格式:
常规寻址:对于11位CANID,N_AI映射到CANID,但没有规定N_AI与CANID的具体映射关系
常规固定寻址:对于29位CANID,与混合寻址编排方式类似,完整定义了N_AI如何映射到29位CANID上
扩展寻址:对于11位CANID,N_AI中的N_TA映射到CAN数据帧的第一个字节,N_AI中的其它域映射到CANID
混合寻址:11位或者29位CANID,仅用于远程寻址
常规寻址模式:仅用于11位CANID,寻址方式定义到CANID中,比如物理寻址,功能寻址和回复地址(ECU->Tester)
常规固定寻址:用于29位CANID,分为物理寻址18hDAh和功能寻址18hDBh,需要分解出来CANID后填充N_TA,N_SA
物理寻址:
功能寻址:
扩展寻址:仅用于11位ID,在CAN网络中不常见;在LIN网络中可以见到,N_TA在LIN中为NAD(从节点)
混合寻址:仅用于远程诊断,在第一个字节加入扩展地址
11位CANID:
物理寻址:
功能寻址:
六、错误识别和处理
错误识别和处理包括数据格式错误识别和处理,超时识别与处理,非预期帧识别与处理
(1)第2-4表示网络传输超时,对应多帧传输序列
(2)SN错误:连续帧CF N_PDU的SN不对错误
网络层处理:报文接收被中断,接收方网络层指示上层<Result>=N_WRONG_SN(4),触发发送方超时错误
(3)FS错误:流控制帧只支持30(继续发送),31(等待),32(过载),若发送方网络层接收FC的N_PDU的FS不是这几种
网络层处理:报文发送被中断,发送方网络层应指示上层<Result>=N_INVALID_FS,接收方触发超时错误
(4)非预期帧处理:在多包(非诊断帧)报文传输过程中,任何一方接收到非期望报文(同一个N_AI);网络设计者确定网络采用全双工或半双工,根据节点处于接收状态、发送状态、空闲状态网络层处理方法不同
半双工状态:当网络层处于发送状态,收到任何报文均忽略
全双工状态:除SF和物理寻址的FF外,其他包括功能寻址的FF均忽略且不向上层报告
注:全双工允许数据在两个方向上同时传输;半双工允许数据在两个方向上传输,但是同一时间数据只能在一个方向上传输,实际上是切换的单工。
(5)N_WFTmax错误:接收方最多连续发送多少个等待FC帧个数,本地变量,尽可以在多包报文发送过程中接收方网络实体中定义,系统初始化时应设置正确,使用该变量用于避免发送方一直处于等待FC状态;接收方发送流控制帧达到MAX时还没有处理完本地数据触发该错误
网络层处理:发送方触发超时错误,接收方指示上层<Result>=N_WFT_OVRN
(6)FF_DL错误:发送方发送连续帧首帧长度大于接收方的缓存
网络层处理:接收方网络层中断报文接收,接收方发送FC=Overflow(8),接收方无indication
(7)SF_DL错误:表示常规寻址数据长度=0或者大于7
网络层处理:接收方网络层应忽略接收到的单帧,且接收方无indication
应用层处理:如果出现长度不满足,应该给予负响应7F+错误码
(8) FF_DL<8/7(常规寻址模式为8,扩展或者混合寻址为7)多帧数据长度小
网络层处理:忽略FF,接收方无indication,且不发送FC;(触发发送方超时错误)
(9)ST处理,流控制帧的设置参数STmin;发送方接收到FC中的STmin设置为保留值时,发送方继续发送CF,只是各个CF的间隔时间为协议最大值(7F-127ms),发送方和接收方没有错误向上层报告
参考:
UDS网络层/TP层(ISO 15765-2)的解读:https://zhuanlan.zhihu.com/p/44857562
UDS学习笔记(四)——ISO15765:https://blog.csdn.net/zengqz123/article/details/100584687
UDS诊断基础:https://www.bilibili.com/video/BV1wt4y1D71K/?spm_id_from=333.788.recommend_more_video.0