我有一个关于 J1939 的问题。我正在寻找请求删除 ECU 名称的 PGN 编号。
我为开源 SAE J1939 创建了一个库 https://github.com/DanielMartensson/Open-SAE-J1939
有两个 PGN 号码
PGN_ADDRESS_CLAIMED = 0x00EE00,
PGN_COMMANDED_ADDRESS = 0x00FED8,
PGN_ADDRESS_CLAIMED
询问有关 ECU(名称)的信息,PGN_COMMANDED_ADDRESS
而不是请求,更像是用于更改有关 ECU 及其目标地址的信息的命令。
问题:
在哪里可以找到可以删除ECU信息或断开ECU的PGN号?或者你认为我可以说PGN号可以是0xFFFFFF?我希望PGN已经被占用了?
我问的原因是因为当我更改 ECU 的地址和信息时,旧的信息和地址仍然存在......在其他 ECU 上可用。我的库就像所有 ECU 都具有关于所有 ECU:s 的相同信息一样工作。
如果你想知道我在做什么。我正在构建一个非常易于使用且易于理解的 J1939 库。我专注于最少的代码,库的目的是用户应该轻松实现自己的外部函数。
这是我的 J1939 库中的请求函数示例:
/* 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 */
}