3

我正在使用 ELM327,我希望能够设置要发送的 CAN 消息的标头和数据部分。我看到有一个代码用于设置消息的标题

SH xxyyzz

但是我很难找出如何设置数据部分并控制何时发送消息。

当我发送一个带有额外字符的 PID 的 ASCII 请求作为数据字段时,这两种情况都会发生吗?

那会使用 SH 命令设置的标头吗?

有一个更好的方法吗?

数据表:http ://elmelectronics.com/DSheets/ELM327DS.pdf

4

3 回答 3

1

如果您使用的是 ELM327,并且您使用的是 J1850 vpw 或 J1850 pwm(早于 2003 年的 CAN 车辆)等协议。那么您将使用它来设置标头。

标头包含 xx yy zz xx = 消息的优先级(即 68) yy = 您要与之交谈的模块的目标地址(即 5A) zz = 发送者地址,通常可以是 F1

所以你的命令看起来像这样 ATSH 68 5A F1

这设置了标题.. 现在您要发送数据。您从现在开始发送的任何数据都将使用该标头,并将数据发送到该模块。

所以如果你想得到 RPM,你可以发送 01 0C 你会得到类似 41 0C 23 的东西。最后一个数据字节是 RPM 的值。不过,您将必须弄清楚将其转换为人类可读格式的公式。在这里可以找到很多信息。

https://en.wikipedia.org/wiki/OBD-II_PIDs

顺便说一句,如果您在 CAN 网络上进行通信,您只需使用模块 ID 作为标头.. ATSH 7E0,然后发送您的数据。所有 2008 年以上的车辆都是 CAN .. 一些 2003-2007 年也是。

于 2016-07-08T15:23:53.557 回答
0

这可能是一个老问题,但我刚刚找到了一个在线链接,它详细描述了如何使用 ELM327 发送任意 CAN 消息。所以任何人(比如我)通过这个问题仍然可以找到一个有效的答案。

在此处查看有关使用 ELM327 发送任意 CAN 消息的详细信息: https ://www.elmelectronics.com/wp-content/uploads/2017/11/AppNote07.pdf

最好的

于 2021-07-05T12:18:08.057 回答
0

如果您使用的是 ELM327 芯片组,则需要先调用 ATSH 或 AT SH 来设置标头。然后单独发送消息(数据字节)。

https://www.sparkfun.com/datasheets/Widgets/ELM327_AT_Commands.pdf

于 2020-05-30T03:41:02.957 回答