收藏 分销(赏)

协议理解模板.doc

上传人:w****g 文档编号:9469465 上传时间:2025-03-27 格式:DOC 页数:6 大小:376.04KB 下载积分:6 金币
下载 相关 举报
协议理解模板.doc_第1页
第1页 / 共6页
协议理解模板.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
J1939协议了解 今天读了J1939协议介绍文档, 下面关键说说我了解: 网络应用分为多个层 物理层 SAE J1939-11 数据链路层 SAE J1939-21 网络层 SAE J1939-31 应用层 SAE J1939-71 故障诊疗 SAE J1939-73 网络管理层 SAE J1939-81 1、 下面关键说说数据链路层和应用层 数据链路层: 为物理连接之间提供可靠数据传输。包含发送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) 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 在说说J1939标识符合CAN协议对应格式: J193929位标识符格式 CAN协议扩展帧格式 首先, J1939标识符是29位, 所以它使用是CAN协议扩展帧格式来传输数据。29位标识符在寄存器中存放位置, 恰好对应CANID28-ID029位。我们关键在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提取出来组成一个字节(对应PF8位) 把ID15~ID8提取出来组成一个字节(对应PS8位) 上述ID25~ID8就组成了数据PGN(参数组编号) 比如: 收到前29个字节是 0x67,0x98,0x1c,0xa2 看看它们存放方法: BIT7 6 5 4 3 2 1 0 IDR0 ID28 ID27 ID26 ID25 ID24 ID23 ID22 ID21 0 1 1 0 0 1 1 1 0x67 IDR1 ID20 ID19 ID18 SRR=1 IDE=1 ID17 ID16 ID15 1 0 0 1 1 0 0 0 0x98 IDR2 ID14 ID13 ID12 ID11 ID10 ID9 ID8 ID7 0 0 0 1 1 1 0 0 0x1c IDR3 ID6 DI5 ID4 ID3 ID2 ID1 ID0 RTR 1 0 1 0 0 0 2 0 0xa2 把ID28~ID24提取出来, 其中标识符只包含ID25和ID24, 即PGN第一个字节是00(二进制), 把ID23~ID16提取出来, 组成二进制: 11110000(PF字节8位) 把ID15~ID8提取出来, 组成00001110(对应PS8位) 把上述3个字节连接起来组成一个二进制数: 00 11110000 00001110, 把它转换成16进制就是0XF00E, 转换成十进制是: 61454, 这就是它PGN号。 2、 应用层 应用层为应用过程访问OSI 环境提供了一个方法,包含支持应用管理功效和通用机制。它以PGN和SPN方法具体要求了车辆使用每个参数数据长度, 数据类型, 分辨率和数据范围等。 应用层报文使用PGN作为一组参数标号。一组参数称为“参数组”(PG), PGN是其唯一标识号。参数组内有一个或多个具体参数, 每个具体参数都有一个唯一标号, 称为“怀疑参数编号”, 即SPN。 以一个实例讲解PGN使用 以PGN65213为例, 首先是它J1939协议定义: 假定我们只使用了协议中前3个参数, 估计风扇转速比, 风扇驱动器状态, 风扇转速。下面是这3个参数在字节中存放方法, 估计风扇转速比是一个字节, 它占用了byte18位, 风扇驱动器状态是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中就能够了。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服