本文介绍了SAE-J1939标准下的关键概念——参数组标识符(PGN)和信号标识符(SPN),并深入探讨了多包传输机制,为理解和应用J1939通信协议提供了指导。
### SAE-J1939中的PGN和SPN以及多包传输
#### SAE J1939概述
SAE J1939是一种广泛应用在商用汽车行业的开放式网络通信标准,用于定义电子控制单元(ECU)通过控制器局域网总线进行数据交换的方式。此标准涵盖了公交、大型卡车等多种商用车辆,并且在农业机械、军事车辆及海洋运输设备中也有应用。
SAE J1939的传输速率通常为250kbps,部分新协议支持500kbps;它使用具有29位标识符的CAN总线确保数据准确无误地传递。
#### SAE J1939法规文件结构
该标准提供了一系列规范文档来帮助用户理解不同部分的功能和用途。
#### 协议数据单元(PDU)
协议数据单元由七个主要组成部分构成:
- **优先级**:定义了传输的紧急程度。
- **扩展数据页**:用于标识特定类型的数据页面。
- **数据页**:包含实际需要传递的信息内容。
- **PDU格式**:指示消息的具体结构形式。
- **PDU特定域**:可以作为目标地址、组扩展或特定于应用使用的额外信息字段。
- **源地址**:发送方的唯一标识符。
- **数据场**:承载具体传输的数据。
每个协议数据单元(PDU)会被封装在至少一个CAN数据帧中,并通过物理媒介传送到网络中的其他设备。每一个CAN数据帧仅能包含一种类型的PDU信息。
#### J1939报文类型
SAE J1939定义了五种基本的通信消息类型:
1. **命令**:从特定源地址向目标或全局目的地发送指令以触发动作。
2. **请求**:用于获取来自全球范围内的信息,或者专门针对某个设备的信息。
3. **广播响应**:既可以作为主动发布的数据也可以是对于先前接收的消息(如命令、请求)的回应。
4. **确认**:分为基于CAN协议和应用层两种形式的确认消息。
5. **组功能**:用于执行特殊任务,包括网络管理等。
#### PGN与SPN
- **PGN (Parameter Group Number)** 参数组号。它定义了一组相关的参数并指明它们在信息中的布局顺序;不仅用来识别一个PDU的数据格式和优先级,还帮助组织数据传输。
- **SPN(Suspect Parameter Number)**:参数编号。每个特定的SPN代表了一个具体的变量值或状态,如发动机转速、车速等,并提供了一种标准化的方式来描述这些指标。
##### PGN组成
PGN由CAN ID中的扩展数据页(EDP)、数据页(DP)、PF(协议格式)和GE(PDU特殊域),加上六个0位构成的24位标识。当PF值小于240时,GE默认为零;若大于等于240,则采用实际数值表示。例如,在报文ID 0x18FECA17中:
- 第一个字节是18(二进制形式为0001 1000),表明优先级6、EDP和DP均为零;
- PF值为254(十六进制FE);
- GE取值为CA,由于PF>240。
- 四个字节及之后的部分用于标识具体的PGN。
#### 多包传输
在J1939协议中,某些参数组可能包含大量数据。此时需要通过多包方式将信息分割并分发到多个CAN数据帧进行传输。例如,对于支持多包的PGN,一个请求可能会触发一系列响应的数据帧序列;每个帧都携带一部分完整的信息集。
总结而言,SAE J1939是一个强大的通信规范,在利用参数组号(PGN)和参数编号(SPN)的概念下实现复杂数据的有效管理和传输。通过理解和掌握这些核心概念,开发者及工程师可以更好地运用这一标准来提高系统的互操作性和可靠性。