上传者: qq410511752
|
上传时间: 2025-09-20 09:50:32
|
文件大小: 390KB
|
文件类型: PDF
### SAE J1939协议详解
#### 一、J1939协议基础知识
SAE J1939是一种广泛应用于商用车辆、农业机械、工程机械等领域的车载网络通信协议,它基于Controller Area Network (CAN)技术。该协议不仅定义了数据交换的标准,还规范了车辆电子系统之间的通信方式,确保不同制造商生产的设备之间能够实现互操作。
##### 1.1 CAN2.0B消息格式规范
- **标准帧**:由11位标识符组成,适用于早期CAN网络中的简单通信需求。
- **扩展帧**:由29位标识符构成,提供更大的地址空间,增强了网络的灵活性和功能性。
根据SAE J1939协议的要求,所有设备必须使用扩展帧格式进行通信。虽然标准帧格式可以在网络中存在,但其使用方式需符合文档中规定的特定条件。
#### 二、协议数据单元(PDU)
SAE J1939协议数据单元(PDU)由以下七个关键组成部分构成:
- **优先级**:3位,用于优化报文的传输延迟。优先级范围从0(最高)至7(最低),默认情况下控制报文优先级设置为3,其余报文则设置为6。
- **保留位**:1位,默认值为0,目前未分配具体用途。
- **数据页**:1位,当已分配所有参数组时,其值为0。
- **PDU格式**:8位,用于区分两种PDU格式——PDU1和PDU2。PDU1用于向特定目的地址或全局地址发送数据,而PDU2用于向全局地址发送全局广播。
- **PDU特定域**:8位,其含义由PDU格式决定。对于PDU1格式,这部分表示目标地址(DA);对于PDU2格式,则表示组扩展值(GE)。
- **源地址**:8位,标识发送节点,确保标识符的唯一性。
- **数据域**:存储0至8字节的数据。当需要传输超过8字节的数据时,需要使用传输协议。
##### 2.1 PGN计算规则
- 当PDU格式(PF)<240时,PGN=0x00PF00,此时PDU特定域(PS)被设为0。
- 当PDU格式(PF)>=240时,PGN=0x00PFPS,其中PS为组扩展值,用于区分不同的参数组。
通过这种方式,SAE J1939协议能够支持高达8672个参数组符号(PGN),极大地丰富了网络中的数据类型和应用场景。
#### 三、报文传输
SAE J1939中的报文遵循小端模式传输,即先发送低字节。报文主要分为以下几类:
- **命令报文**:从某一源地址向特定目标地址或全局目标地址发送命令的参数组。
- **请求报文**:请求从全局或特定目标地址获取信息。
- **广播/响应报文**:最常用的报文类型,用于大多数总线数据交互场景。
- **确认报文**:用于确认消息接收或发送的状态。
- **组功能报文**:用于执行特定的功能或指令。
#### 四、应用层面的理解
在SAE J1939的应用层面,PGN和SPN的概念非常重要:
- **PGN(Parameter Group Number)**:参数组编号,是24位的值,包括保留位(R)、数据页(DP)、PDU格式(PF)以及PDU特定域(PS)。
- **SPN(Signal Parameter Number)**:参数组下的具体参数编号。
PGN可以理解为一组按照特定方法分类的参数集合,而每个具体的参数都有其独立的SPN编号。
#### 五、多帧传输
对于需要传输超过8字节数据的情况,SAE J1939引入了多帧传输机制:
- **请求发送(RTS)**:控制字节为16,用于指定目标地址并发起传输请求。报文中还包括整个报文的字节数、数据包个数等信息。
- **准许发送(CTS)**:控制字节为17,用于指示接收方准备好接收数据。包含可发送的数据包数量和当前数据包编号等信息。
- **报文结束应答(EOT)**:用于表示传输结束。
通过这种机制,SAE J1939能够高效地处理大容量数据传输任务,提高了车载网络的灵活性和可靠性。