大家好,又见面了,我是你们的朋友全栈君。
J1939 通讯传输的是一系列的“1”或“0” 。
1 代表在J1939(+)与J1939(-)之间是高电压差。
0 代表在J1939(+)与J1939(-)之间是低电压差
250K波特率时,在J1939高、低导线间的电压从0到1每秒变化250K次是可能的。用一个高频示波器可以看到此电压变化。
– Layer1– J1939/11: 物理层,物理介质 , 总线的设 计 , 长度 , 节点 , 等等 .
– Layer2– J1939/21: 数据层,定义分类 PGN 信息 / 传输协议 .
– Layer3– J1939/31: 网络层,定义不同网络互连之间 的转换技术。
– Layer7– J1939/71: 应用层,信息分享、解析。
J1939/73: 应用层,故障信息。
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 – 变速箱
标准帧只有11位的标识符(ID)
扩展帧有11+18=29位标识符(ID)
以后均以扩展帧作介绍。
标识符+数据域=协议数据单元(PDU)。
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
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
转换步骤:
十六进制转成十进制 乘以转换系数 加上偏置
举例:
查询PGN:
SPN110如下:
SPN175:
其他类同。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139897.html原文链接:https://javaforall.cn