Here I am

Engine/Transmission (1998.5 - 2002) Inside the ECU

Attention: TDR Forum Junkies
To the point: Click this link and check out the Front Page News story(ies) where we are tracking the introduction of the 2025 Ram HD trucks.

Thanks, TDR Staff

Engine/Transmission (1994 - 1998) BD Cool Down Timer Problem

Engine/Transmission (1998.5 - 2002) 3rd vp44 in 4 weeks

Status
Not open for further replies.
Taking a peek at timing

I've been working on figuring out the various scales of the things like timing, fuel rate, etc. Some scales have been easy - like engine RPM - that one was using the standard SAE scale found in the J1939 document: to get actual RPM from the actual binary number value, just multiply by . 125.



So, I'm taking a stab at the vp44 commands. If I apply the standard SAE scale to the timing command, I come up with the following:



1. The range allowed by the ECU software is approx. -6* to +60*

2. Warm engine, idling, I see the number 1440 (hex 5A0). That would work out to be 11. 25*



I don't know if this is right, it's just an 'educated guess' at this point.
 
Can you tell how much timing is adjusted based upon IAT? say from 30 degrees F to 250 degrees F, does the timing only change 5 degrees or is it larger?



Nice work, BTW...
 
Can you tell how much timing is adjusted based upon IAT? say from 30 degrees F to 250 degrees F, does the timing only change 5 degrees or is it larger?



Nice work, BTW...



If I'm right about these tables and the calculation that goes on, the maximum amount of timing the IAT can add to a cold engine is about 6. 5*



Jim
 
Interesting, back when I ran a vp44 on my 01 with my huge injectors. It seemed like I had too much timing with my edge box on (which adds timing). However, no one could put a number (in degrees) as to how much timing it added maximum. I do know that by fooling the IAT sensor reading, I could pull out all of the edge box timing that was added and then some. I was always curious as to how much timing was adjusted by the IAT sensor.
 
Interesting, back when I ran a vp44 on my 01 with my huge injectors. It seemed like I had too much timing with my edge box on (which adds timing). However, no one could put a number (in degrees) as to how much timing it added maximum. I do know that by fooling the IAT sensor reading, I could pull out all of the edge box timing that was added and then some. I was always curious as to how much timing was adjusted by the IAT sensor.





I also have a switched fixed resistor and 100K potentiometer in my IAT line, and my Actron 9145 reader/eraser will display the swing in IAT temperature range as seen by the ECM, but unfortunately, no way to also see the corresponding timing change...
 
More timing fun

Here you can see how the manifold (boost) pressure changes the timing:
#ad

The scale across the top is manifold pressure (sorry, it's in kPa). The left side scale is engine speed.
The map generates a number that is added to the base timing. Any numbers in the map that are less than 512 are ignored (the software forces a base of 512).
To see how much timing is added, take the number from the map, multiply by 10, subtract 5119 from the result, then divide by 128. This gives you the number of degrees added to the base.
I need to 'fix' the romraider file so that it displays the cell numbers with that formula applied to it...
 
Last edited:
Update

The major identified parameters (maps you can modify):

  • Configuration - Torque limit @ RPM (sets base for engine output)
  • Torque Limit - throttle position/RPM - Absolute max. output for a given RPM/APPS setting
  • Torque Limit - Manifold pressure/RPM (AFC table)
  • Torque Limit - Barometric pressure/RPM (High altitude fuel limiter)
  • Timing - Load/RPM (Base timing)
  • Timing - Cold engine adjustment (Tables for IAT and CTS)
  • Timing - Light Load advance (advance timing at low boost condition)



Engine output is increased by raising the limits in the various torque limit tables. These work with each other, the software will take the lowest number of all the tables, so increases in one must be made in the others.



There are others, some identified, and some which are only used for certain configurations (automatic trans, etc. ). I have only worked with the files for the 2001 HO engine, because that's what I have. All the others are very similar, and I have the files, so I will have definitions available for them too.



On my truck, I have modified the base timing, the configuration torque limit and the APPS/RPM torque limit, the AFC table, and the Barometric Pressure table.



There is a BIG difference in the truck now - I can make it 'smoke on demand' if I want to. The throttle is responsive, not touchy. It is much more fun to drive. I haven't gone too far with it because I need a boost elbow. 19PSI doesn't cut it anymore.



No boost fooler needed because I removed the limiter.



There are a ton of other configurable parameters, I am still going through the identification process. Along the way I might even be able to figure out how to get past the 3250/3500RPM limiters.
 
I've been following all this closely, keep up the good work and the reports - what you've done is encouraging and educational to the rest of us!
 
Interesting, back when I ran a vp44 on my 01 with my huge injectors. It seemed like I had too much timing with my edge box on (which adds timing). However, no one could put a number (in degrees) as to how much timing it added maximum. I do know that by fooling the IAT sensor reading, I could pull out all of the edge box timing that was added and then some. I was always curious as to how much timing was adjusted by the IAT sensor.



I don't know if all of them are the same, but on my '01, it appears the IAT can add 6. 5* of timing. There are two tables - the scale on the left is related to barometric pressure:

#ad


#ad


Numbers with negative values are ignored (the code treats them as zero)
 
Boy, sure lost me on the above graph - if I interprect correctly, and the red areas are programmed timing under varying conditions of temperature and pressure, looks like timing is pretty much ALWAYS at the 6. 49 figure - except when it suddenly goes negative, and is ignored? :confused:





(EDIT)



OK - I think I get it - you still haven't modified the graph for internal math/results, and we still need to do the math ourselves as you described further above...



Based on that, it looks as though only *2* internal timing numbers are actually used for base calculation by the ECM, either 6. 49, or 0 for the negative numbers?
 
Last edited:
MAP - kPa

RPM 19 22 25 38 79 82

850 495 503 503 503 503 427

1300 563 529 529 486 469 427

2000 563 529 529 486 469 427

2700 554 521 521 486 469 427

2900 546 519 519 512 469 427

3200 546 519 519 512 469 427



512 Table

512 512 512 512 512 512

563 529 529 512 512 512

563 529 529 512 512 512

554 521 521 512 512 512

546 519 519 512 512 512

546 519 519 512 512 512



MAP - psi

RPM 2. 8 3. 2 3. 6 5. 5 11. 5 11. 9

850 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0

1300 4. 0 1. 3 1. 3 0. 0 0. 0 0. 0

2000 4. 0 1. 3 1. 3 0. 0 0. 0 0. 0

2700 3. 3 0. 7 0. 7 0. 0 0. 0 0. 0

2900 2. 7 0. 6 0. 6 0. 0 0. 0 0. 0

3200 2. 7 0. 6 0. 6 0. 0 0. 0 0. 0



I did the conversion, this seem right?



Sort explains some of the timing stutter issues in the 1300 to 2000 rpm range. (in combonation with colder OAT)



Anyone know the typical boost value that gets sent to the ECM when running a performance box? I think my TST clips at about 5 psi.



Jim
 
I don't know if all of them are the same, but on my '01, it appears the IAT can add 6. 5* of timing. There are two tables - the scale on the left is related to barometric pressure:

#ad


#ad


Numbers with negative values are ignored (the code treats them as zero)



These tables are both IAT (Temp F. )? One is below the other. I don't see a left or right table. This intentional?



I am also guessing that the column on the left is RPM?



Jim
 
These tables are both IAT (Temp F. )? One is below the other. I don't see a left or right table. This intentional?



I am also guessing that the column on the left is RPM?



Jim



There are two tables - one is used for light load/high RPMs, the other for low RPMs/high load.



The scale across the top is the temperature reading from the IAT. The left side is the barometric pressure - I believe if you divide the number by 20 you'll get kPa.
 
Thanks, got it. It is going into my "spread sheet from hell".



MAP kPa Psi

1257 63 9. 1

1320 66 9. 6

1383 69 10. 0

1446 72 10. 5

1509 75 10. 9

1572 79 11. 4

1635 82 11. 9

1697 85 12. 3

1760 88 12. 8

1823 91 13. 2



Is the pressure conversion.



Jim, are you able to find the flags (switches) for Low Load / High RPM or High RPM / Low Load?



Another question:

Is the timing advance cumulative / additive from the various tables to the VP44 output, or does the logic clip the value to a maximum of 6. 5*?



This makes more sense than ever now, regarding the timing stutter. With the performance box clipping the boost signal to 5 psi or less the engine is always running in your red zones unless the IAT is high.



Jim
 
This makes more sense than ever now, regarding the timing stutter. With the performance box clipping the boost signal to 5 psi or less the engine is always running in your red zones unless the IAT is high.



Jim



I agree, but it would make even more sense if it was OAT instead of IAT.



Paul
 
Thanks, got it. It is going into my "spread sheet from hell".



MAP kPa Psi

1257 63 9. 1

1320 66 9. 6

1383 69 10. 0

1446 72 10. 5

1509 75 10. 9

1572 79 11. 4

1635 82 11. 9

1697 85 12. 3

1760 88 12. 8

1823 91 13. 2



Is the pressure conversion.



Jim, are you able to find the flags (switches) for Low Load / High RPM or High RPM / Low Load?



Another question:

Is the timing advance cumulative / additive from the various tables to the VP44 output, or does the logic clip the value to a maximum of 6. 5*?



This makes more sense than ever now, regarding the timing stutter. With the performance box clipping the boost signal to 5 psi or less the engine is always running in your red zones unless the IAT is high.



Jim



The timing advance adjustment is 0 - 9*. There are several tables used to adjust timing:

  • IAT
  • Coolant Temp
  • Manifold Pressure



Different tables (for IAT and coolant) are used depending upon load/speed. In some cases, the IAT advance number is added to the coolant temp. advance number. The manifold pressure number is never additive. The software will look at the cold advance (IAT, coolant temp) and the manifold pressure advance, and take the higher of the two values.



There is also another timing algorithm that is used if the engine has been idling for an extended period with no throttle or vehicle movement. You can see this if you run it for a while, then log the timing - it will be 11*-13* at idle. Let it sit at idle for 10 minutes or so, and you'll see that it is up to around 17*, until you touch the throttle, then it drops back to around 11*-13*.



The RPM/load numbers that determine which IAT table is used:



Table 1 is always used if the RPM is less than 1500.

If RPM is greater than 1500, but the load(torque) is >= 309 (some internal scale, 309 is probably less than 25%), Table 1 is used.

Table 2 is only used if RPM is greater than 1500 and the load(torque) is less than 309.
 
Me: 1, Brick: 0

Do NOT ever download a junk or wrong file to the ECU!!

I did this by mistake to my bench ECU this evening. No Wait to Start light, no nothing, just dead.

So, I went back to my old notes, from back when I had the thing opened up... Here's what I found out:

If you 'brick' the module, there is a special 'recovery mode' that can only be activated if you can get the APPS input and the Oil Pressure inputs to go high (+5 volts) at the same time, before you switch the key on. This isn't something you could normally do, but on the bench it's easy.

So, no more brick. I made sure I loaded the right file this time, and it works again! Oo.

Oh the fun of R&D. Now to get some sleep.
 
If you 'brick' the module, there is a special 'recovery mode' that can only be activated if you can get the APPS input and the Oil Pressure inputs to go high (+5 volts) at the same time, before you switch the key on. This isn't something you could normally do, but on the bench it's easy.
Doesn't the software in the ECM (which handles the uploading and saving of flash files) reside in a safe memory area which can't be overwritten? If so, how is it different to the ECM if you upload a garbage file to the ECM's writable memory, realize your mistake (as you did), and then attempt to upload a proper flash file? Shouldn't the ECM just treat the reflash attempt as any other normal flash file upload?



What exactly does "recovery mode" do differently in the ECM when compared to a normal flash attempt?



Thanks in advance,



John L.
 
Doesn't the software in the ECM (which handles the uploading and saving of flash files) reside in a safe memory area which can't be overwritten? If so, how is it different to the ECM if you upload a garbage file to the ECM's writable memory, realize your mistake (as you did), and then attempt to upload a proper flash file? Shouldn't the ECM just treat the reflash attempt as any other normal flash file upload?



What exactly does "recovery mode" do differently in the ECM when compared to a normal flash attempt?



Thanks in advance,



John L.



John,



There is a boot loader that normally does not get overwritten. The boot loader is what's running when you're reflashing, also. The boot loader does not care what you load into the flash - so long as you follow procedure. If you load a junk file, when you tell the boot loader to 'finalize' the process, it sets a word in the EEPROM to '60 0d' and resets the ECU. What happens now:



1. The ECU reboots. The boot loader checks the EEPROM word and sees '60 0d'. 2. Then, it fetches a pointer from location 0x804a.

3. It then jumps to this location. IF there's garbage, this is where it hangs.



When it's hung, you cannot talk to it at all - it doesn't listen! And since the '60 0d' is there in the EEPROM, it will act this way forever.



Here's the interesting part:



At power-on, just before it checks for the '60 0d', it looks at the APPS and Oil Pressure inputs. If these are both above 2. 5 volts, it immediately goes into programming mode.



So, the 'recovery mode' is not different than the normal programming mode, there's just a 'hardware' way to force it, so it can be recovered from a failed programming attempt.



Jim
 
At power-on, just before it checks for the '60 0d', it looks at the APPS and Oil Pressure inputs. If these are both above 2. 5 volts, it immediately goes into programming mode.
Jim,



How did you figure out this neat little trick? Was it by examining the boot loader software?



Great work!



John L.
 
Status
Not open for further replies.
Back
Top