基于 ELM 327 的 ISO 9141(非 OBD)协议

问题描述 投票:0回答:1

我正在寻找一种对 2005 款奥迪 A4 中的各种 ECU 进行编程的方法。 (引擎对我来说是最不感兴趣的——我对信息娱乐、蓝牙等更感兴趣)。据我所知,大多数有问题的 ECU 使用 KW1281 协议,这是一种标准化为 ISO 9141 的 K 线协议。有些可能使用 KW2000,也通过 K 线; CAN 尚未在该特定模型中广泛使用。

我有一个蓝牙 ELM 327 适配器,目前正在将其与 Android OBD-II 应用程序一起使用。这些设备作为专用 OBD-II 适配器销售,不一定适用于特定于供应商的协议,因为适配器包含一些专门用于 OBD-II 的协议逻辑。

支持的 OBD-II 协议之一是 ISO 9141-2,根据 ISO 摘要,它是 ISO 9141:1989 的子集。据我从ELM 327数据表得知,ELM支持任意ECU地址,发送5波特初始化序列(根据ISO 9141/KW1281的要求),甚至绕过初始化。我唯一不确定的是是否有办法与 ECU 交换原始数据,或者至少有足够低级别的方法来交换符合 KW1281 的数据。

我遇到过 直接使用 ELM 327 加密狗和 ISO 9141 来寻址 ECU – 虽然结果表明 OP 需要不同的协议,但答案间接链接到 Jared Wiltshire 的 VAG Blocks,它实现了基于 CAN 的自定义协议(KW2000 和 TP 2.0,也与它们的 OBD 对应物在基因上相关)位于 ELM 327 之上。所以我想知道 K 线协议是否可能有类似的东西。

我还知道有一些基于“哑”KKL 适配器的解决方案 - 基本上只是一个 USB 到 K 线转换器,其电路中没有协议逻辑。然而,波特率更改(5 bps 发送初始化序列,然后 9600 或 10400 bps 与实际模块通信)实施起来有些困难 – ELM 327 本身内置了此功能。

那么,有没有办法使用 ELM 327 交换任意基于 ISO 9141 的协议?

embedded obd-ii elm327
1个回答
0
投票

根据我自己的测试,ELM327 似乎无法与 VAG 车辆通过 K 线使用的专有协议进行通信。该适配器实际上是为“通用”东西而设计的,例如连接到发动机进行一般故障和排放测试(OBD 的用途),而不是连接到不同模块并对其进行编程等更精细的事情。

我还知道有一些基于“哑”KKL 适配器的解决方案

但是,波特率更改 [...] 实施起来有些困难

如果您对使用微控制器感兴趣,那么这对您来说是一份完美的工作。用于此目的的一个非常强大的库是KLineKWP1281Lib,它似乎可以在 Arduino 和 ESP 板上运行。您只需要获得一个便宜的“VCDS”适配器(越便宜越好),按照该存储库的 wiki 中的描述进行修改,然后您就可以连接到您想要的任何模块。不幸的是,该库似乎无法实现您想要的“ECU 编程”,但您可以通过进一步对协议进行逆向工程来实现它。

© www.soinside.com 2019 - 2024. All rights reserved.