J1939协议理解
更新时间:2024-06-24 00:16:01 阅读量: 综合文库 文档下载
J1939协议理解
今天读了J1939协议的介绍文档,下面主要说说我的理解:
1、 网络应用分为几个层
物理层 SAE J1939-11 数据链路层 SAE J1939-21 网络层 SAE J1939-31 应用层 SAE J1939-71 故障诊断 SAE J1939-73 网络管理层 SAE J1939-81
2、 下面主要说说数据链路层和应用层
数据链路层:为物理连接之间提供可靠的数据传输。包括发送CAN 数据帧所必需的同步、顺序控制、 出错控制和流控制。
首先要明白几个概念
PGN:参数组编号
帧(Frame): 组成一个完整信息的一系列有序的数据位。帧又被划分成几个域,每个域包括了预定义类型的数据。 CAN 数据帧(CAN Data Frame):组成CAN 协议帧所必需的有序位域,以帧起始(SOF)开始以帧结束(EOF)结尾。
标准帧(Standard Frame):CAN2.0A规范中定义的使用11 位标识符的CAN 数据帧。 扩展帧(Extended Frame):CAN2.0 B规范中定义的使用29 位标志符的CAN 数据帧。 包(Packet):一个单一的CAN 数据帧就是一个包。当一条报文包含参数组的数据长度小于等于8个字节时,这样的报文也称为包。
报文(Message):指一个或多个具有相同参数组编号的(PGN)数据帧。也就是说只要一个或多个CAN数据帧具有相同的PGN号,那他们就是属于一个报文。
多包报文(Multipacket Messages):当具有相同参数组编号的所有数据需要使用多个CAN 数据帧来传输时使用的一种J1939报文。每个CAN 数据帧拥有相同的标识符,但在每个包中数据不同。
协议数据单元PDU的格式
PDU是J1939传输数据的格式,它基于CAN协议的扩展帧传输方式。即它的标识符是29位的。 优先级:最高0(000)设置到最低7(111 )。所有控制报文的缺省优先级是3(011 )。 扩展数据页(EDP)和数据页(DP)的关系:
什么是第0页PGN,什么是第1页PGN?作用有什么不同? 还不是太清楚
PDU 格式(PF)和PDU 特定域(PS)的关系 PDU 格式(PF) PF<240 PF=240 ̄255 PDU格式 PDU 特定域(PS) PS是组扩展(GE)值 PDU1格式 PS是目标地址(DA) PDU2格式
PDU1和PDU2时的参数组编号(PGN)数目
EDP 0 EDP 0 DP 0或者1 PF 240-255共16个数 PS 组扩展值 0-255(共256个数) PDU2时参数组编号 2X16X256=8192 DP PF PS PDU1时参数组编号 2X240(PF的值)=480 0或者1 0-239 目标地址 在说说J1939的标识符合CAN协议的对应格式:
J1939的29位标识符格式
CAN协议扩展帧格式
首先,J1939的标识符是29位的,所以它使用的是CAN协议的扩展帧格式来传输数据。29位的标识符在寄存器中的存放位置,正好对应CAN的ID28-ID0的29位。我们主要在ID18和ID17直接有两个位,SRR和IDE要求是必须写1的,它不包括在我们的J1939的标识符,还有ID0的后一位RTR位也不包括在我们的标识符中,这一位是无效位,应该写0。
标识符对应的CAN扩展帧的位数:
优先权3位-----------------?ID28 ID27 ID26 扩展数据页EP-------------?ID25 数据页DP-------------------?ID24
PDU格式PF------------- ?ID23~ID16 PDU特定域PS----------?ID15~ID8 源地址SA-----------------?ID7~ID0
如果ECU读回来一串数据怎么判断参数组编号PGN呢? 首先,把数据的前29个字节(标识符)提取出来。 然后进行解析,解析方式:
把ID28~ID24提取出来组成一个字节(对应优先权位、EP、DP) 把ID23~ID16提取出来组成一个字节(对应PF的8位) 把ID15~ID8提取出来组成一个字节(对应PS的8位) 上述ID25~ID8就组成了数据的PGN(参数组编号) 例如:
收到的前29个字节是 0x67,0x98,0x1c,0xa2 看看它们的存储方式:
IDR0 IDR1 IDR2 IDR3 BIT7 ID28 0 ID20 1 ID14 0 ID6 6 ID27 1 ID19 0 ID13 0 DI5 5 ID26 1 ID18 0 ID12 0 ID4 4 ID25 0 1 ID11 1 ID3 3 ID24 0 1 ID10 1 ID2 2 ID23 1 ID17 0 ID9 1 ID1 1 ID22 1 ID16 0 ID8 0 ID0 0 ID21 1 ID15 0 ID7 0 RTR 0x67 0x98 0x1c SRR=1 IDE=1 1 0 1 0 0 0 2 0 0xa2 把ID28~ID24提取出来,其中标识符只包括ID25和ID24,即PGN的第一个字节是00(二进制),
把ID23~ID16提取出来,组成二进制的:11110000(PF字节的8位) 把ID15~ID8提取出来,组成00001110(对应PS的8位)
把上述3个字节连接起来组成一个二进制的数:00 11110000 00001110,把它转换成16进制就是0XF00E,转换成十进制是:61454,这就是它的PGN号。
3、 应用层
应用层为应用过程访问OSI 环境提供了一种方法,包括支持应用的管理功能和通用的机制。它以PGN和SPN的方式具体规定了车辆使用的每个参数的数据长度,数据类型,分辨率和数据范围等。
应用层报文使用PGN作为一组参数的标号。一组参数称为“参数组”(PG),PGN是其唯一的标识号。参数组内有一个或多个具体的参数,每个具体参数都有一个唯一的标号,称为“怀疑参数编号”,即SPN。
以一个实例讲解PGN的使用
以PGN65213为例,首先是它的J1939的协议定义:
假定我们只使用了协议中的前3个参数,预计风扇转速比,风扇驱动器状态,风扇转速。下面是这3个参数在字节中的存储方式,预计风扇转速比是一个字节的,它占用了byte1的8位,风扇驱动器状态是4个字节的,占用了byte2的后四位,风扇转速是2字节的,占用的byte3和byte4. 其他没有使用的位要写1.
他们每一个参数对应一个SPN,在SPN中都有它的斜率和分辨率的规定。
例如 第一个参数 Estimated Percent Fan Speed,我们看它的SPN号是975,我们再来查看SPN975的内容,发现他是一个表示百分比的数,范围是0%到100%,分辨率是0.4%,偏移量是0。如果我们想写个50%进去,怎么把50%转换为二进制数放到字节中呢, 计算方式:50%/分辨率+偏移量=要写入的字节数,我们来计算下50%/0.4%+0=125,这个数是十进制的,把它转换为二进制就是:0111 1101,我们把这数放到字节1中就可以了。
4、
正在阅读:
J1939协议理解06-24
VB报表打印03-18
幼儿园优秀课说课稿(共7篇)11-10
浅谈煤矿企业推行“6S管理”的重要性06-23
关于2022年开展股权和关联交易专项整治工作自查报告范文四篇04-03
供配电常用微机综合保护整定计算程序简述08-26
铅锌矿床成矿理论和找矿方法06-25
深圳市人民政府令(第292号)深圳市房屋征收与补偿实施办法(试行)01-28
干式变压器线圈工厂标准11-07
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 理解
- 协议
- J1939
- 宁德市房地产公司名录2018版569家 - 图文
- OSPF+BGP实验
- 借款保证合同纠纷案例
- OSPF协议各种错误的解释及产生的原因(V5)
- 北京名校初二八年级物理试题汇编
- 江西省红色六校2013届高三第二次联考理综
- 百业汽配城可研 - 图文
- 七牌二图
- 算法分析求最大公约数-软件工程-13083511-周成
- 2016磁现象测试卷(定稿)
- zuowen DOCX 文档(3)
- 黑龙江储备物资管理局岗位实习报告
- 苏州独墅湖高教区基本介绍
- 儿童日常英语对话
- 计算机组成原理试题及答案5
- 达州红十字会人道救助管理办法
- 无锡市红十字会人道救助实施办法
- 狭水道航行方法的探讨
- 基于C2C电子商务的第三方支付模式分析
- 宁夏省2016年下半年钳工A标准考试试题