会话模式 | 如何进入 | 权限 |
默认会话 | 通常ECU断电/上电之后就会停留在BT的默认会话 | 权限较低,很多诊断服务请求不被支持,很多诊断相关的数据不能被读写。 |
扩展会话 | 默认会话下,诊断仪给ECU发送诊断会话请求10 03 | 扩展会话的权限比较高,支持的诊断服务业较多。 |
编译会话 | 扩展会话下,诊断仪向ECU发送站短会话请求10 02,ECU惠切换进入扩展会话中。 | 编译会话的权限很高,支持的诊断服务很多,例如软件刷写相关的一系列服务。 |
非默认会话:扩展会话和编程会话统称位费默认会话,如果要让ECU保持在非默认会话中,诊断仪需要定时向ECU发送诊断请求0X3E(诊断在线服务),保持诊断仪与ECU之间的通信,使ECU一直处于非默认会话。
1.2.1.2 DiagnosticSessionControl response
会话诊断控制响应分为三部分:
Response SID:固定为1个字节,表示对SID(0x10)的响应,其值为(0x10 + 0x40).
sub-function: 固定为1个字节,表示诊断仪请求ECU进入的会话,与诊断请求中的sub-function一致,表示对sub-function的响应
Parameter:固定为4个字节,前2个字节表示P2Server_max,也就是ECU对诊断请求的响应时间。后2个字节表示P2*Server_max,也就是ECU在当前无法在P2Server_max时间对诊断请求做出响应,会先响应一帧NRC(否定响应码) 0x78,诊断仪收到0x78的否定响应后,会等待更长的响应时间,也就是P2*Server_max表示ECU响应NRC 0x78后,对诊断请求的最长响应时间。
诊断会话控制对应否定响应码:
1.2.2 ECUReset(ECU复位11服务)
诊断仪通过发送诊断请求ECUReset(0x11),可以使ECU复位在。
ECUReset(0x11)的请求和响应格式为:
Request ID(SID):固定为1字节,其值为0x11。
sub-function:固定为1字节,最高位表示肯定响应抑制位,低7bit是表示ECU将模拟那种方式进行复位。UDS通过低7位定义了3种不同的复位方式。
0x01 hardReswet硬件复位,此值定义了模拟断开供电电源后(eg:电池)后重新上电/启动序列的“硬件复位”的情况。此执行动作需具体规定,并没有标准规定。其结果可能导致重新初始化易失性存储(RAM)和非易失性存储(ROM)至预定义的值。
0x02 keyOffOnReset 钥匙开关复位,此值定义了类似驾驶员关闭又开启点火钥匙的情况。此复位情况要求模拟一个“KEY-OFF-ON”序列(例如,干扰供电电源的转换)。此执行动作执行需要具体规定,并没有标准规定。通常非易失性存储位置收到保护而易失性存储被初始化。
0x03 软复位 该类型的复位强迫ECU重启其应用程序,并且在非易失性存储器中存储所有在应用程序重启时可能会丢失的数据。该复位操作应导致应用程序的重启,但不对之前学习的配置参数、自适应系数以及其他长时调整参数等数据重新初始化。
当诊断仪通过诊断请求对ECU进行某些操作,修改了ECU某些数据,**只有ECU复位这些操作才能生效,此时需要发送复位请求。**在ECUReset执行之后,**ECU复位请求的肯定响应报文在复位操作执行之前发送,**复位之后,ECU应首先进入默认会话,ECU也从非默认会话进入默认会话。
复位请求ECUReset对应否定响应码:
1.2.3 SecuityAccess(0x27 27服务)
27服务的目的就为受限于访问安全的数据提供一种访问方法(请求解锁ECU)。一般厂家可能会为ECU定义某些安全级别稍微高一些r的诊断服务,在执行此类服务之前,就需要执行SecurityAccess这个安全访问诊断请求,进行一个简单的身份验证。例如,完成上传/下载程序或者例程或者数据至服务器、从服务器中读取特殊位置内存数据等诊断服务一般需要执行安全访问。因为不恰当的下载程序或数据至服务器可能惠破坏电子设备或者其它汽车部件,或对汽车排放实现,安全性以及安全标准造成风险。
1.2.3.1 安全访问步骤(重点)
安全访问的概念是使用**“种子”(Seed)和“密钥”(Key)**来实现,安全访问的步骤有以下步骤:
1. 诊断仪向ECU请求“Seed”
2. ECU向诊断仪做出肯定响应,发送“Seed”(Seed通常是生成的伪随机数)
3. 诊断仪向ECU发送“Key”(Key根据ECU响应的Seed计算得来)
4.ECU判断诊断仪发过来的“Key”是否有效,做出肯定或者否定响应。
通常,根据UDS的定义,sub-funciton:0x03,0x05,0x07-0x41是用于请求Seed,sub-function:0x04,0x06,0x08-0x042是用于发送Key。请求Seed和发送Key的sub-fucntion是成对出现的,**发送Key的sub-function等于请求Seed的sub-function加0x01,**比如请求Seed为27 03,那么发送Key为27 04。具体选择哪对值,由整车厂定义。整车厂也可以选择多对sub-function,用于不同等级的安全访问。
安全访问请求Seed的否定响应码包括:<