诊断体系结构
层 | 功能 |
---|---|
应用层 | 诊断服务实现 |
网络层 | 中间层,数据转换桥梁 |
数据链路层 | 底层驱动等 |
物理层 | 底层连接 |
网络层协议:IOS15765-2
网络层功能
- 应用层诊断服务数据 — CAN数据帧
- 多帧数据传输,进行数据的打包、解包,协调上下层工作
- 对等实体间的通信,数据同步,时间管理,错误处理
通信流程
概念和术语
- 客户端(Client)
- 诊断请求的提出者 – Tester(诊断仪),发送诊断请求
- 服务器端(Server)
- 诊断响应的提供者 – 某个ECU,发送诊断响应
- 远程客户端 / 服务器(Remote Client / Server)
- 与Server(Client)不在同一 “网段”
- 物理通信
- 采用物理寻址方式通信的场景,及客户端与服务器之间一对一的诊断通信方式
- 功能通信
- 采用功能寻址方式通信的场景,及客户端向多个服务器发出同一功能的诊断请求的通信方式
- 源地址
- 发送节点地址,SA
- 目标地址
- 接收节点地址,TA
- 协议数据单元
- 协议数据单元是一组信息和数据的集合,表示了发送方和接收方对等实体之间传递的信息和数据。协议数据单元包括:
- 协议控制信息(PCI)
- 数据(Data)
- 协议数据单元是一组信息和数据的集合,表示了发送方和接收方对等实体之间传递的信息和数据。协议数据单元包括:
- 单帧传输
- 数据长度 < 6 / 7个字节
- 报文类型 单帧(SF)
- 多帧传输
- 数据长度 > 6 / 7个字节,最多允许 4095 个字节
- 报文类型
- 第一帧(FF):描述传输的起始
- 留控制帧(FC):传输过程中,报文流控制
- 连续帧(CF):传输数据
单帧报文传输
多帧报文传输
网络层时间参数
网络层格式
PDU说明
- N_PDU : { N_AI,N_PCI,N_Data }
参数名称 | 缩写 | 描述 |
---|---|---|
寻址信息 | N_AI | 隐含源地址、目标地址和寻址方式信息 |
协议控制信息 | N_PCI | 用于标示N_PDU类型:单帧、第一帧、连续帧和流控制帧 |
数据 | N_Data | 包含应用层协议控制信息A_PCI和数据A_Data |
7E0h 8 02 10 01 55 55 55 55 55
N_PCI结构
例子:
7E0h | 8 | Tx | 02 10 01 55 55 55 55 55 |
---|---|---|---|
7E0h | 8 | Tx | 10 0F 2E F0 10 04 05 06 |
7E8h | 8 | Rx | 30 0A 0A 55 55 55 55 55 |
7E0h | 8 | Tx | 21 07 08 09 0A 0B 0C 0D |
7E0h | 8 | Tx | 22 0E 0F 55 55 55 55 55 |
FS含义
- 0:继续发送。让发送方继续发送接下来的连续帧,表示接收方已经准备好了接收最大为BS数量的连续帧。
- 1:等待。发送方等待下一帧流控帧并重置自己的计时。一般用于接收方没有处理完上一次接收到的连续帧。
- 2:过载。发送方打算发送的数据长度超过了接收方的储存能力。
BS含义
- 1~FF表示发送方在发送BS数值的连续帧之后,需要等待接收方的流控帧。
- 0表示不需要任何流控帧,直接发送全部数据。
STmin含义
- 表示发送方发送的两个连续帧之间,最小需要的时间间隔。
- 00~7F单位为ms;
- F1 ~ F9表示0.1 ~ 0.9ms;
- 0表示按照发送方最快的速度发送。
网络层地址格式
将N_PDU映射到CAN数据帧的不同位置,构成了4种地址格式
- 常规寻址(Normal addressing)- 11位CANID,N_AI映射到CAN ID,但没有规定N_AI与CAN ID的具体映射关系
- 常规固定寻址(Normal fixed addressing)- 29位CANID,与混合寻址编排方式类似,完整定义了N_AI如何映射到29位CAN ID
- 扩展寻址(Extended addressing)- 11位CANID,N_AI中的N_TA映射到CAN数据帧的第一个字节,N_AI中的其他映射到CAN ID
- 混合寻址(Mixed addressing)- 11或29位CANID仅用于远程寻址
错误识别与处理
- 数据帧格式错误识别与处理
- 超时识别与处理
- 非预期帧识别与处理
SF_DL错误:SF_DL=0或者SF_DL > 7(常规寻址)
- 接收方网络层应忽略接收到的单帧,且接收方无indication;
FF_DL错误
- FF_DL > 接收方的缓存,那么接收方网络层应中断报文接收,接收方发送FC,其中FS=Overflow,接收方无indication;
- FF_DL < 8/7(常规寻址模式为8,扩展或混合寻址为7),网络层忽略FF,接收方无indication,且不发送FC;
SN错误
- CF N_PDU中的SN错误,报文接收应被中断,接收方网络层应指示上层 < Result>=N_WRONG_SN
FS错误
- 如果发送方网络层发现接收到的FC N_PDU中的FS错误,那么报文发送应被中断,发送方网络层应确认上层 < Result>=N_INVALID_FS;
N_WFTmax
- 接收方最多连续发送多少个等待FC帧个数,本地变量,仅可以在多包报文发送过程中接收方网络实体中定义,系统初始化时应设置正确,使用这个变量用于避免发送方节点一直处于等待FC状态
统一诊断服务UDS(ISO 14229-1)
服务标识符SI
请求、肯定/否定响应的格式
- 请求服务标识符SI
- 类型:1字节无符号整数,范围:00 ~ FF
- 请求服务的ID:X0XXXXXX(第6位为0)
- 示例:ReadDTCInformation服务Request 0x19
- 肯定响应服务标识符SI
- 类型:1字节无符号整数,范围:00 ~ FF
- 肯定响应服务的ID:X1XXXXXX(第6位为1)
- 肯定响应服务的ID=请求服务的ID+0x40
- 示例:ReadDTCInformation服务Response 0x59
- 否定响应服务标识符NR_SI
- 类型:1字节无符号整数,范围:7F
- 示例:
- 否定响应服务标识符NR_SI:0x7F
- 请求服务标识符SI:0x19
- 错误代码:0xXX(按情况回复)
服务响应的执行规则
- 对带子功能参数的请求消息的响应 对物理寻址的客户端请求消息
- 对不带子功能参数的请求消息的响应 对物理寻址的客户端请求消息
- 对带子功能参数的请求消息的响应 对功能寻址的客户端请求消息
- 对不带子功能参数的请求消息的响应 对功能寻址的客户端请求消息