DCM&DEM

DCM
DCM模块负责接收并响应诊断仪的数据请求,也就是说,DCM模块负责诊断数据流以及诊断状态的管理。并且检查请求的服务是否在当前的会话和安全等级中支持。

DCM是以服务的形式响应诊断仪的数据请求的。DCM支持UDS(14229-1)和OBD-II(15765-4)的全部服务。

10服务

DiagnosticSessionControl (0x10) service,用于激活和切换会话。在默认状态下ECU处于Default Session。14229-1中定义了如下几个Other Session。14229-2中有关于会话层的详细描述。

DCM&DEM_第1张图片

一般用到02 Programming Session和03 Extended Diagnostic Session。02服务用于开启编程,APP主动跳转到Boot,并告知Boot处于SIB(Stay In Boot)状态等待升级。这里会涉及到一个问题,也就是Programmning Session的请求是APP响应还是Boot响应,一般是由BOOT响应,但是各家做法可能不同,APP也可以响应。
DCM&DEM_第2张图片

DiagnosticSessionControl Response SID:响应ID等于服务ID+0x40

P2、P2*是由OEM定义的APP在会话的最大保持时间,一般P2为50MS,P2*为5000MS。

当超过定义的时间DCM就会自动切换到Default Session。

11服务

ECUReset (0x11) service,诊断仪请求ECU重启服务。11服务支持一下几种复位类型。

27服务

SecurityAccess (0x27) service,提供安全访问数据或者服务的方法。Client首先请求Seed,在Server返回Seed之后,Client根据Seed计算出Key,并将Key发送给Server。Server接收到Key之后校验,校验成功则进入安全状态。
 

28服务

CommunicationControl (0x28) service,用于控制通信的发送与接收,诊断帧不受影响。

DCM&DEM_第3张图片

DCM&DEM_第4张图片

Communication Type定义如下:

DCM&DEM_第5张图片

3E服务

TesterPresent (0x3E) service,用于保持诊断仪与ECU的连接,同时将之前的服务和状态保持。不会因为超过P2*的时间限制重新切换到Default Session。

DEM模块

   DEM(Diagnostic Event Mannger)模块,用于处理诊断事件的信息和相关的数据,DCM模块通过服务请求可以获得这些数据。

DCM&DEM_第6张图片

 DTC由两个字节或者三个字节组成,每个DTC对应一个或者多个Event。比如ECU检测到某个Sensor断线了,就可以通过DEM接口函数:Dem_SetEventStatus 改变DTC的状态。

你可能感兴趣的:(p2p,网络协议,网络)