Jump to content

INFO: Ford Spark

Recommended Posts

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)


Final Spark = Minimum(BLK + lambda correction + IAT Correction + ECT Correction, MBT-MBT adjustment)


Now if you are at idle it uses a PID loop to control spark.


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.

  • Like 3

Share this post

Link to post
Share on other sites

I'm quite impressed at the amount of spark these PCMs can pull with knock, datalogged my Patrol and it was pulling >8 degrees at WOT in some spots, with no pinging whatsoever. Have fixed it now.

Noticed that the 'Auto Octane' tables pull 4 degrees when it sees -4.55* of knock consistently, would a good way to tune for this tune for ~4.5 degrees of knock retard on 91 and turn auto octane on for when you run 95/98? It's a bit crude I know. I have knock ears and it doesn't seem to be pinging at all :/

Is there a rule of thumb for the Falcon 4L and amount of timing advance possible between 91 and 98?

Share this post

Link to post
Share on other sites

The stock calibrations knock all the time, they run permanently y on the edge of mild detonation. This is ok on stock boost levels but will grenade a motor that is making big power.

The table you mention already does this on NA falcons, so they add 4 degrees of spark when it detects 95/98 octane. 

Turbo falcons disable this feature in most strategies. 

Timing depends on load so you really need to get on a dyno with knock ears to find out. 

Share this post

Link to post
Share on other sites
On 9/22/2018 at 1:59 PM, Roland@pcmtec said:

The stock calibrations knock all the time, they run permanently y on the edge of mild detonation. This is ok on stock boost levels but will grenade a motor that is making big power. 

Just wondering what you consider big power?

Share this post

Link to post
Share on other sites
11 hours ago, finnigan001 said:

Just wondering what you consider big power?

I don't like gospels so more than stock boost. ?

I would just get on a dyno with knock ears, anything else is guessing.

Share this post

Link to post
Share on other sites

Hahaha, fair enough.  :)


Does anyone know what the PID for the knock sensor is... having trouble logging it.  using innovate ot2 + dashcommand.  Also being using a elm327 bluetooth and car scanner on iphone.

Edited by finnigan001
extra question

Share this post

Link to post
Share on other sites
2 hours ago, 3bar said:

hi, just chiming in on this to see how the "slider idea" is progressing ?

After the datalogger has gauges, histograms and map tracing we might look into something like that if we get more demand for it. Until now no one has asked.

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...