CAN2.0和J1939协议的关系

CAN2.0和J1939协议的关系转发自http://www.cankau.cn/support/help/can-vs-j1939.html很长时间没搞明白j1939与CAN2.0的关系,这篇文章让我明白了。CAN2.0是一种总线规范,是数据链路层的技术。J1939是SAE(美国汽车协会)定义的基于CAN总线的规范,目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。1、J1939和CAN2.0的关系J1939是在CAN2.0…

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

转发自http://www.cankau.cn/support/help/can-vs-j1939.html

很长时间没搞明白j1939与CAN2.0的关系,这篇文章让我明白了。

CAN2.0是一种总线规范,是数据链路层的技术。J1939是SAE(美国汽车协会)定义的基于CAN总线的规范,目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。

1、J1939和CAN2.0的关系

J1939是在CAN2.0B的基础上,对仲裁场部分的29位ID的重新解释;其它部分完全一样。
29位ID分为:3位的优先级、8位的PF(帧格式)、8位的PS(帧扩展)、8位的SA(源地址)、1位的DP(Data Page数据页)、1位的保留位。
其中1位的DP、8位的PF、8位的PS组成了PGN;
PGN是Parameter Group Number;是参数组列表。
在J1939中,将消息分为了PDU1和PDU2两种格式。
PDU1格式的消息发送给特定地址的ECU,地址用8位的PS记录;PDU2格式的消息则发送给所有的ECU,8位的PS用于扩展。
当PF的值在0-239时,表示该消息为PDU1格式,PS为DA(目地地址)。
当PF的值在240-255时,表示该消息为PDU2格式,PS为扩展地址。

2、J1939的物理特性:

总线最大长度为40M;最大支持30个节点;节点最大长度为1M;传输速率最大为250Kbps;3根线(CAN_H、CAN_L、GND)
J1939的分层:
J1939/11:物理层:物理介质、总线设计、长度、节点;
J1939/21:数据层:PGN信息、帧格式;
J1939/31:网络层;
J1939/71/73:应用层;信息分享、控制、广播、故障诊断;

3、PGN

PGN是Parameter Group Number的简称。J1939中最大支持(240+16×256)×2个PGN。
当消息为PDU1格式时,PGN=DP×256×256+PF;
当消息为PDU2格式时,PGN=DP×256×256+PF*256+PS;
在J1939中,消息的传递以参数组的形式,每个参数组中有若干参数,每个参数是一个SPN;

4、SPN

SPN:Suspent Parameter Number:特定的参数编号;例如:SPN 190表示发动机转速。

5、CAN2.0与J1939的关系、J1939与特定的厂商协议的关系

CAN2.0是一种总线规范,是数据链路层的技术。J1939是SAE(美国汽车协会)定义的基于CAN总线的规范,目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。J1939定义了 一系列的PGN和SPN,这些PGN包含了发动机、变速器、车轴等汽车上各部件的信息;对参数的表示方法(状态和值)又定义了SLOT(Scaling比例、Limit界限、Offset偏移、Transfer传送)。ECU厂商都应该遵循这个规范。ECU模块的功能不同,厂商不同,在J1939的基础上,又表现出其多样性:支持或者不支持某些PGN、SPN和SLOT;新增了某些J1939未定义的PGN和SPN。

6、PDU消息包在CAN2.0上的拆包和重组

CAN2.0的数据场最多支持8字节的数据,如果PDU的数据小于等于8字节,1个PDU用1个CAN2.0帧传输即可;如果PDU的数据大于8字节,就需要在发送时进行拆包,在接收时进行重组。接收端如何识别是否需要重组以及怎么重组呢?J1939的做法是在拆包的情况下,将8字节的数据区的第一个字节用于表示拆包后的序号(1-255);因此,最长的PDU为255×7字节。

7、PDU的内容解析

PDU:Protocol Data Unit:协议数据单元。
在数据链路层CAN之上的就是PDU,包含了CAN2.0中仲裁场、控制场和数据场部分的内容。对J1939协议的解析其实就是对PDU的协议解析,先对接收到的包进行重组,构建一个完整的PDU包;再从PDU中数据包中提取出PGN和SPN对应的值。

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

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

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

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

(0)


相关推荐

  • 小程序 轮播图

    小程序 轮播图轮播图:cssswiper{height:400rpx;}swiper-itemimage{width:100%;height:100%;}.swiper-container{position:relative;margin-top:-300rpx;}.swiper-container.swiper{height:300r…

  • ARM 架构简介_芯片arm架构

    ARM 架构简介_芯片arm架构一小时教你学会ARM架构原创 2017年10月31日00:00:002499本文来自作者 刘盼 在 GitChat 上分享,「阅读原文」查看交流实录「文末高能」编辑|奕迅架构的演变历史我们首先介绍ARMLtd,这里先说的是公司而不是架构。ARM的发展历史非常久远,超乎许多人的想象。首先,我们提供一些背景信息,ARM成立于20世纪90年代末,从另一家位于剑桥的公司分拆而来,那家公司…

    2022年10月14日
  • isNotBlank_participate用法介绍

    isNotBlank_participate用法介绍isNotEmpty将空格也作为参数,isNotBlank则排除空格参数StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理,例如,如果输入为null则返回也是null等,具体可以查看源代码)。除了构造器,StringUtils中一共有130多个方法,并且都是static的,所以我们可以这样调用Str

  • spring security——基本介绍(一)「建议收藏」

    spring security——基本介绍(一)「建议收藏」一、springsecurity简介springsecurity的核心功能主要包括:认证(你是谁) 授权(你能干什么) 攻击防护(防止伪造身份)其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是BasicAuthenticationFilter用来认证用户的身份,一个在springsecurity中一种过滤器处理一种认证方式…

  • jdk下载/Linux64位 jdk1.8 jdk-8u161下载[通俗易懂]

    jdk下载/Linux64位 jdk1.8 jdk-8u161下载[通俗易懂]Linux64位jdk1.8jdk-8u161-linux-x64.tar.gzjdk1.8jdk-8u161-linux64看到在csdn下载这个jdk1.88u161版本的都要积分,就去官网下载了一个放云盘jdk1.88u161百度云盘下载链接:https://pan.baidu.com/s/18IicPYf7W0j-sHBXvfKyyg下载jdk的oracle官网:http…

  • Teahour 以太坊专访-文字版

    Teahour 以太坊专访-文字版原文地址:http://ethfans.org/shaoping/articles/talk-with-jan-about-ehtereum本文是播客Teahour以太坊专访文字版,收听地址 http://teahour.fm/2016/01/19/talk-with-jan-about-ehtereum.html ,也可以在喜马拉雅、iTunes搜索Teahour收听。(前边的开

发表回复

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

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