解析CAN的J1939协议PDU报文

PF用来确定PDU格式:0——239表示PDU1格式;240——255表示格式2。

PDU1格式报文表示向特定或全局地址发送

PDU2格式报文表示向全局地址发送

PS由PF决定其含义


DA表示报文要发送的目标地址

GE表示PS在PDU2中与PF的4个最低有效位能够共同确定4096个PDU2格式参数组

数据场

数据场包含了参数组中的数据内容,通常控制类参数组数据长度等于8;其中未定义的字节以0xFF填充,已备将来分配;如果参数组数据长度超过8,要使用传输协议。

参数组与PGN

参数组数目=[240(PDU1)+16*256(PDU2)]*2(DP)=8672

PGN计算

PDU1格式

PGN=PF*256

PDU2格式

PGN=PF*256+GE

使用举例


报文解析

SPN(可疑参数编号)

SPN使用演示



物理数值=比列系数*总线数值+偏移量

根据上面图片,假如读取到报文中总线数值为100,则其物理温度为=100*1-40=60°

总线数值=(物理数值-偏移量)/比例系数


  • 41
    点赞
  • 210
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: J1939是一种用于商用车辆的通信协议,多包报文J1939中的一种数据传输方式。当需要传输大量数据时,常规的单包报文可能不足以满足需求,此时就需要使用多包报文。 多包报文由一个主报文和多个数据包组成。主报文用于管理整个数据传输过程,包括发送方的信息和总数据的大小。数据包则是具体的数据内容,每个数据包携带部分数据,并标识其在整个数据中的位置。 在接收方解析J1939多包报文时,首先需要接收并解析报文,获得总数据的大小和发送方的信息。然后根据数据包的标识,按顺序接收各个数据包,并将它们组合成完整的数据。 在解析报文时,需要注意主报文的标识符和格式。标识符包含了目标地址、源地址、优先级和PDU格式等信息。格式字段指示主报文中是否还有数据包,以及总数据的大小。 在接收数据包时,需要注意数据包的顺序和完整性。通过校验数据包的标识符和数据包的顺序,可以确保接收到的数据包是完整且按序的。如果发现有丢失的数据包,或者数据包的顺序错误,需要重新请求发送方重新发送。 解析完成后,可以使用获得的完整数据,进行后续的处理和应用。这样就实现了J1939多包报文解析。 总之,J1939多包报文解析涉及接收和解析报文,按顺序接收和组合数据包,以及对接收到的数据进行处理。这种方式能够满足大量数据的传输需求,并确保数据的准确性和完整性。 ### 回答2: J1939是一种用于车辆、船舶等商用和工业应用的通信协议。在J1939协议中,多包报文是一种特殊的数据传输方式。 多包报文是指将较大的数据分割成多个包进行传输的方式。这种方式可以提高数据传输的效率和可靠性,特别适用于需要传输大量数据的应用场景。 多包报文解析过程主要包括以下几个步骤: 1. 接收数据:首先,接收方需要监听数据总线,等待发送方发送多包报文。 2. 解析报文片段:一旦接收到多包报文的第一个包,接收方会开始解析报文。接收方需要根据报文中的指示信息,确定报文的总长度和包的数量。 3. 缓存接收的数据:接收方会将每个接收到的包的数据缓存起来,等待其他包的到达。 4. 等待其他包的到达:接收方会继续监听数据总线,等待发送方发送下一个包。一旦接收到下一个包,接收方会将其缓存起来,并更新相应的状态信息。 5. 检查报文完整性:接收方会通过检查每个包的序列号和校验和来验证接收到的数据的完整性。如果检测到错误,接收方可以请求发送方重新发送丢失或错误的包。 6. 重组完整的数据:当接收到所有的包,并验证通过后,接收方会将缓存的数据按照正确的顺序进行重组,得到完整的数据。 7. 处理数据:一旦得到完整的数据,接收方可以对其进行相应的处理和应用,如解码、存储、显示、传输等。 总的来说,J1939多包报文解析是一个复杂的过程,需要发送方和接收方之间的协作,并且需要严格的数据验证和处理机制,以确保数据的准确性和可靠性。 ### 回答3: J1939是一种数据通信协议,常用于商用车辆和重型设备中,用于在不同的控制单元之间进行高效的数据传输。J1939多包报文解析是指对J1939协议中的多包报文进行解析和处理。 J1939多包报文是一种特殊的报文格式,用于传输较大的数据量。它将较大的数据分为多个小的数据块,并通过多个报文进行传输。接收方需要将这些小的数据块重新组合,以获取完整的数据。 解析J1939多包报文的过程可以分为以下几步: 1. 接收报文:首先,接收方需要接收到J1939多包报文的所有数据包。每个数据包包含了一个报文序列号、数据块编号和实际的数据。接收方需要将这些数据包缓存起来,等待后续的处理。 2. 组合数据:接收方需要根据数据包的报文序列号和数据块编号,将所有的数据包按照正确的顺序进行组合。这样才能保证最终得到完整的数据。 3. 检查完整性:一旦所有的数据包都被组合到一起,接收方需要验证数据的完整性。这可以通过检查数据包的校验和来实现。如果数据包的校验和与期望值不符,说明数据包可能被篡改或丢失,接收方需要进行相应的处理。 4. 数据处理:最后,接收方可以对完整的数据进行处理和解析。这可能包括将数据转换为可读的格式、提取所需的信息或执行特定的控制操作。 综上所述,J1939多包报文解析是一个复杂的过程,需要接收方进行数据的接收、组合、完整性验证和数据处理。只有经过完整的解析过程,才能正确地获取和使用J1939协议传输的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值