汽车总线之----J1939总线

instruction

SAE J1939 是由美国汽车工程协会制定的一种总线通信协议标准,广泛应用于商用车,船舶,农林机械领域中,J1939协议是基于CAN的高层协议,我们来看一下两者之间的关系。在J1939 中,物理层和数据链路层都是基于CAN标准,使用的是CAN扩展真帧格式,除此以外,J1939 在CAN 标准的基础上做了一些额外的规定,比如对29位的ID有更详细的定义,J1939 中的数据单元为parameter group及参数组,参数组是由参数组编号以及PGN所标识的,参数组携带的数据长度不再限制为八个字节,实现这一点的必要规定主要在OSI模型中的更高层进行定义。
在这里插入图片描述

在J1939 中存在两种通信方式,分别是点对点和广播通信,我们知道CAN采用的是广播通信,既然J1939 是基于CAN的通信协议,为什么会有点对点的连接方式呢,其实在J1939 中,数据链路层采用的仍然是广播通信的方式,这与CAN是一致的,具体点对点还是广播的方式,其实是在OSI模型中的第七层及应用层决定的。
在这里插入图片描述

这里我们可以看一个例子来理解这两种通信方式,在这个网络中有五个节点,红线表示的是点对点的通信方式,蓝线表示的就是广播的通信方式,我们具体来看一下transmission controller或break system controller,可以通过发送TSC1这一个参数组给Engine controler,来控制发动机扭矩,这就是点对点的通信方式,这种通信方式具备特定的发送方和接收方,instrument class control了,可以通过RQST这个参数组,向总线上的所有其他ECU请求获得他们的地址,这就是广播通信方式。
在这里插入图片描述

J1939 参数组和信号

首先我们先来学习PDU和PGN这两个重要的概念,首先是PDU,PDU是应用层和网络层中的数据单元,用于与数据链路层进行数据交互。接着我们再来看一下PGN,PGN及参数组是具有彼此相关性,并且传输速率相同的一组信号。每个参数组都有唯一的编号及PGN,也就是参数组编号。PGN的长度为24个位,六个最高位为零,其余部分分别是扩展数据页EDP,数据页DP, PDU格式PF, PDU细节PS。 EDP和DP两个位的组合用于扩展PGN的范围,在J1939 中一般使用的是00,其余的组合用于NMA2000 或者诊断等。在EDP和DP之后是八个位的PDU格式及PF,PDU格式有两种,当PF的范围为0x00 到0x1 f时,为PDU格式1,此时PDU细节也就是PS表示的是目标地址,当PF的范围为0xf0 到0xff时,PS表示的是组扩展,组扩展意味着可以扩大PGN的数量,后续内容中会向大家介绍PGN数量的计算,了解了PDU和PGN这两个概念后,我们可以看一下PDU的结构,首先是三个位的优先级,这三个位主要控制访问总线的优先级,在PGN之后是八个位的原地址,结合两种PDU格式就可以实现点对点或者广播的通信方式,最后是数据场内容,整体上PDU分为七个部分,在进行通信时,PDU是需要映射到CAM报文进行发送的,数据场内容是放到CAN报文的数据场,发送的前六个部分则会与CAN中定义的29位的ID进行映射。
在这里插入图片描述

我们具体来看一下,我们可以看到前六个部分是按照高位到低位的顺序,依次分布在29位ID中的,前面我们介绍到PDU有两种格式,由此我们可以计算所能表示的PGN的数量,当PF小于240时,PS表示的是目标地址,此时可以表示的PGN的数量为240,当PF在240255之间时,PS表示的是组扩展,它的范围为0255,此时PF和PS的组合可表示的PG数量为16x256,所以我们可以计算出PG最大的数量为4336,当然这是EDP和DP的值,均为临时的计算结果,对于EDP和DP的不同组合,还可以表示更多的PGN并应用于不同的场景。
在这里插入图片描述

这11939不仅定义了PGN,还定义了其数据内容,这11939中定义的信号采用的是英特尔编码方式,每个定义的信号称为SPN,每个SPN都有有效的数据范围,比例因子和偏移量,在这里我们可以看一个例子。对于flue temperature,也就是发动机油温,这个SPN它的数据范围为-40摄氏度到正210摄氏度,它的比例因子为一摄氏度,偏移量为-40摄氏度,根据比例因子和偏移量就可以得出原始值到物理值的转换公式,也就是原始值乘以比例因子,然后再加上偏移量,比如现在原始值为100,那么所表示的发动机油温的物理值为60摄氏度,通过以上内容,我们学习了PDU, PG以及SPN这三个J1939 中重要的概念,相关内容,大家也可以查阅J1939-21这一个文档进行学习,
在这里插入图片描述
在这里插入图片描述

J1939传输协议

介绍J1939 的传输协议,传输协议主要实现数据的拆装重组以及连接管理,下面我们具体来看一下,首先我们对传输协议进行整体的了解,在J1939 中有两种通信方式,分别是点对点和广播通信,这两种通信方式对应两种类型的传输协议,对于一帧CAN报文,它的数据厂长度最大为八个字节。在J1939 中,PGN的数据长度不限于八个字节,但由于J1939 中物理层和数据链路层都是基于CAN标准,因此对于大于八个字节的数据,需要发送方将其拆分为多个数据包,然后通过CAN报文形式进行发送,接收方则需要将接收的数据进行重组,这就是通过传输协议实现的。
在这里插入图片描述

下面我们具体来看一下,对于点对点的通信方式,采用的是connection mode date transfer,简称为cmdt,也就是连接模式,数据传输这种传输协议,数据的传输建立在发送方和接收方建立连接的基础上,接收方可以对数据包的流量进行控制,并且发送方和接收方都可以终止连接,对于广播通信方式采用的是broadcast a nice message,简称为bm应用,这种传输协议数据会发送到所有节点。
在这里插入图片描述

在J1939 中,有两个PGM用于传输协议,实现多包数据的点对点以及广播传输,第一个PGN为TP.CM及00ec00,这个PGN用于连接管理以及流量控制,它的数据长度为八个字节,其中第一个字节为控制字节,包括请求发送,允许发送报文,结束应答,终止连接以及广播发送。后期和字节根据控制类型的不同,定义也有所不同,后续我们也会详细介绍几种典型的控制类型,第二个PGN为TP.DT即001b00 ,这个PGN用于实现数据包的传输,接下来我们就来看一下这两个PG如何实现多包数据的传输。
在这里插入图片描述

首先我们先来看TP.CM,当控制字节为0x10 时,表示的是请求发送,即rts,此时第二第三个字节表示的是要发送的数据的字节数,第四个字节表示的是要发送的数据包的数量,第五个字节表示的是每接收到一个cts后,能发送的最大的数据包的数量,第六到第八个字节表示的是打包数据的拼接,通过rts发送方告知接收方网络中有节点希望与其建立连接,也就是明确发送的意图,当节点接收到rts报文后,可以选择建立连接或者拒绝连接,当选择建立连接时,接收方需要发送一个cs报文,通知发送方,他可以接收数据,cp报文的控制字节为0x11 ,此时第二个字节表示的是可以发送的数据包的数量,第三个字节表示的是下一个发送的数据包的编号,第六到第八个字节表示的是打包数据的PGN对于点对点的通信方式,当控制字节为0xff和0x1330表示的分别是终止连接和报文结束应答,这里就不做详细介绍,大家可以查阅J1939-21这一个文档进行学习,当控制字节为0x20 时,表示的是广播通信的方式,发送方告知网络上的所有节点要广播发送数据,通过TP.CM不同的控制类型就可以实现点对点的连接或广播通信。
在这里插入图片描述

而TP.DT这个PGN则可以实现数据包的传输,对于两种通信方式打包的数据都是通过TP.DT传输的,它的数据厂长度为八个字节,第一个字节表示的是数据包的序列编号,序列编号从一开始依次分配给每个数据包,最大为255,第二到第八个字节的内容为打包的数据,因此每个TP.DT可以传输七个字节的数据,数据将从编号为一的数据包开始按编号的递增顺序传输,因此我们可以知道可以拆分的包数为255,每个数据包包含的数据为七个字节,所以可以计算出J1939 中最大可以传输7x255,也就是1785个字节的数据。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/436220.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在iPad上用Chrome实现无痕浏览

在数字化时代,隐私保护已成为我们日常生活中不可忽视的一部分。特别是在使用移动设备浏览网页时,如何确保个人信息的安全显得尤为重要。本文将详细介绍如何在iPad上使用Chrome浏览器实现无痕浏览,以保护您的在线隐私。 (本文由ht…

electron教程(三)窗口设置

在main.js文件中,创建窗口时会设置窗口的大小,其实还有很多其他属性,可以根据实际需求选择设置,但部分属性存在局限性,官网也有明确告知:自定义窗口 | Electron (electronjs.org) 项目文件目录如下&#x…

VisualGLM-6B——原理与部署

VisualGLM-6B技术原理介绍 VisualGLM-6B 是一种多模态预训练模型,它旨在将视觉和语言模型进行结合,使得语言模型能够理解图像信息并与文本对话无缝结合。为了更好地理解 VisualGLM-6B 的内容,我们可以从以下几个方面来解析它的原理、结构、训…

内存占用估算方法

优质博文:IT-BLOG-CN 通过掌握每种数据类型的大小,就可以更准确地预测对象和数据的内存消耗。 一、基础数据类型 Java基础数据类型结构,在64位系统开启指针压缩情况下的内存占用字节数: booleanbytecharshortintlongfloatdoub…

linux下sudo执行的程序会有一个额外的进程的问题

当我们执行一个可执行文件时,有可能需要一些更高的权限,为此我们会用sudo ./test的方法执行,这时候我们通过ps aux | grep ./test去查看进程,会发现多出来一个 sudo ./test 的进程,该进程被杀死后,发现目标…

等保测评:企业数字安全的坚实盾牌

1.1 企业数字化转型的浪潮 在当今时代,企业数字化转型的浪潮正以前所未有的速度席卷全球,据IDC预测,到2023年,全球数字化转型支出将达到惊人的2.3万亿美元。这一趋势不仅重塑了企业的运营模式,更对企业的信息安全提出…

Mac通过ssh连接工具远程登录服务器( Royal TSX安装及使用)

一、Royal TSX软件下载地址 Royal Apps 二、Royal TSX 汉化 汉化包地址:GitCode - 全球开发者的开源社区,开源代码托管平台 三、基础配置 Royal TSX 是一款基于插件的应用,刚安装时还不具备使用条件,需要进行一些基础配置 1 安装基础插件…

【鸿蒙开发】05 登录Demo解析

文章目录 一、功能介绍 在鸿蒙开发中,一个完善的登录功能是许多应用程序的基础需求。本文将详细介绍一个鸿蒙 App 登录 Demo,包括其功能介绍、代码解析以及代码 demo 的下载地址。 本文初始代码从华为开发者网站下载,根据该Demo进行内容调整。…

无人机之数据提取篇

一、无人机平台与传感器 无人机是进行数据采集的基础设施,其稳定性、可靠性、灵活性和负载能力直接影响到数据采集的效果。根据实际需求,需选择适合的无人机类型,如固定翼无人机适合大范围、长时间的数据采集,而多旋翼无人机则更适…

windows系统下Telnet工具的安装步骤

通过控制面板启用Telnet客户端 点击“确定”按钮,按照系统提示完成安装。 打开cmd,输入telnet就可以了

影刀RPA实战:Excel拆分与合并工作表

1.影刀操作excel的优势 Excel,大家都不陌生,它是微软公司推出的一款电子表格软件,它是 Microsoft Office 套件的一部分。Excel 以其强大的数据处理、分析和可视化功能而闻名,广泛应用于商业、教育、科研等领域。可以说&#xff0…

基于Apache和Tomcat的负载均衡实验报告

说明:本实验为浙江科技大学软件工程本科专业课程《软件体系结构》的实验报告。 五、总结 负载均衡的基础是集群,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同的硬件构成的计算机。负载…

【网络安全】-访问控制-burp(1~6)

文章目录 前言   1.Lab: Unprotected admin functionality  2.Lab: Unprotected admin functionality with unpredictable URL   3.Lab: User role controlled by request parameter   4.Lab:User role can be modified in user profile  5.Lab: User ID controlled by…

建筑中的文化表达与地方特色:演绎地域之魂

在浩瀚的城市风貌中,每一座建筑都是文化的载体,无声地讲述着地域的故事与精神。建筑不仅需要满足功能需求,更应成为文化传承与创新的舞台。本文旨在深度剖析建筑设计如何在尊重与弘扬地方文化的基础上,巧妙融合现代元素&#xff0…

CSS文本格式化

通过 CSS 中的文本属性您可以像操作 Word 文档那样定义网页中文本的字符间距、对齐方式、缩进等等,CSS 中常用的文本属性如下所示: text-align:设置文本的水平对齐方式;text-decoration:设置文本的装饰;te…

PCL 索引空间采样

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 索引空间采样 2.1.2 可视化原始点云和下采样后的点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总&#xf…

XSS | XSS 常用语句以及绕过思路

关注这个漏洞的其他相关笔记&#xff1a;XSS 漏洞 - 学习手册-CSDN博客 0x01&#xff1a;干货 - XSS 测试常用标签语句 0x0101&#xff1a;<a> 标签 <!-- 点击链接触发 - JavaScript 伪协议 --><a hrefjavascript:console.log(1)>XSS1</a> <!-- 字…

Java | Leetcode Java题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; class Solution {public List<Integer> findDisappearedNumbers(int[] nums) {int n nums.length;for (int num : nums) {int x (num - 1) % n;nums[x] n;}List<Integer> ret new ArrayList<Integer>();for (int i …

易天智能eHR CreateUser 任意用户添加漏洞

漏洞描述 易天智能eHR管理平台 /BaseManage/UserAPI/CreateUser 接口存在任意用户添加漏洞&#xff0c;未经身份验证的远程攻击者可以利用此漏洞添加任意管理员用户&#xff0c;导致攻击者可直接管理后台&#xff0c;造成信息泄露&#xff0c;使系统处于极不安全的状态。 漏洞…

zi2zi-chain: 中国书法字体图片生成和字体制作的一站式开发

在zi2zi-pytorch的基础上&#xff0c;做了进一步的修复和完善。本项目github对应网址为https://github.com/not-bald-owl/zi2zi-chain/tree/master。 修复部分为&#xff1a;针对预处理部分的函数弃用、生僻字无法生成、训练和推理部分单卡支持改为多卡并行、以及扩展从本地的…