Pages: [1]
Author Topic: Adaptation logic  (Read 596 times)
Crazy18T
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 6


« on: October 17, 2024, 10:42:05 PM »

I've spent the past few months of my free time studying ME7.x stuff. Mostly on this site, because where else can you find anything of actual use when it comes to these early DBW VAG vehicles.  Grin

My question is, has anyone ever actually looked at how the fuel trim adaption works (and how that evolves over time)? Are the adaptation channels too primitive to use to help model a reasonable starting point beyond KRKTE? Most seem to use 1.0001 on the primary air and fuel correction maps (FKKVS and KFKHFM) to find the sweet spot for KRKTE on a custom build, but things get a bit complicated after that.

We have a request by userpike way back when to get a "fixer" for KFKHFM to use before using guitar24t's FKKVS fixer (which sadly has no source code), because apparently that's the proper FR way to tune these things (http://nefariousmotorsports.com/forum/index.php?topic=6005.msg56108#msg56108).

Before I start writing code for this, am I missing something here? There shouldn't be anything difficult about doing the air correction based on logs before the fuel. It's just a matter of dealing with load vs RPM before injector on time vs RPM, correct? Beyond that it's just a question of trial and error on smoothing vs the sample size? I've heard wideband front O2 isn't the greatest for tuning with a 3+" turbo-back exhaust.

Thanks to anyone with any thoughts or help! This site is the best!  Grin
Logged
Artemisia
Full Member
***

Karma: +9/-0
Offline Offline

Posts: 54



« Reply #1 on: October 17, 2024, 11:59:17 PM »

If only the injectors has been replaced, I wouldn't alter KFKHFM to adjust fuel control

KFKHFM should be used to correct changes in volumetric efficiency (different intake manifold, valvetrain, etc.) or fine tune the MAF for really specific conditions

FKKVS should be used to linearize the injectors when KRKTE and TVUB are properly defined

If you adjust KFKHFM to scale injectors, it will fix fuel control by altering the load calculation and all maps that are dependent on load, will now be off

In my opinion, you can't adjust both at the same time. You always need to have either one properly calibrated. If you want to make change to fueling, make sure air mass measurement is right. In the inverse, if you alter the VE, make sure fueling is right

You can make a "KFKHFM fixer" by using an histogram and an Excel sheet. This gives more flexibility in my opinion. You can implement filters and if you have a good sample, you can filter out sporadic measurements that would throw off the dataset, this give a more accurate average and in just a few flash you can get within +/- 5%
Logged
prj
Hero Member
*****

Karma: +1061/-472
Offline Offline

Posts: 5975


« Reply #2 on: October 18, 2024, 03:58:49 AM »

KFKHFM should be used to correct changes in volumetric efficiency (different intake manifold, valvetrain, etc.) or fine tune the MAF for really specific conditions

The rest of your post is good but KFKHFM has nothing to do with VE the VE maps are KFURL, KFPRG and KFPBRK/NW in this ECU. In fact you do not care about VE at all when you have a MAF because it *knows* the amount of air entering the engine. VE is needed in speed density calculations only.
KFKHFM is a correction map for flow over the MAF. In an ideal world the intake pipe would be 10 meters long with the MAF somewhere in the middle and the MAF output would ideally match the linearization curve.
Because we don't live in an ideal world there is some turbulence in the intake and the air does not move exactly straight through the MAF tube.
KFKHFM is there to correct for this.

As I said, the rest of the info is good. If you changed your injectors then you should change FKKVS and KRKTE.
If you changed everything at the same time, well then it's going to be quite difficult. Most likely the easiest will be to set KFKHFM to all 1's and just use FKKVS with an automated tool to correct everything.
If you want your manifold model to be correct, you can temporarily fit a pressure sensor, and then adjust KFURL/KFPBRK/KFPBRKNW so that ps_w matches measured. You can get most of the way there by doing a WOT pull and then correcting KFURL based on pvdk, because when the throttle is fully open then pvdk will be the same as ps_w.
« Last Edit: October 18, 2024, 04:02:42 AM by prj » Logged

PM's will not be answered, so don't even try.
Log your car properly.
Artemisia
Full Member
***

Karma: +9/-0
Offline Offline

Posts: 54



« Reply #3 on: October 18, 2024, 05:00:58 PM »

The rest of your post is good but KFKHFM has nothing to do with VE the VE maps are KFURL, KFPRG and KFPBRK/NW in this ECU. In fact you do not care about VE at all when you have a MAF because it *knows* the amount of air entering the engine. VE is needed in speed density calculations only.
KFKHFM is a correction map for flow over the MAF.

If you want your manifold model to be correct, you can temporarily fit a pressure sensor, and then adjust KFURL/KFPBRK/KFPBRKNW so that ps_w matches measured. You can get most of the way there by doing a WOT pull and then correcting KFURL based on pvdk, because when the throttle is fully open then pvdk will be the same as ps_w.

This is likely not the common way to do it, but from my understanding of the ECU, it converts air mass into pressure then engine load. I use KFKHFM to alter the air mass reading and have the proper pressure calculation when making drastic change to the VE.  I adjust it based on fr_w and when fuel control is good, I can assume my engine load is correct. In my mind, this resembles a VE map on standalone units and I re-adjust it if I make changes to the cam phasing

Is there any downside to adjust it this way versus KFURL/KFPBRK/KFPBRKNW ? I appreciate the feedback Smiley
Logged
nyet
Administrator
Hero Member
*****

Karma: +605/-168
Offline Offline

Posts: 12248


WWW
« Reply #4 on: October 18, 2024, 05:24:12 PM »

No, there are no conversions from MAF to pressure to load, its just MAF/RPM, I don't think there are any pressure calcs, though there might be VE related corrections.

The main VE based pressure calculation is to convert load request to pressure request.
Logged

ME7.1 tuning guide (READ FIRST)
ECUx Plot
ME7Sum checksum checker/corrrector for ME7.x

Please do not ask me for tunes. I'm here to help people make their own.

Do not PM me technical questions! Please, ask all questions on the forums! Doing so will ensure the next person with the same issue gets the opportunity to learn from your experience.
Artemisia
Full Member
***

Karma: +9/-0
Offline Offline

Posts: 54



« Reply #5 on: October 18, 2024, 09:10:00 PM »

No, there are no conversions from MAF to pressure to load, its just MAF/RPM, I don't think there are any pressure calcs, though there might be VE related corrections.

The main VE based pressure calculation is to convert load request to pressure request.

I am a bit confused and lead to believe ps_w is calculated with the help of rlroh_w that comes from mshfms_w in %BGMSZS. Then ps_w would be used to get rl_w (I simplified it a lot)

And then there is fupsrl_w that would be the factor to convert the pressure into filling. It looks like HFM (air mass flow) -> intake manifold pressure (ps_w) -> filling (rl_w)

Again, I simplified it a lot and I might be 100% wrong, I'm hoping someone might chime in and enlighten me. I'm all for learning and I won't argue on that, this is just my comprehension of the ME7 ECU
« Last Edit: October 18, 2024, 11:07:52 PM by Artemisia » Logged
prj
Hero Member
*****

Karma: +1061/-472
Offline Offline

Posts: 5975


« Reply #6 on: October 19, 2024, 04:36:24 AM »

This is likely not the common way to do it, but from my understanding of the ECU, it converts air mass into pressure then engine load. I use KFKHFM to alter the air mass reading and have the proper pressure calculation when making drastic change to the VE.  I adjust it based on fr_w and when fuel control is good, I can assume my engine load is correct. In my mind, this resembles a VE map on standalone units and I re-adjust it if I make changes to the cam phasing

Is there any downside to adjust it this way versus KFURL/KFPBRK/KFPBRKNW ? I appreciate the feedback Smiley

No, you completely misunderstand the ECU.
The ECU is a speed-density ECU. The MAF is tacked on.

With the MAF it bypasses the whole speed density calculation for calculating load. rl is just an integrator on rlroh_w-rl_w, becasue it gets converted and then immediately inverted.
So with the MAF essentially rl_w = MAF/KUMSRL/nmot_w.

The way you are tuning it is completely wrong. The air mass reading is a function of air going through the pipe. It is always right, no matter what is happening with VE.
How it's tuned is KUMSRL is adjusted if the engine size/cylinder count changes, to make it so that rl_w is roughly 100 at atmospheric conditions at WOT (but really, there is not too much point to change it ever, even if the displacement changes somewhat), and after that if you want to adjust the manifold model for VE changes, then KFURL/KFPBRK/KFPBRKNW/KFPRG are changed.

This is also the same maps you would change on an ECU that does not have a MAF sensor, and has an in-manifold pressure sensor, to get the correct load value.
What you are doing is messing up the (completely valid) airmass readings and feeding the ECU completely wrong airflow data. Like having a tuning box on the MAF signal.

Once again, KFKHFM is there to correct for non-linearities regarding to positioning of the airmass sensor in the intake tract. Modifying it for VE changes is completely wrong for the reasons stated above.
Logged

PM's will not be answered, so don't even try.
Log your car properly.
Artemisia
Full Member
***

Karma: +9/-0
Offline Offline

Posts: 54



« Reply #7 on: October 19, 2024, 02:17:48 PM »

The ECU is a speed-density ECU. The MAF is tacked on.

So with the MAF essentially rl_w = MAF/KUMSRL/nmot_w.

If you want to adjust the manifold model for VE changes, then KFURL/KFPBRK/KFPBRKNW/KFPRG are changed.

Thank you Prj, it does make more sense. Let me know if I understand it correctly. With a MAF, it still relies on the pressure to filling conversion at the end since it has to go through BRFGES?  It is intriguing that they added a MAF

I am sorry with all the questions, I am really looking to borrow your brain if you want. On a ME7.1.1, is it wrong to use KFFUPSRLK/KFUPSRLKNW to adjust the manifold model? From disassembly, the ME7.1.1 also looks more like the MED9 with the %SRMHFM, SRMDSS

Thanks again for putting up with my nonsense
Logged
Crazy18T
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 6


« Reply #8 on: October 19, 2024, 10:53:58 PM »

If you changed everything at the same time, well then it's going to be quite difficult. Most likely the easiest will be to set KFKHFM to all 1's and just use FKKVS with an automated tool to correct everything.
If you want your manifold model to be correct, you can temporarily fit a pressure sensor, and then adjust KFURL/KFPBRK/KFPBRKNW so that ps_w matches measured. You can get most of the way there by doing a WOT pull and then correcting KFURL based on pvdk, because when the throttle is fully open then pvdk will be the same as ps_w.

Really appreciate the detailed response! I am in fact looking for a reasonable way to tune air and fuel correction maps without any factory reference points. Is there a reason I shouldn't care about my manifold model being correct? I was thinking this was the whole point of userpike's request.

Back to the root of my question though, why is it that we tuners seem to have largely ignored the factory adaptation logic? I haven't seen any proper explanation for how it works in ME7.x (or newer, granted, I'm focused on ME7.5 for now and there's a lot to learn). I would think Bosch would have the most experience on what adaptations tend to be desired based on hardware variances. Maybe I'm too optimistic in this respect?

Continuing on with this line of discussion in the thread, are we wasting our time trying to get KRKTE as close as possible to 0 on STFT and LTFT before starting corrections on air and fuel maps? Does it make more sense to focus on LTFT close to zero across all RPM and load ranges, especially with much larger injectors?

Thanks to all for contributing! I feel like I passed the ultimate test when both prj and nyet responded to my thread without chewing my ass! Grin Really nice to see someone else learning along with me too!
Logged
Crazy18T
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 6


« Reply #9 on: October 19, 2024, 11:16:03 PM »

You can make a "KFKHFM fixer" by using an histogram and an Excel sheet. This gives more flexibility in my opinion. You can implement filters and if you have a good sample, you can filter out sporadic measurements that would throw off the dataset, this give a more accurate average and in just a few flash you can get within +/- 5%

As I stated, this is definitely what I have in mind, but I will not be using a spreadsheet. I will write a script to deal with this and share with the community once we have established I'm doing something meaningful.  Wink
Logged
nyet
Administrator
Hero Member
*****

Karma: +605/-168
Offline Offline

Posts: 12248


WWW
« Reply #10 on: October 19, 2024, 11:18:57 PM »

are we wasting our time trying to get KRKTE as close as possible to 0 on STFT and LTFT before starting corrections on air and fuel maps? Does it make more sense to focus on LTFT close to zero across all RPM and load ranges, especially with much larger injectors?

You're overthinking things. my 2 cents (prj might disagree btw):

start with

1) KRKTE/TVUB should be EXACTLY what you think they should be from datasheets
2) MLFHM should be EXACTLY what you think it should be from datasheets
3) If you have totally ejected the stock airbox and intake, start with KFKHFM/KFLF 1
4) no need to touch any VE or even KUMSRL really

Now start basic tuning

Get partial LTFTs (grossly) near zero by scaling MLHFM or KRKTE (choose which one depending on how close load seems to be to expected)

Having load a bit lower than expected might help you with torque limiter being annoying, and also helps work around some of the load limits in ME7 (particular the 8 bit load)

Turn off LTFTs (via NOLRA) and start tweaking KFKHFM by dorking around at various load/rpm points (but try to avoid rapid load changes, dont log cuttoff etc).

look for lean/rich spots in STFTs.

Turn on LTFTs and see where you're at.

Rinse, repeat.

Stick with those maps, don't overthink.

I really have been meaning to make a Load/rpm/trim heatmap tool but haven't gotten around to it.
« Last Edit: October 19, 2024, 11:24:43 PM by nyet » Logged

ME7.1 tuning guide (READ FIRST)
ECUx Plot
ME7Sum checksum checker/corrrector for ME7.x

Please do not ask me for tunes. I'm here to help people make their own.

Do not PM me technical questions! Please, ask all questions on the forums! Doing so will ensure the next person with the same issue gets the opportunity to learn from your experience.
Crazy18T
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 6


« Reply #11 on: October 19, 2024, 11:51:28 PM »

You're overthinking things. my 2 cents (prj might disagree btw):

start with

1) KRKTE/TVUB should be EXACTLY what you think they should be from datasheets
2) MLFHM should be EXACTLY what you think it should be from datasheets
3) If you have totally ejected the stock airbox and intake, start with KFKHFM/KFLF 1
4) no need to touch any VE or even KUMSRL really

Now start basic tuning

Get partial LTFTs (grossly) near zero by scaling MLHFM or KRKTE (choose which one depending on how close load seems to be to expected)

Having load a bit lower than expected might help you with torque limiter being annoying, and also helps work around some of the load limits in ME7 (particular the 8 bit load)

Turn off LTFTs (via NOLRA) and start tweaking KFKHFM by dorking around at various load/rpm points (but try to avoid rapid load changes, dont log cuttoff etc).

look for lean/rich spots in STFTs.

Turn on LTFTs and see where you're at.

Rinse, repeat.

Stick with those maps, don't overthink.

I really have been meaning to make a Load/rpm/trim heatmap tool but haven't gotten around to it.

Thanks for the response and details of your methodology! I'm sure I am overthinking things, but we still seem to be avoiding the root of my question (points at subject). I assume at this point nobody has ever bothered to look at how the adaptation code works. I guess it's just assumed it's pretty lame and has continued to be that way, even in later more advanced torque models? Maybe because this is mostly based on emissions, and has little to do with actual efficiency? Even if it's super simple, I'd like to know the logic.

I am glad you mention NOLRA though, because I'm curious the difference between changes here and simply disconnecting one of my resistors. I'd prefer to save my reprograms for meaningful things if possible, especially given how old these ECUs are getting.  Wink
Logged
Artemisia
Full Member
***

Karma: +9/-0
Offline Offline

Posts: 54



« Reply #12 on: October 20, 2024, 12:19:27 AM »

Continuing on with this line of discussion in the thread, are we wasting our time trying to get KRKTE as close as possible to 0 on STFT and LTFT before starting corrections on air and fuel maps? Does it make more sense to focus on LTFT close to zero across all RPM and load ranges, especially with much larger injectors?

It is not wasting time to adjust KRKTE as close to 0, and I would disable LTFT correction while scaling injectors and rely only on STFT. Adjusting KRKTE as close to 0 on idle will give a good starting point to get the car going and linearize the injector through FKKVS. An example: on idle you have an injection time of 1.5ms, and you are off by 0.5ms, this would be a difference of 33%, but the same 0.5ms on a higher injection time, like 20ms for example, would only be 2.5%. In my opinion, if you have the proper injector dead time (TVUB) and KRKTE is adjusted to have a lambda control close to 1.0 (0%) on idle, then it is just a matter of adjusting the linearization for other engine conditions that have more margin for disparities / errors


Really appreciate the detailed response! I am in fact looking for a reasonable way to tune air and fuel correction maps without any factory reference points. Is there a reason I shouldn't care about my manifold model being correct? I was thinking this was the whole point of userpike's request.

By no factory reference points, do you mean a blank/empty calibration, like no manifold model, no injector and no MAF data? This seems rather unlikely on an OEM ECU


Back to the root of my question though, why is it that we tuners seem to have largely ignored the factory adaptation logic? I haven't seen any proper explanation for how it works in ME7.x (or newer, granted, I'm focused on ME7.5 for now and there's a lot to learn). I would think Bosch would have the most experience on what adaptations tend to be desired based on hardware variances. Maybe I'm too optimistic in this respect?

I wouldn't say it has been ignored, I even think it is well documented compare to other OEM ECU. There are codewords for some hardware variances and for components that needs specific calibration (like MAF, injectors, coilpacks, etc.), there are multiples constants and maps to adjust/adapt them. I am sorry if I misunderstand your question, are there any adaptation you have in mind?


As I stated, this is definitely what I have in mind, but I will not be using a spreadsheet. I will write a script to deal with this and share with the community once we have established I'm doing something meaningful. Wink

Will your script allows for custom axis and custom filters?


Thanks to all for contributing! I feel like I passed the ultimate test when both prj and nyet responded to my thread without chewing my ass! Grin Really nice to see someone else learning along with me too!

NefMoto is great, a lot of smarter and more genuine knowledgeable people. I like feeling dumb around them, it is a good thing.
Take my contribution like a grain of salt, considering I have been cheating my MAF reading to "fix" my manifold model (not proud of this one) Cheesy

« Last Edit: October 20, 2024, 12:28:25 AM by Artemisia » Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Page created in 0.027 seconds with 18 queries. (Pretty URLs adds 0s, 0q)