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报文

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

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

(2)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • eclipse代码自动补全[通俗易懂]

    eclipse代码自动补全[通俗易懂]1、点击菜单栏,打开Eclipse->Window->Perferences2、找到Java下的 Editor下的 ContentAssist,点击它3、找到第二个“AutoactivationtriggersforJava:”选项,在其后的文本框中会看到一个“.”存在。这表示:只有输入“.”之后才会有代码提示和自动补全,把该文本框中的“.”换成“abcdefghijklmnopqrstuvwxyz.”即可。…

    2022年5月31日
    33
  • C++中 ostringstream istringstream

    C++中 ostringstream istringstreamC++流都很类似,比如:输入输出流就是cincout从控制台读入写出。字符串流也类似,只是重定向到字符串。istringstream是从字符串读,ostringstream是写到字符串中去,用法跟cincout完全一样。C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含<sstre…

    2022年7月15日
    9
  • 数据库复制(一)–复制介绍

    数据库复制(一)–复制介绍

    2021年11月25日
    37
  • flask 教程_python flask快速入门与进阶

    flask 教程_python flask快速入门与进阶Flask入门基础教程Flask简介Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合

    2022年8月3日
    7
  • tensorflow tensor转numpy

    tensorflow tensor转numpysess=tf.Session()withsess.as_default():change=tf.expand_dims(tf.reshape(batch_rodrigues((np.array(gt_data[‘pose_0’]).flatten()).reshape(-1,3).astype(np.float32)),(24,3,3)),0)gt_data[‘po.

    2022年10月19日
    0
  • Python中字符串String去除出换行符(\n,\r)和空格的问题「建议收藏」

    Python中字符串String去除出换行符(\n,\r)和空格的问题「建议收藏」Python中字符串String去除出换行符和空格的问题(\n,\r)在Python的编写过程中,获取到的字符串进场存在不明原因的换行和空格,如何整合成一个单句,成为问题。方法:一、去除空格“·”代表的为空格  strip()"···xyz···".strip()#returns"xyz""···xyz···".lstrip()…

    2022年6月10日
    115

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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