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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JS如何把Object对象的数据输出到控制台中

    JS如何把Object对象的数据输出到控制台中       前端时间在编写程序时遇到这样一个问题,即在前端页面通过一些js框架自带的异步请求返回的数据类型为Object数据类型,笔者根据网上查阅到的资料,找到以下这种简单的方式://把Object类型转为Json数据格式,再通过console命令在控制台中打印出来console.log(“xhr的值为:”+JSON.st…

    2022年8月30日
    0
  • autosize 碰到 WebView.

    autosize 碰到 WebView.autosize一般来说一个挺好用的安卓缩放框架.最近碰到了一次失效的时候,积累一下解决办法.覆写Activity.onCreateViewoverridefunonCreateView(name:String,context:Context,attrs:AttributeSet):View?{AutoSize.autoConvertDensityOfGlobal(this)returnsuper.onCreateView(nam

    2022年5月24日
    45
  • 用Python做图像处理[通俗易懂]

    用Python做图像处理[通俗易懂]用Python做图像处理最近在做一件比较evil的事情——验证码识别,以此来学习一些新的技能。因为我是初学,对图像处理方面就不太了解了,欲要利吾事,必先利吾器,既然只是做一下实验,那用Python来作原型开发再好不过了。在Python中,比较常用的图像处理库是PIL(PythonImageLibrary),当前版本是1.1.6,用起来非常方便。大家可以在

    2022年5月13日
    39
  • 用户态和内核态区别是什么_进程运行在内核态还是用户态

    用户态和内核态区别是什么_进程运行在内核态还是用户态1、linux进程有4GB地址空间,如图所示:3G-4G大部分是共享的,是内核态的地址空间。这里存放整个内核的代码和所有的内核模块以及内核所维护的数据。2、特权级的概念:对于任何操作系统来说,创建一个进程是核心功能。创建进程要做很多工作,会消耗很多物理资源。比如分配物理内存,父子进程拷贝信息,拷贝设置页目录页表等等,这些工作得由特定的进程去做,所以就有了特权级别的概念。最关键的工作必须交给特权级最高的进程去执行,这样可以做到集中管理,减少有限资源的访问和使用冲突。interx86架构的cpu一共有

    2022年9月18日
    0
  • 后端知识点(面试考点内容)

    后端知识点(面试考点内容)

    2021年3月12日
    134
  • 第一章. ActionScript 语言基础

    第一章. ActionScript 语言基础

    2021年12月14日
    37

发表回复

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

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