首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >J1939 -关于删除名称的请求,我应该使用什么PGN号码?

J1939 -关于删除名称的请求,我应该使用什么PGN号码?
EN

Stack Overflow用户
提问于 2021-07-11 15:00:50
回答 1查看 303关注 0票数 0

我有一个关于J1939的问题。我正在寻找一个PGN号码,用于请求删除ECU的名称。

我为开放源码的SAE J1939 https://github.com/DanielMartensson/Open-SAE-J1939创建了一个库。

有两个PGN号

代码语言:javascript
复制
    PGN_ADDRESS_CLAIMED = 0x00EE00,
    PGN_COMMANDED_ADDRESS = 0x00FED8,

PGN_ADDRESS_CLAIMED询问ECU (名称)和PGN_COMMANDED_ADDRESS的信息并不是一个请求,更像是一个用于查询ECU及其目标地址的信息的命令。

问题:

在哪里可以找到可以删除ECU信息或断开ECU连接的PGN号码?或者你认为我可以说PGN号码可以是0 0xFFFFFF?我希望PGN已经被录取了?

我之所以问这个问题,是因为当我在ECU上更改地址和信息时,旧的信息和地址在其他ECU仍然是there...avaiable。我的库工作就像所有ECU一样,对所有ECU:s都有相同的信息。

如果你想知道我在做什么。我正在构建一个非常易于使用和非常清楚易懂的J1939库。我关注的是最少的代码,库的目的是用户应该很容易地实现自己的外部函数。

下面是我的J1939库中的请求函数的一个示例:

代码语言:javascript
复制
/* PGN 00EA00 - Request for name information about other ECU */
ENUM_J1939_STATUS_CODES J1939_User_Send_Request(J1939* j1939, uint8_t DA, uint32_t PGN_code) {
    uint8_t PGN[3];
    PGN[0] = PGN_code;                                                      /* PGN least significant bit */
    PGN[1] = PGN_code >> 8;                                                 /* Look in J1939_Enum_PGN.h */
    PGN[2] = PGN_code >> 16;                                                /* PGN most significant bit */
    uint32_t ID = (0x18EA << 16) | (DA << 8) | j1939->this_address;
    return CAN_Send_Request(ID, PGN, 100);                                  /* 100 ms delay */
}
EN

回答 1

Stack Overflow用户

发布于 2021-08-10 18:42:50

AFAIK,J1939不提供取消注册地址的功能。但是,您可以使用SA作为0xFE发送地址声明消息,并将名称设置为在初始地址声明期间使用的值。

我用一种方式实现了,我的图书馆过去把所有的地址和它们的名字组合存储在“进位簿”中。在发送任何消息之前,根据地址簿对DA进行验证。如果节点以SA为0xFE发送地址声明,则将在通讯簿中搜索并删除名称。

查找有效地址是一种开销。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68337373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档