Roland@pcmtec Posted July 31, 2018 Share Posted July 31, 2018 A few people have asked about Spark so here is a brief explanation of how the ford spark is calculated. The parameter IDs are for BF. FG has more adders as well. The final commanded spark is a combination of multiple tables. This is not an exhaustive list however this is the ones you need to look at. Borderline Knock - auF16593 (this is the maximum spark before the engine will knock) MBT Spark - auF16630 (this is the maximum spark before you stop increasing torque) Coolant temp MBT adjustment - auF2433 Spark ECT Correction - auF0222 This retards timing when your coolant temp gets too hot ECT Correction Multiplier - auF0223 This is a multiplier for the above table. This table can add up to 4 degrees of spark at peak load, make sure you are aware of it. Spark IAT Correction - auF0220 This retards timing when your intake air temp gets too hot IAT Correction Multiplier - auF0221 This is a multiplier for the above table. Spark BLK table adder (lambda correction) - auF0218 - This adds or subtracts timing based on the commanded lambda. This one will catch you out, it makes quite large adjustments based on your commanded lambda, a lot of people zero out the positive numbers in this table. Steady state/cruise This is an approximation of the calculation for when driving under normal circumstances without cold start or deacceleration active. It is an esimation, at some stage we want to make a proper write up on this from exactly what is in the assembly code. This is possibly incorrect or has omissions, so please take this into account. If anyone knows more detail than this please post up any corrections. Final Spark = Math.Min(auF16593 + auF0218 + auF0223 * auF0222 + auF0220 * auF0221, auF16630-auF2433) Or Final Spark = Minimum(BLK + lambda correction + IAT Correction + ECT Correction, MBT-MBT adjustment) IDLE Now if you are at idle it uses a PID loop to control spark. Deacceleration If you are deaccelerating (eg closed throttle) it uses auF0228 (Decel Spark Angle) Cold Start If you are on cold start it uses the following: Maximum Cold Start auF0210 Maximum Cold Start Adder auF0212 Maximum Cold Start Adder #2 auF0211 Cold Start Spark = auF0210 + auF0212 + auF0211 Final Cold Start Spark Max = Math.Min(Cold Start Spark, BLK, MBT-MBT Adjustment) (eg whichever is smaller of the 3 numbers) It will then use the idle feedback algorithm to add/subtract spark to obtain a given rpm. Eg if you have a setpoint of 750rpm and your idle is 700 rpm it will add spark, if it is 800 rpm it will subtract spark. The final figure will be clipped at "Final Cold Start Spark Max" which is calculated above. There is also an "anti stall multiplier" which is added in, most of the time this does nothing unless the rpm dips very low. If you want to datalog final cold start spark max, log the following DMR spk_lold_cld Transient conditions This is when changing the rate of acceleration, eg a change in the rate of load (the derivative of load). For example accelerating slowly, then flattening the throttle. Spark Retard for Tip-In auF0233 Tip in detonation control auF1705 Final Spark Transient = Final Spark (from the above calculation) + auF0233 * auF1705 Torque Control There are various times the PCM will command torque reduction which is achieved by ignition retard and in some conditions ETC (throttle feathering/closing). This is under traction control, changing gears in an automatic etc. Spark Retard (torque ratio) auF0263 Going forward we would like to build a spark simulator. Eg you enter in RPM, Load, IAT and ECT with sliders and you can see what the final spark will likely be, for now you would need to fill out these equations in excel by hand. If you do build anything feel free to post it up, it will be very helpful for others. Why borderline and MBT? Regarding the borderline and MBT tables the reasoning is to achieve maximum timing for performance in all possible conditions. If you use an 120 octane race fuel and find the maximum torque an engine can make then log the spark, this will be your MBT (maximum brake torque) table. Then if you use 91 octane fuel (I think the US fuel is different again) and find the maximum spark the engine can take before knocking this is your borderline knock table. Then you vary the lambda and see how much extra timing the borderline table can take and this creates your lambda spark table. Now this may overlap, eg the borderline knock may be higher than maximum torque. Eg you canrun 50 degrees of timing at cruise however the vehicle will stop making more torque after about 40-45 degrees hence there is no point in running any more. The PCM takes the lowest value of these two tables for this reason. The goal of all these tables and adders is so you can run the absolute maximum timing possible at all temperatures and load. Ford have done a great job of achieving this on a stock calibration, eg the car will run on the ragged edge of knock at all times getting maximum performance and maximum fuel economy (within emissions windows) on 91 fuel. If you were to try and achieve this level of tune in the aftermarket world you would need an engine dyno cell, thousands of litres of fuel and the ability to control ECT and IAT. It would take you a long time, I've been told it takes Ford 3 calibrators 25 weeks to calibrate an engine from scratch. The issue with aftermarket tuning is you do not have the resources to hit each load cell at every single IAT and ECT combination to determine maximum torque and maximum timing. So you compromise and tune the vehicle for the worst case, this means in cold weather/transient conditions you are probably running far less timing than you actually could. Setting the upper loads of the MBT and Borderline tables to be the same figures means you are safe in that you can be guaranteed the PCM will not ever run any more timing than this. It also means at low ECT/IAT temps you will be running less timing and hence less power than is possible. 4 Quote Link to comment Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.