Pages: [1] 2 3 ... 10
Author Topic: Map Switching Routine  (Read 186228 times)
phila_dot
Hero Member
*****

Karma: +171/-11
Offline Offline

Posts: 1709


« on: November 24, 2012, 07:37:03 PM »

After alot of hard work, my map switching routine is finished (functionally). I wrote it completely from scratch without referring to anyone elses work and the functionality is mainly dictated by the limited amount of ways that the driver has to communicate with the ECU. The routine is completely dynamic, bug free, and IMO very clean and efficient.

As it sits right now, maps can be switched by pressing the "Set" button on the cruise control stalk and the current map can be displayed without switching maps by pulling the "Res" switch. Both functions work anytime the ECU has power: ignition on, engine running, and while driving. The selected map is communicated to the driver by the EPC light and the MIL light, but I will likely stick with just the MIL because it is easier to see. I'll save the EPC light for something else as I have alot of ideas swirling around. I have other prospects for displaying the selected map, but I already had the MIL and EPC working and I wanted to just get it finished up. I will try some of the others once everything completely finished.

Currently, I have only incorporated KRKTE, KFZW(2), and LDRXN in order to ensure that the functionality is perfect, but I plan to add LAMFA, KFLBTS, and KFLAMKRL. My main motivation to write this routine was because I am considering moving to an E85 setup. There are currently four sets of maps and the original maps are ignored. Four sets seems to be overkill though and I am considering moving to just three because it takes alot of space having four sets of the larger tables  (KFZW, KFLBTS). I chose not to include KFMIRL for this reason and figured that LDRXN should be enough.

The purpose of this thread is to gauge some decisions on what the community would like.

What would be practical activation conditions for switching maps? For displaying selected map?
   I originally limited switching maps to B_st  = false (during start) and B_stend = false (start end), basically engine not running. I have it unrestricted right now, but am thinking of limiting switching maps to only during idle and engine off. I have one trick up my sleeve, but I may save it for something else as well.

What maps would you want to be included?

How many sets of maps is enough? Three? Four? Less? More?

The routine is written for M box and L box B5 S4 ECU's, but shouldn't be hard to adapt to others.

Another thing that I have been struggling with is how freely I want to release this. I am pretty sure that I will not release the source code. I think that I may share only by request to members that actively contribute to this forum (at my discrection...we all know who).  My sole purpose here is for the advancement of the platform and I feel wrong even thinking like this, but I have my reasons.  Or I was thinking of just posting stock files with the routine implemented along with an XDF.

What do you guys think?

******************************************************************************************

The attached files are for personal use only. I have implemented some security features in these files, so if you tamper with things that you shouldn't and your car doesn't start you know why.

I have attached a stock L and M box for B5 S4's. I have only tested these stock files on the bench because I don't even have my car at the moment, but I have been running this code on my car for a few weeks.

Maps can be switched by pressing the "Set" button on the cruise control stalk only while the car isn't moving (basically) and the current map can be displayed without switching maps by pulling the "Res" switch anytime. The selected map is communicated by flashing MIL and EPCL.

Knock light flashes MIL and EPCL 3 times if wkrma (average ignition retard) exceeds WKRMA_IND (in XDF).

There are four maps sets, with the first being the original. The attached XDF contains all of the map sets including maps:
KRKTE
KFZW(2)
KFLBTS
KFLAMKRL
LAMFA
LDRXN

I just threw these stock files together today, so let me know if anything doesn't function perfectly.
« Last Edit: May 23, 2013, 09:58:54 AM by nyet » Logged
imolasb5
Jr. Member
**

Karma: +5/-1
Offline Offline

Posts: 38


« Reply #1 on: November 24, 2012, 09:44:10 PM »

 I currently have my map switching utilizing 2 sets of maps as more just seems to be unnecessary. I developed mine for the same reason...E85.

My maps include:
KRKTE
KFZW
KFZW2
KFLBTS

and I use the MIL to display the map group selection.

Seems to cover me pretty well and give me the ability to do a quick switch over between 93 and E85. I was having issues with switching maps with the car running from time to time, but really haven't messed with it lately (get about 5 seconds and the car would die).

Anyways, that's where mine currently sits and I feel like it has plenty of functionality. IMO I think you should limit the release of this code.

Great work as always man!
Logged
masterj
Hero Member
*****

Karma: +61/-5
Offline Offline

Posts: 1049



WWW
« Reply #2 on: November 25, 2012, 06:18:28 AM »

Hey, Philla_dot!
I would say that TWO versions of maps are enough, most of people would switch it between E85 and regular gas anyway.
Main maps would be:
KRKTE
KVB
KFZW
KFZW2
FKSTT(0A,1A,2A...)
KFFWL (0A,1A,2A...)
Logged

prj
Hero Member
*****

Karma: +915/-426
Offline Offline

Posts: 5839


« Reply #3 on: November 25, 2012, 06:58:51 AM »

I just switch KFZW, KFZW2, LDRXN, FKKVS off of my meth failsafe automatically.
If the system is on or a fault condition is present, it runs the pump fuel maps. If it is injecting and all parameters are good (flow, level) then it runs the meth maps.

I use the rear O2 input for the failsafe signal from the meth kit.
Logged

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

Karma: +59/-2
Offline Offline

Posts: 277


« Reply #4 on: November 25, 2012, 08:55:55 AM »

imo 3 sets should be enough..
one ECO-fuel(91oct), one normal(93oct) and one e85.
..or could be; ECO, WINTER, SUMMER.

KRKTE (main fueling)
KVB (for instrument correction)
KFZW, KFZW2 (main timing)
LDRXN, LDRXNZK (main boost)
KFPED (needed to adjust pedal-sensitivity after adding 8-12deg timing on e85)
FKSTT_0A,1A,2A...(needed for cold-starts on e85)
KFFWL_0A,1A,2A...(needed for e85 warmup)
KFZWWLRL (ignition retard based on engine temp, for e85 smoothness in cold weather)


thats my 2c.. glad to see you working on this, it is a very usefull feature, good work, keep it up! Smiley
Logged
phila_dot
Hero Member
*****

Karma: +171/-11
Offline Offline

Posts: 1709


« Reply #5 on: November 25, 2012, 10:57:33 AM »

Thanks for the replies so far.

I am thinking that I will eventually move to three sets, 93 oct, flex fuel, and straight E85. Or maybe keep it at four and have E85 summer and E85 winter.

All of the E85 fun will have to wait until I can get a set of injectors and a fuel pump though.

I will start a thread on flex fuel if/when I make some progress on it. The hard part will be the scaling factor.

You guys running E85 are not adjusting target Lambda from traditional 91/93 oct?
Logged
phila_dot
Hero Member
*****

Karma: +171/-11
Offline Offline

Posts: 1709


« Reply #6 on: November 25, 2012, 11:03:13 AM »

What about activation conditions?

Without limiting activation conditions, cruise control cannot be utilized because this would cause a switch to the next set of maps.

Is engine off and at idle good enough?

I have one trick that doesn't interfere with driving in any way, but I may save it for something special.
Logged
sn00k
Sr. Member
****

Karma: +59/-2
Offline Offline

Posts: 277


« Reply #7 on: November 25, 2012, 11:17:11 AM »

Is engine off and at idle good enough?

imo, this works perfect, as you will be switching maps in standstill after refueling, for most part.



You guys running E85 are not adjusting target Lambda from traditional 91/93 oct?

im running E85 and a bit leaner in lower loads, and at full load im running ~12.5ish, while at 93oct im running ~12.2, so i think its definitely close enough.. having to add all fueling maps for different strategies would take alot of space.
im also using a method for lean-burn.. might be interesting to implement, but could be an idea, as running ~15.4 afr on e85 seems to produce the best economy on cruise.
Logged
elRey
Hero Member
*****

Karma: +32/-1
Offline Offline

Posts: 565


« Reply #8 on: November 25, 2012, 12:55:39 PM »

would just using offsets for some maps work instead of using full maps?

i.e. adding 8* to output of KFZW instead of a separate KFZW map?
Logged
phila_dot
Hero Member
*****

Karma: +171/-11
Offline Offline

Posts: 1709


« Reply #9 on: November 25, 2012, 02:43:45 PM »

would just using offsets for some maps work instead of using full maps?

i.e. adding 8* to output of KFZW instead of a separate KFZW map?

This is far from optimal.

You're basically describing preset Lemmi settings on the fly.

The routine is already done and there is enough space to accomodate the maps.
Logged
s5fourdoor
Hero Member
*****

Karma: +33/-3
Offline Offline

Posts: 617


« Reply #10 on: November 25, 2012, 03:26:37 PM »

a quick mathematical surface model would be able to do what was suggested above.  i agree with el rey, less is sometimes better.  i really like where this thread is going.  this is a legit move in the right direction.  cheers phila dot.

how much unused free space is on the default m-box.  how about the m-box that has the programmed ALS/NLS?
we need to hear from RS4Boost on this, he probably knows off hand - and has programmed many custom routines with his own work on the K-box + WINols (?)
« Last Edit: November 25, 2012, 03:28:32 PM by nehalem » Logged
zillarob
Full Member
***

Karma: +13/-1
Offline Offline

Posts: 152


« Reply #11 on: November 25, 2012, 04:55:34 PM »

Badass!

Since this is going to be used for switching between fuels, how hard would it be to add a visual indicator for knock? Say for mixed fuels or incorrect map selection?
Maybe something similar to the cel flash for misfire, but flash both lights if knock cor goes above a few degrees.
Logged
prj
Hero Member
*****

Karma: +915/-426
Offline Offline

Posts: 5839


« Reply #12 on: November 25, 2012, 05:03:27 PM »

There is tons of free space.
There is no problem with it even on 29F400 ECU's.
Logged

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

Karma: +171/-11
Offline Offline

Posts: 1709


« Reply #13 on: November 25, 2012, 05:09:35 PM »

a quick mathematical surface model would be able to do what was suggested above.  i agree with el rey, less is sometimes better.  i really like where this thread is going.  this is a legit move in the right direction.  cheers phila dot.

how much unused free space is on the default m-box.  how about the m-box that has the programmed ALS/NLS?
we need to hear from RS4Boost on this, he probably knows off hand - and has programmed many custom routines with his own work on the K-box + WINols (?)

There's plenty of room within reason.

There's more than 3,600 bytes where I placed my maps, but there is a good amount of unused locations.

KFMIRL for example is 444 bytes, so four sets would be 1776 bytes!

If I was really concerned about space I could include the original maps as well.

My function is compatible with the NLS/ALS function. I don't use any of the same memory space.
Logged
phila_dot
Hero Member
*****

Karma: +171/-11
Offline Offline

Posts: 1709


« Reply #14 on: November 25, 2012, 05:11:31 PM »

Badass!

Since this is going to be used for switching between fuels, how hard would it be to add a visual indicator for knock? Say for mixed fuels or incorrect map selection?
Maybe something similar to the cel flash for misfire, but flash both lights if knock cor goes above a few degrees.

Good idea. It wouldn't be hard to implement.

What's a good threshold, > 5*?

I guess I could use a user configurable constant.
Logged
Pages: [1] 2 3 ... 10
  Print  
 
Jump to:  

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