Unlock Advanced Car Diagnostics: Mastering Car Scanner Pro Custom PIDs

For car enthusiasts and professional mechanics alike, understanding and accessing vehicle data beyond the standard parameters can be incredibly valuable. Car Scanner Pro empowers you to do just that by allowing the addition of custom sensors, also known as custom PIDs (Parameter IDs). These custom PIDs unlock access to a wealth of data defined by your car’s manufacturer, going far beyond the generic OBD2 readings. This article will guide you through understanding and utilizing custom PIDs in Car Scanner Pro to take your car diagnostics to the next level.

Decoding the Language of Your Car: Understanding PIDs, Commands, and Headers

Creating custom sensors in Car Scanner Pro requires understanding how your car’s Electronic Control Unit (ECU) communicates. At a fundamental level, it involves knowing two key pieces of information:

  1. The Command: This is the specific request you send to the ECU to retrieve the desired data. It’s composed of a Mode and a PID.

    • Mode: Defines the type of data you are requesting (e.g., Mode 01 is for current data).
    • PID: Identifies the specific parameter you want to read within that mode (e.g., 0C for Engine RPM).
    • Example: To request engine RPM, the command would be 010C.
  2. The Header (Optional but Often Crucial): This specifies the address where the request should be sent.

    • Header: Think of it as the “address” of the ECU on your car’s network. For CAN 11bit protocol, a common header is 7E0.
    • Default Header: If you leave the header field blank in Car Scanner Pro, the app will use the default functional header for your car’s communication protocol.
    • Importance of Correct Header: Many custom PIDs, especially those accessing manufacturer-specific data, require the correct header to function properly. Without it, the request might not reach the correct ECU module.

To illustrate, if you want to monitor your engine’s RPM, you would use the command 010C. Car Scanner Pro sends this command (along with the appropriate header) to your car’s ECU. The ECU then responds with a string of data. This is where the next crucial step comes in: decoding this raw data.

Translating Raw Data: Formulas and Byte Interpretation in Car Scanner Pro

The ECU’s response is typically in a raw hexadecimal format. To make sense of this data, Car Scanner Pro uses a Formula that you define to interpret the received bytes.

  • Byte Representation: Car Scanner Pro represents each byte in the ECU’s response with letters, starting with A for the first byte, B for the second, C for the third, and so on, up to Z, then AA, AB, and continuing.

  • Data Skipping: Before Car Scanner Pro applies your formula, it intelligently skips certain bytes in the response. This skipped data usually includes:

    • Header bytes
    • Data length indicators
    • Response mode markers (e.g., 41 is the response marker for Mode 01)
    • The PID identifier itself
  • Example: RPM Decoding: Let’s revisit the engine RPM example (command 010C). A typical ECU response might look like this: 7E804410C**0C9C**. Car Scanner Pro skips 7E804410C, leaving **0C9C** as the relevant data.

    • A now represents the byte 0C
    • B represents the byte 9C
  • Formulas for Calculation: The Formula field in Car Scanner Pro allows you to use these byte representations (A, B, C, etc.) along with mathematical operators (*, /, -, +) and parentheses () to create equations that convert the raw byte data into a meaningful value.

    • Example Formula for RPM: Engine RPM is often represented across two bytes. A common formula to decode RPM is (A*256+B)/4. This formula multiplies the first byte (A) by 256, adds the second byte (B), and then divides the result by 4 to get the RPM value.

Car Scanner Pro supports floating-point numbers in formulas (e.g., A+13.54) and a range of functions to handle more complex data decoding.

Expanding Your Formula Toolkit: Mathematical, Bitwise, and Advanced Functions

Car Scanner Pro provides a rich set of functions within the formula editor to handle various data types and decoding needs:

Mathematical and Bitwise Operators:

  • *, /, -, +: Standard mathematical operators for multiplication, division, subtraction, and addition.
  • @~: Bitwise unary complement (inverts all bits).
  • @&: Bitwise AND (performs a bitwise AND operation).
  • @^: Bitwise exclusive OR (performs a bitwise XOR operation).
  • @<<: Shift left (shifts bits to the left).
  • @>>: Shift right (shifts bits to the right).

Example: A@&B performs a bitwise AND operation between byte A and byte B.

Advanced Functions:

  • GetBit(A,N): Extracts a specific bit from a byte. A is the byte (represented by A, B, C, etc.), and N is the bit number (0 to 7, from least significant to most significant).
  • SIGNED(A), signed(A), Signed(A): Interprets a byte as a signed integer (-128 to 127).
  • ShortSigned(A,B): Interprets two bytes as a 16-bit signed integer.
  • And(A,B): Bitwise AND (same as A@&B).
  • Shr(A,B): Bitwise shift right (same as A@>>B).
  • Shl(A,B): Bitwise shift left (same as A@<<B).
  • MAX(A,B): Returns the maximum value between A and B.
  • MIN(A,B): Returns the minimum value between A and B.
  • abs(A): Returns the absolute (unsigned) value of A.
  • FLOAT32(A,B,C,D), float32(A,B,C,D): Interprets four bytes as an IEEE 754 single-precision floating-point number.
  • FLOAT64(A,B,C,D,E,F,G,H), float64(A,B,C,D,E,F,G,H): Interprets eight bytes as an IEEE 754 double-precision floating-point number.
  • if(A,B,C): A conditional function. If A is true (non-zero), it returns B; otherwise, it returns C. Comparisons like =, <>, >, <, >=, <= can be used within the if condition.
    • Example: if(A>5;5;A): If byte A is greater than 5, return 5; otherwise, return the value of byte A.
  • SetVar(key,value): Stores a value in Car Scanner Pro’s shared key-value dictionary. key is an integer, and value can be any numerical value. Returns the stored value.
  • SetVarOnce(key,value): Stores a value in the dictionary only if the key doesn’t already exist. Returns the stored value.
  • GetVar(key,default_value): Retrieves a value from the dictionary using the key. If the key doesn’t exist, it returns the default_value.
    • Example: GetVar(123,789.244): Tries to get the value associated with key 123. If not found, it returns 789.244.

Referencing Other Sensors:

Custom PIDs can even reference values from other sensors you have defined in Car Scanner Pro. This allows for complex calculations and derived data displays. You can reference other sensors in two ways:

  1. PID(ID) or pid(ID): Use the sensor’s numerical ID. You can find the sensor ID in Car Scanner Pro’s Settings -> Sensors.

    • Example: PID(5): Retrieves the value of the sensor with ID 5.
  2. {name}: Use the exact full name of the sensor (case-sensitive).

    • Example: {Fuel temperature}: Retrieves the value of the sensor named “Fuel temperature”.

Advanced Control: Start and Stop Diagnostic Commands

For more advanced custom PIDs, Car Scanner Pro allows you to define commands that are executed before and after the main PID request. These “Start diagnostic command” and “Stop diagnostic commands” fields accept ELM327 commands, separated by ;, , or \.

Use Cases:

  • Session Management: Initiate specific diagnostic sessions required for certain PIDs.
  • Complex Routines: Trigger routines or modes within the ECU before requesting data.

Example: ATCRA7E8,ATFCSH7E0,ATFCSD300000 – This sequence sets up specific CAN communication parameters.

Action PIDs: Triggering ECU Functions

Beyond reading data, Car Scanner Pro supports Action PIDs. These are custom PIDs that, when tapped within the app, execute a command without expecting a decoded response.

Common Use:

  • Service Routines: Trigger functions like forced DPF regeneration, ABS bleeding cycles, or other diagnostic routines initiated by specific commands.

Important Note: Action PIDs still require you to know the correct header and command for the function you want to trigger.

Naming and Customization: Name, Short Name, and Value Range

Finally, Car Scanner Pro provides fields for customizing your custom PIDs:

  • Name: A descriptive name for your sensor (e.g., “Engine Oil Temperature”).
  • Short Name: A shorter name for display in dashboards and gauges (e.g., “Oil Temp”).
  • Minimum and Maximum: These fields are optional and can be used to define the expected range of values for the sensor.

By mastering custom PIDs in Car Scanner Pro, you gain unparalleled access to your vehicle’s data, allowing for in-depth diagnostics, performance monitoring, and a deeper understanding of your car’s inner workings. Explore the possibilities and unlock the full potential of your car scanner!

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 *