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

Ends in --- --- ---

WinOLS Mastery: Map Identification & Editing: Finding and Defining Maps - 2D Maps

Watch This Course

$299 USD $149.50 USD

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 - 2D Maps


00:00 - In this module, we're going to be diving into one of the core elements of using WinOLS which of course is finding and defining the maps that we need to deal with in order to properly calibrate our ECU.
00:14 For our demonstration within this module, I will be dealing with our Bosch MED9.1 controller fitted to our Volkswagen MK5 Golf.
00:23 Now every controller we deal with is of course going to be somewhat different and really what I want you to focus on within this module are the core principles that we're dealing with, the pattern recognition, finding the pattern within our raw binary file and then defining that particular pattern and turning it into a map.
00:43 As long as you can understand these core concepts, you can apply these irrespective of the controller you are dealing with.
00:50 In order to keep this module somewhat short and manageable in terms of its length as well, we're not going to be going through and defining every potential map within our MED9.1 controller.
01:02 This does tend to become a bit of a rinse and repeat process, as does a lot of using OLS so we're going to use a few core maps that we're going to find and define that in my opinion give us a reasonably broad spread of understanding of what we're going to be doing here but I'd also recommend that you use this particular module in conjunction with our worked examples as well.
01:26 In our worked examples we're going to go through a full definition process, so we're going to be going a lot deeper into the process here.
01:34 Again I also recommend that you work alongside this module on a different computer and of course the file is attached below this module.
01:43 Let's get started by loading the file up into OLS and we've got that open right now.
01:50 Now on the left hand side at the moment it's showing that we've got 204 potential maps that it's found through pattern recognition and under my maps at the moment, we are starting with a fresh file essentially with no maps that are defined.
02:04 Important to mention here that once we find the maps, these will start populating under that my maps folder.
02:13 If you've ever made a mistake and maybe you've defined something incorrectly or you just want to start again with a fresh file, what we can do is simply highlight the maps that we want to get rid of, in this case let's just shift and arrow down, we'll highlight all of the 200 odd potential maps that OLS has found and then we can simply right click and we can come down to delete, that'll delete every single map that OLS has found, all of our maps that we've found and defined so we essentially get to start again.
02:44 Of course this does make our life a little bit more difficult because right now we aren't seeing any potential maps.
02:50 Whether that's an issue or a benefit to us is really a little bit up in the air.
02:54 As we already know, often OLS will ignore or miss out maps that we need to define and likewise, it may define maps or find maps I should say, that we don't need.
03:05 If we get ourselves into that situation though, we can simply run a background map search again and we can do this by going to our find menu, click on that and we can come down to restart background map search.
03:18 That'll just go through and it'll get us back to that same position where in this case, we've again got 204 maps.
03:25 Alright we're going to start by breaking this down and work from some of the simpler maps that we need to find, up to some of the more complex, so we'll deal with a relatively straightforward simple 2D map, we'll look at some 3D maps, we'll also look at some maps where we've got the axes not directly by the maps, so we actually have to find the axes, and we'll also look at some where we use a combination of eight bit and 16 bit values.
03:52 On that note as well, it is really important to make sure that you've got OLS set up in a way that we're actually going to be able to visually see these maps in our 2D view.
04:03 And that really comes down to our settings up here in our toolbar.
04:07 Now we will be dealing with eight bit and 16 bit maps, however at least while we are starting to try and find patterns we're looking for here, I would make sure that we have everything set up on 16 bit, I would also make sure that we are set with high low and we want to be using decimal which is our 255 icon there in our toolbar.
04:31 We've also got our signed or non signed option.
04:36 Most of the tables we will be dealing with are non signed, however we will have a look at our ignition timing tables and those are signed.
04:43 So a little bit of manipulation of these values as we go, or these settings I should say as we go is going to be important, otherwise you may find that you can't actually make sense of the values that we're looking at visually and they just don't match the pattern that we've offered.
05:00 Before we go too much further, also just a refresher on some of the settings and navigation options that we've got available.
05:07 Down in the bottom left of our screen here, we can see that we can choose to represent our values as text, 2D or 3D.
05:16 Let's just have a quick look at text there and we'll be looking at how we can use the text view as well as the 2D view.
05:24 Important at this stage though while we are doing our pattern recognition and trying to find an area of our binary file that matches the pattern that we're looking for, we want to make sure that we are using this 2D view so we see essentially what we've got on our screen at the moment.
05:41 Another element to consider here is on the bottom right hand side of our little navigation bar here we can see this is the area of the file where we've actually got our calibration data.
05:51 We've already actually jumped into that but essentially when we open this, we will end up having our cursor all the way over on the left and essentially we've got no data available so again we need to get ourselves over here in order to get to our data.
06:08 At this stage what I'd do is just double click and drag the location to at least the start of our data file.
06:15 Once we're a little bit closer, we can click to the left, that will jump us one screen to the left, or click to the right and that will jump us one screen to the right.
06:24 And that allows us to quite quickly navigate through the calibration data.
06:28 Another element to keep in mind here is the X and Y magnification or zoom values so particularly if we start expanding out our X values here, we can see that we get a lot more detail but it's also going to take a lot longer to get through our data.
06:46 What I'd suggest is when we're using our pattern recognition, make sure that you set up OLS to match the view that we've got on the sample and that way when we do find that particular area of the file, everything should match.
07:01 So with that out of the way, let's get started and try and find our very first map.
07:07 So in order to do this, let's have a look at the sample that we're going to be looking for.
07:11 And this particular map is our component protection map.
07:15 So this essentially defines the maximum relative cylinder fill.
07:19 So what we can see on our screenshot here is we've actually got a number of these maps, so the pattern sort of repeats.
07:26 We've got one there, another one here and obviously that just continues.
07:29 And understanding what this means is also important.
07:34 So we do have our actual map data here which I've just circled so that is our component protection maximum relative cylinder fill data and then to the left of this, the more regular shape, this is the axis that's associated with that table.
07:52 So this is the saw tooth pattern that we're going to be looking for.
07:56 Let's jump back into OLS and we'll see if we can find it.
07:59 Now you may have noticed that on the screenshot our X axis magnification was actually set to 800 so a little bit tighter than what we've got at the moment, however I'm just going to leave that at 200 for the moment.
08:12 Once we find the area of the map, we'll zoom in and make sure everything matches.
08:15 So what I'm going to do, because I know that right now I am located at the start of the calibration area, we're just going to scroll through to the right by right clicking to the right of our cursor, remembering this will jump us one screen to the right, and we'lll do this until we find that area of the map.
08:32 If we just jump back here, we will see that the addresses are listed down below so we're looking at an address area of maybe somewhere in the region of 1CF366 or thereabouts.
08:49 Now we don't want to take that as gospel.
08:52 In this case we might be dealing with a screenshot that is from a different software version, so the addresses are useful to a degree but may not align perfectly.
09:06 So let'.s head back to OLS now and we'll start scrolling through and see if we can find that pattern.
09:15 OK so we've actually found that pattern and let's just scroll ourselves back a little bit here so we can see a little bit more of the detail.
09:25 Now one of the tips to look for when we are looking for this pattern, that is the actual area that we want right there.
09:33 And specific to the MED9.1 we will always see this particular shape out to the right.
09:41 So this is actually our wastegate base feed forward table.
09:47 Now you obviously aren't expected to know this until you've got a little bit of experience but this is just one of the little pointers that lets us know we are in the right place.
09:56 So let's continue to get ourselves a little bit more central in this area here and what we'll do is now increase our zoom a little bit so we've got a little bit more detail.
10:06 Let's have a look at that, keep that in mind, we'll just switch across to our little screenshot again and yes it obviously does look the same.
10:15 Let's head back to OLS and see what our next step is.
10:19 Now there's two reasons that I wanted to demonstrate this table first.
10:23 The first of these is that as we can see here, OLS hasn't actually found these particular maps.
10:31 We can see out here to the left, and also out here to the right, OLS has highlighted some potential maps but it's actually missed the ones here that are of interest to us so OLS will not find these maps, we need to do this manually.
10:46 This is also a 2D table, so we've got our axis and then our Z values or our map values so I wanted to start with a 2D table because it is a little bit easier.
10:58 Alright let's have a look at how we can use OLS now to actually find the data.
11:02 So we know that the data area is going to be right here and we know that the axis values are off to the left here.
11:09 Let's just click on our axis somewhere and what we want to do is have a look at the values down here relative to our cursor position so we can see at the moment, the random place that I just clicked in the middle of that axis has a value of 14,000.
11:25 Let's see what happens to that value though as I move the left arrow key or click the left arrow key.
11:31 So it's coming down, keep going here, we've got a value now of 16 and then if we go further again, we jump to the left and now we are into a different map.
11:42 This value here of 16 is important, what this means is that the table that follows is going to be 16 wide, in this case again 2D table we only have an X axis, we don't have a Y value.
11:56 So we're now looking at 16 value to the right which will make up our X axis values.
12:04 So let's now set up OLS to work with this 16 wide 2D table and it actually already is.
12:14 We can see to the right here, it says width equals 16.
12:18 Now that's not always going to be the case so let's just pretend that it isn't.
12:23 We're going to start with something like this where our width is set to nine, so our first task here is to set the width that OLS is set up to to match the table that we're trying to define.
12:34 As we already know, this is 16, we're still on that value of 16 so what I can do here is use the M key, every time I press M we can see our width increments by one.
12:45 Now if we go too far, let's say we're out here to 17, we can use the W key and that will shrink it by one.
12:51 So I've done that, I've used the M and the W key now to set the width to match the width of our table, Now what we want to do is manipulate the way OLS is displaying this table at the moment so that we are going to be able to highlight our map or Z axis data.
13:09 So in order to do this, what we're going to be doing is we're going to be looking at this vertical line here, at the moment we can see there is a green vertical line being displayed.
13:18 If I hold down the control key and I use my left and right arrow keys we can see that at that point there, that vertical line disappears, I've now got my alignment correct so let's just have a look at that again.
13:31 So this is probably what everything's going to look like by default as we first get started.
13:35 So we don't know if we need to go left or right here but we're just going to hold down the control key and move left and right or right until that vertical line disappears like it has now.
13:46 At this point we're ready to actually define the map values and to do this, we know that our map values are down here, remembering that the values here are our axis values.
13:58 So what we want to do is highlight the map values.
14:00 We can do this just simply by holding down our left mouse key, mouse button, and we're going to start to the left of the area we're interested in, our map values, we're going to hold that down and we're just going to highlight the entire area here, doesn't matter how wide we go, as long as we have highlighted an area beyond the actual map values, which we've done now.
14:21 Alright now what we want to do is narrow things down so if we move our cursor over the left hand side of this gray area, we can see that the icon changes.
14:31 And that's what we're looking for, once that icon has changed, what we want to do is again hold down our left mouse button and we'll just pull that across and we'll see that it jumps to the start of our map value.
14:43 Now what we want to do is go to the other side of that and repeat the process, dragging it across to the left until we've got our map data highlighted, so let's go ahead and do that now.
14:57 Now that we've got the map area properly highlighted, we want to use the K key on the keyboard, so if we press that, what that's going to do is define this as a map and we can see we've now got some relatively useless values on its own.
15:13 It's actually found the X axis values here which happen to be RPM and on face value you'd be wondering, well how do I know that that is RPM? You get a feel for this once you've gone through and worked with enough of these files but in this case the maximum relative cylinder fill table is going to be relative to our engine RPM so we know that that is our axis there and these values here, our actual map values are our maximum relative cylinder fill.
15:44 So what we want to do now is scale these so that they actually make sense, so that they're numbers that we can actually understand and deal with.
15:53 So let's double click on our X axis for the time being and that will bring up our properties box here.
16:01 So what we can do is start by giving the X axis here a description.
16:08 So in this case, we know that this is going to be engine speed so we can enter engine speed.
16:14 Then we can also click here on our units and give it a unit.
16:19 Obviously we are talking RPM here so we'll choose this.
16:23 And we can give this an identifier as well, we can call it RPM.
16:26 Now the data source here is already defined, it's coming from the EEPROM and we've got the address for the start of that data source.
16:35 We can see that the structure here for our X axis is 16 bit high low.
16:42 Now in this case that is correct for this particular axis and this really comes down to how we were viewing the data originally.
16:50 In some instances we may need to manipulate that, particularly if the data simply makes no sense but we've got numbers which we'll see in a second are in the ballpark of what we'd expect.
17:00 So what we want to do is apply some scaling to get these into the values in the range that we want to see or would expect to see, relative cylinder fill we might be talking numbers, depending on the expected boost pressure, maybe in the region of maybe 170 to 200 plus.
17:17 So we're obviously a little ways off that.
17:20 Now let's come down to the bottom of this window where we've got our factor and offset and we can use this to now turn our raw RPM values into something that makes sense.
17:29 Now here is where our cheat sheet comes in, our cheat sheet includes our normal values that are used to convert the raw values into something that we can recognise.
17:42 Now there are patterns here that come down to values like 128, 256 etc, the list goes on.
17:51 There are also some known factors that we know from the likes of description files from Bosch, in this case for our RPM, what we want to do is divide that raw value by a factor of four.
18:05 So we can do that by coming down here to our factor and offset and we've got two ways of doing this, we can directly enter a value of 0.25 and straight away we can see over on the right hand side, we've now got an axis that really does look much more sensible as RPM, 1000 through to 6800.
18:25 Now other option which we'll be using just in a moment, we could leave that exactly as it is and really it comes down to what's actually happening here.
18:35 We see that the value that will be displayed is equal to, in this case one times the raw value.
18:41 So it says EEPROM there so that's our raw value.
18:44 We're also dividing it by one so essentially at this stage, it is just our raw value and then on the right hand side we've got an offset which is zero so that's just our raw value coming through.
18:53 Another way we can manipulate this here, if we click on the little function icon here, this is where we can define a formula so we want to click here on our little output radio button and now we can manipulate each part of the equation so we can see that we've got our input value there, we're going to have an adder, a multiplier and then a diviser.
19:18 In this case we're going to get exactly the same result if we divide by four, of course multiplying by 0.25 is the same as dividing by four so that is our first axis defined there.
19:31 We've got engine speed.
19:33 Let's click now on our map and that will allow us to define this map.
19:38 We can click OK, the other way of getting to that, if you want to be much more specific and make sure that you're not making any mistakes, we saw before, double clicking on the X axis there will take us straight to editing the properties of the X axis.
19:53 Let's close that down again.
19:55 And unsurprisingly, if we click in the Z axis or the map data, we see that this takes us to our map data instead.
20:03 And at least while you're getting started, this is probably a safer way because it ensures that you are being very specific with the axis or values that you are defining so I'd recommend getting started with that until all of this is starting to feel a little bit like muscle memory.
20:19 Alright so let's now give this map a name and we're going to call this maximum relative engine load and we can copy that by highlighting it, control C and we'll copy that into our description as well.
20:38 Units for this, if we click on the little icon to the right, this is percentage and we've already got our start address defined here, we already have it defined as a 16 bit high low value and what we want to do is now apply some scaling and if we come down to the bottom here, we've got everything that we already saw.
20:59 Now this is where our logic numbers come into play here so we want to basically look at the magnitude of the values that we've got out here to the right hand side and see which of our factors would actually make sense in this situation.
21:15 And we know that one of our factors is 4096 and we can see we've got numbers ranging up to about 5800, now if we divide by that factor, 4096 or a iterative of 4096, then that's going to have us with values well above 100% but again that's probably about right for relative cylinder fill so let's have a look and see how that works out, so we'll come back across here and we'll click on our little function icon.
21:46 We'll click on our output radio button and let's enter a value here, we know that we need to divide to bring these numbers down so we're not going to be multiplying.
21:55 Let's try that value of 4096.
21:57 OK obviously that's not quite where we want to be because it's dropped everything to a value of one.
22:04 That's OK though, as I said it'll be some iterative or like to be some iterative of this so let's take it back to 40, let's try in fact 4.096, OK little bit closer but everything's out by a factor of 10 there so let's simply try 40.96 and see what we've got.
22:24 Alright now we've got values that actually probably make a bit of sense, 140%, down to about 109%.
22:32 Now I'm pretty happy with that factor, I know for this particular table, this is correct but of course it's easy enough for us to manipulate this, if the numbers don't really stack up with what would make common sense for this particular table, we can try another one of our factors and see how everything looks.
22:48 Really easy to come back and change this if you're not quite happy, move that decimal point around until you've got values in the range that make sense.
22:56 Let's commit to that though, let's click OK.
22:58 Now quite often what we'd also like to do is add a little bit more precision in terms of adding some decimal places so we can do that down here with our leading and precision values.
23:09 If we click here on our little right hand window, we'll click the up arrow, we can add our decimal places as required.
23:18 Probably 1 decimal place for that particular table is going to be sufficient.
23:22 So there we go, we've now defined our very first table.
23:26 So we're still looking at the table itself, what we can do is press escape, that will close that table and we've still got that map area highlighted in grey from the first part of that process that we looked at so we want to also click delete.
23:41 So now we've actually got a map defined, you see when I click on it, it shows the map name there, maximum relative engine load and if we look across to the left hand side here, under my maps, if we look at my maps, we've got our first map there defined, so that is the process we're using here, we're now going to go ahead and repeat this just to build a little bit of that muscle memory up with the remaining maps.
24:07 Alright with the remaining maps that we've got to the right of the one that we've just defined, it is a simple rinse and repeat of that process but just to really clarify it, let's go through it exactly again.
24:20 So we know that we've already defined this map here and the pattern is simply a repeat so to the right we've got our next set of map data here and of course we've got the axis which we now know is RPM to the left of that.
24:34 So again, remembering the process is to start by finding out the size of the map, we already know that that is going to be 16 wide but let's just see how we do that.
24:44 We'll click onto the RPM axis data, we are looking at these values here which is the cursor location.
24:52 And if I continue to click to the left, we see 16 appear so we know that this is a 16 x 1 table.
24:59 We've already found that but just to repeat that.
25:01 And because we've already gone ahead and done this, we've already got the width on OLS set to 16 so no changes necessary there.
25:10 Now what we want to do is essentially move everything to align and get rid of our vertical line that we can see there so let's just do that.
25:20 Couple of clicks to the right and that's done.
25:23 Now we can highlight our map data, again what we want to do is just start to the left of that data, left click, hold down our mouse button and just highlight across that entire data, doesn't matter how wide we go here, we just want to make sure that we have highlighted the data we're interested in.
25:40 Come across to the left, wait for our cursor to change shape, now that it has, again we'll hold down our left mouse button and we'll just scroll across until we get to the start of our map data, come across to the right here, hold down our mouse button again and now we've got our map data highlighted, remembering that we now press the K key and that turns it back into a map so our job is done.
26:04 We've still got the same problem though which is going to get really tedious when we've got multiple maps of scaling and then defining the axes.
26:14 So there is a quicker way we can do this and I'm going to show you that now.
26:18 Let's press the escape key, that'll close down that map, we'll press the delete key and that will delete the area that we've highlighted, now what we want to do is come across and just left click on the map that we previously defined.
26:31 If I right click on this, and we come down to copy map properties and click on that, this will allow us to define what we want to copy from that existing map and really what I want to do here is just copy the scaling factors and the description etc so we can copy that really quickly into these remaining maps.
26:51 So in this case, we've got the description to the left hand side, so we can see that we've got the name, description ID and units, the factor and offset, those are going to be copied and from which areas of the map, well in this case don't have a Y axis but X axis and the map so that's what I want here.
27:09 On the right hand side, and we do need to be mindful of this, at the moment we've got this little tick box here for our data source plus address.
27:17 And I want to untick that so we're not actually going to be copying any of the data.
27:22 Let's click OK and that's going to copy that to our clipboard.
27:26 Let's come across to the map we just defined, right click on that, sorry double click on that, that'll open it again and now if we press control and V, that's going to apply the same scaling as our previous map.
27:39 So you can see that basically gives us a quick shortcut to do a lot of that heavy lifting for us.
27:46 Again, I would recommend while you're starting to get used to using OLS that you do it manually to start with, it is a tedious process but by doing this repetitively it's going to really reinforce the steps that you need to take.
28:01 Alright let's press escape.
28:02 So we've now got two of our maps defined and I'm going to go ahead and repeat that process again for the remaining, we've got one, two, three, four more to define so let's speed this process up a little bit, but it's going to be exactly the same, we're going to scroll across, we're going to highlight our data, press K, create the map, and then control V and that's going to paste in our map properties.
28:26 So let's do exactly that, so we'll use control and our right mouse button, our right cursor button I should say and that's got our alignment correct.
28:36 Again we'll drag across the area of our map, come across to the left there, drag that to the start of our map data, come across to the right hand side of our highlighted data, drag that back to the start of our map, or the end of our map, K key, now all I have to do is control V, press the escape key and delete key and our job is done so you can see how quick that process is.
28:58 Let's go again for our next map, again we need to get our alignment right.
29:02 Control and our right cursor does that, highlight our data and go again.
29:13 Alright at this stage we've defined all but one of our component protection, maximum relative cylinder fill tables and I want to also show you how we can use our text view in order to do this.
29:24 We'll be revisiting this once we look at some of our 3D maps as well.
29:29 But let's swap to our text view and see what that looks like.
29:32 So we can do that clicking on our text view and of course we've got our data contained within.
29:38 You can see the areas where we've already got those defined maps so let's have a look at some of this data and see what it means.
29:45 Now the point that my cursor is at at the moment is a value of 16.
29:51 Hopefully you'll recognise that because that was the number that we were looking at at the very start of our axis values, remembering these are our RPM axis values and that's exactly what we've got here, the values to the right here, 4000, 6000, 7000, all the way up.
30:06 We know these are our RPM axis values and what we'll know is that we're going to have 16 of these.
30:13 So let's start by getting the text view aligned to make a little bit more sense and we can see again down the bottom right hand corner, cheated this a little bit, we've got our width currently set to 11 and it's almost certainly, when we first go into this text view, the width or number of columns that we've got will not match the table that we're trying to find or define.
30:38 So again using the M key, that will increase our width, so we'll come out to 16.
30:43 Now what we've got is this little graphic over on the right hand side as well that shows a graphical representation of values we're looking at and you can see at the moment this doesn't really look like it makes too much sense so just like we did in the 2D view, I can hold down the control and use our, control key, and use our arrows to move around and as I do this, we can see that the little graphic on the right hand side also moves around.
31:11 If I click the right arrow key one more time, we can see that now this particular area is nice and smooth, it's all making sense, it's in a nice consistent shape so pretty confident that that's got my axis aligned correctly.
31:29 So what we've got here is our value of 16 telling us that it is a 16 wide table.
31:35 Then from where my cursor is, that is the first RPM axis point.
31:40 If we come across here, we know that our width is set to 16, we've got 16 values up to 27,200, that is our maximum RPM value.
31:48 And then the next piece of data that is contained here is our actual map data.
31:54 So what we can do here is hold down the shift key and right arrow, highlight that data, press the K key and that's going to do exactly the same thing but it's going to do it in text view, I just wanted to show the demonstration of both of those techniques, we'll see this repeated and it will become a little bit clearer as we go, particularly with some of our 3D tables.
32:15 Anyway, our map is defined, just through a different technique, again control V, will paste in our factor and description data, press the escape key, that will close that map down, delete key will remove that highlight and our job is done.
32:32 Let's head back to our 2D view, we've now got all of our component protection maximum relative cylinder fill tables defined correctly and again if we come across to the left hand side here and come up, we can see that we've got all of these defined here under my maps.
32:52 Let's move on and have a look at our next map.

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?