### 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的概念实现了复杂数据的有效管理和传输。通过理解和掌握这些核心概念,可以帮助开发者和工程师更好地利用这一标准,提高系统的互操作性和可靠性。
2025-06-30 16:28:28 6.52MB J1939
1
这是一个sae j1939中很重要的一个文件,关于PGN的分配、数据的算法、源地址的分配做了详细的说明。
2023-03-01 14:13:09 738KB PGN SAE1939 源地址
1
当前文件包括了SAE J1939协议中所有的PGN,并且具体到每个PGN对应的SPN,并包含对应的解析信息;其中还分别详细分类介绍协议ID对应的车辆控制器名称;
2022-11-15 09:24:22 3.75MB 文档资料
J1939DA,PGN,SPN统计表
2022-06-09 09:08:19 11.47MB J1939
1
Part Grouping Network (PGN) pre-trained models on CIHP dataset
2022-04-17 09:07:39 1.15GB PGN
1
根据英文原文档,翻译狗翻译的中文文档。和自己整理的PGN
2022-02-28 13:49:52 24.61MB JT1939 中文 应用层 PGN
1
使用方法: # Entry into the proj dir $ cd [PROJ_DIR] # gcc the id2pgn.c(can frame's id convert to pgn) or pgn2id.c(pgn convert to can frame's id) $ gcc [C_FILE] -o [OUTPUT_FILE_NAME] #run the code $ ./[OUTPUT_FILE_NAME] Github仓库:https://github.com/Neyzoter/Canid2PGN
2022-02-16 14:10:11 65KB CAN PGN 汽车
1
本ID与PGN对照表是关于动力电池相关国家充电标准的,很多人只知道ID,但是并不会根据PGN寻找报文,现在你的福利来了。希望对大家有帮助,
2021-09-23 14:44:25 161KB PGN ID
1
用来打开PGN国际象棋棋谱,还可以制做棋图,尤其后一个功能,是所有可以制作棋图软件里最方便的,深受国际象棋教练喜欢。本人制作的汉化版,第一次发布。
2021-08-02 16:21:49 6.45MB 国际象棋 制图 PGN
1
芯片自带的CAN模块上移植J1939协议源代码,代码中can驱动函数,can的驱动结构体,可供移植参考
2021-07-13 19:45:45 348KB J1939 PGN读取
1