汽车电控诊断UDS通信过程

之前聊到,汽车电控诊断有诸多的通信协议,在车辆发生故障时,或者故障后,诊断仪或者在线诊断设备需要读取控制器中的数据,数据在车辆中基本上还都是通过串行总线传输的(无论是CAN、K、L、IP),既然是串行总线,一般都是有规定传输的头、尾,以及中间的数据部分,数据部分一般也会约定最大传输的字节,以及校验方式。

这个也就是通信过程中讲的 数据链路层的通信协议的约定。

我们也看到其实,遇到故障时,有时候要读取的内容很多,有时候一个数据包承载不了全部的数据,就是要涉及到网络层的数据拆分。

为了在诊断应用过程中不去理会实际的物理总线的格式和通讯要求,诊断系统也按照通讯模型,将网络层拆分出来。以基于CAN总线的UDS为例 ,我们来看一下ISO15765-2 中的网路层定义的功能,其实最主要的就是拆、组包,以及超时控制。

拆包和组包

  • 组包:当需要发送的数据量超过单个CAN数据帧所能承载的容量时(通常为8字节),数据会被分成多个部分,这个过程称为组包。组包会创建一系列的CAN数据帧,每个数据帧都包含一部分数据,以及必要的控制信息,比如序列号和传输请求。

  • 拆包:当接收方收到这些分散的CAN数据帧时,需要将它们重新组合成原始的大数据单元,这个过程称为拆包。拆包过程涉及到识别数据帧的序列号,按照正确的顺序重新组装数据,并验证数据的完整性。

为了实现拆包组包的过程,将CAN分成了一下4种类型:

N_PDU name

N_PCI bytes

Byte #1

Byte #2

Byte #3

Bits 7~4

<N_PCIType>

Bits 3~0

Single Frame (SF)

0

SF_DL

N/A

N/A

First Frame (FF)

1

FF_DL

Consecutive Frame (CF)

2

SN

N/A

N/A

FlowControl(FC)

3

FS

BS

STmin

1、单帧(SF)

不需要拆包解包,用一帧8字节可以传输完成

其中第一个字节高4位为0 表示这是一个单帧

第4位表该帧的数据长度,应用时取值1~7

2、多帧

多帧传输,是有 首帧(FF)、连续帧(CF)、流控帧(FC) 三种类型的帧一起控制的

  • 首帧(FF)是 发送方发给接收方的,作为整个通信的初始化过程,首帧有12个bits 来表示数据长度(FF_DL),理论上最多支持4095个字节的数据。然后首帧中剩下的字节就开始依次的传递数据

  • 接收方收到首帧后,发送流控帧(FC),告诉发送方接收能力,包含FS(FlowStatus)、BS(BlockSize)、STmin(SeparationTime)

    • FS:有三个状态,0 继续发送;1 等待,通知等待新的流控帧; 2 溢出,仅在接收首帧判断数据无法接收时发出

    • BS:00,后续不再发流控帧,发送方顺序发完所有数据;01~FF,在下个流控帧到来前,可以发送的最大数目的连续帧数

    • STmin:定义了在连续发送的CAN帧之间的最小时间间隔。这个时间间隔是必要的,以确保网络中的所有节点都有足够的时间来处理接收到的数据。00~7F,单位为ms:0~127ms;F1~F9,单位为us:100us~900us;其他位为保留位。

  • 接收方收到流控信息后,应该按照流控信息中的FS、BS、STmin 的信息约束,进行连续帧(CF)的发送。第一字节的低四位表达连续帧的顺序,0~15 循环使用

无论是单帧还是多帧,后面的数据内容呈现的就是我们SID涉及的各种服务和响应了。

地址

除了CAN帧的数据部分,在通信过程中,CAN的ID有时也会设计和定义赋予特殊的功能,在UDS中,对于标准帧 CANID为11位,采用的是统一编码,标准固定地址。

但是扩展帧CANID 为29位时,可以支持一些特定的用法:

  • bit23~16 : 为 N_TAtype,表示地址类别,218为物理地址,219表示功能地址

  • bit15~8:表示目的地址

  • bit7~0:表示源地址

超时

在多帧的发送和响应过程中还有一些超时的响应方法和控制,相关的参数要求在 ISO15765-2中被严格的定义了,大部分的超时控制时间是1s,其余详细的运行要求直接参考协议中的定义了。

对于诊断开发工程师来说,通常不太需要关心这个部分,这个部分已经有基础软件协议栈自动完成,但是对于诊断测试工程师来说,了解这一通讯过程,对原始总线数据进行分析还是比较有帮助的。

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值