如何使用ELM327发送自定义CAN消息?

时间:2015-06-22 14:51:44

标签: can-bus obd-ii elm327

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

SH xxyyzz

但是我无法找到如何设置数据部分并控制邮件何时发送。

当我发送带有数据字段额外字符的PID的ASCII请求时,是否会出现这两种情况?

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

有更好的方法吗?

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

3 个答案:

答案 0 :(得分:0)

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

标题将由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也是如此。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

最佳

相关问题