Darryl@pcmtec Posted February 5, 2019 Posted February 5, 2019 Part 1 Basic Speed Density tuning and LOAD calculation In this guide we will explain the basics of Speed Density (SD) tuning and then go further into detail. The basic level (Slope tuning) is probably enough for most tuners to get their vehicles set up to a high specification. In general if you have not really modified the vehicle heavily your speed density tables should be well set up by Ford and you may only be seeing areas outside the normal because of injector scaling being out. You should start with your injectors dialed in to a high level and they should be dialed in on a stock car where possible. Starting with factory injectors to dial the car in with the new mods will save a lot of time resolving injector scaling issues. A lot of high performance vehicles use injectors with good data supplied and tuning them often requires no changes to the Speed Density tables. Enough of a rant, lets get into it. Speed Density Calculations The sample vehicle is a factory turbocharged vehicle, therefore we will be using the Open IMRC SD tables. The SD systems calculates the amount of air mass entering the engine based on different sensor inputs. In a nutshell the calculation is: Air Mass = VE_CORRECTIONS * (MAP - MAP_0) / SLOPE Where: Air Mass is the mass of air injected into a single cylinder (AirCharge in Ford language) MAP is the Manifold Absolute Pressure measured from the Temperature/MAP Sensor (TMAP) MAP_0 is the calculated offset for the MAP sensor SLOPE is the calculated Slope VE_CORRECTIONS, Volumetric Efficiency corrections for the SD tables based on, but not limited to, Coolant and Intake temperatures The Calculated SLOPE and MAP_0 will be expanded further as we progress. Part 1 Basic Level Tuning or Basic level SLOPE tuning In order to make the VE_CORRECTIONS = 1.0 we will assume Ford Standard temperatures and pressures (FSTP): Barometric pressure of 29.921 inHg, intake temperature of 100F and Coolant temperature of 200F, yes all imperial measures! We will start with just a couple of the SD tables and this will suffice for quite a high level of tuning. In fact most tuners will only tune in the slope table as this will, generally, provide enough capability and allow tuning in a time allocated to tuning a vehicle. We will also be using the BF for our example (catch code 77DA) as it has the most modifiers to the SD tables (complexity/flexibility). Lets start with the two tables we will be using to tune SD: auF0056: This is the theoretical MAP value when AirCharge is zero. auF0061: This is the Slope of MAP per AirCharge value used in the speed density calculation Both of these tables take as their inputs RPM (x) and Intake Cam Angle (y). Immediately you will see you should log Intake Cam Angle/RPM/MAP to do analysis. Here are the two tables fro a stock calibration: Note the highlighted cells, we will be demonstrating the calculation for the Intake Cam angle of -10 degrees at 3000 RPM and a MAP reading of 50inHg (roughly 10psi of boost pressure). The calculation of the Air Mass will be: Air Mass = (50 - 2.7) / 19200 ~= 0.00246354 lb of air This will be of more use later but lets say at this RPM point on our dyno log we were commanding a lambda of 0.8 off the base fuel table and we actually read from the dyno wideband 0.82. In order to increase the calculated Air Mass in order to get extra fuel in we will need to reduce the Slope table as it is a divisor. You would do this by multiplying 19200 by desired lambda (0.8) / Actual (0.82) = 19200 * 0.8/0.82 ~=18732.0. You would repeat this process for each point in the rev range where the dyno wideband shows a difference between commanded lambda and actual lambda. If your Dyno does not log Cam Angle then all is not lost. You can use the following table to determine the theoretical cam angle for a given load: The highlighted cells are for when the car is on full load. So lets see which cells you would be modifying on a dyno run for the slope corrections. Here are this cells you would be modifying assuming you started your run from around 1600RPM: If you do have intake cam angle then pick the cells either side of the logged point. In the above example if the intake cam angle was logged as being 12 degrees at 5250 RPM then you would only need to alter the 10 and 20 degree cam angle points. In order to speed up the process you can delay tuning the SD tables and tune the base fuel table like a scratch pad. Here is the Base Fuel Table: So if our dyno runs shows variations in the commanded lambda to desired lambda or the following: then you can easily alter the SD cells in the SD tables for the RPM points 3000 -> 4000 to get the desired result. NOTE if you see something like this: Where B is the Wideband reading and A is the desired lambda from the Base Fuel table. This is a good indication your injector data is not correct and you could look at dividing your high slope by about 1.07. LOAD LOAD is calculated from the AirMass. The Basic formula for calculating LOAD is: LOAD = Air Mass / auF0008 (Airmass of a cylinder as sea level) So the LOAD from the above example with AirMass of 0.00246354 is 00246354/0.001723 or approximately 1.43 What happens to LOAD when I change the SD tables to get the commanded lambda? Say for example we had to alter the above example and increase fuel in this region because we altered cam shafts. So instead of 19200 we ended up with a quite big change like 16600 to get the commanded lambda. The new load would be: Air Mass = (50 - 2.7) / 16600 ~= 0.0028494 lb of air And the new LOAD would be 0.0028494 / 0.001723 ~= 1.65 You will need to take this into consideration when tuning the LOAD based tables such as spark. You can simplify this by using the new load will be 19200/16600 * old load. That is 19200/16600 * 1.43 = 1.65. This is assuming you have not changed the MAP at Zero value. It will quickly become apparent that if you are tuning the SD tables to resolve injector scaling issues you will end up with a very different load than what you expect and your timing could be substantially different to what you are expecting,. edit: The old summary thread can be found here for some more information including the full mathematical equation behind the model. 3 1 Quote
Darryl@pcmtec Posted February 5, 2019 Author Posted February 5, 2019 Part 2 Tuning Correction Speed Density tuning The Tuning Correction (TC) is a multiplier to the SLOPE calculation outlined in Part 1. It is applied to the SLOPE calculation after all other calculations on the SLOPE are performed. We will get to the other SLOPE modifiers in Part 3. Tuning Correction needs some explanation as the table uses RPM for the x axis and Percentage Inferred LOAD (%Load) for the Y Axis. Percentage Inferred load is not calculate from LOAD at all but is really table that allows the throttle position to be a modifier to the load calculation. Basically %Load is calculated in the following manner: Air Load is calculated for Wide Open Throttle (WOT) = AIR_LOAD_WOT Air load is calculated for the current throttle position (TP_REL) = AIR_LOAD_TP Exhaust Gas Recirculation is subtracted from AIR_LOAD_TP (ignore for the time being) AIR_LOAD_TP is then "clipped" between the 0.0 and the AIR_LOAD_WT. This means that if AIR_LOAD is greater than AIR_LOAD_WOT it will use AIR_LOAD_WOT or if it is less than 0.0 it will set AID_LOAD_TP to 0.0, otherwise it will use AIR_LOAD_TP. %Load = AIR_LOAD_TP/AIR_LOAD_WOT The result of Equation 4 means means the %load is capped at 1.0 Inferred is another was of saying that the PCM does not have the actual sensors to calculate the real value so it uses other sensors to come up with an approximation of what the value would be. In this case we are referring to LOAD based on throttle position. Here is how the two AIR_LOAD_WOT and AIR_LOAD_TP are calculated: AIR_LOAD_WOT= auF0046(RPM,1023.0) - ( auF1564(RPM,CAM_ANGLE) * auF11002(RPM,TP_REL) ) Where: auF0046 This table is used to determine the load when the MAF is failed (or no MAF) and the IMRC is Open. auF1564: "Compensation multiplier table for VCT actuator non-linearities" auf11002: "Aircharge subtractor at sea level for variable cam timing" AIR_LOAD_TP = auF0046(RPM,TP_REL) For 77DA the tables other than auF0046 will work out to be 0.1 or less (see later images of them). Basically we should work with auF0046 to calculate %Load and leave the correction as an exercise for those more curious. At WOT the above calculation will yield a %Load of 1.0. Now assuming we cruising along at 2000 RPM with a throttle position with an A/D count of 130 ( low throttle) then using auF0046: We would get the LOAD_WOT = 1.18 and LOAD_TP_REL would be 0.68. Therefore %Load = 0.68/1.18 = 0.57 This is probably not what you would be expecting in your normal load calculation. Hopefully this helps you determine the cells you would need to alter for the tuning correction table on part throttle. Here are the other tables if you would like to work out the remainder of the calculation: auF1564: auF11002: 3 1 Quote
Darryl@pcmtec Posted February 6, 2019 Author Posted February 6, 2019 Part 3 MAP_0 Calculations If we exclude Cam Overlap (Part 4) MAP_0 calculation is quite simple: MAP_0 = MAP Intercept * Barometric Correction Where: MAP Intercept is auF0056(RPM,CAM_ANGLE) * Barometric Correction is auF0058 auF0056: auF0058: As can be seen by these tables the barometric pressure around see level will have little impact on the 2.7 value from the MAP Intercept At Zero AirCharge 2 1 Quote
Darryl@pcmtec Posted February 6, 2019 Author Posted February 6, 2019 Part 4 CAM Overlap Corrections Almost done, these calculations are for the more for completeness than necessary for your tuning. If you change cams in the car then you will have to look start tuning in these tables as the above ones may not get the result required. Both MAP_0 and SLOPE are modified by the Overlap Angle (CAM_OVERLAP). If your dyno does not log Cam Overlap angle we will use the following VCT table to "guess" the angle: For our example we will assume at least a load of 1 and hence our overlap will be 20 degrees We will be using the example from Part 1 for the calculation. Catch code is 77DA, use the Calibration Utility to download the Stock file. SLOPE Overlap Corrections Lookup on the table auF0061 (in the example the value is 19200) = SLOPE_VALUE = [19200] Lookup table auF0064(RPM,CAM_OVERLAP) the adder value : SLOPE_ADDER = [0.0 ] Lookup table auF0063(RPM,CAM_OVERLAP) for the Multiplier = SLOPE_MULT = [ 0.83] SLOPE = SLOPE_VALUE + SLOPE_ADDER) * SLOPE_MULT = (19200 + 0) * -.83 = 15930 Lookup auF16632(RPM,%Load = TC = [1.0] from Part 2 SLOPE = SLOPE * TC = 15930 MAP_O Overlap Corrections Lookup auF0056(RPM,CAM_ANGLE) to get the MAP_ZERO value as per example 1: MAP_ZERO = [2.7] Lookup auF0066(RPM,CAM_OVERLAP) to get the adder term: MAP_ZERO_ADDER = [0.0] Lookup auF0065(RPM,CAM_OVERLAP) to get the multiplier term: MAP_ZERO_MULT = [1.0] Lookup auF0058(BAROMETRIC PRESSURE) to get the correction: MAP_ZERO_BARO_CORRECTION = [1.0 @ FSTP] MAP_0 = [ (MAP_ZERO + MAP_ZERO_ADDER) * MAP_ZERO_MULT] * MAP_ZERO_BARO_CORRECTION] = [ (2.7 + 0.0) * 1.0] * 1.0 So for the Turbo the Ford Calibrators did not do much with the MAP_0 overlap corrections but if you have a look at the SLOPE Correction they have applied a value which would indicate an approximate increase of 20% fuel (1/0.83) which implies a 20% improvement for Air Mass using VCT. 2 1 Quote
scotty Posted April 4, 2019 Posted April 4, 2019 In the slope of map vs surcharge table what are you doing with 250rpm column? Just curious that's all. Scotty Quote
Roland@pcmtec Posted April 4, 2019 Posted April 4, 2019 20 minutes ago, scotty said: In the slope of map vs surcharge table what are you doing with 250rpm column? Just curious that's all. Scotty Can you give some more information? What specifically do you mean? Quote
Roland@pcmtec Posted April 4, 2019 Posted April 4, 2019 2 minutes ago, scotty said: Auf0061 first column What do you mean "what are you doing with 250rpm column" ? As in what are the stock numbers? Quote
scotty Posted April 4, 2019 Posted April 4, 2019 Oops Sorry Roland I was fine tuning the speed density maps and of course I wondering if you leave those figures as is or match the next column cos the car won't idle at 250rpm lol Quote
Roland@pcmtec Posted April 4, 2019 Posted April 4, 2019 1 minute ago, scotty said: Oops Sorry Roland I was fine tuning the speed density maps and of course I wondering if you leave those figures as is or match the next column cos the car won't idle at 250rpm lol It is just for cranking the engine. So probably no need to ever change them. Quote
scotty Posted April 4, 2019 Posted April 4, 2019 Ok thanks. That's what I did but was curious lol Quote
fordsrule Posted May 6, 2019 Posted May 6, 2019 Hi, just asking if it matters, i see the example car is turbo, are there tables for an n/a engine? thx Quote
Roland@pcmtec Posted May 7, 2019 Posted May 7, 2019 Yes you need to use the IMRC tables as well depending on whether the IMRC runner is open or closed. Turbo has the IMRC removed so it is a bit simpler. Quote
fordsrule Posted May 7, 2019 Posted May 7, 2019 6 hours ago, Roland@pcmtec said: Yes you need to use the IMRC tables as well depending on whether the IMRC runner is open or closed. Turbo has the IMRC removed so it is a bit simpler. Ok, thanks for clearing that up, I thought it was the other way round Thx Quote
Milanski Posted June 27, 2019 Posted June 27, 2019 for the BF is the VE Correction table 16632 uses inverse numbers i.e: slope = 1 / auF16454 fg/ auF16632 bf tuning correction (rpm, load) * (auF0059 fg / auF0061 bf slope of map (n, cam_angle) + auF2928 fg/auF0064 bf slope overlap adder (rpm,overlap_angle) ) from a previous Post by Roland. Slope = 1/auf16632 * (auf0061 + auf0064) Quote
Roland@pcmtec Posted June 28, 2019 Posted June 28, 2019 Not really following what the question is. Quote
Milanski Posted June 28, 2019 Posted June 28, 2019 Good question - seem not have asked one. But it should have been: Does VE Correction table 16632 get inverted and then used in the air map calculation. i.e. make the system leaner? Slope = 1/auf16632 * (auf0061 + auf0064) Slope = 1/VECorrection * (Slope of MAP per air charge + CAM adjust slope). In my case having a V8 with no VCT its 1/VECorrection * Slope of MAP per aircharge. Is this correct. Quote
Roland@pcmtec Posted June 28, 2019 Posted June 28, 2019 I'm not sure off the top of my head. Those kind of questions are easier to answer by experimenting, just put some silly numbers in there and see what happens. Something to be aware of, the load is not actual measured load, but inferred load based on throttle opening. So the load numbers you see on tuning correction are not going to match your load on the spark map. Quote
fordsrule Posted January 28, 2020 Posted January 28, 2020 Hi, I have a question regarding the calculation to increase the calculated air mass in order to get extra fuel, this calculation is based on the commanded lambda being less than the actual lambda. So if in the case where the commanded is more than the actual lambda, it may be obvious but i'm just checking if I simply do the inverse when calculating? In other words where the equation says to multiply I would divide? Cheers Steve Quote
Roland@pcmtec Posted January 28, 2020 Posted January 28, 2020 Try silly numbers like adding 25% or subtracting 25% and see what happens. Remember that this guide assumes your injectors are appropriately scaled. Quote
fordsrule Posted January 28, 2020 Posted January 28, 2020 20 minutes ago, Roland@pcmtec said: Try silly numbers like adding 25% or subtracting 25% and see what happens. Remember that this guide assumes your injectors are appropriately scaled. Ok, thankyou. The injectors are stock as far as I know Cheers Steve Quote
fordsrule Posted March 9, 2020 Posted March 9, 2020 Hi, I've come back to the subject of Speed Density again to study it some more and have a question regarding the IMRC. I have discovered that the switch/s are auF0013 = "0" and auF0012 is also "0". I take it this means "off" The car is the XR6 N/A with a CAI Also, in my limited understanding of Speed Density tuning, wouldn't it be better to have the IMRC operational? Thanks in advance Cheers Quote
Roland@pcmtec Posted March 9, 2020 Posted March 9, 2020 There is no IMRC installed on the turbo models as it restricts airflow. It's only useful in an NA engine to increase air velocity. Quote
fordsrule Posted March 9, 2020 Posted March 9, 2020 7 hours ago, Roland@pcmtec said: There is no IMRC installed on the turbo models as it restricts airflow. It's only useful in an NA engine to increase air velocity. Yes, i understand that, my question is, is it meant to be set to zero or one? Thanks Quote
JMSMotorsport Posted June 12, 2020 Posted June 12, 2020 Is it the same process for the V8? Obviously no VCT so do you just alter all the cam angles in Auf0061? Also a injector slope tuning question is this required on stock injectors or only if changing to bigger ones. Quote
Roland@pcmtec Posted June 12, 2020 Posted June 12, 2020 V8 5.4 all rows are the same so a bit easier. Don't need to touch slopes for stock injectors Quote
JMSMotorsport Posted June 15, 2020 Posted June 15, 2020 On 6/13/2020 at 12:59 AM, Roland@pcmtec said: V8 5.4 all rows are the same so a bit easier. Don't need to touch slopes for stock injectors Where does the load axis come from? As Cruise and WOT will be different fuelling requirements. Quote
Roland@pcmtec Posted June 15, 2020 Posted June 15, 2020 There is no load axis. It uses the speed density algorithm as discussed above. Approximated as Air mass = map * slope + offset As you can see you don't need a load axis as map pressure takes that into account for you. It is a linear relationship for a given rpm point. If fueling is off at cruise only you modify the offset table, if it's linearly off at all loads you modify the slope table. Quote
JMSMotorsport Posted June 15, 2020 Posted June 15, 2020 Ah yep, so basically you tune this single axis table at say wot on a ramp run and then every other load area is worked out by the pcm’s algorithms. That’s a bloody good system. Quote
Roland@pcmtec Posted June 16, 2020 Posted June 16, 2020 1 hour ago, JMSMotorsport said: Ah yep, so basically you tune this single axis table at say wot on a ramp run and then every other load area is worked out by the pcm’s algorithms. That’s a bloody good system. Yep so in a perfect world you simply enter your lambda value in the base fuel table and happy days, all loads/boost levels will match that lambda. This assumes your injectors and speed density are dialled in correctly. On a mustang they literally give you a single scalar for fueling at WOT, assuming the rest is stock there is nothing to do as it will match this value. Once you start changing camshafts and putting large turbo with different backpressure you will need to start manipulating the speed density. On a locked cam V8 its very simple as you'll find your error will almost always be linear so regardless of load you can multiply that rpm cell by your error term and get close to target. On a VCT enabled car (5.0s have inlet and 4.0s have both inlet and exhaust) you'll find you need to log inlet cam angle, rpm and your fueling error. Then you modify the correct rpm column AND row. From a simple perspective you can log VCT inlet angle instead of load and tune it in a similar fashion to how you would log load on say a commodore. The only times you need to adjust the offset table are when you have decel/cruise fueling errors but perfect fueling on full load. This is typical with a larger camshaft as you start getting reversion etc. Quote
JMSMotorsport Posted June 16, 2020 Posted June 16, 2020 Thank you, that’s a great explanation. Coming from GM based VE tuning it’s a much different world in the Ford ECM. Quote
Roland@pcmtec Posted June 16, 2020 Posted June 16, 2020 3 minutes ago, JMSMotorsport said: Thank you, that’s a great explanation. Coming from GM based VE tuning it’s a much different world in the Ford ECM. Indeed it is. The main reason for a system like this is the fully variable intake/exhaust cam. As if you were to imagine a commodore with 10 different camshafts (all different overlap in 5 deg increments but the same TDC timing) and their VE maps. Then another 10 different camshafts which are offset +-45 deg from TDC with no overlap and their VE maps. Then trying to somehow tune all 100 VE maps by hand it would be impossible. However if you actually did tune all 100 maps, you'd see that they were simply multiples of each other. Knowing this you could come up with a formula to approximate or guess the VE map without ever actually tuning it, this is basically what the Ford system is. This system means you can have infinitely variable inlet AND overlap at the same time, and still tune it with only 2 tables. Quote
JMSMotorsport Posted June 16, 2020 Posted June 16, 2020 Indeed the Variable camshaft Timing adds a large degree of changes in VE and as you say would be a nightmare to tune this system that way. I had good results tuning the slope table on a XR6T but the non variable V8 threw me but as explained seems straight forward. Quote
JMSMotorsport Posted June 18, 2020 Posted June 18, 2020 Rolan, only thing I’ve missed is the offset table what’s the number of this in the software so I can do a search. thanks. Quote
Puffwagon Posted June 19, 2020 Posted June 19, 2020 2 hours ago, JMSMotorsport said: what’s the number of this in the software so I can do a search. Hi mate, you can search by name as well. Even a partial name will start to bring up a list of tables etc that you can look through and choose from. 1 Quote
Roland@pcmtec Posted June 19, 2020 Posted June 19, 2020 2 hours ago, JMSMotorsport said: Rolan, only thing I’ve missed is the offset table what’s the number of this in the software so I can do a search. It is listed above in the post by darryl. Map intercept at zero aircharge is the one you want. The intercept is the c part of the y=mx+c equation, otherwise known as an offset. 1 Quote
JMSMotorsport Posted January 22, 2021 Posted January 22, 2021 I’m curious, in the BA pcm it only has the slope tables for IMRC Open and on the BF it has these plus another BF specific one. At what point is the IMRC open table used on the BF? This is the same between Turbo and Non Turbo? Quote
Roland@pcmtec Posted November 3, 2021 Posted November 3, 2021 On 1/22/2021 at 5:46 PM, JMSMotorsport said: I’m curious, in the BA pcm it only has the slope tables for IMRC Open and on the BF it has these plus another BF specific one. At what point is the IMRC open table used on the BF? This is the same between Turbo and Non Turbo? Its only used if the IMRC is enabled (eg NA). It is not used at any other time afaik. 1 Quote
rfh Posted March 1, 2023 Posted March 1, 2023 On 2/6/2019 at 3:36 AM, Darryl@pcmtec said: auF0056: This is the theoretical MAP value when AirCharge is zero. auF0061: This is the Slope of MAP per AirCharge value used in the speed density calculation Hey Guys Is there any scenario you can think of where auF0056 would need to be altered, or is auF0061 usually the go to for mixture adjustments? (Standard injectors) Thanks Rob Quote
Roland@pcmtec Posted March 2, 2023 Posted March 2, 2023 Whenever the ve of the engine is affected both need adjusting. Eg a turbo change, cam or exhaust. Quote
JoshW Posted March 20, 2023 Posted March 20, 2023 On 3/10/2020 at 11:11 AM, Roland@pcmtec said: 0 = Not fitted 1 = Fitted Hi Roland, I have a 2006 bf NA with stock ECU for the Ute, which I have added a turbo to. Would I turn this option off if I have disconnected the vacuum line to the intake? or does it matter Quote
BarraTuna Posted Saturday at 03:36 AM Posted Saturday at 03:36 AM On 2/6/2019 at 4:06 AM, Darryl@pcmtec said: Starting with factory injectors to dial the car in with the new mods The factory injectors are usually the 1st to go, Can someone elaborate a little further on this ? Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.