前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何做好J1939应用层数据定义

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

作者头像
用户1605515
发布2018-07-25 10:18:23
1.2K0
发布2018-07-25 10:18:23
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

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中并没有做具体规定,所以这就给高层协议的制定留下了很大的空间,通过一张表就可以清楚的知道。

2

PGN的构成

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

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

3

熟悉PGN在PDU中的位置

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

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

4

定义数据

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档