ID CS6怎么加框_诊断之诊断ID与网络传输层协议

本文详细介绍了CAN总线通信中的物理寻址和功能寻址概念,以及为何需要这两种寻址方式。同时,阐述了网络传输层在CAN通信中的作用,特别是ISO15765-2协议如何处理超过单帧传输能力的数据。网络传输层通过单帧、首帧、流控帧和连续帧确保多字节数据的完整传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇主要介绍诊断在通信上的一些概念:功能寻址、物理寻址和网络传输层协议。

为什么要有功能寻址和物理寻址之分?

不管是什么通信介质,通信模式无外乎三种:单播,多播和广播。单播:一个发送端一个接收端;多播和广播:一个发送端多个接收端。诊断仪和总线上各个ECU之间通信,有时需要一对一(通过物理寻址实现),有时需要一对多(通过功能寻址实现)。即诊断仪发送的物理寻址报文只有一个ECU会接收处理,而同一总线上所有具备诊断的ECU都会接收并处理功诊断仪发送的功能寻址报文,所以每个ECU的物理寻址都是不同的,而同一总线上ECU的功能寻址都是相同的。有了接收ID,还需要应答ID,由ECU发送,诊断仪接收,各ECU都不同。

为什么要有网络传输层,网络传输层是怎么回事?

CAN不同于以太网,没有网段的概念。从OSI七层网络模型讲,实现CAN通信其实只需要物理层、数据链路层和应用层就够了。我们拿起任何一个项目的通信矩阵,可以看到与OBC相关的应用报文ID可能有十几个或者更多,并且报文的每一位都有固定且明确的物理含义,如电压电流值等。而诊断ID只有3个,即上面提到的功能寻址、物理寻址和应答ID。如果诊断跟应用程序一样,ISO14229中共有25个诊断服务,那可能需要分配的ID个数是25的倍数级。最关键的是CAN帧DLC为8,无法满足所有诊断请求和应答字节数的要求。所以ISO15765-2定义了一种CAN帧分割的网络传输层通信协议。

该协议对CAN帧的byte0-byte2进行了定义,由此产生了单帧(SF)、首帧(FF)、流控帧(FC)、连续帧(CF)。当发送端需要发送数据时,网络传输层会做如下处理,如果数据能用一帧CAN报文能传输完则封装为单帧传输,否则就需要涉及到首帧、流控帧和连续帧。

单帧:用于发送小于等于7字节的数据,如下图所示,byte0高4bit为0的是单帧,byte0低4bit为报文有效字节数。byte1-byte7为数据(包括无效的填充字节,填充数据可为任意值,通常为AA或55)。如例1,应用层需要发送数据[10 03],经过网络传输层封装,最终发送至总线的实际数据为[02 10 03 AA AA AA AA AA]。

5871d65bc32f5af97212499b97695636.png

多帧:当需要发送的数据字节数大于7字节,需要用到首帧、流控帧和连续帧的多帧传输方式,格式定义如下。

93f78387e9f01d678f99fc105edfa65e.png

例如诊断仪需要发送数据[2E 00 01 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00 01 02 03 04 05 06]共01A字节,经过网络传输层封装,将数据通过首帧+3帧连续帧的方式传输至总线,诊断仪发送首帧后根据ECU流控帧的BS与STmin,连续帧的传输时序会有所不同,具体如下图所示。

92a8e07d876f4c6580f133f7d0f5a433.png

总结

物理寻址:每个ECU的物理寻址各不相同,物理寻址的报文只有一个ECU会接收处理;

功能寻址:同一总线上具备诊断的ECU功能寻址是相同的,所有ECU都会接收并处理。

网络传输层:根据应用层需要发送数据的字节数(是否<=7字节)将数据封装成[单帧]或者[首帧+若干连续帧]的方式发送至总线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值