上传者: 25284701
|
上传时间: 2025-06-30 16:28:28
|
文件大小: 6.52MB
|
文件类型: DOCX
### SAE-J1939中的PGN和SPN,以及多包传输
#### SAE J1939概述
SAE J1939是一种广泛应用于商用汽车行业的开放式网络和通信标准。这一标准旨在定义如何让电子控制单元(ECU)通过控制器局域网(CAN)总线进行有效通信。它几乎涵盖了所有类型的商用车辆,包括但不限于公交车、大型卡车等,并且在农业、军事及海洋运输领域也有应用。
SAE J1939的工作速率通常为250kbps(部分新协议支持500kbps),使用29位的CAN标识符来确保数据的准确传输。
#### SAE J1939法规文件结构
SAE J1939提供了一系列规范文档,其命名结构有助于用户理解不同部分的功能和用途。
#### 协议数据单元(PDU)
PDU由七个主要部分构成:
- **优先级**:定义了数据传输的紧急程度。
- **扩展数据页**:用于标识数据页的类型。
- **数据页**:包含实际的数据信息。
- **PDU格式**:指示数据的具体格式。
- **PDU特定域**:可以作为目标地址、组扩展或特定于特定应用。
- **源地址**:发送方的标识。
- **数据场**:包含实际传输的数据。
每个PDU都会被封装在一个或多个CAN数据帧中,通过物理媒介传输至其他网络设备。每个CAN数据帧只能承载一种PDU。
#### J1939报文类型
SAE J1939定义了五种基本的报文类型:
1. **命令**:此类消息允许从特定源地址向特定目的地或全局目的地发送命令,以触发特定动作。
2. **请求**:用于从全局范围或特定目标地址请求信息。
3. **广播/响应**:既可以用作主动广播也可以作为命令或请求的响应。
4. **确认**:分为两种形式——基于CAN协议的确认和应用层确认。
5. **组功能**:用于一组特殊功能,如网络管理功能等。
#### PGN与SPN
- **PGN(Parameter Group Number)**:参数组号。它是对一组相关的SPN进行分组并定义其在消息中的布局和顺序的标识。PGN不仅用于识别消息的优先级和数据格式,还帮助结构化地传输和解析参数。
- **SPN(Suspect Parameter Number)**:参数号。每个SPN代表了一个特定的参数,如发动机转速、车速等,它提供了一种标准化的方式来描述和识别不同参数。
##### PGN的组成
PGN由CAN ID中的扩展数据页(EDP)、数据页(DP)、PF(PDU格式)、GE(PDU特定域)加上六个0位组成,总共24位。当PF小于240时,GE默认为0;当PF大于等于240时,GE取正常值。例如,对于报文ID 0x18FECA17:
- 第一个字节是18(二进制为0001 1000),优先级为6,EDP=0,DP=0;
- 第二个字节是PF=FE(十进制254>240);
- 第三个字节是GE=CA(由于PF>240,GE取正常值);
- 第四个字节及之后的部分用于标识具体的PGN。
#### 多包传输
在J1939协议中,某些PGN可能包含大量数据,这可能导致单个CAN数据帧不足以容纳全部信息。此时就需要采用多包传输的方式,即把数据分成多个CAN数据帧进行传输。例如,对于多包PGN,一个请求可能会触发一系列CAN数据帧的响应,每帧包含一部分数据。这种机制确保了即使是非常大的数据集也能被有效地传输和处理。
总结而言,SAE J1939是一种强大的通信标准,它通过PGN和SPN的概念实现了复杂数据的有效管理和传输。通过理解和掌握这些核心概念,可以帮助开发者和工程师更好地利用这一标准,提高系统的互操作性和可靠性。