Following article about fundamental functionality of EDC16 is a sum of experience with my EDC16U34 controlling VW 2.0 TDi, 103kW, BMM. After writing first guide about ECU remap I noticed that people struggle to understand basic concept behind engine management. How do you want to make a proper engine calibration if you don’t know how your ECU works?
Don’t forget it is my understanding of Bosch reference manual – 2000 pages of German technical lingo. Only Bosch Technicians understand it most. There may be errors on my part !!!
- there is normal operation mode (Standardbetrieb), regeneration (Regenerationsbetrieb) and Limp mode (Systemfehlerbetrieb)
- everything in ECU is just a set-point or estimate – for example boost doesn’t matter and PR is not known or VE of engine
- most modern cars work in closed-loop control
- there is hundreds, if not thousand, switches in this ECU and every car manufacturer has got own strategy for engine management
- if something is NOT in map, it is always interpolated from near values – SOI 15deg is interpolated from SOI 12 and SOI 18 maps for example
- what is NOT in any map, it cannot be interpolated and last known value is used – if you request 80mg of fuel and last calibration data are only 75mg, ECU will use it instead.
- EDC16 started to use torque mapping, instead of classical IQ – it is a virtual/internal engine torque and it doesn’t reflect real engine torque
- everything depends on everything else and nothing is finite
- most functions run in parallel and are interlinked
- fuel system – Driver request, mechanical engine protection, optimal combustion control, injection timing
- air system – air density, boost control
In basic engine calibration, you need to change following:
- EngPrt_trqLimP_MAP – Drehmomementbegrezung/Momentbegrenzung or Torque Limiter
- PCR_pBDesBas_MAP + PCR_pBDesBas2_MAP – Ladedruckluft/Ladesolldruckwert or Boost Maps
- PCR_pBDesMaxAP_MAP – Größter erlaubter Ladedrucksollwert or boost limit
Car hackers guide for EDC16U34
I am not fan of a mechanical memorising – I have never learnt in my life but I always tried to understand. Everything must be according HRIN and HIN standards! I am never satisfied with shallow misunderstanding of fundamentals and blindly changing something I do not understand. Unfortunately, it is latest trend of aExperts and eExperts.
Luckily, EDC16 ECUs are more sophisticated than you may think. It took me about 7 months reverse engineer and understand EDC16U34 advanced functionality. Still, I do not know all its secrets yet.
Everything is interlinked and depends on each other. I will follow Bosch philosophy. I have always explored along the way when challenge presented itself. I didn’t study everything, only most important for hardcore engine calibration that squeezes maximum from car HW.
I will omit basic engine functionality because you don’t need to fiddle with warm/cold start issues, idle speed or max. speed governors in properly maintained car. Keep your car in best shape possible and then modify it. It will break down if you put even more stress to it.
Engine management process summary
- Pedal/Driver Wish (Fahrerwunsch)
- Propulsion Control (Fahrzeugvortrieb)
- Engine and transmission mechanical protection (Motormechanikschutz)
- FMTC/Nm to IQ mapping (Umrechnung Begrenzungsmenge in Moment)
- Smoke limiters (Rauchbegrenzung)
- FMA (Fuel Mean-value Adaptation/Mengenmittelwertadaption)
- SOI (Förderbeginn)
- Boost request (Ladedruck-Sollwertbildung)
- Boost limit (Ladedruck Begrenzung)
- Boost correction (Ladedruck Korrektur)
- Turbine control (Ladedruck-Steuerung)
- Adaptive Turbine Control (Adaptiver Ladedruckregler)
- Fuel Density correction (Berechnung der Kraftstoffdichte)
- Injection Duration (Förderdauer)
- EGT limiter (Abgastemperatur Begrenzung)
I will simplify Bosch diagram above by. There is many processes running in background such as idle or maximum engine speed governors. ECU smooths out torque output if you switch on HVAC. It constantly checks for optimal combustion process. Following explanation is just for a normal operation mode.
EngPrt_trqLimP_MAP – Drehmoment Begrezung/Momentbegrenzung or Torque Limiter. This map limits max. combustion pressure, exhaust gases temperature, engine-speed and engine temperature.
Gearbx_trqInMax_C – maximum allowed input torque into gearbox. There is also limiters for each gear
There is most likely also automatic-gearbox control – I prefer second most sophisticated automatic gearbox invented by Hajes Racing.
FMTC (Fuel-Mass/Torque Converter, Umrechnung Moment in Menge)
FMTC_trq2qBas_MAP – mapping internal/virtual torque to fuel quantity in mg.
At this point you have to find out what sort of smoke limiters (Rauchbegrenzung) your engine management uses. Of course at this point it needs final boost value, which runs almost in parallel.
Almost all modern cars use more reliable MAP based smoke limiter with MAF/Lambda correction.
MAF modelling is theoretical model of engine air flow calculated by ECU from readings of MAF sensor located after air-box. Unfortunately, commonly used hot-wire MAF sensors wear down. My 12 years old MAF sensor with 220k km had -10% reading error.
Everything is only as good as input data !!! The best car tuning is new sensors and proper maintenance.
FlMng_qPresSmoke_MAP – ECU limits fuel based on boost/MAP, which is corrected for IAT in FlMng_pIATCorr_MAP.
There is also possibility for Lambda full-load control or pure Lambda based smoke limiter. A map for MAF based smoke limiter is empty in my ECU and it doesn’t work very well when I tried to fiddle around for more precise fuelling.
FMA (Fuel Mean-value Adaptation/Mengenmittelwertadaption) – as far as I understand it, after injection event ECU checks Lambda and available MAF per cylinder and calculates if injector injected desired value.
For example we have requested and corrected IQ of 65mg and duration 30deg crankshaft. After injection, ECU checks associated MAF + Lambda with injection event and calculates if resulting combustion process was optimal.
If AFR doesn’t match what is calibrated in ECU, it is corrected and stored in ECU so that next time “duration” may be 30.12deg or 29.97deg. There seems to be a short and long term FMA data, which are compared and interpolated for precise combustion process.
InjCrv_phiBas_CUR – this map tells ECU what SOI map should be used based on engine coolant temperature.
InjCrv_phiBas9_GMAP – SOI map for properly warmed-up engine with at least 80°C coolant temperature.
So far, I am not sure if ECU compensates for various engine loads. What I see in logs, it looks like it is capable only compensation for engine temperature. Ignition delay at full load is different than at partial load.
Boost set-point is based on pedal position, engine speed and it is interpolated from following maps:
PCR_pBDesBas2_MAP – min. allowed boost
PCR_pBDesBas_MAP – max. allowed boost
I noticed in ECU that there is possibility for two turbochargers control.
PCR_pBDesMaxAP_MAP – boost limiter in order to keep turbocharger from over-speeding at high altitudes where air is thin.
PCR_pBDesMax_C – (so called SVBL or Größter erlaubter Ladedrucksollwert). From this value there is upper limit +200mbar and bottom limit -400mbar. Of course it may be different in every car and you have to check out single value maps in your ECU.
FlMng_pIATCorr_MAP – boost correction for IAT
At usual partial load IAT 40°C we need 1200mg MAF, which results in 2400mbar MAP.
Over winter where IAT is 0°C and we request 1200mg MAF, we just need 2100mg MAP because cooler air is more denser.
It is not really about compressor side of turbocharger as most are interested in – it is all about turbine side that’s propelling compressor and its perfect match to engine air flow.
VAG uses so called N75 valve for vacuum control of vanes in turbine housing.
Following two maps are set-point for vanes:
PCR_rBPCtlBas_MAP – N75 min
PCR_rBPCtlBas2_MAP – N75 max
Most modern cars are controlled dynamically in closed-loops because it is a most precise control one can use. Without feedback, it is just an estimate with hope it is correct.
Nothing is static in nature as most believe – nature is ever changing environment and ECU manufacturers trying to compensate for all. So far we have no compensation for air humidity for example.
We have desired MAP and vanes are set according to N75 calibration data > PID controller dynamically checks if desired MAP and reading from MAP sensor matches within set limits (boost limiter or SVBL +200/-400mbar) and corrects vanes in turbine if needed.
Fuel density is same principle as air density. My car has got fuel cooler underneath of car (co-driver side). Fuel pump flows fuel in litres per minute and injectors have certain capacity such 400cm3/min.
EN590 diesel weights 0.8307982 g/cm3 @ 20°C = 332.32 g/min
My usual fuel temperature at full load is 70°C – EN590 diesel weights 0.7972937 g/cm3 = 318.92 g/min
At full load my injectors flow 4% less fuel than at cruise speeds – instead of 60mg, you get only 57.58mg of fuel per cycle.
My car starts to limit fuelling at 790°C and I am sure they didn’t calibrate my car for racing. Normal driving, even in mountains rarely results in EGT higher than 600°C.
EngPrt_facTempPreTrbn_MAP – EGT limiter map may be based on physical EGT sensor or EGT modelling because first DPF cars started to show up in 2005.
That’s just a tip of the iceberg
I have just scratched the surface, the basic functions of EDC16(U34) that is needed for optimal engine calibration.
There is turbine speed modelling, exhaust back-pressure modelling and who knows what else. I accidentally glanced over when I have been looking for answers.