目录
一、诊断通信管理功能
1、0x10服务
1)诊断会话控制简介
诊断会话控制服务 DiagnosticSessionControl,SID是0X10,主要功能是控制服务端的会话模式切换。一般默认上电后是在默认会话模式下,当某一个服务端正在运行时,只会出现一个会话模式,不会同时存在两个会话模式。
2)会话模式
常用的会话模式有如下几种:
默认会话:01 Default Session,支持信息的读取和查询操作,权限最小,不允许写;
编程会话:02 Programming Session 顾名思义这个是用来烧录程序的,支持下载服务;
扩展会话:03 Extended Session,支持写服务,主要是用来读写数据,如写入VIN,序列号,读写诊断码等;
上电后为默认会话模式,默认会话模式可以由编程会话或者扩展会话切换回来。
默认会话可以切换成扩展会话,经过扩展会话可以切换到编程会话。
3) 请求格式
4) 时间参数
如上图所示,响应回复的时候带有参数diagnosticSession Type。
时间参数有两个,P2server_max和P2server_max,每个参数占用两个字节,所以一共占用四个字节。虽然每个参数都是两个字节,但是其单位(精度)是不一样的,P2参数的单位是10ms,也就是说P2*的结果需要把后面两个字节的数值乘以10才是实际的时间,而P2不需要乘系数。
2、0x11服务
ECUReset(0x11),这个服务主要是通过诊断请求使ECU重启。
SID定义:
Hex (bit6-0) | Parameter | 参数 | 参数描述 |
---|---|---|---|
0x01 | hardReset | 硬件复位 | 可能导致重新初始化易失性存储和非易失性存储至预定义的值 |
0x02 | keyOffOnReset | 钥匙开关复位 | 通常非易失性存储位置受到保护而易失性存储被初始化 |
0x03 | softReset | 软件复位 | 复位应用程序而不初始化先前定义的配置数据,调节参数和其它长效的调整 |
0x04 | enableRapidPowerShutDown | 启用快速断电 | 该子功能适用于非点火上电而仅采用电池供电的ECU。因此,关闭可强制进入休眠模式,并非单纯关闭电源。休眠意味着关闭电源,但仍时刻准备着被唤醒(电池供电型)) |
0x05 | disableRapidPowerShutDown | 禁用快速断电 | 抑制其进入下点休眠模式 |
0x40 – 0x5F | vehicleManufacturerSpecific | 由整车厂自定义使用 | 由整车厂自定义使用,一般不做使用 |
0x60 – 0x7E | systemSupplierSpecific | 由ECU供应商自定义使用 | 由ECU供应商自定义使用,一般不做使用 |
ECU复位服务的肯定应答报文应在复位操作执行之前发送。在复位之后,ECU 应首先进入默认会话。
通常$0x11服务的执行只能在车辆处于静止状态下才可以实施。在有些车厂的定义中,执行复位服务的前提条件有两个:一个是车速小于2km/s,且具备有效车速。具体每个车厂在定义时多少会有些不同,但所有车厂的定义都参照了ISO14229的,所以大致功能及触发的前提是一样的。
3、0x27服务
服务步骤:
客户端向ECU请求种子(Seed);
ECU向客户端发送种子(Seed);
客户端向ECU发送密钥(Key)
ECU对客户端发送的密钥进行比对并应答,验证成功即解锁。
格式如下:
4、0x28服务
我们ECU节点的软件需要不定期更新,一般通过诊断工具更新ECU软件的方式如:FBL(Flash BootLoad),此时为了使程序更新时不受其他报文收发干扰,就会在之前请求28服务来,禁止收发报文。待ECU程序更新完毕,在请求28服务打开报文收发功能。
子服务
00----使能接收和发送
01----使能接收关闭发送
02----关闭接收使能发送
03----关闭接收和发送
功能
01----- 一般通讯报文
02----- 网络管理通讯报文
03---- 网络管理通讯报文和一般报文
5、0x3E服务
用于告诉ECU,诊断仪依然在线。用在非默认会话模式。
诊断仪在不能及时下指令时,需要下发此服务,保证ECU不要在S3server时间内,回到默认会话 。
00----需要ECU回复正响应
80----不需要ECU回复正响应
6、0x85服务
控制ECU停止或重启故障码记录
01 —允许记录DTC
02 —ECU停止记录DTC
在收到诊断仪的清除诊断信息0x14服务后,ECU应开启诊断故障代码记录
二、数据传输
1、0x22服务
读取数据服务为必选服务,通过标识符读数据,可用来确定 ECU 软硬件等信息。通过标识符读数据服务,每次请求仅支持一个标识符。
22+DID
2、0x2e服务
这个服务的目的就是在非易失性存储器(Non-volatile memory,NVM)里写入DID对应的数据。
2e + DID
3、0x14服务
清除DTC
正响应需要在诊断信息清除后,ECU处理完成后发出。
其他服务类似,除11服务是先正响应再做复位操作。
4、0x19服务
读故障码,
01 根据状态掩码报告诊断故障代码数量
02 根据状态掩码报告诊断故障代码
04 根据诊断故障代码报告诊断故障代码快照记录(常用)
06 根据诊断故障代码报告诊断故障代码扩展数据记录
0A 报告支持的诊断故障代码
5、0x2f服务
该服务时通过DID来直接控制ECU对应的输入输出信号
此服务中DID是某个输入输出信号,控制参数为做哪个动作
2f + DID + 动作
6、0x31服务
例程控制,具体执行某个函数
31 + 例程ID + 例程动作
01----启动例程程序
02—停止程序
03----执行结果
关于P2定时器:
P2定时器是在服务会话下工作的,如果ECU无法在规定时间内完成对诊断服务的判断,服务器便向诊断仪发送延迟的负响应。
P2CAN_Server:表示从ECU接收到请求消息到开始发送响应消息之间的定时器性能要求数值。ECU必须确保一个单帧响应消息或者多帧响应消息的第一帧消息在P2CAN_ECU 时间内完成。通常取50ms。
P2CAN_Client:客户端在成功发送完请求消息后等待服务器发送的响应时的超时设置(FF或SF)
P2*CAN_Server:表示从ECU发送了NRC为0x78的否定响应消息到开始发送下一个响应消息之间的增强型定时器性能要求数值,通常取5000ms。
P2* CAN_Client:当客户端在接收到否定响应码为0x78的否定响应后等待服务器发送响应时的增强型超时设置(FF或SF);
报文的类型包括了首帧FF,流控帧FC,连续帧CF和单帧SF四种。
N_PCL中字节1的4-7位用来区分类型。
N_PCLType = 0 单帧
N_PCLType = 1 首帧
N_PCLType = 2 连续帧
N_PCLType = 3 流控帧
未完待续