Service UDS SID2E&;SID22

Service UDS SID2E&;SID22,service,protocols,diagnostics,sid,automotive,Service,Protocols,Diagnostics,Sid,Automotive,在SID2E和SID22中,是否存在整个帧长度超过7字节的情况 如果是,那么它将如何发送或写入数据字节?是,在UDS中,对SID0x22(ReadDataByIdentifier)的响应或对SID0x2E(WriteDataByIdentifier)的请求长度超过7字节是一种常见的用例。为此,需要一条由多个CAN帧组成的消息 已发送,使用传输层() 考虑一个普通的单帧消息,其中第一个字节的高半字节是0x0,即 0x7E0 0x03 0x22 0xF1 0x90 0x7E8 0x04 0x

在SID2E和SID22中,是否存在整个帧长度超过7字节的情况


如果是,那么它将如何发送或写入数据字节?

是,在UDS中,对SID
0x22
(ReadDataByIdentifier)的响应或对SID
0x2E
(WriteDataByIdentifier)的请求长度超过7字节是一种常见的用例。为此,需要一条由多个CAN帧组成的消息 已发送,使用传输层()

考虑一个普通的单帧消息,其中第一个字节的高半字节是
0x0
,即

0x7E0   0x03 0x22 0xF1 0x90
0x7E8   0x04 0x62 0xF1 0x90 0x01
这里的有效负载在7个字节内(请求和响应中),因此第一个字节的低半字节告诉我们确切的长度(
0x03
在请求中,
0x04
在响应中)。由于完整的信息适合于单个CAN框架,因此不需要其他信息。但要发送更长的诊断信息,需要在多个CAN帧之间进行分割(分段)。为此,需要3种不同类型的消息:

  • 第一帧被发送到接收器以开始传输。 它包含完整有效负载的长度(最多4095字节) 数据和消息的前6个字节。的高半字节
    0x1
    第一个字节表示消息是第一帧
  • 流控制帧确认第一帧的接收已完成 回复第一帧的发送者。它包含额外的 预期的STmin定时和块大小等信息。这个 第一个字节的高位半字节
    0x3
    表示该消息为 流量控制框架
  • 向接收机发送一个或多个连续帧,其中 包含最多7个字节的剩余有效负载-以及 计数器,以确保数据可以按正确顺序取消分段。 第一个字节的高位半字节
    0x2
    ,表示消息为 连续的帧
  • 现在考虑以下场景:测试器应用程序发送单个帧<代码> 0x7e00x03 0x220xf10x90作为请求。ECU可能希望向测试仪应用程序发送响应

    0x62 0xF1 0x90 0x01 0x02 0x03 0x04 0x05
    (8字节有效负载)

  • 因此,ECU将首先发送第一帧:
  • 0x7E8 0x10 0x08 0x62 0xF1 0x90 0x01 0x02 0x03

  • 并等待检测仪应用程序发出流量控制框
  • 0x7E0 0x30 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

  • 然后ECU将继续发送连续帧,直到 发送完整的消息:
  • 0x7E8 0x21 0x04 0x05 0x00 0x00 0x00 0x00 0x00

    对于SID
    0x2E
    (WriteDataByIdentifier),它将非常类似,只是角色颠倒,因为测试仪应用程序通常希望在请求中发送长消息,ECU将使用流量控制消息进行回复。i、 e

    0x7E0   0x10 0x08 0x2E 0xF1 0x90 0x01 0x02 0x03
    0x7E8   0x30 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x7E0   0x21 0x04 0x05 0x00 0x00 0x00 0x00 0x00
    0x7E8   0x03 0x6E 0xF1 0x90 0x00 0x00 0x00 0x00
    
    如果需要多个连续帧,第一个字节将从
    0x21
    增加到
    0x2F
    ,然后从
    0x20
    重新开始计数

    0x7E0   0x10 0x76 0x2E 0xF1 0x90 0x01 0x02 0x03
    0x7E8   0x30 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x7E0   0x21 0x04 0x05 0x06 0x07 0x08 0x09 0x0A
    0x7E0   0x22 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11
    ...
    0x7E0   0x2F 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x7E0   0x20 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF