是否可以通过.dbc文件请求所有所需的ODB II PID? [英] Is it possible to request all desired ODB II PIDs via a .dbc file?

查看:202
本文介绍了是否可以通过.dbc文件请求所有所需的ODB II PID?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

What I'm looking to do is request all desired PIDs via a .dbc file made in Vector db Editor++.

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

I understand enough about CAN communication to be able to do this with 1 or 2 PIDs because the DLC allows up to 8 bytes of data per CAN message. I am also familiar with this resource on querying and responses of PID https://en.wikipedia.org/wiki/OBD-II_PIDs#CAN_.2811-bit.29_bus_format

我无法理解的是诊断工具能够查询特定车辆制造商决定提供的每个PID,因此我认为这是可能的。但是,如果我使用$ 7DF的请求ID,则只能在查询中单独使用此消息ID,这就是为什么我现在只能在该CAN消息中容纳两个PID(信号)的原因。

What I'm having trouble understanding is how diagnostic tools are able to query every PID the manufacturer of a particular vehicle decides to make available, so I feel that this is possible. Yet, if I use a request ID of $7DF, I can only use this message ID alone for my querying, this is the reason why I currently can only fit two PIDs (signals) in that CAN message.

推荐答案


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

How diagnostic tools are able to query every PID the manufacturer of a particular vehicle decides to make available?

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

You cannot request whatever you want from ECU (at least in a normal way!). Only the OBD relevant PIDs you can request. All the OBD II PIDs and their definitions, scaling and etc. are available within ISO 15031 part 5. It means that all the PIDs are predefined. So any logger would firstly request mode 01 pid 00 to get all the available PIDs for that vehicle and then starts to scan over it.


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

if I use a request ID of $7DF, I can only use this message ID alone for my querying.

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

This is wrong cause 0x7DF has nothing to do with DLC and content of the message. It is only the header of message to tell the ECU from whom you have this request. 0x7DF is the OBD requests and even you can directly request different controllers their available data.

每条消息都为8个字节长。第一个字节是请求的模式。第二个字节告诉ECU输入的字节数,然后您有6个字节要发送。因此,他们说您最多可以同时请求6个PID。您的问题可能是从OBD接收多个数据,使用Flow Control和First Frame消息可能有点棘手。 在这里,您可以找到一些有关如何在8个字节以上的消息时接收消息的信息。

Every can message is 8 byte long. First byte is the mode of the request. Second byte tells the ECU the number of incoming bytes and then you have 6 bytes to send. Because of that they say you can request up to 6 PIDs simultaneously. your problem might be receiving multiple data from OBD which might be a bit tricky using Flow Control and First Frame messages. Here you can find some info about how to receive a message when it is longer that 8 bytes.

致谢

这篇关于是否可以通过.dbc文件请求所有所需的ODB II PID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆