Loading

本篇文章主要介绍在ISO 14229-1标准中定义的UDS服务——$28 CommunicationControl,其为Tester提供了控制目标ECU通信行为的能力。

1 服务介绍

整车网络各ECU之间的通信依赖于通信报文,这些报文从功能上一般被划分为两大类:

  • 应用报文(App Message):主要用于传输应用层的数据,如传感器数据、控制命令等。应用报文的主要功能是实现车载系统各个ECU之间的数据交换。应用报文的发送时机可以通过配置参数控制。
  • 网络管理报文(NM,Network Management):主要用于管理车载网络的状态,包括节点的唤醒和休眠。其主要功能是确保网络中的各个节点在没有通信需求时进入低功耗模式,从而节约电池能量。网络管理报文具有周期性发送的特点,当节点需要唤醒网络时,会快速连续的发送网络管理报文,以确保网络的快速响应。网络管理报文通常在网络唤醒时优先发送。

$28 CommunicationControl诊断服务则主要用于关闭或恢复ECU不同类别通信报文的接收或发送。

一般而言,$28服务有以下的主要应用场景:

  1. 刷写ECU或向ECU写入大量数据时。因为在刷写软件的时候,ECU不需要通信相关的功能。通过在编程会话下执行$28服务关闭总线通信报文的发送和接收,可以减少网络总线负载,将ECU的所有通信资源都留给软件刷写或大数据下载,以提高ECU的刷写效率。在ECU刷写完成后,再利用$28服务恢复对应通信报文的发送和接收即可。
  2. 某些特殊的测试场合,比如希望只接收对应的应用报文或只发送对应的网络管理报文。

2 服务数据格式

2.1 请求数据格式

以下是$28服务的请求数据格式:

字节序参数字节值说明
#Byte1CommunicationControl SID0x28必选
#Byte2sub-function = [controlType]0x00 – 0xFF必选
#Byte3communicationType0x00 – 0xFF必选
#Byte4nodeIdentificationNumber (high byte)0x00 – 0xFF可选a
#Byte5nodeIdentificationNumber (low byte)0x00 – 0xFF可选a
  • a:只有当 controlType == 0x04 或 0x05 时,nodeIdentificationNumber 才有效

2.1.1 controlType

controlType是$28服务的sub-function参数,用于指示如何控制ECU的通信行为,其具体定义如下表所示:

controlTypeDescription
0x00enableRxAndTx
使能对应通信报文的接收和发送
0x01enableRxAndDisableTx
使能对应通信报文的接收,但禁用其发送
0x02disableRxAndEnableTx
使能对应通信报文的发送,但禁用其接收
0x03disableRxAndTx
禁用对应通信报文的接收和发送
0x04enableRxAndDisableTxWithEnhancedAddressInformation
针对特定的总线主节点,将其相关的子总线段切换到仅支持诊断的调度模式(禁用除诊断报文以外的其他通信,只有诊断报文可以通过主节点到达子总线节点)
0x05enableRxAndTxWithEnhancedAddressInformation
针对特定的总线主节点,将其相关的子总线段切换到应用程序调度模式(即0x04子功能的恢复)
0x06 – 0x3FISOSAEReserved
0x40 – 0x5F车辆制造商规定
0x60 – 0x7E系统供应商规定
0x7FISOSAEReserved

2.1.2 communicationType

communicationType参数用于指示要对哪种类型的通信报文进行控制。其是一个位编码值,长度为1个字节,它允许同时控制多个通信类型。其具体定义如下表所示:

Encoding of bitValueDescription
0 – 10x0ISOSAEReserved
0x1normalCommunicationMessages
普通应用报文
0x2networkManagementCommunicationMessages
网络管理报文
0x3networkManagementCommunicationMessages and normalCommunicationMessages
普通应用报文和网络管理报文
2 – 30x0

0x3
ISOSAEReserved
4 – 7a0x0Disable / Enable specified communicationType
ECU仅能控制自身涉及的总线通信,而不负责控制其子节点的通信
0x1

0xE
Disable / Enable specific subnet identified by subnet number
控制由子网编号标识的特定子网通信
0xFDisable/Enable network which request is received on (Receiving node (server))
控制接收请求(接收节点(服务器))的网络通信
  • a:communicationType参数的 4-7 bit位一般置为0x0,直接限定ECU只能去控制自身涉及的总线通信,而无法控制其他节点的发送和接收。4-7 bit位设置的其他值基本不用,ISO-14229也没有明确说明,故不需去做太多了解。

2.1.3 nodeIdentificationNumber

nodeIdentificationNumber参数长度为2个字节,用于标识车辆网络中的某个网络节点。仅当子功能参数controlType设置为0x04或0x05时,此参数才存在。其具体定义如下表所示:

Byte ValueDescription
0x0000ISOSAEReserved
0x0001

0xFFFF
nodeIdentificationNumber
节点识别号标识连接在车辆总线系统上的某节点。只有当节点识别号有效时,ECU才能执行通信控制功能。

2.2 肯定响应数据格式

以下是$28服务的肯定响应数据格式:

字节序参数字节值说明
#Byte1CommunicationControl SID + 0x400x68必选
#Byte2sub-function = [controlType]0x00 – 0x7F必选

2.2.1 controlType

controlType是对应$28服务请求报文中的controlType参数回显。

2.3 否定响应数据格式

以下是$28服务的否定响应数据格式:

字节序参数字节值说明
#Byte1Negative Response SID0x7F必选
#Byte2CommunicationControl SID0x28必选
#Byte3NRCsupportedNRC必选

supportedNRC的可选值如下表所示:

supportedNRCNRC define描述
0x12sub-functionNotSupportedECU不支持该诊断请求服务的子功能
0x13incorrectMessageLengthOrInvalidFormat诊断请求指令的长度或格式不对
0x22conditionsNotCorrect执行诊断的条件不满足
0x31requestOutOfRange诊断请求参数超出范围或DID/RID不支持

3 服务通信示例

3.1 禁用网络管理报文

本例展示了Tester通过$28服务禁用ECU网络管理报文发送的流程,其中,存在以下条件:

  • sub-function bit7: SPR = 0

3.1.1 请求报文

字节序参数字节值
#Byte1CommunicationControl SID0x28
#Byte2sub-function = [controlType = enableRxAndDisableTx]0x01
#Byte3communicationType = networkManagementCommunicationMessages0x02

3.1.2 肯定响应报文

字节序参数字节值
#Byte1CommunicationControl SID + 0x400x68
#Byte2sub-function = [controlType = enableRxAndDisableTx]0x01

3.2 切换诊断调度模式

本例展示了Tester通过$28服务控制车辆总线系统上的地址为0x000A的主节点子总网段切换到仅诊断调度模式的流程,其中,存在以下条件:

  • sub-function bit7: SPR = 0

3.2.1 请求报文

字节序参数字节值
#Byte1CommunicationControl SID0x28
#Byte2sub-function = [controlType = enableRxAndDisableTxWithEnhancedAddressInformation]0x04
#Byte3communicationType = normalCommunicationMessages0x01
#Byte4nodeIdentificationNumber (high byte)0x00
#Byte5nodeIdentificationNumber (low byte)0x0A

3.2.2 肯定响应报文

字节序参数字节值
#Byte1CommunicationControl SID + 0x400x68
#Byte2sub-function = [controlType = enableRxAndDisableTxWithEnhancedAddressInformation]0x04

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

👤本站访客数: 👁️本站访问量: