目录
1. 概述
针对诊断设备和汽车ECU之间的数据交换,有较多诊断协议,表1.1中对常见协议进行区分,表1.2为ISO 7层模型与K、CAN协议的对应关系。
表1.1 常用诊断协议的区别
协议名称 |
内容 |
ISO-14230 |
又称KWP2000,描述了基于K线的诊断协议(一条线K/或两条线K和L) |
ISO-15765 |
即UDSonCAN,描述了基于CAN线的诊断协议 |
SAE J1979 |
模式1下定义了多种不同数据流对应的PID |
ISO-14229 |
即UDS,此标准定义了诊断的应用层服务(如,获取什么数据流需发什么指令),与底层标准无关 |
表1.2 ISO模型与CAN/K协议的对应关系
ISO模型 |
CAN线 |
K线 |
应用层 |
ISO 15765-3 |
ISO 14230-3 |
表述层 |
N/A |
N/A |
会话层 |
N/A |
N/A |
传输层 |
N/A |
N/A |
网络层 |
ISO 15765-2 |
N/A |
数据链路层 |
ISO 11898-1 |
ISO 14230-2 |
物理层 |
ISO 9141-1 |
ISO 14230-1 |
基于K线的诊断协议,其为一根双向数据传输线,而CAN线通过两根线(CAN_H、CAN_L)传输数据,通信过程中需要关注的问题涉及怎样定义报文、如何建立通信并交换数据,以K线为例,ISO 14230-2数据链路层协议中主要定义了传输的数据格式、通信服务、错误处理,ISO 14230-3主要规定了应用层服务。
2. K线数据链路层介绍
1)报文结构
K线通信的报文结构如表2.1所示,最长包含260 字节(255 data bytes + 4 bytes header + Checksum),其中目标地址(Tgt)和源地址(Src)及附加长度信息(Len)均可选,取决于报文头中格式字节(Fmt)的A1 A0位,对各部分的具体描述见下文。
表2.1 报文结构
报文头 |
数据域 |
校验和 |
|||||||
Fmt |
Tgt |
Src |
Len |
SId |
Data[0] |
Data[1] |
… |
Data[n] |