J1939广播DM1报文

J1939广播DM1报文一、DM1报文1,SAEJ1939-21(参考5.2)对CANID进行了重新划分,加上8个字节的数据域,构成了J1939的协议数据单元(ProtocolDataUnit,PDU)。SAEJ1939-73(参考5.7.1)中定义了DM1的优先级为6,PGN(参数组数编号)为65226(00FECA),所以源地址为0x41的DM1ID为18FECA41。2,假设源地址为0x41的节点,存在两个现行故障,故障的SPN,FMI分别为(521132,1),(521008,3),按照DTC结构

大家好,又见面了,我是你们的朋友全栈君。

一、DM1报文
1,SAE J1939-21(参考5.2)对CAN ID进行了重新划分,加上8个字节的数据域,构成了J1939 的协议数据单元(Protocol Data Unit, PDU)。

SAEJ1939-73(参考5.7.1)中定义了DM1的优先级为6,PGN(参数组数编号)为65226(00FECA),所以源地址为0x41的DM1 ID为18FECA41。

2,假设源地址为0x41的节点,存在两个现行故障,故障的SPN,FMI分别为(521132,1),(521008,3),按照DTC结构定义,当OC=1时,两个DTC为AC F3 E1 01,30 F3 E3 01。

3,SAEJ1939-73中定义DM1字节1为灯状态,字节2预留,当字节1=00,字节2=FF,0x41节点完整的DM1报文为:0x18FECA41:00 FF AC F3 E1 01 30 F3 E3 01,字节数大于8,将会使用“多帧传输”参数组。

二、多帧传输
1,根据SAEJ1939-21(参考5.10.1),长度大于8字节的消息被拆分成若干个小的数据包,然后使用单独的数据帧对其逐一传送。每个数据包都会被分配搭配一个从1到255的序列编号。最后一个数据包的数据域余下未使用的字节全部设置为“FF”

所以0x18FECA41:00 FF AC F3 E1 01 30 F3 E3 01将会被拆分成两条:01 00 FF AC F3 E1 01 30,02 F3 E3 01 FF FF FF FF

2,根据SAEJ1939-21(参考5.10.2),如果某个节点要广播一条多组的消息,它首先要发送一条广播公告消息(BAM)。BAM消息包含了即将广播的长消息的参数群编号、消息大小和它被拆装的数据报的数目。然后,使用PGN(PGN=60160)来发送相关的数据。

0x18FECA41:00 FF AC F3 E1 01 30 F3 E3 01,消息大小为10个字节,分成两个数据包,参数群编号00FECA,所以BAM的消息数据域为:20 0A 00 02 FF CA FE 00。

3,SAEJ1939-21(5.10.3),定义了链接管理TP.CM(BAM为其中一种)的参数群编号为60416(00EC00),BAM的目标地址为全局目标地址。

【根据SAEJ1939-21(5.2.5): 若PDU 格式(PF)段的值小于240,特定PDU 段是目标地址。若PF 段的值在240 和255 之间,特定PDU 包含群扩展(GE)值。全局目标地址(255)要求所有设备作为消息响应者作出监听和响应。】

所以0x18FECA41的BAM报文ID为:0x18ECFF41

4,SAEJ1939-21(5.10.5)定义了数据传送TP.DT的参数群编号为60160(00EB00),对BAM数据传送使用全局地址。

所以0x18FECA41的TP.DT报文ID为:0x18EBFF41

5,故0x18FECA41:00 FF AC F3 E1 01 30 F3 E3 01在can总线上传输格式为下图红框报文。

J1939广播DM1报文

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137428.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(2)


相关推荐

  • java怎么求数组的和_java求和函数写法

    java怎么求数组的和_java求和函数写法Java经典题目之一,数组的各种求和,今天小编就用一些例子带大家了解一下其中详情。基础求和#includeusingnamespacestd;//数组求和//方法一:时间复杂度为O(n),额外空间为(n)intArraySum(intarr[],intn){intsum=0;for(inti=0;i{sum+=arr[i];}returnsum;}//方法二…

  • Mobx入门和较佳实践

    Mobx入门和较佳实践

  • Python安装与第三方工具——pycharm安装

    Python安装与第三方工具——pycharm安装​​

  • 指针函数与函数指针

    指针函数与函数指针1.指针函数先看下面的函数声明,注意,此函数有返回值,返回值为int*,即返回值是指针类型的。int*f(inta,intb);上面的函数声明又可以写成如下形式:int*f(inta,intb);让指针标志*与int紧贴在一起,而与函数名f间隔开,这样看起来就明了些了,f是函数名,返回值类型是一个int类型的指针。下面看指针函数的实现:in

  • exosip「建议收藏」

    exosip「建议收藏」exosip针对UA是对osip进行扩展,oSIP不提供不论什么高速产生请求消息和响应消息的方法,全部请求消息和响应消息的形成必须调用一组sipmessageapi来手动组装完毕,所以作者在osi

  • qpython3安装pygame_详解Python pygame安装过程笔记

    qpython3安装pygame_详解Python pygame安装过程笔记今天看到一个教程,是关于Python安装pygame模块的。觉得很好,拿来分享一下。安装Python额,这个小题貌似在这里很是多余啊。但是为了照顾到刚刚学习Python的童鞋,我还是多啰嗦两句吧。具体如下:我们要到Python官网。去下载我们需要的版本。我这里下载的是windows64位的Python2.7msi。安装的过程如果不懂,选择为默认即可。安装easy_install至于这是个什么东…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号