0

我的主要目标是让我的控制单元没有 VIN,但为此我需要向控制器发送命令,并且在向控制器发送任何命令之前,我必须声明地址。

我在我的网络上发送了以下命令,但没有得到任何响应。

Msg.id.pdu_bit.edp = 0;
Msg.id.pdu_bit.dp = 0;
Msg.id.pdu_bit.pf = 234;
Msg.id.pdu_bit.ps = 255;
Msg.id.pdu_bit.sa = 249;
Msg.id.pdu_bit.pri = 6;

Msg.buf[0] = 0x00; //LSB First
Msg.buf[1] = 0xEE; // pgn for claim address
Msg.buf[2] = 0x00;

Msg.len = 3;

这是要求地址的正确方法还是我发送了不同的命令?

4

1 回答 1

3

看起来您在 PGN 60928(地址声明)和 PGN 59904(请求 PGN)之间有些混淆

Msg.id.pdu_bit.pf = 234;

需要是

Msg.id.pdu_bit.pf = 238;

地址声明的 PGN 为 60928,因此您的 J1939 标头中的 PF 字段需要为 238 (0xEE)。尽管数据长度应为 8,但您的数据将是特定于应用程序的。有关此数据格式的更多信息,请参阅J1939 规范幻灯片 41。

或者,如果您使用 PGN 59904,那是当您的数据长度为 3(除非您有更多特定于应用程序的信息)并且您的数据是您要请求的 PGN 时。

您不必请求地址声明 PGN,您只需发送地址声明,并将源地址设置为您要声明的地址。

于 2017-06-12T16:42:04.380 回答