×

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

Ends in --- --- ---

WinOLS Mastery: Map Identification & Editing: ECU Logic Flow - MED9

Watch This Course

$299 USD

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

ECU Logic Flow - MED9

11.11

00:00 - In this module we're going to take a look at the way the Bosch gasoline range of engine controllers functions.
00:06 This however encompasses a range of controllers that spans many different years and it's also utilised by a wide range of different manufacturers for example, Audi, Volkswagen, BMW, Seat, Skoda and Ford may all use the same core controller.
00:21 As you can probably understand, more modern variants of the MED range like the MED17 also include more advanced strategies than the older ME7 for example.
00:31 Likewise, while the basic strategy of the controller remains relatively similar, there will also likely be some specific functions or options that are included based on the requirements of a particular vehicle manufacturer.
00:44 What we're going to do within these next modules is focus on the fundamentals of how an ECU family works so that you can understand the logic flow of the ECU's operation or in other words what inputs the ECU relies on and then order of operations.
00:59 This will then help you understand what maps will likely exist in the ECU that you'll need to locate and define in order to be able to make proper tuning changes.
01:09 This will be a high level view and we will get more specific with these controllers once we move into our library of worked examples later in the course.
01:17 Before we go too far though, let's start with the basics of Bosch's naming strategy or what the MED actually means.
01:24 M stands for Motronic which dates back to the ECUs Bosch developed back in the 80s.
01:30 This was a development of their previous generation of Bosch D-Jetronic ECUs.
01:34 Next we have the E which stands for electronic throttle or drive by wire as we usually refer to it.
01:41 Lastly the D signifies the ECU is designed to control direct injected engines.
01:47 There's also a Bosch MEV variant that's primarily used by BMW where the V stands for valvetronic or variable valve control.
01:56 Lastly there's also the MEG range which incorporates both engine and gearbox control within the same controller.
02:04 Let's dive into the ECU logic now and this begins with the driver's wish or driver's torque request table.
02:11 This table doesn't request a specific torque value in newton metres though but instead requests a percentage of the maximum engine torque and hence we'd expect to see values in the range of 0-100.
02:23 This is an important element to keep in mind when we're scaling this table.
02:27 It might seem like an unusual way to go about implementing torque control, not actually requesting a torque value, however the benefit of this strategy is that it works just as well on a small capacity naturally aspirated 4 cylinder engine as it does on a twin turbo large capacity V8.
02:43 The relative torque can be exactly the same even while the actual torque output is clearly vastly different.
02:51 Next we move into a table which converts the requested torque into a desired engine load.
02:56 This is one of the more important tables in the MED controller and has the German acronym KFMIRL.
03:03 This is one of the acronyms that you'll see referred to frequently on chip tuning forums although often there's a lot of confusion over what this table does and how to properly modify it.
03:14 This is a 3D table relative to engine speed and requested torque.
03:18 This is the value that is derived from the driver's wish table we just discussed.
03:22 The Z axis of this table is the requested cylinder fill or load value and this is represented as a percentage.
03:30 This value doesn't translate directly to pressure however as an approximation we can multiply it by 10 and add 300 and this will give us absolute pressure in millibars, at least approximately.
03:43 For example if we have a requested load value of 190%, we can multiply this by 10 to get a value of 1900 and then add 300 which gives us 2200 millibars or 2.2 bar absolute pressure.
03:58 If we subtract 1000, which represents our atmospheric pressure, we have a boost target of 1200 millibars or 1.2 bar of positive manifold pressure.
04:07 If you prefer to work in psi, then you can easily multiply the resulting bar by 14.5 to get a conversion to psi.
04:15 In this example, 1.2 bar, multiplied by 14.5 equals 17.4 psi.
04:22 KFMIRL works in conjunction with another table known as KFMIOP which is know as the map for optimum engine torque.
04:31 And this is the inverse of KFMIRL.
04:34 The axes this time are engine speed and engine load and the table values are relative engine torque.
04:41 An important point when it comes to the actual tuning of these tables is that when we make a change to one, we must make the inverse change to the other, otherwise the inverse table will no longer match.
04:53 The ECU will tolerate a small amount of error between these two tables but if the error is too large, you're likely to end up with torque limitation occurring.
05:02 That's a lot to take in and none of it is necessarily intuitive so let's stop and actually look at the interaction of these tables within OLS to really cement their relationship.
05:12 For our demo, we'll have a quick look at a file from our mark 5 Volkswagen Golf which is a Bosch MED9.1.5 and the table I've got highlighted here is our KFMIRL table but let's have a look at this numerically.
05:27 3D table of course, on our vertical axis here, we've got our relative torque request coming from the driver's torque request map.
05:37 Then of course on the X axis, our horizontal axis, we've got our engine RPM.
05:42 And the numbers within this table are our requested load or relative cylinder fill.
05:48 So if we look at a specific point here just to get a sense of how this works with our other table KFMIOP, if we go to our 4000 RPM column here and we pick a specific point, the one I've got highlighted here is for 80% relative torque request.
06:07 And we can see that our relative cylinder fill request there is 128%.
06:12 OK so let's now have a look at our KFMIOP, our inverse table, and see what that looks like.
06:19 So we'll head across to that table, this is what it looks like graphically.
06:24 Let's double click on that.
06:26 So now we've got the roles essentially reversed.
06:30 We do still retain our RPM on our horizontal axis.
06:34 The vertical axis, the Y axis in this case is our relative cylinder fill or requested load.
06:41 And the numbers in the Z axis, the actual table numbers here are our relative torque request.
06:49 So if we sort of look at about the same point, you'll remember we were 80% requested torque or relative torque I should say, at the moment I've got, we're don't have the exact same number but we've got 4000 RPM and 75% relative torque highlighted here.
07:05 And then if we come across to our Y axis, we can see that at 75.38, the number that I've got highlighted at the moment, we've got a requested cylinder fill of 120% but we were at 80% in our KFMIRL table so we're essentially sort of interpolating, we're sort of interpolating between our 75 and 86% here which by the same token also means we're interpolating between 120 and 140% requested cylinder fill.
07:39 So remembering the value from our KFMIRL table was 128%, you can see how this works.
07:45 So it's really important when we are modifying these tables that we make an inverse modification to the KFMIOP table.
07:54 If we don't do this and the values get far enough apart, this will risk bringing up a diagnostic trouble code and potentially dropping the engine into a limp home mode.
08:04 Let's get back into our module now.
08:06 So at this point, the controller is able to calculate the desired load but we're likely to find that if we log the ECU that it won't actually achieve the target load value.
08:15 The reason for this is what we also have a range of charge limitation tables or parameters that override the target load requested from the KFMIRL table.
08:25 We've got two sets of 2D tables that will limit the load relative to engine speed, the first of which is LDRXN which is the maximum cylinder charge table.
08:35 And secondly we have the LDRXNZK which is the maximum cylinder charge table during continuous knocking.
08:44 In simple terms, the first is the overall cylinder charge limit for normal operation and the second table can be used to reduce the boost pressure when knock is occurring.
08:52 In addition, there will also be a single value boost limit which acts as an overall limter and a pressure ratio limit table that accounts for turbo pressure ratio which is the compressor outlet pressure divided by the compressor inlet pressure which will be usually approximated as the barometric air pressure.
09:10 This pressure ratio limit table is usually relevant more so if you're operating at higher altitudes where the barometric pressure is low and hence the turbo needs to operate at a higher pressure ratio in order to achieve a given engine load.
09:24 Next we'll have a set of lambda target tables for normal operation and component protection which can be used to control the fuel delivery.
09:32 These are known as lambda driver's wish and lambda for component protection.
09:37 In an upcoming module we'll dive deeper into what component protection is but in essence it's a way of the ECU being able to vary the lambda target in order to help control combustion temperature.
09:48 The ECU will move from using the driver's wish lambda target to the component protection maps when the calculated exhaust gas temperature exceeds a specific threshold so there will also be a parameter to control this.
10:01 Relevant to accurate control of the fuel delivery is the mass airflow meter calibration or linearisation table, referred to as MLHFM.
10:10 Unless significant changes have been made to the inlet system or the MAF sensor is fitted to a different diameter intake tube, this shouldn't require adjustment for a basic tune but of course we can monitor the fuel trims to gauge the accuracy of the MAF scaling.
10:25 Lastly we can move onto the ignition timing tables which use the acronym KFZW.
10:31 Typically, you'll find a series of ignition timing tables that the ECU can switch between, depending on conditions, gears, or other parameters as required.
10:41 This list of course is not a complete and extensive list of every single table or parameter inside the Bosch ECU.
10:48 However for a basic stage one type tune where the engine is completely stock or only light modifications, such as an intake or exhaust have been fitted, these are the key tables that you're going to need to find and define in order to make changes to so that you have good control over the calibration and can achieve great results while tuning.

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?