Decoding Supported PIDs with a BAFX OBD2 Scanner

Understanding which Parameter IDs (PIDs) a vehicle’s Electronic Control Unit (ECU) supports is crucial for effective diagnostics. This article delves into the challenges of retrieving supported PIDs using a custom-built OBD2 scanner, specifically focusing on interpreting responses and addressing discrepancies encountered with a BAFX OBD2 scanner or similar devices.

OBD-II (On-Board Diagnostics, Second Generation) provides a standardized protocol for accessing vehicle diagnostic data. Utilizing a BAFX OBD2 scanner, or any compatible device, allows retrieval of this data through specific PIDs. Each PID corresponds to a particular piece of information, such as engine RPM, vehicle speed, or coolant temperature. However, determining which PIDs an ECU supports can be tricky. The standard OBD-II protocol outlines using Mode 01, PID 0x00 to request this information.

While documentation suggests requesting supported PIDs using either a broadcast ID (0x7DF) or a specific ECU ID, practical implementation reveals inconsistencies. Testing with an OBD-II emulator yielded expected results: the returned data frame clearly indicated the message type, PID response type, requested PID, and the actual data bytes. For instance, requesting PID 0x0C (Engine RPM) returned two data bytes as anticipated.

However, testing with a real vehicle (Maruti Suzuki Swift) using a custom OBD2 scanner based on the STM32 microcontroller and CAN communication presented unexpected challenges. When requesting supported PIDs from a specific ECU (0x7E0), the response deviated significantly from the standard OBD-II frame format. Deciphering the meaning of each byte in this response proved difficult.

Using the broadcast request (0x7DF) yielded a more recognizable response, albeit with anomalies. The first two data bytes (0x10 and 0x16), indicating response type, were duplicated. The remaining bytes correctly identified supported PIDs, verified against a commercial OBD2 scanner.

Further testing on a Hyundai Accent produced similar results to the broadcast request on the Swift, reinforcing the duplicated response type bytes. This discrepancy raises questions about potential vehicle-specific variations in implementing the OBD-II standard. Why the extra byte with value 16? It’s possible this represents additional information specific to the vehicle manufacturer or a slight deviation from the standard.

The inconsistency between emulator responses and real-world vehicle responses highlights the complexities of OBD-II communication. While the standard provides a framework, manufacturers may implement it with variations. Factors like vehicle make, model, and year can influence the format of responses.

Therefore, relying solely on the standard OBD-II documentation might not suffice. Consulting vehicle-specific documentation or utilizing a reliable BAFX OBD2 scanner, known for its compatibility and comprehensive software, becomes essential for accurate interpretation of supported PIDs. Understanding these nuances is crucial for developing robust and reliable OBD2 diagnostic tools.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *