ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Base—4.3 SAE J1939协议简析

2021-07-07 11:02:47  阅读:452  来源: 互联网

标签:字节 4.3 PGN PDU SAE 简析 SPN 编号 数据包


一、PDU

  SAE J1939协议是美国汽车工程协会的推荐标准,它基于CAN总线,对扩展数据帧中仲裁场的29位标识符进行重新解释,帧的其他部分不变。它包含一个单一的协议数据单元PDU。
  PDU的构成如下,不同的应用场景,个别位的解释可能会不同,但总体并不影响使用。
在这里插入图片描述
  P:优先权,从最高0设置到最低7。
  R/EDP:保留位/扩展数据页,以备后续开发使用。一般设置为0。
  DP:数据页,选择参数群描述的辅助页,从页0开始分配,一般设置为0。
  PF:PDU格式,它有两个功能,一是确定PDU的格式,PDU分为两种格式PDU1和PDU2。二是确定数据域对应参数群编号的域。参数群编号不仅用来标识命令、数据、请求、确认和否定外,还可以标识CAN多包发送的信息。
  PS:PDU特定,它的定义取决于PDU的格式,如下图所示
在这里插入图片描述
  目标地址用DA标识,全局目标地址(255)要求所有设备作为消息响应者做出监听和响应。
  SA:源地址。

二、PGN

  PDU中有一个重要的概念——参数群编号PGN,因为汽车中有许多参数,为了方便,把这些参数归类,把一些参数放入一个组中,而PGN就是用来描述这个组的编号的。知道了包中的PGN,我们就知道了这个包所传输的数据是什么。
  PGN的组成如下图所示,PGN一共有24位,实际有效的位数只有1+1+8+8=18位,故剩余的6个高位全部补0。
在这里插入图片描述
  下图具体分析了PGN的构成,非常重要:
在这里插入图片描述
  首先PGN一共3个字节,
  第1个字节的8-3位是填充位,都填充为0,位2是R,位1是DP,可以看到DP为0或1。
  第2个字节是PF,它分为两段,一段是0-240,这一段中共有240个编号,因为PS是目的地址。但当PF是240-255时,这一段的编号就大大增加,因为此时PS不再是目的地址,而是扩展编号,即PF和PS一同表示编号,故编号数大大增加。
  第3个字节是PS,它与PF息息相关,PF是0-240,PS是目的地址,PF是240-255,PS与PF一起共同表示编号。

三、SPN

  SPN,特定参数,它就是用来表示具体的物理参数。比如SPN190=发动机转速、SPN513=扭矩。就是说一个SPN码代表了一个物理参数。
  之前讲的PGN所代表的的参数组,就是由一个个的SPN组成的。例如PGN 61444=发送机控制器参数组,这个参数组里面包含了发动机转速、扭矩等。即PGN 61444=SPN 190+SPN 513+…。
  而每个帧中数据的部分就是SPN的实际数据,假设PGN所代表的的参数组是由2个SPN构成的,第一个SPN为2字节,第二个SPN为3字节,那么这个帧数据的大小就是5字节。

四、多包发送

  CAN总线一个帧最多只能发送8个字节,而SAE中的PDU支持0~64个字节,故超出8个字节,就需要多包发送,即传输协议功能。
  发送者需要先请求发送消息RTS,RTS里面包含了整个消息的字节数,要传送的消息包数等。当节点接收到之后,需要响应一个CTS,CTS里面包含了想要接收的第一个数据包的序列编号等。而RTS和CTS都是用一种特殊的PGN,PGN=0xEC00。
  RTS数据域的具体格式如下:
在这里插入图片描述
  CTS数据域的具体格式如下:
在这里插入图片描述
  一旦发送者接收到了CTS,就要开始发送数据,每一个数据包都是8个字节,第一个字节代表了数据包的序列编号,从1开始。而真正的有效数据字节只有7个。如果要发送的数据无法填充满8个字节,则用0xFF补全。数据包也是使用一种特殊的PGN,PGN=0xEB00。
  数据包的具体格式如下:
在这里插入图片描述
  下图是一个实际的传输过程
在这里插入图片描述
  首先,发送者发送了一个RTS,控制字节是0x10,整个消息的字节大小为9,全部数据报数为2,PGN=0x001100。
  其次,接收者响应了一个CTS,控制字节是0x11,接收的数据包数为2,要请求的数据包编号为1,PGN=0x001100。
  后面紧跟着两个数据包,包编号分别为1和2,数据包的字节大小为9,余下的部分用0xFF补全。
  通过查看PGN=0x001100发现,它确实是一个需要发送9字节的报文。
  这里还没有消息结束应答包,有的CAN总线多包发送完后,有一个结束应答包。结束应答包的控制字节为0x13。
在这里插入图片描述

标签:字节,4.3,PGN,PDU,SAE,简析,SPN,编号,数据包
来源: https://blog.csdn.net/wyf9003/article/details/118541983

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有