【问题标题】:How to Claim Address on J1939 CAN bus?如何在 J1939 CAN 总线上声明地址?
【发布时间】:2017-01-19 17:25:10
【问题描述】:

我的主要目标是获取我的控制单元的 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;

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

【问题讨论】:

  • 任何人都可以共享J1939协议的地址声明程序???

标签: can-bus j1939


【解决方案1】:

您似乎对 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 Spec slide 41。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    相关资源
    最近更新 更多