I thought I had once posted some discoveries related to modules that do not support service (mode) 22. I cannot find it now so maybe I never posted it! Not surprising really.
Anyway, folks who have noodled about adding PIDs to Torque Pro or other apps might notice the "OBD2 Mode and Pid" field always begins with "22". This is a service mode that is requested of the module being addressed. Service mode 22 is one of many services that may be offered by a given module. Service mode 22 is "Request Diagnostic Data by Parameter ID (PID)". This is then followed by a 4 character parameter ID such as 1142 which is the MAP sensor pressure value. This is a primary way Torque gets the vehicle specific data we see.
When I wanted to get data from the TCCM or the HVAC systems however I discovered that these modules and a few others do not offer service mode 22 at all. So even though I was able to discover the PIDs for much of the data I was after I had no way to request the data without having service 22. I set about trying other ways.
By reading out and recording the memory contents of these modules using service mode 23, request data by memory address, I was able to locate in memory some of the data I was after. I further found that Torque can utilize service mode 23 even though Torque was not designed for this purpose.
As I put together custom PID entries in Torque Pro I wondered if these entries might work for other users with different calibrations and so on. I grabbed several modules from the Upull yard and scanned those. They were different which meant the Torque Pro entries I had made would work only with my particular part # and calibration and operating system.
I found the differences were slight and I made up a schedule of maybe 5 different TCCMs with varying part, operating system, and calibration numbers. With this I could build Torque Pro entries for each of those 5 TCCM variations I have. This is cumbersome to say the least and who knows how many variations are out there.
Another thing happened while I was looking at the memory readouts while hunting parameter data. I saw a pattern of values that looked familiar. I had seen such data before. This requires a bit of explanation though....
You may wonder,,,, if these modules do not provide service mode 22 how do the expensive scantools get the data?? They use two different service modes, 2C and 2A. Service mode 2C allows for the creation of a handful of "dynamic pids" and 2A provides the means to read those dynamic pids. These dynamic pids each can hold up to 6 bytes and you choose what data you want to pack in those bytes using service mode 2C. So you pick the data you want, stuff it into one or more of these dynamic pids then call up these dynamic pids using service mode 2A.
But there is an issue if you try using Torque Pro for this. Even if you manage to get the dynamic pids loaded up Torque can't readily work using service mode 2A to read the pids because service 2A streams the data at a fast rate instead of sending the single response that Torque Pro expects.
So back to the memory readouts where I saw a familiar pattern of data values. What I recognized was a pattern of values I had in a dynamic pid at the time of the memory readout. I thought I had stumbled on the memory location of these dynamic pids but it turns out that for some reason it is a location of only the most recently requested dynamic pid.
I have scanned the entire range of memory available to me and the rest of the dynamic pid data is not there so I presume it is held in other memory unavailable to us. But I still have this one nugget available to me. The address does vary between TCCM part/O.S./Calibration numbers but it is quickly and easily found using the Bluetooth OBD2 adapter and a couple of free apps.
So I knew the PID numbers I wanted.
I knew how to pack them into a dynamic pid.
I knew how to add a button in Torque to send OBD messages and could use that to create the dynamic pid.
And I knew the memory address where I can read back that data into Torque Pro (and a couple other apps).
The last piece was that for the dynamic pid to remain actively refreshed the module needs to see a "tester present" message from the scantool every couple of seconds or the update stops after 5 seconds. I made a PID entry in Torque Pro to send this message. I placed this pid on the dashboard but hid the display behind another gauge so it didn't show.
I have two pages made up so far. One shows the controls and sensor data and a second page displays rotational data both sensed and calculated.
This second page is not true to life values as it is coming from not a vehicle but a TCCM in a six drawer chest in my kitchen! I am feeding the rear propshaft speed input with a frequency generator. In real life the front propshaft would be spinning due to friction in both the Transfer Case clutchpack as well as the front differential. The intermediate shaft rpm as well as the front axle disconnect delta rpm are calculated values.
FP = front propshaft
RP = rear propshaft
GR = gear ratio
FAD∆ = front axle disconnect delta rpm
Intermediate shaft rpm = (2FP-RP)/GR
FAD∆ = 2(RP-FP)/GR
Next up is to apply the same techniques to my automatic HVAC systems, both TrailBlazer and Yukon.