SAE J1939 是一个广泛应用于重型车辆和商用车辆领域的通信协议,它由美国汽车工程师协会(Society of Automotive Engineers)制定。这个协议主要目的是实现车辆内部不同电子控制单元(ECUs)之间的数据交换,以提高车辆的性能、可靠性和可维护性。SAE J1939 的全集包含了一系列文档,详细阐述了该协议的各个方面。 1. **协议概述** SAE J1939 协议基于控制器局域网络(CAN)技术,但针对商用车辆进行了优化,支持高达250Kbps的传输速率。它定义了通信架构、报文格式、地址分配以及错误处理机制,确保了不同制造商的设备在车辆网络中的无缝集成。 2. **通信架构** SAE J1939 网络通常包括多个节点,如发动机控制器、变速器控制器、仪表盘等。每个节点都有一个唯一的29位物理地址,其中7位用于功能地址,22位用于制造商特定的网络地址。这种地址结构支持最多254个通信节点。 3. **报文结构** 报文是 J1939 协议中的基本信息单元,由数据字段和控制字段组成。数据字段携带实际的车辆状态或控制信息,而控制字段指示报文的类型、优先级和目的地址。J1939 支持多种报文类型,如周期性报文、请求报文和事件触发报文。 4. **协议栈** SAE J1939 协议栈分为多个层次:应用层、表示层(PDU)、会话层、传输层、数据链路层和物理层。每一层都负责不同的功能,从高层的应用逻辑到底层的物理信号传输。 5. **参数组(PGNs)** 参数组是 J1939 中的一种概念,它定义了一组相关数据,如发动机转速、油压等。每个 PGN 都有一个唯一编号,用于确定报文携带的数据内容。通过 PGN,车辆各部件可以互相传递所需的信息。 6. **传输层** J1939 传输层处理数据的分段和重组,确保长数据能够通过 CAN 总线的短帧结构进行有效传输。它包括单帧、多帧和确认帧,以适应不同长度和实时性的需求。 7. **错误检测与恢复** 协议中包含了错误检测机制,如CRC校验,以确保数据的完整性和准确性。当网络出现错误时,J1939 提供了错误恢复策略,如重新发送和错误通告。 8. **应用** SAE J1993 在卡车、客车、农业机械、建筑设备等多个行业中广泛应用。它支持诊断、故障警告、远程监控等功能,有助于实现更高效、安全的车辆管理。 9. **实施** 实施 J1939 协议需要理解其规范并编写兼容的软件代码,这可能涉及硬件接口设计、网络管理算法以及通信协议栈的实现。 10. **学习资源** "SAE J1939-全集-英文" 包含了详细的官方文档,对理解和实现该协议至关重要。这些文档通常涵盖了协议的每一个细节,包括报文结构、网络管理、地址分配等,是开发 J1939 应用的基础。 通过深入学习和理解 SAE J1939,工程师能够有效地构建和集成车辆电子系统,提高车辆的整体性能,并降低维护成本。对于从事商用车辆电子系统开发的人来说,掌握 J1939 协议是必不可少的专业技能。
2025-07-31 17:46:19 8.46MB SAE-J1939 官方英文版
1
### 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
CAN总线的SAEJ1939-71协议(汽车应用层)中文版
2024-05-21 10:45:09 2.26MB saej1939协议 saej1939 can协议
python-j1939 汽车工程师协会标准SAE J1939是在车辆部件之间进行通信和诊断的车辆总线推荐做法。 它起源于美国的汽车和重型卡车行业,现已在世界其他地区广泛使用。 SAE J1939在商用车领域用于整个车辆的通信,其物理层在ISO 11898中定义。在拖拉机和拖车之间使用不同的物理层(在ISO 11992中指定)。 该软件包依赖于Brian Thorne多年来维护的项目,该项目是该项目的一部分,并且从该项目中脱颖而出。 该编码目前与python-can版本3.3.2兼容。 克隆python-can仓库后,请务必签出“ release-3.3.2”分支 ontroller甲REAÑetwork的C是设计成允许微控制器和设备彼此通信的总线标准。 它具有基于优先级的总线仲裁,可靠的确定性通信。 它用于汽车,卡车,轮船,轮椅等。 can包为Python开发人员提供了控制器区
2024-04-28 10:30:10 38KB Python
1
SAE J1939英文全集.zip
2024-04-01 11:58:49 8.52MB J1939
1
J1939协议是由美国汽车工程师协会(SAE) (SAE协会简介)定义的一组标准。J1939标准用于卡车、公共汽车和移动液压等重型车辆。在许多方面,J1939标准类似于旧版J1708和J1587标准,但J1939标准协议建立在CAN(控制器区域网络,ISO11898)上。 物理层(J1939/11)描述了针对客车的电气接口。数据链路层描述了构建报文、访问总线以及诊断传送故障的规则。应用层(J1939/71和J1939/73)定义了在网络中传送的每条报文的具体数据。 J1939主要特性 J1939协议标准基于CAN的高层协议 J1939协议应用于重型车辆 J1939协议传送速度稳定在2
2024-03-06 18:03:21 4.46MB
1
基于STM32单片机的汽车CAN_J1939协议测试源码,可供学习设计参考。 main(void) { SystemInit(); //设置系统时钟为72M KeyInit(); //按键管脚初始化 LED_GPIO_Config();//LED管脚初始化 CAN_GPIO_Config();//CAN管脚初始化 CAN_NVIC_Configuration(); //CAN中断初始化 CAN_INIT();//CA初始化N模块 J1939_Initialization( TRUE ); // while (J1939_Flags.WaitingForAddressClaimContention) // J1939_Poll(5); // int RXQueueCount=1; while(1) { //SendOneMessage(&Msg); /***********************??????*************************/ //
2024-02-15 09:07:38 1.88MB stm32 嵌入式硬件
SAE J1939_14_2022 Physical Layer, 500 kbit-s.pdf
2023-07-04 22:29:42 1.05MB SAE
J1939地址定义列表,卡车各控制器的默认地址定义
2023-02-22 22:40:41 26KB j1939 地址定义
1
J1939 Digital Annex February 2021 (1Q2021)
2023-02-15 18:04:35 9.64MB J1939 1939DA J1939DA
1