SAE J1939协议入门(一)

一、SAE J1939是什么

SAE J1939(以下简称J1939)是由汽车工程师协会(SAE )定义的标准,专门用于提供微处理器系统之间的串行数据通信。虽然CAN存在并且被广泛用于小型车辆,但J1939被设计为大型车辆复杂网络的专用通信和诊断协议。J1939通常应用于重型车辆,如卡车,拖拉机,拖车,农用车辆,船舶,援助和救援以及许多此类越野车辆。今天,它已被世界各地的柴油发动机制造商广泛认可。

二、J1939 协议通信原理及内容 

1、J1939 与 CAN  

J1939 是一种支持闭环控制的在多个 ECU 之间高速通信的网络协议冈。主要运用于载货车和客车上。它是以 CAN2.0 为网络核心。表 1 介绍了 CAN2.0 的标准和扩展格式,及 J1939 协议所定义的格式。表 2 则给出了 J1939 年的一个协议报文单元的具体格式。可以看出, J1939 标识符包括:PRIORTY(优先权位);R(保留位);DP(数据页位);PDU FORMAAT(协议数据单元);PDU SPECIFIC(扩展单元)和 SOURCE ADDRESS(源地址)。而报文单元还包括 64 位的数据场。

2、数据传转协议 

J1939 通信中的核心是负责数据传输的传输协议。它的功能分为两部分:   

(1)数据的拆分打包和重组

一个 J1939 的报文单元只有 8 个字节的数据场。因此如果所要发送的数据超过了 8 字节,就应该分成几 个小的数据包分批发送。数据场的第一个字节从 1 开始作为报文的序号,后 7 个字节用来存放数据。所以可以发送 255×7=1785 个字节 的数据。报文被接收以后按序号重新组合成原来的数据。

(2)连接管理

主要对节点之间连接的建立和关闭,数据的传送进行管理。其中定义了 5 种帧结构:发送请求帧、发送清除帧、结束应答 帧、连接失败帧以及用来全局接收的广播帧。节点之间的连接通过一个节点向目的地址发送一个发送请求帧而建立。在接收发送请求帧以 后,节点如果有足够的空间来接收数据并且数据有效,则发送一个发送清除帧,开始数据的传送。如果存储空间不够或者数据无效等原因, 节点需要拒绝连接,则发送连接失败帧,连接关闭。如果数据接收全部完成。则节点发送一个结束应答帧,连接关闭。 

(3)J1939 的参数格式

J1939 中还定义了参数的具体格式,如标识符、优先级、数据长度、参数的范围等。参数又划分为状态参数和测量参数。状态参数表示具 有多态信号的某一种状态,如发动机刹车使能/禁能、巡航控制激活/关闭,扭矩/速度控制超载模式、错误代码等。而测量参数则表示所接 收到的信号的值的具体大小,如缸内爆发压力、最大巡航速度、发动机转速等。

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

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

相关文章

antd drawer extra中按钮点击事件获取子组件的数据

在Ant Design的Drawer组件中,需要在extra区域的按钮点击事件中获取子组件的数据,可以通过以下步骤实现: 使用useRef钩子在父组件中创建一个ref引用子组件。 在子组件中使用useImperativeHandle或forwardRef来暴露一个方法给父组件调用。 在ex…

android mm m mmm 区别

Android开发中的m, mm, mmm命令用于编译源代码,‌它们的主要区别在于编译的范围和目标。‌ m命令:‌用于从Android源码的根目录开始编译所有的模块。‌这个命令会编译整个Android源代码树,‌确保所有必要的模块都被编译12。‌ mm命令&#x…

如何用Java实现运营商三要素接口调用

今天给大家案例运营商三要素接口,该接口实用性极强!建议大家点赞收藏,如果问题可随时评论区留言交流! 一、什么是运营商三要素? 运营商三要素通常指的是手机号码、用户姓名和身份证号码。 二、运营商三要素应用场景…

升级TrinityCore 服务器硬件

升级服务器 原服务器:Ubuntu装VirtualBox装Ubuntu虚拟机 原配置:内存1756MB 内核4 外接硬盘 ip 192.168.0.12 升级服务器:FreeBSD装bhyve装Ubuntu虚拟机 新配置:内存3072MB 内核4 ssd硬盘 ip 192.168.1.12 除了ssh&#…

WPF之URI的使用

pack://application:, pack://application:, 是一个在 WPF (Windows Presentation Foundation) 应用程序中用于指定资源位置的 URI (统一资源标识符) 方案的特定格式。这个格式用于访问嵌入在应用程序程序集(assemblies)中的资源,如图像、XA…

深度挖掘行情接口:股票市场中的关键金融数据API接口解析

在股票市场里,存在若干常见的股票行情数据接口,每一种接口皆具备独特的功能与用途。以下为一些常见的金融数据 API 接口,其涵盖了广泛的金融数据内容,其中就包含股票行情数据: 实时行情接口 实时行情接口&#xff1a…

恒创科技:如何解决“服务器 IP 地址无法被找到”的错误

如何解决“服务器 IP 地址无法被找到”的错误?此错误通常出现在你的设备无法使用其分配的 IP 地址与网络服务器通信时。问题的来源可能多种多样,从简单的拼写错误到复杂的 DNS 和路由问题。以下是对“服务器 IP 地址无法找到”的常见原因以及可以采取的解决办法。 …

万界星空科技MES系统生产计划管理的功能

MES系统(Manufacturing Execution System,制造执行系统)的生产计划管理功能是其核心功能之一,旨在将企业的生产计划转化为实际的生产操作,并通过实时监控和调整来确保生产活动的顺利进行。以下是MES系统生产计划管理功…

STM32 | 看门狗+RTC源码解析

点击上方"蓝字"关注我们 作业 1、使用基本定时7,完成一个定时喂狗的程序 01、上节回顾 STM32 | 独立看门狗+RTC时间(第八天)02、定时器头文件 #ifndef __TIM_H#define __TIM_H​#include "stm32f4xx.h"​void Tim3_Init(void);void Tim7_Init(void);​…

数据解析的四种方式

常用的解析数据的四种方式包括: XPath解析数据BeautifulSoup解析数据正则表达式pyquery解析数据 话说pyquery这个库运用的比较熟练,因为以前java编程的时候,经常写jsp代码,用jquery的ajax进行异步请求,对html、js、c…

SpringData JPA Mongodb 查询部分字段

JPA 网上用的好像不多&#xff0c;找了好多材料以后最终找了这个可行的方案&#xff1a; Query(fields "{tender_id:1,_id:0}")List<MGPltTender> findByTenderIdIsNotNull(PageRequest pageRequest); 调用&#xff1a; Sort sort Sort.by(popularType.getC…

sqlite|轻量数据库|pgadmin4的sqlite数据库操作--重置密码和账号解锁

前言&#xff1a; pgadmin4的用户密码以及pgadmin4创建的pg数据库的连接信息等等都是存放在sqlite数据库内的&#xff1b;而有的时候&#xff0c;可能会由于自己的问题将pgadmin4的密码忘记&#xff0c;这个时候需要重置pgadmin4的密码&#xff0c;或者是pgadmin4的密码输错多…

【二维区域和检索-矩阵不可变】python刷题记录

一夜无解&#xff0c;痛苦&#xff0c;遂拜倒于灵神门下&#xff0c;妄做狂徒也&#xff01; . - 力扣&#xff08;LeetCode&#xff09; 灵神秒解如下&#xff1a; class NumMatrix:#二维初始矩阵def __init__(self, matrix: List[List[int]]):mlen(matrix)nlen(matrix[0])#…

Java重修笔记 第二十四天 模板设计模式

模板设计模式 当功能内部一部分实现是确定&#xff0c;一部分实现是不确定的&#xff0c;这时可以把不确定的部分暴露出去&#xff0c;让子类去实现。 抽象类定义算法骨架&#xff0c;包含抽象方法&#xff0c;需要子类去实现。 具体类继承抽象类&#xff0c;实现抽象类中的抽…

vue和微信小程序的区别、比较

找到一篇很好的关于vue和小程序之间的理解文章&#xff0c;在此分享一下&#xff1a; 前端 - vue和微信小程序的区别、比较 - 个人文章 - SegmentFault 思否https://segmentfault.com/a/1190000015684864

qt 国际化语言,英文和中文切换

1、把需要翻译转换的内用用tr()包含&#xff0c;比如&#xff1a; label->setText("hello word"); 2、在 .pro 文件中添加 TRANSLATIONS lang_en.ts \ lang_zn.ts 3、利用lupdate 工具提取…

3、PostgreSQL之高级特性

PostgreSQL之高级特性 1、视图 之前我们查询过城市的天气情况&#xff0c;假设天气记录和城市位置的组合列表对我们的应用有用&#xff0c;但我们又不想每次需要使用它时都敲入整个查询。我们可以在该查询上创建一个视图&#xff0c;这会给该查询一个名字&#xff0c;我们可以…

MySQL为什么使用B+树而不是跳表?

B树的设计能够减少磁盘I/O操作&#xff0c;通过一次磁盘读取获取尽可能多的数据。跳表搜索级别越高&#xff0c;IO的操作越多。 MySQL 使用 B 树而不是跳表主要有以下几个原因&#xff1a; 1. 磁盘读取效率 B 树的设计非常适合磁盘存储。B 树的节点包含多个键值对&#xff0c…

junit mockito Base基类

编写单元测试时我们都习惯性减少重复代码 以下基于spring mvc框架&#xff0c;需要手动pom导包 BaseTest类用于启动上下文进行debug调试 MockBaseTset类用于不启动上下文进行打桩mock pom.xml <dependency><groupId>org.mockito</groupId><artifactId…

Qt解析复杂的csv格式文件

/*csv格式是以逗号分隔列的。 * 每行内容是以换行符作为一行的。 * 如果内容中包含换行符&#xff0c;则整个内容要以双引号括起来。 * 如果内容中包含逗号&#xff0c;则整个内容要以双引号括起来。 * 如果内容中又有双引号&#xff0c;则会是2个双引号连在一起表示一个双引号…