标签:UDS 定义 DID 诊断 ECU Vector 动态 读取
1. 概述
动态定义DID服务允许诊断仪在ECU内部动态定义一个临时的DID,可以通过该DID读取一段内存的数据,也可以通过改DID一次性读取多个原有DID的数据。动态定义DID既可以是支持22服务的DID,也可以是支持2A服务的周期性读取 DID。
该服务可以更加灵活地读取一些临时数据,也可以降低因频繁发送诊断请求和响应而导致的总线负载过高。
动态定义DID有三种方式:
- 通过原有的DID来定义;
- 通过指定内存地址来定义;
- 以上两种方式结合使用。
该服务可以用一条诊断请求定义一个动态DID,也可以用多条诊断请求定义一个DID,这时ECU应把多条诊断请求所定义的DID内容连接起来。使用多条诊断请求定义DID的时候允许使用原有DID定义和指定内存地址定义两种方式同时存在,即上文的第三种方式。
当想要重新定义某个DID时,要先用子功能-清除动态DID来将原有定义清除,再重新定义。
当诊断仪发送了多条诊断指令来定义同一个动态DID时,如果ECU判断该DID的数据长度过长,ECU应该保持之前的动态DID定义不变,忽略最新的诊断指令。
标准没有禁止定义动态DID时引用其它动态DID,但不推荐这样做,因为当被引用的动态DID被删除时,将会导致引用该动态DID的其它动态DID在读取数据时出现问题。
动态定义的DID在发生会话转换时是否继续保持,可以由用户自定义。
读取动态DID时,ECU应保证返回的数据顺序与诊断仪定义动态DID时的数据顺序一致。
2. 请求报文格式
标签:UDS,定义,DID,诊断,ECU,Vector,动态,读取 来源: https://blog.csdn.net/weixin_42967006/article/details/121271303
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。