SAE J1939学习笔记(一)「建议收藏」

SAE J1939学习笔记(一)「建议收藏」1.总线布局2.差分信号线J1939通讯传输的是一系列的“1”或“0”。 1代表在J1939(+)与J1939(-)之间是高电压差。0代表在J1939(+)与J1939(-)之间是低电压差250K波特率时,在J1939高、低导线间的电压从0到1每秒变化250K次是可能的。用一个高频示波器可以看到此电压变化。3.ISO标准对应–Layer…

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

1.总线布局

SAE J1939学习笔记(一)「建议收藏」

2.差分信号线

J1939 通讯传输的是一系列的“1”或“0” 。 

1 代表在J1939(+)与J1939(-)之间是高电压差。

0 代表在J1939(+)与J1939(-)之间是低电压差

SAE J1939学习笔记(一)「建议收藏」

250K波特率时,在J1939高、低导线间的电压从0到1每秒变化250K次是可能的。用一个高频示波器可以看到此电压变化。

SAE J1939学习笔记(一)「建议收藏」

3.ISO标准对应

– Layer1–  J1939/11:   物理层,物理介质 , 总线的设 计 ,  长度 , 节点 , 等等 .
– Layer2–  J1939/21:   数据层,定义分类 PGN 信息 / 传输协议 .
– Layer3–  J1939/31:    网络层,定义不同网络互连之间 的转换技术。
– Layer7–  J1939/71:    应用层,信息分享、解析。

                    J1939/73:   应用层,故障信息。

4.术语

SPN–特定参数–特定参数对应的号码,例如:
              SPN 190 = 发动机转速
              SPN 513 = % 扭矩

PGN  – 参数
号码 –总线上的信息被以 “ 组 ” 的形式广播,例如:
   PGN 61444 = 发动机控制器 #1 (EEC1)
   PGN 61444 = SPN 190, SPN 513, 等等 .
  发动机转速和扭矩百分比都属于 PGN 61444参数组。
优先级 – 告诉 ECM 接收的信息的重要性 :
     0 =  最重要
     6 =  最不重要
    例如:如果变速箱用优先级3请求发动机升速,而牵引控制器用优先级0请求发动机降速,最终发动机会选择降速。
源地址和目的地址 – 指示信息是从哪一个控制器发出,或发送到哪一个控制器。
    00 h – 发动机控制器--主机
    01 h – 发动机控制器--辅机
    03 h – 变速箱

5.CAN标准帧和扩展帧

SAE J1939学习笔记(一)「建议收藏」

标准帧只有11位的标识符(ID)
扩展帧有11+18=29位标识符(ID)
以后均以扩展帧作介绍。

6.协议数据单元(PDU)

标识符+数据域=协议数据单元(PDU)。
SAE J1939学习笔记(一)「建议收藏」

7.参数组编号(PGN)

PGN(Parameter Group Number)参数组编号:

参数组编号唯一标识一个参数组,在通讯过程中起到“索引”的作用,表征报文的内容和用途,确定报文的类型和传播数据需要的帧数目。可以理解为同类(或者有共同特征的设备)参数的集合的索引。
SAEJ1939中的格式规定如下:

pgn61443 – Electronic EngineController #2 – EEC2 –

Transmission Repetition Rate: 50ms                        ->信息发送周期

Data Length:                            8 Bytes                        ->数据域长度(CAN扩展帧中的数据域)

Data Page:                              0                                    ->数据页(PGN中的数据页DP)

PDU Format:                           240                              ->PDU格式(PDU1(<240)和PDU2(240~255))(CAN格式中的PF)

PDU Specific:                          3                                  ->PDU特定域(PF<240,DA,240≤PF≤255,组扩展)

Default Priority:                        3                                  ->优先级 

Parameter Group Number:            61443 (00F00316)                ->PGN

Bit Start Position / Byte     Length          SPNDescription                        SPN (对应的SPN号)   ->数据域分布

1.1                        2 bits             Accelerator Pedal Low Idle Switch        558                               ->1.1表示第一个字节第一位

1.3                        2 bits             Accelerator Pedal Kickdown Switch      559                               ->2bits表示该SPN对应的数据长度

1.5                        2 bits             Road Speed Limit                                1437

2                          1 byte            Accelerator Pedal Position                      91

3                          1 byte            Percent Load at Current Speed              92

4                          1 byte            Remote Accelerator                               974

8.特定参数号(SPN)

spn91 – Accelerator PedalPosition – The ratio of actual acceleratorpedal position to maximum pedal position. Although it is used as an input to determine transmission and ASRalgorithms about driver’s actions.

 

Data Length:                            1 Bytes                    ->SPN号对应的数据的长度

Resolution:                        0.4%/ bit, 0 offset          ->计算方式(见下)

Data Range:                      0 to100%                        ->数据范围(涉及偏移量计算)

Type:                                 Measured

Suspect Parameter Number:         91                     ->SPN号

Parameter Group Number:            [61443]             ->隶属的PGN号

由SPN数据(CAN格式中的读出的数据)计算实际的数据方法:

如下是一个实际的 J1939信息

  0.1000 1  OCF00300x   Rx   d8  7DC3 C0 2D FFFFFFFF

转换步骤:

    十六进制转成十进制
    乘以转换系数
    加上偏置

举例:

SAE J1939学习笔记(一)「建议收藏」

查询PGN:

SAE J1939学习笔记(一)「建议收藏」

SPN110如下:

SAE J1939学习笔记(一)「建议收藏」

SPN175:

SAE J1939学习笔记(一)「建议收藏」

其他类同。

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

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

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


相关推荐

  • 中台之上(十一):企业级业务架构设计的“五难”「建议收藏」

    中台之上(十一):企业级业务架构设计的“五难”「建议收藏」中台之上(十一):企业级业务架构设计的“五难”

    2022年4月21日
    64
  • 堆排序算法——C/C++

    堆排序算法——C/C++堆排序1、算法思想堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。2、实现原理要实现从小到大的排序,就要建立大顶堆,即父节点比子节点都要大。2.1、初始化数组,创建大顶堆。大顶堆的创建从下往上比较,不能直接用无序数组从根节点比较,否则有的不符合大顶堆的定义。…

    2022年7月12日
    22
  • 浅谈js原型和原型链接_js原型链阮一峰

    浅谈js原型和原型链接_js原型链阮一峰一、简述对于javascript对象(函数)原型和原型链的理解,其实不那么难,简单来说,需要理解什么是原型,怎么访问原型,什么是原型链,怎么通过原型链去访问原型,就可以大概理清楚原型和原型链的基础知识。二、浅析1、何为原型在js引擎启动的时候,其内核就生成了最基本的Object和Function的原型内容,也就是最原始最自然的代码。(1)Object的原型是一个对象变量,该对象变量存…

    2025年6月29日
    3
  • java获取当前系统时间毫秒值_java 当前日期

    java获取当前系统时间毫秒值_java 当前日期获取当前时间的方法 //第一种方法longtotalMilliSeconds=System.currentTimeMillis(); //第二种方法(常用)Datedate=newDate();           date.getTime();获取时间的毫秒值//第一种方法//获取00:00:00时的毫秒数Strings=D…

    2025年8月26日
    8
  • 【机器学习】代价函数,损失函数,目标函数区别

    【机器学习】代价函数,损失函数,目标函数区别一:损失函数,代价函数,目标函数定义首先给出结论:损失函数(LossFunction)是定义在单个样本上的,算的是一个样本的误差。代价函数(CostFunction)是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。目标函数(ObjectFunction)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是CostFunction+正则化项)。关于目标函数和…

    2022年4月29日
    125
  • indexedDB_INDEX函数

    indexedDB_INDEX函数indexedDB介绍原生介绍indexedDB是一个前端数据持久化解决方案(即前端缓存),由浏览器实现。0.兼容性1.特点基于文件存储。意味着其容量可达到硬盘可用空间上限非关系型数据库。意味着扩展或收缩字段一般无须修改数据库和表结构(除非新增字段用做索引)键值对存储。意味着存取无须字符串转换过程存储类型丰富。意味着浏览器缓存中不再是只能存字符串了异步:意味着所有操作都要在回调中进行2.数据库一组相关业务数据的存储集合。创建一个数据库windo

    2025年7月24日
    3

发表回复

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

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