UDS: DID可以设置成3个BYTE吗
目录
问题背景
结论及分析
一、 传输效率可能会降低——具体的取决于将此DID应用在哪个诊断服务中
二、相关的工具是否支持——需要一一确认
三、替代方案——现有的“动态定义DID”是否能满足需求?
问题背景
交流群的小伙伴有人问“UDS里定义DID长度为2个Byte,客户来问我DID能不能做成3个Byte,拿不出资料跟他解释"。
这时候,只是单纯的觉得,协议这种规定死的东西,当然不能想变就变,不然当初给它设置固定长度,就没有意义了。
后来另外一个小伙伴回复说”改协议栈,客户上帝,上帝说了算“。
才想到协议栈是可以改的~ 哈哈哈 对呀,协议也是人定义的,当然也可以被改。
这时候发现自己对于协议中为什么要把DID设置为2个Byte,并不明白。能想到的理由只有一个2个Byte的长度已经足够用了。但这只是够用,如果增加长度会怎么样呢?
其实要考虑的是,如果改了会有什么影响?这些影响是否可控?我要从哪些方面分析优劣势呢?
结论及分析
先上结论:以小白的视角,查了一堆资料后,得出的结论是不建议修改。
有以下3点理由。
一、 传输效率可能会降低——具体的取决于将此DID应用在哪个诊断服务中
因为CAN标准帧总共8Byte, 网络层占1Byte,还剩余7 Byte 可用。
根据不同诊断服务的要求不同,传输效率是否会受影响也需要具体情况具体讨论:
比如说,如果是诊断服务,request/response下面这种格式的,3Byte DID就不影响:
<SID> + <Sub-Funtion> + <DID>
其中SID 需要1Byte,Sub-Func需要1Byte,剩余5Byte可用,有足够的空间给DID。
但如果是数据读写服务,request/response是下面这种格式, 3Byte DID将可能降低传输效率:
<SID>+<DID>+<DATA>
这时:DID如果是2Byte,Data可以传输4Byte;DID如果是3Byte,Data只有3Byte的位置。
- 如果data长度3Byte内能够传输完成就不影响,
- 如果Data超过3Byte,那么原本单帧可完成传输的内容,需要多一个帧才能完成,不仅是传输效率打折扣,拆包、组包操作也需要额外开销。
【参考文章:毕乾坤,徐旭.UDS协议栈中的时间参数解析[J].汽车实用技术,2019(13):43-44+57.DOI:10.16638/j.cnki.1671-7988.2019.13.016.】
二、相关的工具是否支持——需要一一确认
【参考链接:CDD数据库文件制作(三)——DIDCDD数据库文件制作(三)——DID_涓涓悦然的博客-CSDN博客 】
DID 长度为2Byte是通用规则,改成3Byte,需要确认相关的工具是否是固化配置的,是否会有应用上的限制。
比如目前了解到的和DID相关的一个软件CANdelaStudio,需要用它制作CDD文件,在CDD文件中创建DID时,DID的DataType是下拉框选择的,里面的选项是否支持3Byte的长度?
这个软件可能支持(我没有实际操作过这个软件,无法确认),其他的软硬件设备呢?
三、替代方案——现有的“动态定义DID”是否能满足需求?
【参考文章:汽车UDS诊断详解及Vector相关工具链使用说明——2.2.7 动态定义DID(0x2C)汽车UDS诊断详解及Vector相关工具链使用说明——2.2.7 动态定义DID(0x2C)_老孟_的博客-CSDN博客_动态did】
动态定义DID服务允许诊断仪在ECU内部动态定义一个临时的DID,可以通过该DID读取一段内存的数据,也可以通过改DID一次性读取多个原有DID的数据。动态定义DID既可以是支持22服务的DID,也可以是支持2A服务的周期性读取DID。
该服务可以更加灵活地读取一些临时数据,也可以降低因频繁发送诊断请求和响应而导致的总线负载过高。
以上只是简单的分析记录,里面涉及到的内容点也并不太理解。欢迎小伙伴们一起讨论指正呀~
END
UDS: DID可以设置成3个BYTE吗相关推荐
- mysql blob 读取 图片_mysql中以blob形式存储的图片文件 通过ajax方式传输 在js中设置成img控件的src...
第一步,读取blob数据, 第二步,将blob数据转换成byte数组 第三步,将byte数据进行base64加密转换成字符串并回传 第四步,接收字符串 第五步,将img控件的src设置成"d ...
- 【Ubuntu】安装Ubuntu+Win双系统后,每次开机默认是进入Ubuntu,如何设置成默认进入Win?
1.问题描述 安装Ubuntu+Win双系统后,每次开机默认是进入Ubuntu,如何设置成默认进入Win? 2.解决方法 1)记住开机选择中windows 10是第几个,从0开始记,如下图本人的是4 ...
- 【html】如何解决标签设置成超链接后字体格式及颜色变化的问题
问题描述: 如图所示,将一个标签设置成超链接后字体颜色和格式会发生改变,如果我只想让它保持原来的格式应该怎么办? 解决方法: 在a标签中添加一个属性: style="color:inheri ...
- Nginx设置成服务并开机自动启动的配置详解
Nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,接下来通过本文给大家介绍Nginx设置成服务并开机自动启动的配置,需要的朋友可以参考下 在/et ...
- Python中matplotlib默认绘制的条形图比较胖?如何设置成体型匀称的条形图,达到最佳的可视化效果。
Python中matplotlib默认绘制的条形图比较胖?如何设置成体型匀称的条形图,达到最佳的可视化效果. #默认情形下的条形图 n_bars = len(x_labels)xval = np.ar ...
- ThreadLocalMap的enrty的key为什么要设置成弱引用
ThreadLocal如何回收value,什么时候回收?(学习笔记) https://www.cnblogs.com/1693977889zz/p/11111568.html 1)ThreadLoca ...
- linux 把根目录设置成777权限的补救方法
Linux把根目录设置成777权限的补救方法 前两天蛋蛋手就那么一抖啊,一不小心就把根目录权限设置成777了. 本想执行chmod -R 777 ./* 结果一不小心少按了一个点,变成了chmod - ...
- pip镜像源永久设置成国内镜像源,提升下载速度
pip镜像源永久设置成国内镜像源,提升下载速度 文章目录: 一.临时使用 二.永久修改 1.Linux环境 2.windows环境 经常在使用python的时候需要安装各种模块,而pip是很强大的模块 ...
- CentOS下KVM网卡设置成网桥时获取镜像端口的流量
首先,网桥配置好之后就能实现一个简单的交换机,而交换机的特点就是MAC地址学习,那么KVM的网卡设置成网桥之后,也就是相当于连接到了交换机上. 此时如果要实现在二层交换机或三层交换机做端口镜像,并把这 ...
最新文章
- hdu 1724 Ellipse——辛普森积分
- 为什么推荐 Java 程序员使用 Google Guava 编程
- Hyper-V 3.0功能部署PART 5:秒级实时迁移
- Tomcat参数配置
- 数据库中关于convert的参数学习(转化函数用法)
- 完整的中英文词频统计
- java技术自我_2020年Java程序员如何进行自我提升?
- C++11之std::async使用介绍
- Mybatis中的#号与$符号的区别
- apache2 配置php,Windows配置PHP5与Apache2
- HRESULT是什么类型
- hdu 6088 Rikka with Rock-paper-scissors (2017 多校第五场 1004) 【组合数学 + 数论 + 模意义下的FFT】...
- stm32-sbus数据接收,并通过CAN转发给车辆控制
- 爬虫-3-requests和代理
- gis与计算机科学之间的联系,GIS地理信息系统课程论文 地理信息系统与其他学科的关系及应用前景...
- 判断某键值是否存在[注册表操作]
- 阿里云centOS 、linux 常用安全软件
- web渗透--3--web安全原则(下)
- EasyUI Messager的alert基本使用
- 设置电脑颜色保护眼睛