Finding Incomplete OBDII Tests
Some states are now using the OBDII connector for emissions testing. The good news is that if the vehicle has completed testing its emissions systems since the last time the battery was disconnected or the trouble codes reset, the test takes only seconds to pass. The bad news is if it hasn’t completed them the vehicle may not be passed. If you see “—Ready—” in the second line after pressing SCAN, all the tests have been run and there are no trouble codes. You are ready to pass the emissions check. If you see “-Not Ready-“, some tests haven’t been run. Even though there are no trouble codes, you may still fail emissions because some required tests have not been completed.
Some states allow the vehicle to pass emissions even if certain tests have not been completed. The ones that are allowed differ from state to state. Although the ScanGauge II cannot tell you which ones your state allows, it can tell you which ones have not been completed.
The CMNDS function in the ScanGauge II allows you to send OBDII requests and receive OBDII responses. The trick is in the encoding and decoding of the requests and returned data.
Data in the OBDII system uses hex-a-decimal bytes, just like most computers. This should make it easier for those familiar with the language of computers. For those who are not that deep into computers, don’t worry, it can be broken down into some simple sequences of numbers and letters.
Hex-a-decimal uses the numbers 0 to 9 just like decimal, but adds the letters “A” through “F” as “numbers”. Each “Byte” actually contains 2 hex-a-decimal digits. “7F” is an example of a hex-a-decimal byte. 1A23D4 is an example of a hex-a-decimal number. I’ll leave the discussion of why computers like 16 numbers instead of 10 for someone else. You don’t really need to worry about it.
OBDII Commands have a structure which depends on the protocol (MODE in the ScanGauge II). You will have to know the MODE your vehicle is using. When the ScanGauge has connected to the vehicle computer, CAN capable ScanGauges (Version 2.xx) will tell you the MODE by using MORE>MORE>MODE. The MODE will be shown on the top line. Non-CAN ScanGauges will show the MODE by using MORE>MODE>READ.
The commands use a checksum to verify that the data was received correctly. The ScanGauge adds this to what you tell it to send, so you don’t have to worry about it. The responses also include a check value which is displayed by the ScanGauge II. The ScanGauge II validates the response by using the check value before the response is displayed. If a response is displayed, it has passed the check and you don’t need to bother with the check value.
Making and Sending an OBDII Command
The ScanGauge II has 10 memories which can be used to store an OBDII command. It uses “Flash” type memory which doesn’t require power or a battery to be retained. You can change it as often as you like or keep it as long as you want, even if the ScanGauge II is unplugged.
Access to the memory is through MORE>MORE>CMNDS. This get you to a Memory screen. You can use the upper buttons to select which memory (0 to 9) to use. The inputting of the command is reached by pressing EDIT. This opens a screen where the command can be created or, if one already exists, changed. The upper buttons move you through the hex-a-decimal number locations which extends clear through the top line and most of the way through the second line. Most OBDII commands are shorter than this.
The lower left button is used to change the character at the blinking cursor. It steps from a “space” to the numbers 0 to 9 and the letters A to F, then starts back at “space”. This allows you to build the command using the upper buttons to position the cursor and the lower left to set the value at the cursor.
When you have completed the command, you exit the memory edit screen by pressing the lower right “OK” button. This returns you to the memory screen. The lower right “SEND” button causes the command to be sent. You can move from memory to memory sending commands as often as you like.
Receiving an OBDII Response
The ScanGauge II sends a command after you press the Send button when it is proper to do so according to the OBDII rules. It then looks for a response. It will capture, check and display the first response it sees after sending the command. This is an important point.
OBD busses can contain a lot of things being passed from one computer in the vehicle to another or to the ScanGauge II. The first response may not be the response to the command you sent. It may be a response to a command sent by the vehicle computer or other ScanGauge II command. The vehicle can sort the responses out because the response contains values which shows what command it is responding to. You have to do this by checking some of the characters in the response. If it is not the response to your command, you would send the command again.
Asking for Emissions Test Status
The command you need to put into the ScanGauge II and send to retrieve emissions test status depends on the protocol/MODE.
If your vehicle mode is PWM, the command would be:
For VPW, ISO and KWPx use:
For KWPx use:
For CANxx use:
After entering the command, press OK and then SEND. Any response will appear in the display. If no response is seen, make sure the engine is on and gauges are responding and try again. The response you are looking for will have some values that verify it is a response to your request, other numbers that verify the data has been received correctly and numbers that contain the information you requested. Just like the command, the response depends on the protocol/Mode. The lower-case letters x,j,k,l,m,n,o,p,q and z are place holders in the following sequences. The actual values displayed by the ScanGauge II will be hex-a-decimal numbers (0 to 9 and A to F)
For PWM, the response will look like:
For VPW and ISO:
If the response doesn’t contain the hex-a-decimal numbers shown, send the command again until it does. If you can’t get a response, either the command is not set up correctly or the vehicle doesn’t have a response for the command.
Decoding the Response
The information we are interested in is in the j through q numbers. The j and k tell whether the “Check Engine” light is on and the number of trouble codes if any. The l and m values indicate the status of the continuously monitored systems. The n and o values indicate which type of tests are supported in the vehicle and the p and q values tell which of the tests have not been completed. The p and q values are what we are after.
Table 1 shows how to decode the p value. The x’s indicate which tests have not been completed. For instance if the value in the q position was 4, the Evaporative System Monitor tests have not successfully completed. This could be caused by a missing or loose gas cap or other leak in the fuel tank system, or just indicate that the vehicle hasn’t run long enough to perform the test since the trouble codes were reset or the battery disconnected.
Table 2 shows the decoding for the “q” value.
|“p” Value||AC Refrigerant Monitor||Oxygen Sensor Monitor||Oxygen Sensor Heater Monitor||EGR System Monitor|
|“q” Value||Catalyst Monitor||Heated Catalyst Monitor||Evaporative System Monitor||Secondary Air System Monitor|
The following command was sent to a VPW vehicle which was showing “—Ready—” after being scanned.
The Response received was:
The 0’s in the p and q locations (just before the 21 at the end) indicate there are no incomplete tests. This verifies the “Ready” status.
After disconnecting and reconnecting the battery, the same command was sent again and the following response was received:
The “E” in the “p” location indicates the Oxygen Sensor Monitor, Oxygen Sensor Heater Monitor and EGR System Monitor tests have not been completed.
The “5” in the “q” location indicates the Catalyst Monitor and Evaporative System Monitor tests have not been completed.
A Scan shows “–Not Ready–” as we would expect.