×

Sale ends todayGet 30% off any course (excluding packages)

Ends in --- --- ---

WinOLS Mastery: Map Identification & Editing: Finding and Defining Maps - Signed Values

Watch This Course

$299 USD $149.50 USD

-OR-
Or 8 easy payments of only $18.69 Instant access. Easy checkout. No fees. Learn more
Course Access for Life
60 day money back guarantee

Finding and Defining Maps - Signed Values

23.43

00:00 - For our last demonstration here, we're going to be finding and defining our ignition timing tables and this adds another couple of layers of complexity.
00:09 The first of these is that the ignition tables are a signed table.
00:14 This of course means that we can have both positive and negative values in our ignition timing tables.
00:19 What it does is it impacts the way these tables look graphically when we are searching for them and this also actually helps us a little bit because once we know the pattern we're looking for with the ignition timing tables, they do become incredibly easy to spot.
00:36 The other sight layer of complexity here is that the ignition timing tables don't have the axis directly before or directly after the tables like everything that we've seen up to this point.
00:48 The axis values are actually somewhat removed from the ignition timing values and this would be difficult to just stumble upon randomly.
00:58 We really need a description file here in order to find where these axis values do lie and I'll be showing you how we can work with this.
01:08 I'll also show you how we can kind of work around this if you really can't find these values, although Bosch MED9.1 at this point is a relatively dated controller so finding access to this sort of information shouldn't be overly taxing.
01:24 Let's start by having a look at the patterns we're going to be looking for.
01:28 So this is what we're going to be looking for initially and what we can see here is that we are currently set up on a 16 bit view, high/low and at the moment we're looking at this unsigned.
01:41 This is important because this is how we're generally going to be searching through in our 2D view.
01:50 So what we're looking for here, we can see that we've got one of the maps highlighted at the moment, what we're looking for is this pattern of these big spikes at the start of the map values and you see that that repeats.
02:01 Then those are followed by this pattern we've got down lower.
02:05 So this is the pattern we're looking for when we are trying to find an ignition timing table.
02:10 These values up the top here, those actually max out at 65,535 as well and we can sort of see the top right corner, while it is a little bit cut off, the value there, so this is the pattern that we want to recognise.
02:27 Let's now have a look at what this will look like once we click the signed icon in our toolbar.
02:33 Alright so once we are viewing this in a signed format, we can see now that little button is greyed out, so that is active and we can see that we get rid of those big spikes at the start and now we've got values that are a little bit more sensible, we've still got that same pattern or shape to these and obviously they're sort of somewhat closely linked to the zero axis which we can see running through the centre there so that's what we're going to be looking for.
03:02 Let's jump back into OLS now and see if we can go about finding those.
03:06 So we're starting here with our driver relative torque request tables which we've found and, as usual we don't know if we're going to be going forwards or backwards.
03:16 I've cheated a little bit here, I know that these are actually to the left of our current cursor location so let's go ahead and search through for those.
03:33 Alright so we've found something that looks pretty promising here, we've got this shape here with those big spikes up to 65,535 and followed by that pattern.
03:44 At the moment we are viewing this with our X magnification at 100% so let's just make these a little bit larger and we'll just scroll across and get these in view.
03:56 And once we've got these in view we can then convert to our signed view and everything should essentially look pretty much like what we just saw in our screenshot so let's just click on our little signed button and there we go, we've now got our ignition tables in view.
04:11 Next thing of course is that we need to start by defining these.
04:15 Now we can see here there's no obvious shape at the start or we go to the other end, at the end for our axis values which is what I referred to.
04:25 That's OK, let's start by at least finding and defining the values themselves for our ignition timing.
04:32 So what we'll do is we'll click somewhere near the start of this table.
04:35 Doesn't really matter, we don't need to be too specific here but let's just switch to text view.
04:39 The table values in this instance don't make any sense, we're essentially looking at just garbage.
04:47 And that is because the table values for our ignition timing are a eight bit value and this is pretty simple to understand, if we have a consideration around the resolution, an eight bit number as we already know can go up to a maximum of 255.
05:04 Obviously even when we take signing into account with positive and negative values, that is way more resolution that we actually need for our ignition timing.
05:12 So let's click on eight bit and we'll convert that and now we've got our width, if we look down in the bottom right hand corner, set out to 34.
05:21 Way more than we need and we also have lost our little graphical view off to the side so let's just shrink this down by pressing the W key and we'll get down to something that's a little bit more sensible and start to see it take form.
05:33 We can see at the moment, I've just pressed that W key enough to shrink our width down to a value of 21.
05:40 What we're looking for is the same sort of thing we've already seen, we're looking for this graphical pattern out here on the right hand side to sort of start lining up and making sense.
05:49 At the moment it isn't, I'm just going to continue shrinking that down and what we should see as I continue to shrink that down, is everything start to form a line, we can see that is starting to happen now, we've got this line going on here, still not quite right though, let's shrink it down one more time and now everything is nicely lined up and again I'm looking for this vertical line down through here.
06:13 OK we're lined up, we've got the right width but our alignment isn't quite correct here.
06:18 We can see our cursor location sort of floating out here in the middle of nowhere.
06:22 That is our first value so what we want to do is use the control key, right arrow key, again we're just going to come across until everything lines up here with our little graphical view.
06:33 OK job is done at this point.
06:35 Now what we want to do is highlight the ignition timing table.
06:39 So we'll hold down the shift key, use our right arrow key and come across to the right.
06:43 And if we look down in the bottom left corner, it's telling us that this has a width of 12, so at the moment 12 x 1, we're not done though.
06:52 Holding down the shift key, we'll come down and highlight down until we get that repeating pattern, we can tell that we've got to the end of this particular table.
07:00 If we look at the graphical shape here, we can see that it's following a trend and then all of a sudden that trend dramatically changes.
07:08 If we also look here in the top left corner, the value directly below the area we've highlighted, we've got a value of 27 and we can see that's essentially repeating our pattern from our top left.
07:20 So we've got our table highlighted now.
07:22 Can press K to mark that and turn it into a map.
07:26 So at the moment we haven't found our axis value so obviously we've just got 0-15 on our Y axis and we've got 0-11 on our X axis.
07:36 12 x 16, 16 x 12.
07:39 Alright let's just press escape to close that down and this is where OLS actually does a pretty nice job of instantly recognising and finding these remaining maps, we can see when I close that down, it has already highlighted the next map down so that is actually correct this time, it's done its job properly, always worth just visually checking and doing a bit of a sanity check so again K, that will mark that map, escape and we can see, this is the process of just repeating that until all of those maps are marked so let's just go through that now.
08:26 Alright we've got all of our maps marked there, we can see we get down to these values here, zeros obviously, not relevant so I've just pressed delete there because OLS still marked that or highlighted that as a potential map and we know that it's not so what we've got at the moment is our ignition maps marked over here in our My Maps section.
08:47 We now need to find our axis values and start applying some scaling so that all of these values actually make sense.
08:55 Alright let's head back to our 2D view and we've got the tables that we have just defined here to the left and we can actually see, we've got this pattern here which should be looking pretty familiar, very very similar to our actual ignition tables that we've just defined.
09:11 And these are another set of ignition tables.
09:14 And the reason that I'm not going to worry about defining these is that we can see by the magnitude of the values that these are much more retarded values.
09:24 So let's look at our maximum values sort of running through about this point for these tables and if we look at the tables to our left that we have just completed defining, they are much more advanced, larger numbers meaning more ignition advance.
09:38 So there can be a variety of reasons for this, these might be timing tables to the right here, the retarded ones, these might be tables used when the inlet flaps are closed, for example they could be under a limp home mode or something of that nature but essentially very retarded tables, timing tables, not ones that we would conventionally be operating the engine in, hence we don't really need to worry about these for our tuning.
10:04 That's why we're not going to continue and define those.
10:08 Right now what we want to do is find the axis values which comes from our description file so I am cheating a little bit here because I know the address of these tables so what we can do is click down on our cursor value here and we want to enter the address we're looking for.
10:24 In this case, the first of those axis which is our RPM axis of 16 is at an address of 1CA920.
10:33 You can click OK or press enter and that will take us to that point.
10:38 Now at the moment everything is looking really messy, that's because we are in eight bit view.
10:44 Change that to 16 and we can see that we've got things that look a little bit like the shape of an axis.
10:50 We are still looking in our signed view so let's just change that to unsigned and the other element which we haven't defined this table here but this one that OLS has found, this is an important table as well, this is KFMIOP.
11:08 So these axes are located just before KFMIOP, that'll be a hint if we've already gone through and found KFMIOP.
11:17 Anyway we've jumped to the address that we know is the start of our RPM axis and we've got that down here so the first value there is highlighted as 2000.
11:28 Now if I just click my left cursor button we can see that this shows us a value of 16.
11:35 Now we already know this is the width of this axis so 16, that matches our table, so we're pretty good to go with that.
11:45 So what we can do here is just right click, copy address and well come back to our map here, doesn't matter which of these maps, double click on it and this is our RPM axis has actually been allocated here to the Y, we'll change that around in a moment so let's double click on that and we know that our axis here is engine speed so we can enter that.
12:08 Of course the units there are revs per minute, we can enter an ID of RPM if we wish.
12:16 Now the data source, this is coming from our EEPROM so we can click on that drop down menu, choose EEPROM and then start address, we just need to control V and that will copy in the address that we just selected.
12:31 Now on face value, looking at these values here, doesn't look like we've really done a great job because they are just essentially garbage.
12:40 This isn't an uncommon situation and this comes from the fact that the RPM axis is presented as a 16 bit value and we can see that the data organisation currently is selected as eight bit.
12:53 So we need to come down to our data organisation, open that drop down menu and we want to select 16 bit high/low.
12:59 All of a sudden we've got an axis that now we should recognise if we're starting to get the hang of this, 26,000 that looks like an RPM value.
13:08 We do need to apply our scaling there though and we already know that this will be either multiplied by 0.25 or divide by four, essentially the same thing so we can come down here, enter a value of 0.25, we've got our RPM axis now defined.
13:25 We'll click OK, we now need to repeat that process for our load axis, our relative cylinder fill so let's close down our map by pressing escape.
13:36 Again, I know the address for our, what is now our X axis, our relative cylinder fill so I'm going to enter that which in this case is 1CA97E, very close to where we just were prior to looking, when we were looking for our RPM axis.
13:56 So that is where we are right now and again if we look at the values here, the first value for this axis is a value of 427 but if I click the left cursor button we can see that that shows us that this axis is 12 long so everything's lining up here, again we're just to the left of our KFMIOP table.
14:18 Another hint here in terms of what we just saw where we had our eight bit data organisation by default and everything looked garbage.
14:27 Well at the moment everything's looking sensible and you can see that we are currently looking at this with a 16 bit data arrangement so if we click on eight bit, again absolute garbage so these are the hints that we can use while we're operating with OLS to help us decide what the data organisation should be.
14:49 Alright so at this point I have got my cursor back into the correct spot with the first axis value.
14:56 So again we can come up where our cursor is, right click copy address, again we're going to come back to the map that we are working on here, this one here, we've already got our RPM axis defined, we double click on our relative cylinder fill.
15:14 We want to start by entering a description here which we know is our relative cylinder fill.
15:22 The units of course are percent and the data source here is coming from our EEPROM.
15:29 We can now copy or paste in our start address, control V to do that and again the data at the moment looks like it is incorrect and again same reason as our RPM axis there.
15:43 Our data organisation is set to eight bit so let's just simply fix that.
15:49 We'll choose 16 bit high/low, now we've got values that make a little bit of sense.
15:55 Now this relative cylinder fill, we need to still add some scaling to this and this is again one of those areas that's a little bit confusing, this is not one of our logical numbers so if we click on our function key here, and click on our output, there's a couple of ways we can go about this.
16:14 The actual number is 0.02348 as a multiplier.
16:19 And that actually works out as our non logical value of 42.67, we'll click OK and we can see that that's what it gives us here as our factor.
16:31 Alternatively if you're doing this a lot you'll probably end up just memorising that factor, 0.02348, you can just paste that straight in there, that's going to get you the same results.
16:41 Now this is a number that is a little bit tricky for people to remember, doesn't follow our logical number order.
16:50 However, if you really are struggling here, while it's not going to get you the exact result, you can also use our logical range of numbers and 4096 or in this case 40.96, is going to get you so close to correctly defining the axis for relative cylinder fill that under almost all conditions, it's probably not going to make enough of a difference but it is technically slightly inaccurate.
17:17 So let's just have a quick look at what that would look like.
17:19 Let's just set our factor back to zero.
17:23 Or one in this case, go into our function here, click on our output and our 40.96 multiplier, you can see that this maximum value here correctly defined, sits at 170%, we've now jumped to 177 so as I said, not quite exactly correct so I just wanted to represent both of those options, 42.67, click OK and now we want to add a little bit of precision to that as well so I'll add a couple of decimal places.
17:54 Alright so we've defined our two axes here, however we haven't done anything with the ignition timing values.
18:01 And again this is an unusual factor, this is just one of the known factors that comes from description files from Bosch, we've added some cheat values to speed up the process for you so in this case if we double click on our map, we know that this is our ignition timing.
18:17 So we'll enter that, we can control A, control C, tab and control V to paste that into our description and we want to now give this our scaling.
18:31 In the case of ignition timing and Bosch MED, the factor is 0.75 so again not something that you're initially going to be able to guess but we know this from the description file so our job is done there, we can click OK.
18:44 Alright now that we've got our table properly defined, one more aspect that I just want to show you, because this by default has actually arranged our table in the opposite order to what we've arranged or had all of our other tables defined as with RPM on the X axis and our relative cylinder fill on the vertical axis.
19:06 Now this is a personal preference, there's absolutely nothing wrong with this and working from this table exactly as it is.
19:12 However if you do want to swap those axes, we can come up to the top right corner of our table, right click and if we come down here we want to click on swap axis plus map.
19:22 Really important that we make sure we don't just click on swap axes because this will swap the axes but not the table values so it's basically going to be quite dangerous so we'll do that, now we've got something that looks a little bit more like what we are used to.
19:39 Again absolutely nothing wrong with the way it was arranged, absolutely personal preference here.
19:44 Alright so let's just press escape here and what we're going to do is now copy those map properties so that our axis values and all of our scaling data can be copied into these other maps so we'll simply right click here, we'll click on copy map properties and this time there is a little bit more work to do.
20:03 Under description, we want to make sure that our name, description ID, factor and offset are all ticked and we're going to apply this for our X, Y and Z axes.
20:13 Over here on the right hand side we also want to copy some of our data.
20:18 In this case, data organisation, that's important because we want to make sure that it's represented for our axes as a 16 bit high/low, not eight but, we've already seen the implications of that, we're also going to be copying our data source plus address.
20:30 But importantly from which maps areas, only our X and our Y axis we don't obviously want to copy the map data so we'll click OK.
20:40 Let's double click on the next map across, control and V and we can see everything is now applied, all makes sense, we can press escape.
20:50 Move across to our next map, control V and this is just again as usual a rinse and repeat so let's go through and apply this to our remaining maps.
21:06 Alright so our job's done there, we've got all of our ignition timing maps that are at least of interest to us in terms of tuning the engine, marked and defined, scaled correctly.
21:17 Now this comes back to what are we going to do if per chance we can't find these axis values.
21:24 Obviously as I've mentioned, these aren't in a sensible location, unless we know where to look for them, this does get a little bit tricky.
21:31 Ideally of course we do want to find those axis values, I've shown you how to do this.
21:35 Getting hold of a description file for an older controller like this generally is not too difficult so a little bit of digging and detective work, we should be able to find this information.
21:45 However, we already know what the relative cylinder fill and RPM axis looks like from some of our different tables.
21:53 So we can basically cheat and essentially use those axis values that we've already defined elsewhere for some of our other tables and this will give us a sense, when we are actually going through and tuning, where abouts in those undefined tables we actually want to be making our ignition timing changes.
22:11 So yes it might not be perfect but we're going to be creeping up on our timing changes or any of our tuning changes anyway so we'll be able to get a sense or a chance to test and find the magnitude of changes and how that actually affects the engine operation so thats's an absolute last ditch effort, of course we always want to do the job properly and properly define our axis where possible but just giving you an option, all is not lost if we really absolutely cannot find this information.
22:39 Alright so I'm going to end this demonstration here, now obviously we've looked at defining four maps and I've tried to incorporate a range of the different skills that you're going to need to master, understand, develop, in order to define the remaining maps.
22:56 Now I obviously can't define every potential map that you're going to come across within this one module so really rather than the specifics of the tables we've just looked at, I want you to really focus on the general skills that I represented here and remember as I said at the start of this module, we can also lean on the worked examples to help fill out our knowledge and really fine tune our skillset.
23:22 Remembering as well, this is something that you are going to have to practice yourself in order to commit the process to muscle memory.
23:29 Just watching me do this is probably not going to be sufficient to really help you when it comes to defining your own maps.
23:37 Let's move onto our next module.

We usually reply within 12hrs (often sooner)

Need Help?

Need help choosing a course?

Experiencing website difficulties?

Or need to contact us for any other reason?