诊断寻址方式
Posted 诊断协议那些事儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了诊断寻址方式相关的知识,希望对你有一定的参考价值。
诊断协议那些事儿
本文为诊断协议那些事儿专栏文章,当我们知道各个服务的功能的前提下,需要知道请求总线上哪个ECU的数据。 在总线上使用唯一的标识符去指示具体ECU ,以下为某车厂相应的诊断CAN标识符。
文章目录
一、寻址方式
在总线上往往连接着许多ECU,作为诊断仪既可以单独与某一ECU进行通信,也可以同时与总线上所有的ECU设备通信。
1、Physical Address
诊断设备要想将某个ECU中的故障码信息读出来,首先需要给该ECU发送诊断指令,但是整车由许多ECU组成,诊断仪应如何只给相应的ECU发送指令呢?
类似物理地址的不同进行访问–给每个ECU分配一个单独的ID,使诊断仪能够通过这个ID定位到某个特定的ECU,实现点对点通信!
诊断设备发送特定的诊断请求Request,等待指定的ECU给予响应。
ECU发送响应的时候,响应报文的ID是预先定义的(一般情况下:请求ID + 0x008或ID + 0x010)
2、Functional Address
当我们需要一对多通信时,可以广播诊断请求Request,这时总线上的所有ECU可以同时响应诊断设备发出的诊断命令。
一般情况下:功能寻址ID为0x7DF,
功能寻址的特殊用途:
如果测试过程中不知道ECU的诊断ID,可以尝试使用7DF进行请求,再有诊断响应报文的情况下,对其ID减0x008或者0x010来推算诊断物理请求ID。
二、诊断报文的Attribute Name(dbc)
类型 | 描述 |
---|---|
DiagState | 功能寻址请求报文,该项设置为Yes |
DiagRequest | 物理寻址请求报文,该项设置为Yes |
DiagResponse | 物理寻址响应报文,该项设置为Yes |
总结
以上就是今天要讲的内容,一般情况下ECU所支持的服务,物理寻址都可以访问,功能寻址仅能访问部分服务。
仅供参考:功能寻址支持的服务10、11、14、19、22、28、3E、85
19服务读取DTC信息和22服务通过DID读取数据,往往会涉及大量数据读取,一般来说不支持功能寻址!
针对实际项目开发过程中遇到的问题以及对于标准的解读,欢迎读者提供宝贵意见!
以上是关于诊断寻址方式的主要内容,如果未能解决你的问题,请参考以下文章