here is the thread that i particpated in back in feb 07
http://www.dieselplace.com/forum/showthread.php?t=136760&highlight=125mm3 im going to try and get the main stuff the thread is 3 pages long
original quetion
shultes reply to kennedys post
ross's reply to my post
i dont know how the bosch ECM work with soemthing above 100mm3. i do know all the tables run to 120mm3
but for the 01-05 dmaxs the limit is 100mm3 that you can control.
hope this make sense for some people
http://www.dieselplace.com/forum/showthread.php?t=136760&highlight=125mm3 im going to try and get the main stuff the thread is 3 pages long
original quetion
ross's repliesIf the ECM does not acknowledge fuel over 100 mm3, why do the boost tables all go to 125 mm3.
Good point, to know the real answer to that we would need to ask the software team at GM (like they would tell you anyway!)
There are many stange things, for example, we limit the pulse times to 5000uS, the ECM can actually calculate out to 32767uS (insane!).
It may have even been a situation where a different programmer was working on the boost control code and he decided to make he's table go up to 125, 130mm3. Or, that boost routine is used on another ECM that will go out to 130mm3.
Cheers,
Ross
my questionMy point was that what you see in EFILive does not mean that is the limits of the ECM. Technically we could have allowed users to enter pulse times of 32767uS, but, limiting the table values to more sensible limits means we don't get to read of someones disastrous test results of using a 32767us pulse.
Another example is the main fuel pulse table axis for the mm3 values, there is actually two almost seperate mm3 lookups, one scaled 0,1,2,3......7,8,9 then other 10,20,30,40....90,100, they simply do a nice 10 step table lookup, and depending on if it is looking at 0-10 or 10 - 100 they scale the mm3 value differently. When you look at the maths it just works out nicer to have 10 entry points, they could have made it 10 to 1000mm3 if they wanted to, but, remember, GM wrote all this for a stock truck. 100m3 was going to be plenty of room.
ross's replay to my questionhere is a question i can command up to 200mm3 on my tbiq but both the b0720 and b0721 tables only go to 100mm3???Originally Posted by Flashscan;1595652;
Good point, to know the real answer to that we would need to ask the software team at GM (like they would tell you anyway!)
There are many stange things, for example, we limit the pulse times to 5000uS, the ECM can actually calculate out to 32767uS (insane!).
It may have even been a situation where a different programmer was working on the boost control code and he decided to make he's table go up to 125, 130mm3. Or, that boost routine is used on another ECM that will go out to 130mm3.
Cheers,
Ross
my max injection quality warm is 120mm3 max is 200mm3
my current tune i logged 105mm3 with 157mpa with 1950uS????? i would liek to know were that calculatin came from.....i aksed a couple other memebers.. i dont think i was able to convey the info correctly
adam
john kennedy's remark to Ross postAdam, here's the rather technical explanation on how the mm3 values are used on B0720 & B0721 and this will hopefully make some people think about how things are done.
I'm going to use just the 10 - 100mm3 values as an example. (schulte will like this I'm sure).
To get the lookup value the ECM does this process.
Gets the currently commanded mm3
Scales it to suit the table lookup routine
Gets pulse value based on the mm3 value (and RP).
Now the maths behind that (easily seen in the assembly code).......
Assume 10mm3
10mm3 in hex = $8280 (these are signed numbers)
Multiply by $100 = $828000
Divide by $280 = $3433
Add $CBCD = $10000
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0000, so, use cell 0
Some more examples -
Assume 50mm3
50mm3 in hex = $8C80 (these are signed numbers)
Multiply by $100 = $8C8000
Divide by $280 = $3833
Add $CBCD = $10400
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0400, so, use cell 4
Assume 90mm3
90mm3 in hex = $9680 (these are signed numbers)
Multiply by $100 = $968000
Divide by $280 = $3C33
Add $CBCD = $10800
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0800, so, use cell 8
Now, this is where it gets interesting, if you command over 100mm3 looks what happens......
Assume 130mm3
130mm3 in hex = $A080 (these are signed numbers)
Multiply by $100 = $A08000
Divide by $280 = $4033
Add $CBCD = $10C00
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0C00, so, use cell 12.
BUT, there is no cell 12, so what GM have done is to put a check in this part of the code that if the commanded mm3 scaled result is above $0900 (see below) then that is what it will be limited to or else the ECM would attempt to look at a value outside of the table.
FYI, the final example -
100mm3 in hex = $9900 (these are signed numbers)
Multiply by $100 = $990000
Divide by $280 = $3D33
Add $CBCD = $10900
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0900, so, use cell 9.
So, looking at table B0720, count how many mm3 cells there are from 10mm3 to 100mm3 (start the count at 0, not 1), you will find 100mm3 is cell count #9.
So hopefully you can see from all the above, any commanded mm3 value above 100mm3 will still result in the ECM using the pulse time in this table from the 100mm3 row.
For those that can read CPU32 assembler, here is the exact code that does the above scaling -
move.l d7,d5 ; Move Commanded mm3 into d5
lsl.l #8,d5 ; Multiply by 256 ($100)
divu.l #$280,d5 ; Divide by 640
add.w #$CBCD,d5 ; Add 52173
move.w #$900,d7 ; Table cell count limit value (9)
cmp.w d7,d5 ; Compare to scaled mm3 value
bcs.s loc_30B4E ; Skip next if less than, Else...
move.w d7,d5 ; Set mm3 look up value max to cell #9
Cheers,
Ross
The example Ross gave just shows how EASY it is with EFI Live.
I do at least know from experience that commanding over 100mm3 is fruitless...
shultes reply to kennedys post
my postRoss's post explains why this is true. In short, GM's error checking prevents commands over 100mm^3 from producing any difference in operation than commanding 100mm^3- there are only 10 cells (addressed 0-9), so anything over 100 would theoretically refer to a cell that doesn't exist (if there was no error handling).Originally Posted by Kennedy;1596255;
The example Ross gave just shows how EASY it is with EFI Live.
I do at least know from experience that commanding over 100mm3 is fruitless...
Originally Posted by Kennedy;1596255;
The example Ross gave just shows how EASY it is with EFI Live.
I do at least know from experience that commanding over 100mm3 is fruitless...Posted by schulte;1596281;
Ross's post explains why this is true. In short, GM's error checking prevents commands over 100mm^3 from producing any difference in operation than commanding 100mm^3- there are only 10 cells (addressed 0-9), so anything over 100 would theoretically refer to a cell that doesn't exist (if there was no error handling).
yet i have a log saying i got more than 100mm3.....105mm3 to be exact
i was just asking how.......
ross's reply to my post
Oh I see, the ECM will still internally process values higher than 100mm3 as your saw on the scanner, however, what I tried to show was that although the ECM might be working with the figure of 105mm3, or even 200mm3, it also limits these values internally based on the way the table is set up it needs commanded mm3 values for. So what you see on the scanner is correct, but for some tables the ECM ignores values above the set limits.
Cheers,
Ross
i dont know how the bosch ECM work with soemthing above 100mm3. i do know all the tables run to 120mm3
but for the 01-05 dmaxs the limit is 100mm3 that you can control.
hope this make sense for some people