• IGNITION TIMING STRATEGY - GUA0


  •   
  • FileName: ford_knock_strategy.pdf [read-online]
    • Abstract: IGNITION TIMING STRATEGY - GUA0PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIALINDIVIDUAL CYLINDER KNOCK STRATEGYKNOCK HARDWARE DESCRIPTIONThe knock sensor is a piezo-electric accelerometer that resonates at engine

Download the ebook

IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
INDIVIDUAL CYLINDER KNOCK STRATEGY
KNOCK HARDWARE DESCRIPTION
The knock sensor is a piezo-electric accelerometer that resonates at engine
knock frequencies of approximately 5.45, 5.7, 6.0 or 8.05 kHz. The bandwidth
of the resonant frequency is quite narrow ( NOISE, the hardware circuit sends a KNOCK INPUT signal to the
EEC software. This event is represented on the next page as KI = 1. The EEC
software stores this information until the next rising edge of PIP is
received. At that time, the information is used by the KNOCK LOGIC as
described in the remainder of this document.
NOISE, the threshold voltage, is a positive voltage in an RC circuit which is
proportional to the Knock Input level at the time that a charging pulse, KTS,
is output. This threshold voltage is established to avoid treating rod
knock, piston slap, valve train noise and other noise as spark knock.
During normal engine operation, the software opens and closes a window once
per PIP period. While the window is open, KTS charges up the capacitor in
the RC circuit. While the window is closed, the NOISE level decays
(decreases) at a steady rate determined by the time constant of the RC
circuit.
NOISE ~ (D.C. Bias + KNOCK(A))*(1-exp(-KTS/RC)) + LAST NOISE
where, NOISE is the noise threshold level
KNOCK(A) is the Knock input level at the time KTS is being output.
KTS is the pulsewidth (secs) of the charging pulse.
KTS Start time is calculated as follows:
NEWTIME = LAST_HIPIP + (WINDOW_BETA*MKAY*2*HFDLTA)
RC is the RC time constant.
LAST NOISE is the noise level at the time KTS is output.
WARNING: To avoid raising the NOISE threshold level too high, the KTS pulse
should charge the RC circuit only during that portion of the PIP period
wherein no Knock is indicated, normally late in the current PIP period or
early in the following PIP period. The calibration of the pulsewidth and
timing of the window is described in the Knock Threshold Sense Logic section
of this strategy.
Since the noise level is a function of RPM, the NOISE threshold tends to
increase with increasing RPM. At high RPM and heavy detonation conditions,
knock usually continues well into the following PIP period. To avoid opening
the window during the knock period, the software withholds KTS for WINCLD PIP
periods to avoid raising the noise threshold too high.
7-31
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
INDIVIDUAL CYLINDER KNOCK STRATEGY
DEFINITIONS
INPUTS
Registers:
- APT = Throttle Mode Flag.
(Set = -1 = closed throttle)
(Set = 1 = wide open throttle)
(Set = 0 = part throttle)
- ECT = Engine coolant temperature, deg F.
- KI = Knock indicated, knock level is higher than noise level;
called KNK_HIGH in code.
- KNK_HIGH = Knock level input flag.
- KWCTR = Cancel window counter incorporated each PIP period.
- LOAD = Universal normalized load parameter.
- N = Engine speed, RPM.
- N_BYTE = Low resolution RPM.
- RETINC = Calculated as a function of RPM and is subtracted
from each SPKAD corresponding to a knocking
cylinder. (positive degree)
- SAF = Final spark advance in degrees.
- SPKADn = Spark adder terms for the nth cylinder. It is added
to SAF, may be positive or negative degrees.
- TBART = Average Filtered Throttle Position = UROLAV (TP,TCTPT)
- TCF = Value of the difference between Throttle position
(TP) and TBART.
- TIPRET = Tip-in retard.
- TP = Instantaneous throttle position, counts.
- TSLADV = Free-running millisecond timer which counts the
time since the spark was last advanced by the
KNOCK Strategy.
7-32
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
Bit Flags:
- CTFLG = Flag set to 1 to indicate closed throttle Tip-in.
- KNOCK_DETECTED = Flag set to 1 if Knock occured in current
PIP half period.
- KNOCK_ENABLED = Knock Strategy enabled.
- KNOCK_OCCURED = Flag set to 1 (in the knock routine), if
knock occured in the current or last PIP
period.
- TIPFLG = Flag set to 1 to indicate a Tip-in.
Calibration Constants:
- ADVLIM = Maximum degrees of advance control.
- ECTIP = Minimum ECT to enable Tip-in Retard, deg F.
- ECTNOK = Disable Knock control below this value of ECT.
- ENGCYL = Number of cylinders per engine revolution
(NUMCYL/2); or number of PIPs per engine revolution.
- FN143A = Retard increment versus RPM, deg.
- FN144A = Variable knock Threshold window open time, msec. Input is Engine speed in
RPM; output is fraction of PIP Period.
- FN145A = Variable Knock threshold window position. Input = Engine Speed in RPM, output
= fraction of PIP period.
- FN146B = Spark advance Rate versus RPM, sec/deg.
- KACRAT = Change in TP equivalent to a
Tip-in Retard, counts.
- KIHP = Knock Hardware Present Switch.
1 = Knock sensor present.
- KNKCYL = Change in TP equivalent to a Tip-in Retard,
counts.
- LODNOK = Minimum load for knock control.
- NTIP = Maximum RPM to enable Tip-in retard (restricted
to less than or equal to 2000 to assure TIPRET
ramp back function.)
- RETLIM = Maximum degrees of retard control.
- RPMCNL = Threshold RPM below which the window is
always open.
7-33
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
- RPMMIN = Disable Knock control below this RPM.
- TCTPT = Time constant for TBART (TP filter).
- TIPHYS = TIPLOD Hysteresis term to prevent multiple Tip-in
retards, unitless.
- TIPINC = Advance per PIP following a Tip-in retard.
(Must be a positive number; units are degrees)
- TIPLOD = Minimum Load to clear CTFLG for Tip-in Retard.
- TIPMAX = Initial amount of retard following a Tip-in.
(Must be a negative number; units are degrees)
- WINCLD = Number of PIPs threshold window is to be closed.
- WINLEN = Minimum amount of time threshold window is open,
msec.
- WOPEN = Position of window opening, Beta.
- Y = Normal Part throttle spark multiplier.
OUTPUTS
Registers:
- KWCTR = Cancel window counter incorporated each PIP period.
- RETINC = Calculated as a function of RPM and is subtracted
from each SPKAD corresponding to a knocking
cylinder. (positive degree)
- SPKADn = Spark adder terms for the nth cylinder. It is added
to SAF, may be positive or negative degrees.
- TIPRET = Tip-in retard.
- TSLADV = Free-running millisecond timer which counts the
time since the spark was last advanced by the
KNOCK Strategy.
Bit Flags:
- CTFLG = Flag set to 1 to indicate closed throttle Tip-in.
- KNOCK_DETECTED = Flag set to 1 if Knock occured in current
PIP half period.
- KNOCK_OCCURED = Flag set to 1 (in the knock routine), if
knock occured in the current or last PIP
period.
- TIPFLG = Flag set to 1 to indicate a Tip-in.
7-34
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
KNOCK SIGNAL DETECTION
: :
:............. PIP PERIOD ..............:
: :
--------------------- ----------
| | |
PIP | | |
| | |
------ ---------------------
: :
: :
: :
------ ------
| | | |
KTS --->| | NOISE, KI=1; OTHERWISE, KI=0)
7-35
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
STRATEGY DESCRIPTION
The Individual Cylinder Knock Strategy consists of four major sub-strategies:
1. KNOCK STRATEGY ENABLE LOGIC
2. KNOCK THRESHOLD SENSE LOGIC
3. SPARK RETARD LOGIC
1. KNOCK STRATEGY ENABLE LOGIC
The following logic is checked every background loop:
KIHP = 1 ------------|
|
LOAD > LODNOK -------|
|
ECT > ECTNOK --------|AND ----| ENABLE KNOCK STRATEGY
| |
N_BYTE > RPMMIN -----| | --- ELSE ---
|
| DISABLE KNOCK STRATEGY
| SET SPKAD (ALL) = 0
| SET TSLADV = 0
LODNOK, ECTNOK, and RPMMIN define the minimum engine operating conditions to
enable the Knock Control Strategy. These are calibration parameters accessible
through VECTOR and through the calibration console.
SPKAD(ALL) are spark adder terms; SPKAD1, SPKAD2, SPKAD3, .... SPKADn; where n =
KNKCYL. If KNKCYL is calibrated to be equal to the number of cylinders, then
there is a unique SPKAD term for each cylinder -- INDIVIDUAL CYLINDER KNOCK. If
KNKCYL is calibrated to 1, the Knock Strategy functions as a Multi-Cylinder Knock
Strategy; i.e., there is only one SPKAD term. It is applied to all cylinders. If
one cylinder knocks, then all cylinders get retarded an equal amount. Negative
values for SPKAD mean that spark is being retarded.
7-36
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
2. KNOCK THRESHOLD SENSE (KTS) LOGIC
The software periodically opens a window which allows a Noise threshold charging
pulse called KTS to raise the Knock Threshold level of the Hardware circuit. The
window always opens once per PIP period unless the RPM exceeds RPMCNL. The engine
developer defines the window during which the charging pulse is on by means of two
fox functions and two calibration constants. The pulsewidth of KTS defines the
period of time that the capacitor in the RC circuit will be charged. Wide KTS
pulses cause the threshold to increase. The timing of the KTS pulse must coincide
with the optimum non-knocking portion of the PIP period over all engine RPM.
Since Knock tends to to extend longer through the PIP period with increasing RPM,
the KTS pulse should be timed late in the current PIP period or early in the
following PIP period (95-110% PIP period).
Noise threshold elevation will result when the capacitor charging rate greatly
exceeds the discharge rate or when the KTS pulse is output during conditions of
Knock. When knock occurs at high RPM, the charging pulse window is kept closed
for WINCLD PIP periods to prevent elevating the NOISE threshold to the level of
KNOCK, thereby preventing the EEC hardware circuit from sensing additional spark
knock.
The calculations shown below are checked every rising edge of PIP:
The pulsewidth of KTS is equal to:
WINLEN + FN144 (N) * ("LAST PIP PERIOD")
Where, WINLEN is minimum KTS pulsewidth, clock ticks.
FN144(N) is fraction of pip period, BETA Units.
"LAST PIP PERIOD" is equal to 60/(ENGCYL*N).
ENGCYL is number of PIPs per revolution.
The timing of KTS is equal to:
(WOPEN + FN145(N))*("LAST PIP PERIOD")
Where, WOPEN is the minimum delay after the rising edge of PIP before the KTS
pulse will be output.
FN145(N) is a fraction of PIP period, BETA Units.
Note: The KTS pulse is output even if the knock strategy is disabled to refresh
the threshold level in the event that the Knock strategy becomes enabled. The
absence of the KTS pulse for more than a few PIP periods would result in full
retard upon entering Knock strategy.
7-37
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
The following logic is checked every PIP UP edge before calculating spout.
KIHP = 0 ---------------------------| NO KNOCK SENSOR
| Do not output KTS
|
| --- ELSE ---
|
N WINCLD --------------|OR ---| SET KWCTR = 0
| | OPEN WINDOW AT
KNOCK_DETECTED = 0 ---|AND --| | CALCULATED TIME
| |
| | --- ELSE ---
(no KNOCK in current | |
PIP half period) | | INCREMENT KWCTR
| | DO NOT OPEN WINDOW
NOT SIGNATURE PIP ----|
RPMCNL is the threshold RPM below which the WINDOW is always open. The WINDOW is
not opened during a signature PIP period (if Signature PIP distributor is
present), or if KNOCK has been detected during the current PIP first half period.
KNOCK_DETECTED = 1 ----|
|AND ----| KNOCK_OCCURRED = 1
KNK_HIGH = 1 ----------| |
| --- ELSE ---
KNOCK_DETECTED = 1 ----| |
|AND ----| KNOCK_OCCURRED = 1
KNK_HIGH = 0 ----------| | KNOCK_DETECTED = 0
(KI currently |
indicates NO KNOCK) | --- ELSE ---
|
| KNOCK_OCCURRED = 0
The following line of logic is executed "almost in real time".
KIHP = 0 ----------------| Prevent knock interrupts
| from occuring
|
| --- ELSE ---
|
| Allow knock interrupts
| to occur
NOTE: KNOCK_DETECTED & VIP_KNOCK are both set in the Knock Interrupt Routine.
7-38
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
||
_____________ _____________ ____
| | | | |
| | | | |
| | | | |
PIP ___| |___________| |___________|
||
_____ _____
| | | |
|| | | | | | |
| | | |
KTS _| |___________________| |__________________________
___________
| |
| | | | | | |
| |
KI ---------| |------------------------------------
___________________
| |
| |
| | | | |
KNOCK ________| |_______________________|____
DETECTED
_________________________
| |
| | | | |
| |
KNOCK __________________________| |_____
OCCURRED
Where A = (WOPEN + FN145)*("LAST PIP PERIOD")
B = WINLEN + FN144*("LAST PIP PERIOD") = KTS
Note: Range of A is typically 90 - 110 % of PIP period.
7-39
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
3. SPARK RETARD LOGIC
Whenever the Knock strategy is enabled, the software calculates RETINC as a
funcion of RPM. RETINC is subtracted from each SPKAD that corresponds to a
"knocking" cylinder. The software keeps track of the cylinders by means of a "PIP
counter". The "PIP counter" is incremented once per PIP period and is set to 1
every time it exceeds KNKCYL. To prevent excessive retard (perhaps due to
erroneous knock sense) each SPKAD is clipped to RETLIM.
RETINC = FN143A (N)
During a particular PIP period ("PIP counter" = n), the software makes adjustments
to SPKAD(n-1) based on whether Knock was sensed during the previous PIP period and
uses SPKAD(n), calculated during the previous engine cycle (KNKCYL PIP periods
ago) to determine the final value of spark advance for the next spark output.
KNOCK STRATEGY ENABLED -|
|
KNOCK_OCCURRED = 1 -----|
(knock sensed |
during last PIP |AND --| SET SPKAD(n-1) = SPKAD(n-1)
Period) | | - RETINC
| | (Clip min. SPKAD(n-1) to RETLIM)
TIPRET = 0 -------------|
7-40
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
THROTTLE POSITION FILTER (TBART)
The TBART calculation is a time-dependent rolling average filter of instantaneous
throttle position (TP). It is updated each background pass while in RUN or
UNDERSPEED mode. The TBART time constant TCTP, is a calibratable parameter.
TBART = UROLAV (TP,TCTPT)
A separate part of the retard logic responds to Tip-in detonation, and even to
potential Tip-in detonation, by retarding the spark TIPRET degrees.
Tip-in detonation is a result of the relatively slow response of both LOAD and N,
which are average values during a PIP period, to the sudden increase in manifold
pressure and decrease in engine speed, respectively, which occur within a PIP
period during a Tip-in. The result is that the delivered spark is over-advanced
for the instantaneous conditions until the LOAD calculation has updated to reflect
the higher manifold pressure and the engine speed has recovered. The recovery
from a Tip-in is normally complete within a few PIP periods.
The KNOCK STRATEGY is designed to anticipate detonation following a Tip-in from
idle (the worst case Tip-in condition) and respond by retarding the spark before
detonation occurs. Tip-in from part- throttle results in retarded spark only if
knock is sensed. In both cases, Tip-in retard is applied to whichever cylinders
follow the Tip-in, not to individual cylinders as is usually done in the
individual cylinder knock strategy. Thus, there is no need to wait an entire
engine cycle before responding to Tip-in detonation.
The Tip-in condition is recognized by comparing TP to a filtered TP, called TBART.
(NOTE that TBART is initialized to the same initialization value as RATCH) If TCF,
the difference between TP and TBART, exceeds KACRAT, and if either the Tip-in
occurred from idle or if the knock is sensed following a Tip-in from
part-throttle, then the spark for the next PIP is retarded by TIPMAX degrees. On
the ensuing PIPS, the amount of retard is decremented by TIPINC degrees until all
Tip-in retard is removed. The Tip-in logic can be disabled by setting KACRAT =
1023.
7-41
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
The following Tip-in logic is checked every background loop:
ECT > ECTIP ----------|
|
TCF >OR= KACRAT ------|AND -----| SET TIPFLG = 1
| |
N < NTIP -------------| | --- ELSE ---
|
| TIPFLG = 0
APT = -1 --------|AND ----|S Q--| SET CTFLG = 1
| | |
LOAD < TIPLOD ---| | | --- ELSE ---
| |
LOAD > TIPLOD + TIPHYS ---|C | SET CTFLG = 0
NOTE: The Sum of TIPLOD + TIPHYS is clipped to 1.99
The following Tip-in logic is checked before SPOUT issues (rising
or falling edge of PIP):
TIPRET = 0 --------------------|
|
TIPFLG = 1 --------------------|AND --| SET TIPRET = TIPMAX
| | TBART = TP
KNKCYL NOT=1 ---------|AND-| | |
| | | |
| | | |
KNOCK_ENABLE = 1 -----| | | |
| | | |
KNOCK_OCCURRED = 1 ---| |OR-| | --- ELSE ---
(knock sensed) | |
| |
CTFLG = 1 -----------------| | SET TIPRET = TIPRET + TIPINC
| (CLIP MAX TIPRET TO 0)
7-42
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
4. SPARK ADVANCE LOGIC
The following logic is checked every rising edge of PIP:
KNOCK STRATEGY ENABLED -|
|AND --| SET SPKAD(ALL) = SPKAD(ALL) +
TSLADV >OR= FN146B/4 ---| | 0.25 deg. (CLIP MAX
| SPKAD(ALL) TO ADVLIM)
| SET TSLADV = TSLADV - FN146B/4
If the Knock Strategy is enabled, all of the spark adders, SPKAD1 through SPKADn
are incremented 0.25 degrees every FN146B/4 seconds. Each of the SPKADn's is
clipped to ADVLIM. If ADVLIM = 0, the KNOCK STRATEGY will not advance the spark
beyond SAF.
NOTE: If the Knock Strategy is enabled and no cylinders are knocking, the spark
to each cylinder will advance to SAF + ADVLIM. If a particular cylinder is
knocking, the Retard Strategy will tend to dominate the advancing mechanism. To
insure that the spark to knocking cylinders is retarded more than the strategy can
advance it, FN146B should be greater than or equal to 1/FN143A. FN146B is in
degrees of advance per second while FN143 is in degrees of retard per PIP,
therefore, FN143 must be converted to degrees per second at a given RPM for a
valid comparison to be made. When FN146B is large, then the spark advance rate is
small. For example, FN146B = 0.5 is equivalent to a spark advance rate of 2
degrees/sec. FN146B = 0.25 is equivalent to spark advance rate of 4 degrees/sec.
7-43
IGNITION TIMING STRATEGY - GUA0
PEDD-PTOPE, FoMoCo, PROPRIETARY & CONFIDENTIAL
SUMMARY AND EXAMPLE
The final value of spark advance is calculated by the EOS immediately prior to
calculating the waiting time:
CALCULATED SPARK OUT (n+1) = SAF + SPKAD(n+1) + TIPRET
The table shown below is included as an illustration of the Individual Cylinder
Knock Control adjustment to the Spark Advance.
Example of Individual Cylinder Knock Control (4 cyl)
_________________________________________
| | | | |
PIP Counter | 1 | 2 | 3 | 4 |
|_________|_________|_________|_________|
| TIPRET+ | TIPRET+ | TIPRET+ | TIPRET+ |
Adjustment | SPKAD1 | SPKAD2 | SPKAD3 | SPKAD4 |
to Spark | = +2 | = +4 | = -6 | = +6 |
|_________|_________|_________|_________|
| | | | |
Base Spark | 24 | 24 | 24 | 24 |
(SAF) |_________|_________|_________|_________|
| | | | |
Calculated | 26 | 28 | 18 | 30 |
Spark Out |_________|_________|_________|_________|
| | | | |
Actual | 26 | 28 | 18 | 28.8 |
Spark Out |_________|_________|_________|_________|
Due to the physical time constraints for arming the coil and firing the next
spark, the maximum spark advance increase between consecutive spark events must be
no more than SPKLIM*360/ENGCYL degrees.
In this example, SPKLIM = .06 and ENGCYL = 2. Therefore, the largest spark
advance increase allowed between cylinders is 10.8 deg. There is no limit on the
amount of spark advance decrease allowed between cylinders.
7-44


Use: 0.0337