0
收藏
微博
微信
复制链接

如何做好J1939应用层数据定义

2025-09-02 17:15
788

SAE J1939 跟CANOpen,DeviceNet等一样都隶属于CAN的高层协议,J1939广泛应用于卡车,船舶,农林等设备,也正在拓展至其他的行业,因其属于CAN高层协议里面比较简单的一种,所以学习起来难度不是很大,协议内容也不复杂,之前在公众号多次讲过J1939的协议内容,今天来看看如何定义应用层的数据。SAE预留了两段参数组范围可以被设备制造商定义。

今天的内容基于你已经了解J1939协议,如果不是很清楚可以看看之前的文章

SAE J1939 协议简介(一)

SAE J1939 协议简介(二)

SAE J1939 协议简介(大结局), 


1、熟悉PGN


PGN即Parameter Group Number是J1939协议中用来标识参数集所定义的,共有24位,占三个字节,是CAN 29位标识符的一部分,其实SAE J1939这种高层协议都是充分利用了CAN的29位标识符,因为对CAN的29位标识符在CAN 2.0中并没有做具体规定,所以这就给高层协议的制定留下了很大的空间,通过一张表就可以清楚的知道。

8a277275be78330ab7ccf4c0ffddd1.jpg

49dfa2194fe734f4645940a2e62ae1.jpg

2、PGN的构成


PGN主要由保留位,数据页,PDU格式,和组扩展域,给一组例子看一下

7785ce70cb0061d87d2e603a8d8632.jpg

SAE 组织在最新的release文档中,已经将原来在文档中定义的许多内容都集成进一个EXCEL表格,方便查询,来看一下,如果是你自己学习定义,不是在车上使用,想在自己的内网使用而不接入汽车的网络,那么PGN你可以在规定的范围内随便定义,但是如果是在车上使用,就不能随便定义,不能使用SAE已经定义过的PGN,只能使用65280-65535和130816-131071添加你自己定义的PGN,

4f90e6a3893c866aa01a9277f69e39.jpg

52e8b264eb636c93d99f6f5f04b22d.jpg

3、熟悉PGN在PDU中的位置


PGN是J1939协议数据单元很重要的一部分,了解他们的关系很重要,

7324ad2c40aba8b45a43076a3a9eb3.jpg

协议数据单元PDU由七部分组成,分别是优先级,保留位,数据页,PDU 格式,特定PDU(可作为目标地址、组扩展或专用),源地址和数据域。PDU 被封装在一个或多个CAN 数据帧中,通过物理介质传送到其他网络设备。每个CAN 数据帧只能有一个PDU。需要指出的是,有些参数组编号定义需要多个CAN 数据帧才能发送其数据 。

4、定义数据


在熟悉以上的内容和定义后,就可以在规定的PGN范围内定义自己的数据映射,例如我们可以在65284定义逆变器的输入电压和电流,因EXCEL表格比较宽,显示不全,所以将有的类目隐藏了。

0af1b3943b9bb333069b094a5c7527.jpg

大家可以参考SAE 官方release的格式在规定范围内定义自己的PGN,例如我们添加的三个数据,输入电压,2字节,分辨率是0.01V/bit, 有效的数据范围是0·642.55V, 电流也是两个字节,分辨率是0.05A/bit,有效数据范围是0-3212.75A。数据的分辨率和范围,以及定标,都有标准规定在文档中,选择适合你的应用,如下表对数据的范围,偏移,长度,缩放等都有规定,可以参阅SAE发布的标准。而且每一个SLOT都有名字和类型,根据需要选择。

f8454425c101ea746b4d9650959e06.jpg

另外,如果你是要上市的产品,还需向SAE申请一个制造商编号,制造商编号也是每一个节点名字的一部分。


    

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

嵌入式程序猿

分享嵌入式电子设计的经验,心得,程序设计架构以及测试,

开班信息