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

Mar*_*ver 5 can-bus obd-ii elm327

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

SH xxyyzz
Run Code Online (Sandbox Code Playgroud)

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

当我发送 PID 的 ASCII 请求并在数据字段中包含额外字符时,这两种情况都会发生吗?

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

有一个更好的方法吗?

数据表:http ://elm electronics.com/DSheets/ELM327DS.pdf

小智 2

如果您使用的是 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
Run Code Online (Sandbox Code Playgroud)

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