J1939 RTR问题

时间:2016-09-23 00:19:13

标签: raspberry-pi can-bus bus j1939

我使用candump和cansend发布了rtr帧。

转发广播数据不是问题。

建筑 - 覆盆子pi用pican盾从J1939模拟器读取数据。

我运行candump接收总线上的所有消息。然后当我为pgn feec执行cansend时,从模拟器返回一个ack帧。我要求预编程的VIN,但我什么都没收到。这是我从candump看到的:

can0  18FEF500   [8]  7D FF FF 40 25 4B FF FF   '}..@%K..'
can0  18FEE900   [8]  D1 4B 03 00 D1 4B 03 00   '.K...K..'
can0  18FEF700   [8]  FF FF FF FF E0 01 FF FF   '........'
can0  18FECA00   [8]  03 FF 00 00 00 00 00 00   '........'
can0  00FEEC00   [0]  remote request
can0  18E80000   [8]  01 FF FF FF FF EC FE 00   '........'
can0  0CF00300   [8]  FF 7D 7D FF FF FF FF FF   '.}}.....'
can0  18FE6C00   [8]  FF FF FF FF FF FF 80 7D   '.......}'
can0  0CF00400   [8]  FF FF 7D 80 7D FF FF FF   '..}.}...''

E800 PGN是标准的确认消息。

我在Candump正在运行时发送的消息:

cansend can0 00feec00#r

基本上,我没有得到VIN的PGN。有任何想法吗?

1 个答案:

答案 0 :(得分:3)

原来这里有几个问题。

J1939不支持

1- #r

2-你没有直接要求pgn请求pgns。该方法是将数据发送到处理请求的特定pgn。以下示例:

EA 00是发送数据的PGN。在数据消息内部存在我们想要请求的pgn(LSB),所以PGN FEE5现在是E5FE。需要三个字节,这就是下面信息中00的原因。

以下是发动机小时的工作请求:

cansend 18EA00FF#E5FE00

和响应:

21 00 00 00 8F 01 00 00