CAN协议 J1939
转自: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 |
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(响应者),准备发送
广播数据传送次序如下图:
上图中广播公告消息格式为(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 |
CAN协议 J1939相关推荐
- 详解CAN的高层协议(三)
CAN做为应用比较广泛的通信总线,受到了越来越多的客户喜欢和青睐,广泛应用于工业和汽车,常见的高层协议有CANopen,J1939,DeviceNet等,在公众号曾经分享过超过15篇有关CAN的高层协 ...
- 学习笔记10--CAN总线技术
本系列博客包括6个专栏,分别为:<自动驾驶技术概览>.<自动驾驶汽车平台技术基础>.<自动驾驶汽车定位技术>.<自动驾驶汽车环境感知>.<自动驾驶 ...
- 速锐得从冷链管理数字网关看工业物联网的发展与创新
工业互联网倡导者将其称为"第三次创新".但如果真是这样,我们就仍处于发展初期,因为数字互联网技术的全部潜能尚未在工业技术领域全面实现. 我们可以看到智能设备和智能系统开始与工业机器 ...
- AUTOSAR协议解析篇(一)-J1939协议解析
SAE J1939协议是基于CAN2.0B协议之上的应用层协议,但是SAE J1939协议并不仅仅是个应用层协议,她对物理层,数据链路层,网络层,应用层,故障诊断, 网络层管理层等都做了详细的规定,只 ...
- J1939协议中CAN ID 与PGN互换--遇到了广播报文
Ref:J1939 Explained - A Simple Intro (2021)– CSS Electronics Ref:CAN 帧ID 与J1939 PGN 转换例子_horse_2007s ...
- UDS,ISO14229,ISO15765,ISO15031,J1939车辆诊断协议入门系列
(图片来源于网络) 目录 摘要 1. 基础概念 1.1 诊断的概念 1.2 诊断的目标 1.3 诊断的实现 1.4 诊断是分层的 2. 项目应用 3. 协议栈开发 摘要 回想当年刚进去汽车行业,做新能 ...
- CAN2.0和J1939协议的关系
转发自http://www.cankau.cn/support/help/can-vs-j1939.html 很长时间没搞明白j1939与CAN2.0的关系,这篇文章让我明白了. CAN2.0是一种总 ...
- J1939协议与CAN2.0对应关系图表
SAE J1939 消息帧格式定义与CAN 2.0B帧格式对应关系 J1939应用层协议详细描述了用于J1939网络的每个参数,包括其数据长度.数据类型.分辨率.范围及参考标签,并为每个参数分配了一个 ...
- 使用Wireshark分析工控协议
在工控系统中通信协议存在众多标准,也存在众多私有协议,如果你有过使用组态软件的经历,你便会发现,在第一步连接设备时除连接设备的方式有以太网/串行等方式外,各家基本上都存在自己的私有通信协议. 上图为, ...
- CANopen协议及应用
文章目录 CANopen协议 CAN总线 CAN报文 CANopen概述 对象字典(Object Dictionary) 概述 通讯对象子协议区 制造商特定子协议 CANopen报文 NMT网络管理 ...
最新文章
- MySQL-数据类型
- CentOS7 1.搭建环境脚本
- linux实验三makefile,实验平台上Makefile详细的解释
- 超越cookie - 使用DOM sessionStorage和localStorage来保存更多信
- search engine
- 临时限速服务器系统ppt,临时限速系统讲解.pptx
- 【HDU - 4565】So Easy!【数学思维题】
- MFC windows程序设计(第三版)课后习题第一章
- Texture贴图材质资源网站分享
- 网络上的计算机找不到打印机,网络打印机找不到,详细教您网络打印机找不到怎么办...
- 摩申网络:浅析网络棋牌游戏用户群体
- 海尔全球十一连冠背后: 生态时代的无限游戏
- qrcode二维码生成工具
- 潮汕明代皇封御葬古墓受损追踪:当地相关部门介入
- 00812中国现当代作家作品专题研究简答论述题【湖北卷2110考期】
- 专利申请怎样做快速预审?
- Android 当EditextText失去焦点,或者点击Activity的时候关闭软键盘或者其他布局
- raid5阵列两块硬盘掉线如何恢复阵列中的数据库
- android 查找联系人方法(支持首拼,全拼,英文)
- 2018.8.21 广州科目三展茂东满分飘技巧
热门文章
- 计算机毕业论文指导过程记录表6,毕业论文指导记录表范文
- wiley期刊AMA-lato,latex字体安装问题
- chrome Flash Player离线安装包下载
- java基于Springboot+vue的鲜花销售商城网站
- 汇编语言中sbb是什么意思_汇编语言的所有指令
- 驰为hi8pro 刷win10单系统
- 阉割版BeagleBone Black从SD卡运行Debain操作系统
- python反编译_反编译 python
- python 趋势线计算式_[原创]图表趋势线公式系数的计算公式
- 测试用例设计方法-正交试验常用正交表