目录
1 基于OSI模型的UDS参考实现
2 UDS的相关概念
客户端 | 诊断请求的提出者--测试仪,发送诊断请求 |
服务器 | 诊断相应的提供者--某个诊断ECU,发送诊断响应 |
本地客户端和本地服务器 | 两者在同一网段进行连接 |
远程客户端和远程服务器 | 两者不在同网段,通过远程地址进行标识 |
协议数据单元-PDU | 信息和数据的集合,发送方和接受方之间的信息和数据 |
(协议控制信息-PCI)+Data | 就是所谓的PDU |
各层的PDU | L_PDU,N_PDU,T_PDU,S_PDU,A_PDU |
UDS 物理寻址 1:1 | 客户端和服务端之间采用1对1 的诊断通信方式 |
UDS功能寻址 1:N | 客户端和服务端之间采用1对多 的诊断通信方式 |
源地址 | 发送节点地址 SA |
目标地址 | 接受节点地址 TA |
其中 源地址和目标地址:
地址和报文ID相关:诊断报文ID = 基地址 + 节点地址
例如:某个ECU为物理寻址,基地址为0x700,测试仪的地址为0x01,ECU的地址为0x08,则测试仪对此ECU的物理寻址为:0x701,ECU的响应则为0x708.
功能寻址则一般根据特定的ID。
3 应用层服务
应用层服务通常称之为诊断服务。诊断服务基于客户端-服务端系统,用来作为车载服务器的测试检查和诊断的功能。
3.1服务原语
基本的使用流程如下图:
3.2 应用层协议数据单元 A_PDU
A_PDU = A_PCI + A_SDU
3.2.1应用层数据单元A_SDU
从下面的结构图中,可以看出应用层协议数据的格式
3.2.2应用层协议控制信息 A_PCI
根据A_PCI的第一个字节是否为0x7F ,将其分为两种个格式,但是对于周期性数据响应消息的传输,应用层协议数据单元中,并不存在A_PCI.
3.3 服务标志符
类型:1个字节的无符号整数
范围:0x00 - 0xFF
ISO 14229中,定义的SID总共有26个,总共分为6大类,如下图:
具体的定义位置,在以下表中进行标注:
3.4 诊断三要素
诊断请求/响应行为如下:
3.4.1 请求
对应请求服务标志符
类型 | 1个字节的无符号整形 |
范围 | 0x00-0xFF |
SID | X0xxxxxx (SID第6位为0) |
示例 | ReadDTCInformation(0x19) 的SID为00011001 |
请求服务的A_PDU
3.4.2 肯定响应
对应肯定响应服务标志符
类型 | 1个字节的无符号整形 |
范围 | 0x00-0xFF |
SID | X1xxxxxx (SID第6位为1) ==== >所以,肯定响应SID = 请求服务SID+0X40 |
示例 | ReadDTCInformation(0x19) 的肯定响应SID为01011001 = 0x59 |
3.4.3 否定响应
对应肯定响应服务标志符(NR_SID)
类型 | 1个字节的无符号整形 |
范围 | 固定值:0x7F |
SID | 0x7F |
否定响应的A_PDU如下图:其中参数responeCode用于否定响应消息,来表示诊断服务失败或无法及时完成的原因,也就是我们所说的否定响应代码。
3.5 应用层服务响应的行为
=>总目录<=