Graphics interface for the 14CUX

Graphics interface for the 14CUX

Author
Discussion

robertf03

59 posts

200 months

Friday 30th August 2013
quotequote all
excellent point.

So has anyone come up with actual values for the tables or constants?

My current theory is that the constant is based on some formula that looks something like this

TABLE_CONST =(CYL_VOLUME * AIR_MASS_SEA_LEVEL) / (SAFE_AFR) * EQUATION_CONSTANT

based on other ECU tuning experience I would expect SAFE_AFR would probably be something like 13.8 to 14. This would let the injector pulse width be calculated using

INJ_PW=((TABLE_VALUE)/TABLE_CONST * (SCALAR_MODIFIERS) + (PE_MODIFIERS)) * CONVERSION_CONSTANT

I could be way off, but that is a decent explanation as to why there are so many 255 values at the low RPM high load part of the fuel map. If I'm close then there are a few more scalars to be found, but none are probably useful.

An accelerator enrich map would be extremely useful for tuning, as that is where most driveability problems occur. The O2 and MAF combo do a pretty good job of keeping incorrent maps running.

Some time with a oscope and bench simulator could verify this. hopefully its a nice and easy linear equation

robertf03

59 posts

200 months

Friday 30th August 2013
quotequote all
I only have some 3.9 bins to play with, and some unknown displacement chips that appear to follow the older fuel table addressing.

Does anyone have a known larger displacement .bin they could send me? Preferably late model 4.2 rover as I know all of the mechanical parts other than rotating assembly are identical to what I've got

robertf03

59 posts

200 months

Friday 30th August 2013
quotequote all
Here is the definition I've put together with all of the known addresses so far.

http://www.flemcodesign.com/14cux/14cux.zip

You will need this program to view it. It is a really good tuning program that interfaces with many eprom emulators.

http://www.tunerpro.net/

I've made some assumptions and created a few tables that calculate what I think could be the equivalent of a VE table. Please check it out and see if it makes sense with whatever bins you may have

Edited by robertf03 on Friday 30th August 04:07

stevesprint

1,114 posts

178 months

Friday 30th August 2013
quotequote all
robertf03 said:
Does anyone have a known larger displacement .bin they could send me? Preferably late model 4.2 rover as I know all of the mechanical parts other than rotating assembly are identical to what I've got
If you are interested PM me your email address as I can send you a TVR 4.3 non cat and a TVR 4.5 cat bin but sadly they are early revisions(R2422 & R2967). I guess you could copy the fuel map and adjustment factor into a newer revision.
Cheers
Steve Sprint

Edited by stevesprint on Friday 30th August 09:36

blitzracing

Original Poster:

6,387 posts

219 months

Friday 30th August 2013
quotequote all
Ive only got one non modified Lucas map, but I dont have clue what engine set up it was. Its Marked 3604 if its any use Ill copy it?

blitzracing

Original Poster:

6,387 posts

219 months

Friday 30th August 2013
quotequote all
Heres the only tune listing I have:

Model Tune # Description
Range Rover Classic 3.9 Low
CR

R2103 Initial production tune
Range Rover Classic 3.9 Low
CR
R2161 Desensitized OBD, IAC refinements
Range Rover Classic 3.9 Low
CR
R2306 Fixed A/C glitch @ 65 mph (2250rpm); eliminated tune resistor
(Code 21)
Range Rover Classic 3.9 Low
CR
R2419 Desensitized OBD, , prinarily Code 48; Service Actioon (Recall
CA)
Range Rover Classic 3.9 Low
CR
R2665 Improved IAC control, new strategy for IAC OBD; further OBD
desensitization
Range Rover Classic 3.9 High
CR
R2813 Initial production tune
Range Rover Classic 4.2 High
CR
R2926
B
Initial production tune
Defender 3.9 High CR R3038 Initial production tune
Range Rover Classic 3.9 High
CR
R3100 Low Reed Vapor Pressure fuel tune
Range Rover Classic 4.2 High
CR
R3102 Low Reed Vapor Pressure fuel tune
Range Rover Classic 3.9 High
CR
R3315 MIL on no code fix (interim)
Range Rover Classic 4.2 Low
CR
R3316 MIL on no code fix (interim)
Range Rover Classic 3.9 Low
CR
R3326 Low Reed Vapor Pressure fuel tune (interim)
Range Rover Classic 3.9 Low
CR
R3339 MIL on no code fix (interim)
Defender 3.9 High CR R3340 MIL on no code fix (interim)
Defender 3.9 High CR R3341 Low Reed Vapor Pressure fuel tune (interim)
Range Rover Classic 3.9 High
CR
R3342
A
MIL on no code fix (interim)
Range Rover Classic 4.2 High
CR
R3343
A
MIL on no code fix (interim)
Range Rover Classic/ Discovery
3.9 High CR
R3360 Desensitized OBD 95 MY Tune (‘94 Discovery)
Range Rover Classic 4.2 R3361 Desensitized OBD 95 MY Tune
Range Rover Classic 3.9 Low
CR
R3362 Desensitized OBD 95 MY Tune; improvements for Low CR
13/14CU AND 14CUX SYSTEMS
106
Defender 3.9 High CR R3365 Desensitized OBD 95 MY Tune
Range Rover Classic 4.2 R3507 Part # PRM3361A; Interim improved Cold Start, fueling below -
22âC (- 10âF)
Range Rover Classic/Discovery
3.9 High CR
R3526 Part # PRM3360A; Note: LR Part numbers are different from
Tune numbers
Defender 3.9 High CR R3529 Part # PRM3365A
Range Rover Classic/Discovery
3.9 High CR
R3652 Operation Pride Tune
Current tune with final improved Cold Start fueling below -22âC
(-10âF).
Range Rover Classic 4.2 High
CR
R3653 Operation Pride Tune
Current tune with final improved Cold Start fueling below -22âC
(-10âF).
Defender 3.9 High CR R3654 Operation Pride Tune
Current tune with final improved Cold Start fueling below

stevesprint

1,114 posts

178 months

Friday 30th August 2013
quotequote all
Mark, Now you are just showing off smile
Steve

danbourassa

246 posts

136 months

Friday 30th August 2013
quotequote all
blitzracing said:
Ive only got one non modified Lucas map, but I dont have clue what engine set up it was. Its Marked 3604 if its any use Ill copy it?
Mark,
I think the R3604 tune came in the ECU marked ERR-6802. This is for a post-1995 Discovery 3.9 that never came to the US.

jr6yam

1,303 posts

182 months

Friday 30th August 2013
quotequote all
Apologies if this question is slightly O/T
What changes, if any, did TVR make to the LR maps?
Would an ECU from a later model have a better map? (mine's a 95 Chim)

Trying not come across all Daz! But I was always told there's no such thing as a stupid question...

danbourassa

246 posts

136 months

Friday 30th August 2013
quotequote all
robertf03 said:
An accelerator enrich map would be extremely useful for tuning, as that is where most driveability problems occur. The O2 and MAF combo do a pretty good job of keeping incorrent maps running.

Some time with a oscope and bench simulator could verify this. hopefully its a nice and easy linear equation
Robert, that's a good point. There IS a tunable accelerator component to the fueling. There are also contributions from coolant temperature, time, main battery voltage and O2 sensors (if closed loop). So, it's not a nice easy equation. At the risk of complicating Steve Sprint's life, I'd like to show the complete fuel map structure. I don't fully understand the details yet, but I think the table just below the fuel map multiplier can be used to tweak accelerator response.

;------------------------------------------------------------------------------

; Fuel Map 5 for 1994 TVR Griffith 500 (R2967)

C6AF : 1C 1C 1C 1B 1B 1B 1B 19 19 19 18 15 14 13 13 13 ; fuel map 5
C6BF : 33 33 33 36 36 36 35 34 34 34 33 33 31 31 31 30
C6CF : 57 57 57 58 58 58 58 58 58 59 5A 55 52 51 51 51
C6DF : 88 88 88 7B 77 77 79 7A 79 7F 7F 71 71 71 71 71
C6EF : A0 9A 9A 9A 9C 9A 9D A0 A0 A3 A3 A3 A0 9A 9A 9A
C6FF : BF BF BF BF BF BF C0 C2 C4 C9 C8 C9 CA C7 C4 C4
C70F : EE E4 E4 DC DC FA FA FA F5 F0 EB E9 ED EB E1 E1
C71F : FD FD FD FD FD FD FD FD FD FD FF FF FF FF F5 FD

C72F : 67 84 ; multiplier (26500 dec)

; this 6 x 10 table is used to calc the throttle pot direction & rate (the 1st derivative)
; the resultant value is offset by adding 1024, stored at 0x005D/5E and ultimately used
; to dynamically adjust the fueling

C731 : 18 31 5A 73 89 99 B3 CC DD EA ; <-- coolant temp sensor reading (low is hot, high is cold)
C73B : 05 06 08 0A 10 1C 23 28 30 30 ; <-- throttle opening (compare value or limit)
C745 : 04 06 07 08 08 00 00 00 00 00 ; <-- throttle closing (compare value or limit)
C74F : 2D 32 3C 50 64 FF FF FF FF FF ; <-- throttle opening (multiplier)
C759 : 1C 18 10 0C 0B 14 14 19 19 19 ; <-- throttle opening (multiplier)
C763 : 24 18 10 0C 0B 1E 1E 1E 1E 1E ; <-- throttle closing (multiplier)

; this 3 x 12 table is used by the coolant temperature routine

C76D : 00 12 1B 25 47 75 99 B0 C8 DA E4 E8 ; <-- coolant temp sensor reading (low is hot, high is cold)
C779 : 0C 0B 09 0F 1C 1F 37 4D 54 5F 77 7F ; <-- cranking fueling value above zero deg F (stored in X009B)
C785 : 1C 0D 06 0A 10 12 1E 26 2C 31 39 44 ; <-- time fueling component, 1 Hz countdown (stored in X009C)

; this 3 x 8 table calculates an adjustment factor based on engine temperature

C791 : 00 24 38 91 AB C2 E0 EE ; <-- coolant temp sensor reading
C799 : 26 26 29 2C 32 38 43 4E ; <-- multiplier values
C7A1 : 00 09 02 0E 10 17 32 14 ; <-- addition value

; this is the round robin ADC control list, F in upper nibble terminates list

C7A9 : 87 86 02 03 84 02 8D 88 02 8B 80 85 81 8E FA FA

C7B9 : 91 ; value stored in X200A, used to calc the fuel map load based row index
C7BA : 0F ; value stored in X200B, RPM safety delta (7500000/(1212+15) = 6112 RPM)
C7BB : 04 BC ; value stored in X200C/0D RPM safety limit (7500000/1212 = 6188 RPM)
C7BD : 6A ; value stored in X200E (yet another fuel map value)
C7BE : 27 ; value stored in X200F (a coolant temperature threshold)
C7BF : 5A ; value stored in X2010 (todo)
C7C0 : 64 ; value stored in X2011 (multiplied by abs of throttle delta)
;------------------------------------------------------------------------------

(edited for formatting)

Edited by danbourassa on Friday 30th August 12:54

danbourassa

246 posts

136 months

Friday 30th August 2013
quotequote all
jr6yam said:
Apologies if this question is slightly O/T
What changes, if any, did TVR make to the LR maps?
Would an ECU from a later model have a better map? (mine's a 95 Chim)
There are significant changes between LR and TVR maps, so no LR maps would probably work well in your Chim.

davep

1,141 posts

283 months

Friday 30th August 2013
quotequote all
danbourassa said:

;------------------------------------------------------------------------------

; Fuel Map 5 for 1994 TVR Griffith 500 (R2967)

C6AF : 1C 1C 1C 1B 1B 1B 1B 19 19 19 18 15 14 13 13 13 ; fuel map 5
C6BF : 33 33 33 36 36 36 35 34 34 34 33 33 31 31 31 30
C6CF : 57 57 57 58 58 58 58 58 58 59 5A 55 52 51 51 51
C6DF : 88 88 88 7B 77 77 79 7A 79 7F 7F 71 71 71 71 71
C6EF : A0 9A 9A 9A 9C 9A 9D A0 A0 A3 A3 A3 A0 9A 9A 9A
C6FF : BF BF BF BF BF BF C0 C2 C4 C9 C8 C9 CA C7 C4 C4
C70F : EE E4 E4 DC DC FA FA FA F5 F0 EB E9 ED EB E1 E1
C71F : FD FD FD FD FD FD FD FD FD FD FF FF FF FF F5 FD

C72F : 67 84 ; multiplier (26500 dec)

; this 6 x 10 table is used to calc the throttle pot direction & rate (the 1st derivative)
; the resultant value is offset by adding 1024, stored at 0x005D/5E and ultimately used
; to dynamically adjust the fueling

C731 : 18 31 5A 73 89 99 B3 CC DD EA ; <-- coolant temp sensor reading (low is hot, high is cold)
C73B : 05 06 08 0A 10 1C 23 28 30 30 ; <-- throttle opening (compare value or limit)
C745 : 04 06 07 08 08 00 00 00 00 00 ; <-- throttle closing (compare value or limit)
C74F : 2D 32 3C 50 64 FF FF FF FF FF ; <-- throttle opening (multiplier)
C759 : 1C 18 10 0C 0B 14 14 19 19 19 ; <-- throttle opening (multiplier)
C763 : 24 18 10 0C 0B 1E 1E 1E 1E 1E ; <-- throttle closing (multiplier)

; this 3 x 12 table is used by the coolant temperature routine

C76D : 00 12 1B 25 47 75 99 B0 C8 DA E4 E8 ; <-- coolant temp sensor reading (low is hot, high is cold)
C779 : 0C 0B 09 0F 1C 1F 37 4D 54 5F 77 7F ; <-- cranking fueling value above zero deg F (stored in X009B)
C785 : 1C 0D 06 0A 10 12 1E 26 2C 31 39 44 ; <-- time fueling component, 1 Hz countdown (stored in X009C)

; this 3 x 8 table calculates an adjustment factor based on engine temperature

C791 : 00 24 38 91 AB C2 E0 EE ; <-- coolant temp sensor reading
C799 : 26 26 29 2C 32 38 43 4E ; <-- multiplier values
C7A1 : 00 09 02 0E 10 17 32 14 ; <-- addition value

; this is the round robin ADC control list, F in upper nibble terminates list

C7A9 : 87 86 02 03 84 02 8D 88 02 8B 80 85 81 8E FA FA

C7B9 : 91 ; value stored in X200A, used to calc the fuel map load based row index
C7BA : 0F ; value stored in X200B, RPM safety delta (7500000/(1212+15) = 6112 RPM)
C7BB : 04 BC ; value stored in X200C/0D RPM safety limit (7500000/1212 = 6188 RPM)
C7BD : 6A ; value stored in X200E (yet another fuel map value)
C7BE : 27 ; value stored in X200F (a coolant temperature threshold)
C7BF : 5A ; value stored in X2010 (todo)
C7C0 : 64 ; value stored in X2011 (multiplied by abs of throttle delta)
;------------------------------------------------------------------------------
I'm still trying to disassemble (DASMx)and comment my 4.3 pre-cat .bin file, looks like you've cracked it Dan.

Now a 14CUX bin definition .xdf file for TunerPro, that's a labour of love I think. There's a white paper in the TunerPro help section that discusses creation of definition files using a hack which may be useful.

Again, thanks to Colin and Dan for their great RoverGauge efforts, and thanks also to SteveSprint, interesting times ahead.


Edited by davep on Friday 30th August 16:01

danbourassa

246 posts

136 months

Friday 30th August 2013
quotequote all
Dave Peck? It's good to hear from you and I'm glad you're still interested in this stuff. There's still a lot of cracking to do.

spitfire4v8

3,989 posts

180 months

Friday 30th August 2013
quotequote all
I've emailed steve sprint and i'll be sending my moates ostrich down to him (just as soon as I find it) .. if a few brains this side of the pond can come together then real time remapping might be in reach of more than just a few people.

blitzracing

Original Poster:

6,387 posts

219 months

Friday 30th August 2013
quotequote all
Taking several steps backwards (possibly anyway). As RoverGauge shows you the current load point in the map at any given point, is it as straight forward as knowing the location and simply increasing or decreasing the hex value in that location to add or remove fuel? I think Im missing something on how the map works as Id expect the values to go up with engine load and RPM but this does not seem to be the case? Also if remapping a catalysts car you will need to turn off the lambda feedback to stop the wide correction range- it may be as simple as unplugging the probes so it runs without correction, but it does throw a fault code in the process- although Im not sure if it drops back to map 0 for this particular fault. Much easier Id think on the non cat map.

robertf03

59 posts

200 months

Friday 30th August 2013
quotequote all
Now that is some helpful information

I'm not so sure Tunerpro is the right application for realtime tuning since it requires stacking the bin and an unusual checksum calculation.

I'll work on throwing an app together to get the ostrich working for this, but it'll probably be ugly for a while

Blitzracing, any chance I can get a copy of the R3653 and R3652 images?

robert at flemcodesign.com


danbourassa

246 posts

136 months

Friday 30th August 2013
quotequote all
blitzracing said:
Taking several steps backwards (possibly anyway). As RoverGauge shows you the current load point in the map at any given point, is it as straight forward as knowing the location and simply increasing or decreasing the hex value in that location to add or remove fuel? I think Im missing something on how the map works as Id expect the values to go up with engine load and RPM but this does not seem to be the case? Also if remapping a catalysts car you will need to turn off the lambda feedback to stop the wide correction range- it may be as simple as unplugging the probes so it runs without correction, but it does throw a fault code in the process- although Im not sure if it drops back to map 0 for this particular fault. Much easier Id think on the non cat map.
Mark, keep in mind that the injector bank fires for every 4 coil sparks. As RPM increases, fuel increases linearly. In a perfect world there would be no change in value across the row and the fuel map could be reduced down to 1 column. I think the small changes account for the inability of the injectors to close instantaneously. They are fighting fuel pressure and the inertia of internal parts. Shortening the pulses at high RPM simply keeps the fueling stable over the RPM range. The big changes, as you would expect, are the load based row to row changes.

I think you are correct about the closed loop problem. The trim will fight any changes you try to make until it hits the rail. By then, things are completely out of whack, and nothing has been learned. This should be done in open loop mode only.

stevesprint

1,114 posts

178 months

Saturday 31st August 2013
quotequote all
Dan
When is the EPROM copied into RAM ($C000)?
I’m thinking how can an ERPOM emulator plugged into the EPROM socket work when the microprocessor is running from the RAM copy??????

Don’t worry about complicating my life. If I wanted a simple life I wouldn’t drive a TVR. Seriously, you have made me realise I can’t just copy my TVR fuel map, adjustment factor, idle speed, rev limit etc into a newer Land Rover revision.

Thanks for the base idle offset, once I realised it uses two bytes ($176 & $177) I successfully raised and lowered my idle speed. Do you have another offset I can experiment with, hummm maybe the rev limiter. I see it’s at $7BA, $7BB & $7BC but I have to admit I’m struggling to work it out, where does 7500000/1212 come from?

Thanks & Cheers
Steve Sprint


Edited by stevesprint on Saturday 31st August 00:35

robertf03

59 posts

200 months

Saturday 31st August 2013
quotequote all
stevesprint said:
Dan
When is the EPROM copied into RAM ($C000)?
I’m thinking how can an ERPOM emulator plugged into the EPROM socket work when the microprocessor is running from the RAM copy??????

Don’t worry about complicating my life. If I wanted a simple life I wouldn’t drive a TVR. Seriously, you have made me realise I can’t just copy my TVR fuel map, adjustment factor, idle speed, rev limit etc into a newer Land Rover revision.

Thanks for the base idle offset, once I realised it uses two bytes ($176 & $177) I successfully raised and lowered my idle speed. Do you have another offset I can experiment with, hummm maybe the rev limiter. I see it’s at $7BA, $7BB & $7BC but I have to admit I’m struggling to work it out, where does 7500000/1212 come from?

Thanks & Cheers
Steve Sprint


Edited by stevesprint on Saturday 31st August 00:35
I do not think it is copied to the ram, but the address bus is mapped so that Cxxxx actually requests the values from the ROM

I have switched roms on the fly before with the emulator and seem to remember a change in behavior, mostly it just set the check engine light for park neutral switch not being present.

for closed loop vs open loop tuning... on other makes the strategy requires a run time or a minimum temperature before it will factor in O2 values. This is easily worked around by setting the minimum coolant temp to something the engine will never see. If you don't do that then you are chasing your tail, and the fuel map ends up looking really funky.

Accelerator enrich could be tuned without this, that typically dumps it to open loop or at the least ignores lean trims, but the 14cux strategy could be different.

Edited by robertf03 on Saturday 31st August 03:47

blitzracing

Original Poster:

6,387 posts

219 months

Saturday 31st August 2013
quotequote all
danbourassa said:
blitzracing said:
Taking several steps backwards (possibly anyway). As RoverGauge shows you the current load point in the map at any given point, is it as straight forward as knowing the location and simply increasing or decreasing the hex value in that location to add or remove fuel? I think Im missing something on how the map works as Id expect the values to go up with engine load and RPM but this does not seem to be the case? Also if remapping a catalysts car you will need to turn off the lambda feedback to stop the wide correction range- it may be as simple as unplugging the probes so it runs without correction, but it does throw a fault code in the process- although Im not sure if it drops back to map 0 for this particular fault. Much easier Id think on the non cat map.
Mark, keep in mind that the injector bank fires for every 4 coil sparks. As RPM increases, fuel increases linearly. In a perfect world there would be no change in value across the row and the fuel map could be reduced down to 1 column. I think the small changes account for the inability of the injectors to close instantaneously. They are fighting fuel pressure and the inertia of internal parts. Shortening the pulses at high RPM simply keeps the fueling stable over the RPM range. The big changes, as you would expect, are the load based row to row changes.

I think you are correct about the closed loop problem. The trim will fight any changes you try to make until it hits the rail. By then, things are completely out of whack, and nothing has been learned. This should be done in open loop mode only.
So what you are saying is the base fueling is already pre calculated any given rpm / load on a linear basis, and the values in the map are effectively a "trim value" over that linear preset to cope with the mechanical variances? If this is the case it really could be as simple as altering the trim values as you can now see where the load points are at any time.


---Ill try and get the RR map copied today.