CAN协议 J1939

article/2025/10/19 8:11:27

转自:http://blog.sina.com.cn/s/blog_bf97bd7e0102wl2y.html

这几天在公司看了SAE推行的 J1939标准(SAE:美国汽车工程协会),这里整理下学习要点,主要包含以下几个协议:

物理层 SAE  J1939-11(未看)

数据链路层  SAE  J1939-21

网络层 SAE  J1939-31(未看)

应用层 SAE  J1939-71

故障诊断 SAE  J1939-73

网络管理层 SAE  J1939-81

 

下面主要介绍数据链路层和应用层:

 

介绍前,首先介绍下缩写:

PGN:参数组(群)编号           

PDU:协议数据单元

SPN:可疑参数编号

SOF:帧起始位

SRR:代用远程请求

RTR:远程传输请求

IDE:标识符扩展为

DLC:数据长度码

 

 

J1939-21 数据链路层:

数据链路层:为物理链接之间提供一种可靠的数据传输(发送CAN数据帧必需的同步、出错控制、顺序控制和流控制)。

 

有几个概念先介绍下:

帧 (Frame):组成一个完整信息的一系列有序的数据位;

其中CAN帧以帧起始(SOF)开始,以帧结束(EOF)结尾;

标准帧:定义为11位标识符

扩展帧:定义为29位标识符

报文(Message):一个或多个具有相同参数组编号(PGN)的CAN数据帧;(一个或多个

CAN数据帧具有相 同PGN号,就是报文)

包(Packet):一个单一的CAN数据帧就是1个包;(一个报文包含参数组的长度小于等

于8字节,也称为包)

多包报文:当具有相同参数组编号(PGN)的所有数据需要使用多个CAN数据帧来传输时使

用的一种J1939报 文。(每个CAN数据帧拥有相同的标识符,但每个包中数据不同)

 

协议数据单元(PDU):

格式如下图:

 

优先级

扩展数据页(保留)

数据页位

PDU格式

PDU特定域

源地址

数据域

P

R

DP

PF

PS

SA

DATA

3

1

1

8

8

8

8Byte

         

其中,

优先级(P):3位用来表示优先级范围,所有控制 消息的缺省值是3(0112),其他所有信息、专用、请求和ACK的缺省优先级是6(1102)

数据页位(DP):数据页位选择参数群描述的辅助页。在分配页一的PGN之前,先分配完页零的可用PGN。

数据扩展页(EDP)和数据页(P)关系:

扩展数据页位

(EDP)

数据页位

(DP)

功能描述

0

0

SAE J1939 第0页PGN

0

1

SAE J1939 第1页PGN

1

0

SAE J1939 保留

1

1

定义位ISO 15765-3报文

 

 

PDU格式(PF)和PDU特定域(PS)的关系:

PDU格式(PF)

PDU格式

PDU特定域(PS)

PF<240

PDU1格式

PS是目标地址(DA)

PF = 240-255

PDU2格式

PS是组扩展(GE)值

 

PDU1和PDU2时的参数组编号(PGN)数目为:

EDP 

 

DP

PF

PS 

 

PDU1时参数组编号

0

0或者1

0-239

目标地址

 2X240(PF的值)=480

 

EDP 

DP

PF 

PS 

PDU2时参数组编号

0或者1 

 

240-255共16个数

组扩展值0-255

(共256个数)

2X16X256=8192

 

其中PGN计算公式为:

    PGN = DP<<|PF<<8|PS;

例:数据页位:0,PDU格式:235,特定PDU段:目标地址(对于TP.CM_BAM数据传送使用全局地址(DA=255))(对于RTS/CTS数据传送不允许用全局地址)

 

         则PGN = 235*256+0 = 60160(0xEB0016)

                            11101011<<8|0

 

 

多包发送:

BAM:广播通知/公告消息

DT:数据传送消息

多包数据发送拆装与重组:大于8字节消息发送,必须拆分,

拆分原则:数据域的首字节定义为数据包序列编号:1-255;

            最大拆分数据长度是255包*7字节/包 = 1785个字节

其中,RTS(发送者),请求发送

      CTS(响应者),准备发送

广播数据传送次序如下图:

SAE <wbr>J1939 <wbr>学习整理
 

 

上图中广播公告消息格式为(TP.CM_BAM):全局目标地址   

字节:

1

控制字节=32,广播公告消息(BAM)

 

2,3

整个消息大小,字节数目

 

4

全部数据包的数目

 

5

保留给SAE设定使用,该字节应设为FF16

 

6-8

所装载数据的参数群编号

而数据传送消息格式(TP.DT):

    Byte:       1           序列号 1-255(1Byte)

            2-8         分组数据(7 Bytes)

                      注意多包参数组的最后一个包可能需要不到8个字节数据,

多余的字节填充0xff16   

 

故障诊断

故障诊断代码DTC构成:

    a、可以参数编号(SPN)

    b、故障模式标志(FMI)

    c、发生次数(OC)

    d、可以参数标号的转换方式(CM)

其中,DM1:当前故障码(正在发送的所有故障)

    DM2:历史故障码 

DTC由四个字节构成 

DTC

字节3

SPN低8位

(第8位为最高有效位)

字节4

SPN第2字节

(第8位为最高有效位)

字节5

SPN高3位(第8位为最高有效位)

FMI低5位(第5位为最高有效位)

字节6

SPN

FMI

CM

OC

8bit

3bit

5bit

1bit

7bit


http://chatgpt.dhexx.cn/article/Aww9UuVE.shtml

相关文章

J1939协议与CAN2.0对应关系图表

SAE J1939 消息帧格式定义与CAN 2.0B帧格式对应关系 J1939应用层协议详细描述了用于J1939网络的每个参数&#xff0c;包括其数据长度、数据类型、分辨率、范围及参考标签&#xff0c;并为每个参数分配了一个编号&#xff08;SPN&#xff09;。由于J1939协议是以协议数据单元&am…

Python实现CAN总线J1939报文接收、发送

前言 J1939协议是由美国汽车工程师协会&#xff08;SAE&#xff09; (SAE协会简介)定义的一组标准。J1939标准用于卡车、公共汽车和移动液压等重型车辆。在许多方面&#xff0c;J1939标准类似于旧版J1708和J1587标准&#xff0c;但J1939标准协议建立在CAN&#xff08;控制器区域…

J1939标准概述【小白入门】

文章目录 J1939标准概述&#xff1a;J1939/11物理层J1939/13板外诊断连接器J1939/21数据链路层J1939/31网络层J1939/71车辆应用层J1939/73应用层-诊断层J1939/81网络管理总结 J1939标准概述&#xff1a; J1939由下列子标准组成&#xff1a; J1939 – 串行控制和通信车辆网络…

J1939-21数据链路层多帧协议PDU解析

一、协议数据单元&#xff08;PDU&#xff09; P 是优先级&#xff0c;R 是保留位&#xff0c;DP 是数据页&#xff0c;PF 是PDU 格式&#xff0c;PS 是特定PDU&#xff0c;SA 是源地址 优先级&#xff08;P&#xff09;&#xff1a;这三位仅在总线传输中用来优化消息延迟&…

CAN总线的特点及J1939协议通信原理、内容和应用

众多国际知名汽车公司早在20世纪80年代就积极致力于汽车网络技术的研究及应用。迄今已有多种网络标准&#xff0c;如专门用于货车和客车上的SAE的J1939、德国大众的ABUS、博世的CAN、美国商用机器的AutoCAN、ISO的VAN、马自达的PALMNET等。 在我国的轿车中已基本具有电子控制和…

IPEmotion采集J1939协议信号

一 背景 由于商用车相对于乘用车更注重实用性&#xff0c;功能也较单一&#xff0c;且具有产量小的特点&#xff0c;因此在设计开发时需要进行约束&#xff0c;以更大程度实现软硬件的复用和成本的降低&#xff0c;在此需求下J1939协议便随之产生了。 J1939协议是由美国汽车工…

SAE J1939协议读取车辆故障码

基于SAE J1939协议的车辆&#xff0c;默认开启数据广播。当有故障码时&#xff0c;也会按照故障码的格式进行广播。 此处基于外设主动&#xff1a;读取故障码个数->读取故障码->故障码解析 这个步骤来讲&#xff0c;如果被动接收故障码广播&#xff0c;如下解析也适用。 …

车用总线技术 | J1939协议实用指南与J1939数据记录方案

“没错&#xff0c;这是一份SAE J1939协议的简单、实用指南。”—虹科 开篇&#xff1a;在这篇介绍中&#xff0c;我们介绍了J1939协议的基本知识&#xff0c;其中包括PGN和SPN。因为这是一篇偏向应用的简介&#xff0c;所以您还将会学习到如何通过DBC文件解码J1939数据、如何…

SAE J1939协议学习笔记

引用百度百科&#xff1a; SAE J1939&#xff08;以下简称J1939&#xff09;是美国汽车工程协会&#xff08;SAE&#xff09;的推荐标准&#xff0c;用于为中重型道路车辆上电子部件间的通讯提供标准的体系结构。它由“卡车与大型客车电气与电子委员会”&#xff08;Track &am…

J1939学习(二)

PDU 应用或网络层提供被同化为协议数据单元&#xff08;PDU&#xff09;的信息串。PDU提供了一个框架&#xff0c;用于组织对发送的每个CAN数据帧至关重要的信息。SAE J1939 PDU由七个字段组成&#xff1a;&#xff08;1&#xff09;P、&#xff08;2&#xff09;EDP、&#x…

CAN总线(J1939)速成指南【1】

本文转载在我的微信公众号&#xff1a;古德曼汽车工业。公众号文章都会知识星球、知乎进行转载&#xff0c;请有兴趣的朋友可以关注我的微信公众号 原文地址&#xff1a;CAN总线(J1939)速成指南【1】 很久以前当思想对CAN总线还一窍不通的时候&#xff0c;尝试百度搜索过非常…

J1939协议实用指南与J1939数据记录方案

“没错&#xff0c;这是一份SAE J1939协议的简单、实用指南。”—虹科 开篇&#xff1a;在这篇介绍中&#xff0c;我们介绍了J1939协议的基本知识&#xff0c;其中包括PGN和SPN。因为这是一篇偏向应用的简介&#xff0c;所以您还将会学习到如何通过DBC文件解码J1939数据、如何记…

车载通信——J1939故障码

一、诊断 UDS是统一诊断系统 冻结帧&#xff1a;出现故障码时&#xff0c;ECU存储故障码出现时的数据&#xff0c;就是冻结帧。 二、J1939故障诊断 SAE J1939应用层定义了12种诊断报文&#xff08;Diagnostic Message,DM&#xff09;、诊断故障码&#xff08;DTC&#xff0…

UDS,ISO14229,ISO15765,ISO15031,J1939车辆诊断协议入门系列

&#xff08;图片来源于网络&#xff09; 目录 摘要1. 基础概念1.1 诊断的概念1.2 诊断的目标1.3 诊断的实现1.4 诊断是分层的 2. 项目应用3. 协议栈开发 摘要 回想当年刚进去汽车行业&#xff0c;做新能源车的某个“ECU”&#xff0c;和客户沟通需求时&#xff0c;人家上来就…

J1939故障码诊断说明

1&#xff1a;1939整体协议说明 这里主要说明1939不同的协议&#xff0c;对应不同的网络分层 注意了&#xff0c;这里只进行文档解析说明&#xff0c;具体查看去搜素协议的关键字进行理解 2&#xff1a;DMx和FMI 说明 想知道每个代号的具体含义&#xff0c;可以去 saeJ1939…

J1939协议之通俗易懂----简介

J1939简介 J1939协议简介 J1939协议是由美国汽车工程师协会&#xff08;SAE&#xff09; (SAE协会简介)定义的一组标准。J1939标准用于卡车、公共汽车和移动液压等重型车辆。在许多方面&#xff0c;J1939标准类似于旧版J1708和J1587标准&#xff0c;但J1939标准协议建立在CAN…

J1939协议简介

J1939简介 J1939协议简介 J1939协议是由美国汽车工程师协会&#xff08;SAE&#xff09; (SAE协会简介)定义的一组标准。J1939标准用于卡车、公共汽车和移动液压等重型车辆。在许多方面&#xff0c;J1939标准类似于旧版J1708和J1587标准&#xff0c;但J1939标准协议建立在CAN&…

了解J1939协议和J1939数据记录仪(车辆工程机械中的黑匣子)

SAE J1939是由汽车工程师协会&#xff08;SAE J1939&#xff09;定义的标准&#xff0c;专门用于提供微处理器系统之间的串行数据通信。虽然CAN存在并且被广泛用于小型车辆&#xff0c;但SAE J1939被设计为大型车辆复杂网络的专用通信和诊断协议。J1939通常应用于重型车辆&…

SAE J1939协议(一)

SAE J1939 是 基 于 CAN 总 线 的 协议&#xff0c;波特率可达250Kbps&#xff0c;是一种传输速率较高的C类通信网络协议。SAE J1939主要用于卡车、客车等的网络系统控制与通信。 SAE J1939分层结构模型&#xff1a; SAE J1939标准的文档构成&#xff1a; 1、 SAE J1939物理层…

J1939 学习(一)

J1939简介 SAE J1939&#xff08;以下简称J1939&#xff09;是美国汽车工程协会&#xff08;SAE&#xff09;的推荐标准&#xff0c;用于为中重型道路车辆上电子部件间的通讯提供标准的体系结构。它由“卡车与大型客车电气与电子委员会”&#xff08;Track & Bus Electric…