UDS网络层SF_DL错误处理

大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS网络层SF_DL错误处理介绍,希望能对你有所帮助

大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS网络层SF_DL错误处理介绍,希望能对你有所帮助

一、问题背景

最近在遇到一个诊断服务的问题,一开始也是一头雾水。

正常情况下,测试诊断一般都是测支持的会话模式,寻址方式,回复的NRC,回复的内容是否正确等等,例如测试0X10服务:

通常都是,测试一下10服务支持的子功能, 以及 各个子功能在哪个会话模式在支持,是否支持功能寻址,支持的NRC等等。

举个例子:

TX     02 10 03 00 00 00 00 00 // 02: 0表示单帧,2表示后面的数据有2个字节;10:10服务是诊断会话控制服务;03:表示子功能是扩展诊断会话;后面的0是填充位

RX     06 50 03 00 32 01 F4 AA // 06:0表示单帧,6表示后面的数据有6个字节;50表示肯定响应码,值为服务请求的值加0X40;03表示子功能;00 32表示P2server_max,转换成十进制就是50,那么P2server_max就是50ms

01 F4表示P2*server_max,转换成十进制就是500,再乘以单位10ms,即P2*server_max为5000ms

但是你见过这种测试的case吗?

UDS网络层SF_DL错误处理

也就是: TX 00 10 01 CC CC CC CC CC

告诉下位机发送的单帧数据长度为0,但是后面还是跟了2 byte,后面的5 byte是填充位。解释一下,为啥会回复成:7F 01 11,因为把第二个字节10当成数据长度了,把01当成service ID了,所以回复0X11服务不支持

一开始见到这个测试case的时候,心里一直在骂客户,这测的啥玩意,甚至差点就要跟客户说这个测试case不合理了,直到后来自己翻阅了一下ISO-15765的协议,查到相关的规范说明后,发现小丑竟是我自己。实际上这个case的用意就是测试一下UDS的网络层协议是否符合规范。

一般情况下如果客户没有给企标就参考UDS的标准规范,应用层就参考ISO-14229,网络层就参考ISO-15765的协议

二、网络层SF_DL的错误处理

先来介绍一下网络层的数据格式:

具体的组成如下图所示,第一个字节的高4bit,用来表示帧类型,

单帧SF:0,首帧:1, 连续帧:2, 流控帧:3

单帧的第一个字节的低四位表示要传输的数据长度,如果不是标准帧的话,CAN_DL 会大于8 byte,那么 第一个字节的 低 四位就置零,用byte 2表示单帧要传输的数据长度

UDS网络层SF_DL错误处理

看一下网络层的 单帧 长度错误的处理规范

2.1 CAN_DL <= 8

如果接收到的CAN _DL <= 8,以下4种情况都要忽略收到的这一帧内容

UDS网络层SF_DL错误处理

1)如果网络层接收到的单帧长度为0,则网络层要忽略接收到的单帧内容。像下面这种情况,就需要忽略这一帧,不做任何回复

UDS网络层SF_DL错误处理

2) 如果是标准地址时,且收到的单帧数据比(CAN_DL – 1)大,则网络层要忽略收到的这一帧数据。

如果是扩展或混合地址时,且收到的单帧数据比(CAN_DL – 2)大,则网络层要忽略收到的这一帧数据

例如,像下面这种情况

UDS网络层SF_DL错误处理

3) 在CAN帧数据填充的情况下:如果网络层收到一个CAN_DL不等于8的SF,则网络层忽略收到的SF N PDU;

UDS网络层SF_DL错误处理

4) 在CAN帧数据优化的情况下:如果网络层收到的SF DL值不符合表12所示的有效值,则网络层忽略收到的SF N PDU。其实就是,在没有填充位的情况下,CAN_DL和SF_DL需要满足下图表12的关系,如果不满足则忽略这一帧

UDS网络层SF_DL错误处理

UDS网络层SF_DL错误处理

2.2 CAN_DL > 8

接 收到的CAN_DL > 8,如下2种情况需要忽略

UDS网络层SF_DL错误处理

1)如果网络层接收到的SF第一字节的低4位不等于0,则 网络层要 忽略收到的这一帧数据

2) 如果 网络层接收到的SF中的SF_DL和上面的表13符合,则 网络层要 忽略收到的这一帧数据。

所以当发送的单帧报文,长度为8字节,但单帧的长度为0时,则不响应

UDS网络层SF_DL错误处理

来源 嵌入式老林

声明:本站内容资源均来源于网友分享及网络公开合法渠道,但我们不对这些内容的观点、描述的准确性负责,也不保证所有信息的原创性、真实性、完整性及即时性。对于本站所含文章或资料的版权问题,如您发现有侵犯版权的情况,请联系我们进行处理。同时,我们提倡将本站内容用于个人学习交流,严禁未授权的商业用途,否则由此产生的法律后果由使用者自行承担。感谢支持!
资料下载车载通讯

资料下载|ISO14229车载UDS诊断协议(资料包)

2024-6-15 17:39:34

车载通讯

UDS统一诊断服务【十三】请求下载0X34服务

2024-6-24 12:03:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索