0

我要做的是通过在 Vector db Editor++ 中制作的 .dbc 文件请求所有需要的 PID。

我对 CAN 通信有足够的了解,能够使用 1 或 2 个 PID 来执行此操作,因为 DLC 允许每个 CAN 消息最多 8 个字节的数据。我也熟悉这个关于 PID 查询和响应的资源https://en.wikipedia.org/wiki/OBD-II_PIDs#CAN_.2811-bit.29_bus_format

我无法理解的是诊断工具如何能够查询特定车辆制造商决定提供的每个 PID,所以我觉得这是可能的。然而,如果我使用 $7DF 的请求 ID,我只能单独使用此消息 ID 进行查询,这就是我目前只能在该 CAN 消息中放置两个 PID(信号)的原因。

4

1 回答 1

0

诊断工具如何能够查询特定车辆制造商决定提供的每个 PID?

您不能向 ECU 请求任何您想要的东西(至少以正常方式!)。只有您可以请求的 OBD 相关 PID。ISO 15031 第 5 部分中提供了所有 OBD II PID 及其定义、缩放等。这意味着所有 PID 都是预定义的。因此,任何记录器都会首先请求mode 01 pid 00获取该车辆的所有可用 PID,然后开始对其进行扫描。

如果我使用 $7DF 的请求 ID,我只能单独使用此消息 ID 进行查询。

这是错误的原因0x7DF与DLC和消息内容无关。它只是消息的标头告诉 ECU 您从谁那里收到此请求。0x7DF是 OBD 请求,甚至您可以直接向不同的控制器请求其可用数据。

每个罐头消息的长度为 8 个字节。第一个字节是请求的模式。第二个字节告诉 ECU 传入字节数,然后您有 6 个字节要发送。因此,他们说您最多可以同时请求 6 个 PID。您的问题可能是从 OBD 接收多个数据,使用流控制和第一帧消息可能有点棘手。在这里您可以找到一些有关如何接收超过 8 个字节的消息的信息。

问候,

于 2017-02-23T07:21:30.823 回答