14CUX Toolkit V1.0

14CUX Toolkit V1.0

Author
Discussion

danbourassa

246 posts

137 months

Friday 27th September 2013
quotequote all
PeteGriff said:
Steve/Dan I have read these threads with much interest. I very much want to start looking at what my ECU is doing and if possible tweak the parameters. Firstly though will need to get myself an old laptop to work with in the garage and upload the Rover Gauge software. My question is, can I use all what you have been showing across these threads with my 4.3 pre-cat? Regards, Pete
Pete, yes you can. The fuel map structure is the same for open and closed loop.

stevesprint

1,114 posts

179 months

Friday 27th September 2013
quotequote all
danbourassa said:
These three tables are all coolant temperature based and the top row of these tables consists of coolant temperature ADC counts. The table below converts the 8-bit coolant sensor reading to temperature in degrees C. This also applies to the fuel temp sensor which is functionally identical. Assume the ADC reading is 0x16. Go down 1 row and over 6 columns to get 100 deg C. As you can see, a lower count equals a higher temperature. Of course, the 14CUX software doesn't bother doing the conversion. It just uses the raw 8-bit reading.
Dan - I'm really sorry I’m having a blonde moment, if the ADC reads 0x16 please explain why 1 down and over 6 columns or is it as simple as 27 would be 2 down and 7 across. Also, does the ECU compare the ADC live count with the entries in the top row of the coolant temperature based tables to determine which column to use? I thought that because the 3 coolant tables top rows all go from 0 upwards but now I’ve seen the degs C table I’m not so sure. I'm very keen to get my head around these tables as I'm discovering from blind testing they really affect smoothness regards of the code revision.

Dan I could ask you a million questions but I hope you don't mind one more. Is the overrun controlled purely by the top row in the main fuel map table or is there a special route in the code as well?
Thanks, Steve (Grateful) Sprint

stevesprint

1,114 posts

179 months

Saturday 28th September 2013
quotequote all
PeteGriff said:
Steve/Dan My question is, can I use all what you have been showing across these threads with my 4.3 pre-cat? Regards, Pete
PeterGriff, Oh Yes!!! I also have a 4.3 Precat Griffith and without lambdas and cats we have more flexibility. Not only is the full data structure the same on the later cat and non-cat revision R2967 it’s also the same on the earlier Precat layout revision R2422.
I personally run the later Griffith 500 revision but with my 4.3 full data structure copied onto it. It runs exactly the same so I guess I’ve only done it because I can, you are welcome to a copy. My 4.3 came with exactly the same fuel map as genuine 4.3BV so it would be interesting to have a copy of yours to see if all 4.3’s came with the same map as 430BV or was mine upgraded as some point.
Enjoy, Steve Sprint

danbourassa

246 posts

137 months

Saturday 28th September 2013
quotequote all
stevesprint said:
Dan - I'm really sorry I’m having a blonde moment, if the ADC reads 0x16 please explain why 1 down and over 6 columns or is it as simple as 27 would be 2 down and 7 across. Also, does the ECU compare the ADC live count with the entries in the top row of the coolant temperature based tables to determine which column to use? I thought that because the 3 coolant tables top rows all go from 0 upwards but now I’ve seen the degs C table I’m not so sure. I'm very keen to get my head around these tables as I'm discovering from blind testing they really affect smoothness regards of the code revision.

Dan I could ask you a million questions but I hope you don't mind one more. Is the overrun controlled purely by the top row in the main fuel map table or is there a special route in the code as well?
Thanks, Steve (Grateful) Sprint
Yes, 0x27 would be 2 down and 7 across. The coolant table is arranged 16 x 16 so it matches up nicely with hex values. This is just a calibration table that we refer to often in order to understand the 14CUX software better. It's not in the 14CUX code at all. The Lucas software developers just used the raw ADC values. And yes, the ECU compares the current coolant sensor counts with the top row. A cold engine will use a column near the right side of the table and progressively move to the left as the engine warms. The cranking/starting fuel enrichment table is an exception to this since it's just used once when you start the car. After that, it's no longer used. However, this table is still interesting.

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)

You can see that the fuel enrichment increases dramatically for cold weather starts. Using this table, if the temp sensor count was 0xE6 (-15 C), the fuel pulse value would be 0x7F and 44 seconds would be added to the time component of the fuel value once the engine starts. Notice that as the engine gets very hot (as in restarting a recently run engine), the numbers actually start to increase. My understanding is that bubbles in the fuel need to be purged under these conditions. (Mark, are you there?)

As far as fuel shutoff during overrun, I don't have a great understanding of that yet, but I believe it goes beyond just using the top row of the main fuel table.


blitzracing

6,387 posts

220 months

Saturday 28th September 2013
quotequote all
danbourassa said:
}}}
You can see that the fuel enrichment increases dramatically for cold weather starts. Using this table, if the temp sensor count was 0xE6 (-15 C), the fuel pulse value would be 0x7F and 44 seconds would be added to the time component of the fuel value once the engine starts. Notice that as the engine gets very hot (as in restarting a recently run engine), the numbers actually start to increase. My understanding is that bubbles in the fuel need to be purged under these conditions. (Mark, are you there?)


No idea on this one - you have the pump cycled or running fully as you turn on the ignition, so any fuel line vaporisation should be pushed back into the tank as cooler fuel is drawn in, rather than push it into the engine. Mind you that would not clear any bubbles in the injectors themselves.

Knowing these locations, we cant be far off producing a TVR chip with reduced cold start fueling, thats always been an issue and the weather gets colder.

danbourassa

246 posts

137 months

Saturday 28th September 2013
quotequote all
I found a Land Rover reference to the bubbles in a document called 13/14CU AND 14CUX SYSTEMS. This talks about the fuel temp sensor (not the coolant sensor) triggering this purge action but I believe both sensors can trigger it. I think this doc is easily found on the Internet. It's on page 85.

Engine Fuel Temperature Sensor (EFTS)
The fuel temperature sensor, mounted on the fuel rail, operates in the same manner as the
ECTS. When the ECM receives a high fuel temperature input, it increases injector pulse during
hot restarts. When fuel is hot, vaporization occurs in the fuel rail and bubbles may be found in
the injectors. This can lead to hard starting. Increasing injector pulse time flushes the bubbles
away and cools the fuel rail with fresh fuel from the tank. Since 1989, the EFTS has also been
used by ECM to trigger operation of the radiator fans when under-hood temperatures become
extreme.

Mark, I've also heard about (and experienced) over-rich fueling under cold conditions. This is certainly one table where we can safely experiment.

PeteGriff

1,262 posts

157 months

Monday 30th September 2013
quotequote all
stevesprint said:
PeterGriff, Oh Yes!!! I also have a 4.3 Precat Griffith and without lambdas and cats we have more flexibility. Not only is the full data structure the same on the later cat and non-cat revision R2967 it’s also the same on the earlier Precat layout revision R2422.
I personally run the later Griffith 500 revision but with my 4.3 full data structure copied onto it. It runs exactly the same so I guess I’ve only done it because I can, you are welcome to a copy. My 4.3 came with exactly the same fuel map as genuine 4.3BV so it would be interesting to have a copy of yours to see if all 4.3’s came with the same map as 430BV or was mine upgraded as some point.
Enjoy, Steve Sprint
Cheers Steve, all very interesting and yes I would very much like a copy of your fuel map some time. So I am now getting to a point where I need to start looking at my ECU! Need to pick up a cheap 2nd hand laptop first (I run Apple machines so need a PC based system to operate the Rover Gauge software), then I can start dabbling!! Regards, Pete

T2000V8

Original Poster:

21 posts

127 months

Monday 30th September 2013
quotequote all
PeteGriff said:
I run Apple machines so need a PC based system to operate the Rover Gauge software, then I can start dabbling!! Regards, Pete
Can you not run this in "Bootcamp" on your Mac?

Regards


Matt smile

stevesprint

1,114 posts

179 months

Tuesday 1st October 2013
quotequote all
danbourassa said:
Yes, 0x27 would be 2 down and 7 across. The coolant table is arranged 16 x 16 so it matches up nicely with hex values. This is just a calibration table that we refer to often in order to understand the 14CUX software better. It's not in the 14CUX code at all. The Lucas software developers just used the raw ADC values. And yes, the ECU compares the current coolant sensor counts with the top row. A cold engine will use a column near the right side of the table and progressively move to the left as the engine warms. The cranking/starting fuel enrichment table is an exception to this since it's just used once when you start the car. After that, it's no longer used. However, this table is still interesting.
Dan - Thanks for Spelling that out, it's now as clear as a 27C256 quartz window. I see what you mean after restarting a very hot engine the fuelling and timing increases. The only issue I notice on my TVR after stopping for 5-10 minute and restarting a hot engine is that I have to blip the throttle to stop the idle dipping/stalling. I guess that is caused by the heat soak into the long inlet pipe, plenum chamber and inlet manifold.

Dan is the time fueling component row really in seconds? I believe you it's just interesting.

I'm sure you are right about the overrun cut off as I've copied my full TVR data structure into a LR revision and the cut off is very obvious unlike with the TVR code.
Cheers, Steve

stevesprint

1,114 posts

179 months

Tuesday 1st October 2013
quotequote all
danbourassa on Instructions to change fuel maps on 14CUX said:
I also like this idea. You would need to copy the full fuel map data structure. I think it's 274 bytes.
Matt
The remaining addresses for the data structure in the older revisions are below:
However, I personally think you should aim your toolkit at the home user wanting to copy complete data structures from one revision to another or from cat to non cat and visa versa. You could include changing the idle in decimal as it an easy fix for a common problem when transplanting an off road engine into a performance car. I’m very sorry if you think I’m speaking out of turn but changing all the settings below is best left to TunerPro.

For further information and see where I copied the structure from please see Dans post at
http://www.pistonheads.com/gassing/topic.asp?h=0&a...

New Map2 New Map5 Old Map2 Old Map5
length Offset Offset Offset Offset
Main fuel map row 1 16 379 6AF 351 687
Main fuel map row 2 16 389 6BF 361 697
Main fuel map row 3 16 399 6CF 371 6A7
Main fuel map row 4 16 3A9 6DF 381 6B7
Main fuel map row 5 16 3B9 6EF 391 6C7
Main fuel map row 6 16 3C9 6FF 3A1 6D7
Main fuel map row 7 16 3D9 70F 3B1 6E7
Main fuel map row 8 16 3E9 71F 3C1 6F7

Fuel multiplier 2 3F9 72F 3D1 707

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
coolant temp 10 3FB 731 3D3 709 - low is hot, high is cold
Throttle opening 10 405 73B 3DD 713
Throttle closing 10 40F 745 3E7 71D
Throttle opening 10 419 74F 3F1 727
Throttle opening 10 423 759 3FB 731
Throttle closing 10 42D 763 405 73B

3 x 12 table is used by the coolant temperature routine
Coolant temp 12 437 76D 40F 745 - low is hot, high is cold
Cranking fueling 12 443 779 41B 751 - above zero deg F
Time fueling 12 44F 785 427 75D - 1 Hz countdown

3 x 8 table calculates an adjustment factor based on engine temperature
Coolant temp 8 45B 791 433 769
Multiplier values 8 463 799 43B 771
Addition value 8 46B 7A1 443 779


ADC control list 16 473 7A9 44B 781

Calc fuel map row 1 483 7B9 45B 791
RPM safety delta 1 484 7BA 45C 792 - (7500000/(1212+15) = 6112 RPM)
RPM safety limit 2 485 7BB 45D 793 - (7500000/1212 = 6188 RPM)
Fuel map value 1 487 7BD 45F 795
Coolant threshold 1 488 7BE 460 796
Todo 1 489 7BF 461 797
Multi abs throttle 1 48A 7C0 462 798



Edited by stevesprint on Tuesday 1st October 12:20

stevesprint

1,114 posts

179 months

Tuesday 1st October 2013
quotequote all
PeteGriff said:
Cheers Steve, all very interesting and yes I would very much like a copy of your fuel map some time. So I am now getting to a point where I need to start looking at my ECU! Need to pick up a cheap 2nd hand laptop first (I run Apple machines so need a PC based system to operate the Rover Gauge software), then I can start dabbling!! Regards, Pete
Peter - I’ve send you a PM with a link to download my full map/code. Basically I’ve copied the full 430/430BV non cat data structure into the later TVR Revision for cat and non cat maps. Once you’ve sorted a laptop would you mind pm me your full map/code as I want to confirm all 430’s came with the same full map/code image as 430BV’s.
Cheers Steve

T2000V8

Original Poster:

21 posts

127 months

Wednesday 2nd October 2013
quotequote all
stevesprint said:
Matt
........I personally think you should aim your toolkit at the home user wanting to copy complete data structures from one revision to another or from cat to non cat and visa versa. You could include changing the idle in decimal as it an easy fix for a common problem when transplanting an off road engine into a performance car. I’m very sorry if you think I’m speaking out of turn but changing all the settings below is best left to TunerPro.


Edited by stevesprint on Tuesday 1st October 12:20
I couldn't agree more Steve, I have re-started the project from scratch to try and accommodate all of the things we have talked about, whilst keeping it simple to play with.

I do have a question that will help shape how this looks, the 5 maps (selected by a resistor), can these be selected "on the fly" or is the resistance only read on power-up reset of the ECU. I.E. If starting on "MAP2" with the correct resistance, if the "MAP3" resistance is substituted during run time, will the ECU stick with "MAP2" until the engine is re-started (ECU re-powered).

Also can you please clear up how the over-run value works? I understand it makes the car sound sexy, but what is the "engineering" purpose of this value and how is it implemented/work?

Regards


MATT smile

blitzracing

6,387 posts

220 months

Thursday 3rd October 2013
quotequote all
Ive tried switching the maps on the fly, but it cant be done without the ECU throwing a fault code,and that needs an ecu reset to clear. It certainly wont switch from catalyst to non catalyst mode, but Ive not tried switching between cat maps. Even switching maps with the ignition off will throw a fault code, although the map will change.

I think the valve you are referring to is the Purge valve for clearing vapor from the tank and putting it into a carbon canister (??- I dont have one fitted to my car....). I think this is cycled on ignition on, and has nothing to do with exhaust pops and bangs- thats purely down to over run fuel cut off and the map you are running.

stevesprint

1,114 posts

179 months

Thursday 3rd October 2013
quotequote all
Matt
I personally like your version 1.2 with the two “Fix Bad Checksum” buttons but I guess it’s confusing and unnecessary for non-techie people. If you do start from scratch please keep V1.2 source code as that version really suits me to the point if I had a copy of the source code it might even encourage me to get back into programming.

If you change the tune resistor while the engine is running the change is ignored and as Mark says creates a tune resister out of range error. However if you change the resistor while the ignition is on and the engine is not running the map changes instantly without an error. Therefore to reliably change the tune you need to stall the engine and re-crank or turn the ignition off and on. I’ve soldered 4 tune resistors to a rotary switch so I can quickly change back to my original tune if I don't like the results of an experimental tune.

The real purpose of the overrun is to save fuel when the engine overruns. Rumour has it the overrun fuel cut off created a huge argument between TVR bosses and the techies. The Techies wanted to keep the environmentalist happy while the bosses wanted to keep the customers smiling. I’ve copied my full TVR map data including temperature and throttle tables etc into a Land Rover prom and the overrun fuelling was cut. Therefore I believe the overrun set point is either in the data near the idle settings or hard coded. The top row of the main fuel table is used during overrun so I was living in hope I could control the overrun by altering the top row in the main fuel table.
I believe cat cars increase fuelling on overrun to help burn off un-burnt fuel to save the environment. Mark, do you know if more fuel on overrun is better for the environment?
Cheers, Steve

blitzracing

6,387 posts

220 months

Friday 4th October 2013
quotequote all
The catalyst process does need the amount of available oxygen in the exhaust to be cycled by varying the mixture to allow oxygen to be added to the hydrocarbon pollutants so they burn fully, and then removing oxygen from the Nitrogen oxide components , and by adding fuel you will reduce the lean mixture Nitrogen oxides pollutants by removing the oxygen and leaving nitrogen. Id guess on the overrun there is lots of oxygen around as there is very little combustion, so high NOx and a squirt of fuel will reduce this.

T2000V8

Original Poster:

21 posts

127 months

Friday 4th October 2013
quotequote all
stevesprint said:
Matt
I personally like your version 1.2 with the two “Fix Bad Checksum” buttons but I guess it’s confusing and unnecessary for non-techie people.
Don't worry, that's staying wink I want to make it easier to "Mix and match" maps etc, it's more of a layout change + features rather than removing the good stuff already there smile

stevesprint said:
The real purpose of the overrun is to save fuel when the engine overruns.
Sounds good to me, my car is an everyday (40 miles to work and back) car so this will be useful to me smile

stevesprint said:
I believe the overrun set point is either in the data near the idle settings or hard coded.
The value that you wanted me to include on the Toolkit, I thought this was known? Or am I getting myself confused (again!) here?

Regards



Matt smile



stevesprint

1,114 posts

179 months

Wednesday 9th October 2013
quotequote all
Matt,
Here’s a list of features with offsets you may wish to consider and leave the Tuning to TunerPro.
Change open loop RPM point     7,500,000/ 2 bytes at offset 00A7
Force open loop Set offset 0099 to non-zero forces open loop
Adjust idle speed 2 bytes at offset 0176
Adjust RPM limit set in each fuel map see 'Graphic Interface' page 11
Copy complete data structure See Colin’s post in 'Graphic Interface' page 10
Adjust road speed limit unknown
Overrun set point unknown
Dan/Colin - please correct me if I’ve got anything wrong

T2000V8

Original Poster:

21 posts

127 months

Sunday 13th October 2013
quotequote all
stevesprint said:
Matt,
Here’s a list of features with offsets you may wish to consider and leave the Tuning to TunerPro.
Change open loop RPM point     7,500,000/ 2 bytes at offset 00A7
Force open loop Set offset 0099 to non-zero forces open loop
Adjust idle speed 2 bytes at offset 0176
Adjust RPM limit set in each fuel map see 'Graphic Interface' page 11
Copy complete data structure See Colin’s post in 'Graphic Interface' page 10
Adjust road speed limit unknown
Overrun set point unknown
Dan/Colin - please correct me if I’ve got anything wrong
Sorry Steve I have been very busy the last 2 weeks with work and getting my 2000 ready for the conversion. I will hopefully get onto this again next week smile


Regards



Matt smile

stevesprint

1,114 posts

179 months

Sunday 13th October 2013
quotequote all
T2000V8 said:
Sorry Steve I have been very busy the last 2 weeks with work and getting my 2000 ready for the conversion
Matt, Quite right to, I should also be getting on with my autumn projects while the garage isn't too cold. January is the best month for playing indoors with software.

Good news Dan has published the information to change the road speed limit plus Dan has also confirmed the road speed limit code is removed from TVR's prom code. Its excellent news as all later 14CUX TVR's were fitted with a speedo interface box that also removes the road speed limit.

I hope you keep me updated with pictures of your conversion and should you have any conversion questions please do not hesitate to ask.

Thanks to you Matt I've already got the version I want, version 1.2, so take your time.

Best Wishes for the transplant, Steve



Edited by stevesprint on Sunday 13th October 16:52