Explaining the FN1315 Table
Injector timing is the delay before each injector output is fired. The delay is taken from TDC of the reference PIP signal for each injector output. The units for injector timing are absolute engine crank degrees. The range is clipped between 0 and 716 degrees ATDC with 4 degrees resolution. Only the off-edge of the injector pulse can be timed. The injector delay is used only to start a fuel pulse.
Once started, pulsewidth accuracy has top priority. When the fuel system is not in sync (SYNFLG = 0), the injector timing is coincident with the relevant PIP signal. The injector outputs are fired in sequence after receiving the rising edge of the reference PIP signals. Actual timing will be the result of the random link between signature PIP (cylinder #1) and #1 injector output.
During the first synchronized fueling event, the rolling average filter for INJDLY is initialized to 350. This action eliminates the excessive length of time it used to take to filter INJDLY from its initial value of 0 to its desired timing. When the fuel system is in sync (SYNFLG = 1), injector timing is based on the calculation defined within this strategy module.
NOTES:
1. The final value of injector delay is limited to a range of greater than or equal to 0, and less than 720, engine crank angle
degrees. Intermediate calculations and results are maintained in an unlimited fashion.
2. The user must set DEGPIP to match their engine. DEGPIP is the number of engine crank degrees per PIP interval. (90 for
8-cylinder, 120 for 6-cylinder, 180 for 4-cylinder).
EXAMPLE - Injector Timing
INJDLY = 400 DEGREES
If you had access to the ECU, the equation would resemble this:
/* The following calculates the desired injector delay in percent of PIP periods or "betas". If the injector delay plus the PIP
offset from TDC is greater than 716 degrees, then the requested delay will be past TDC and 720 can be subtracted to give the
same delivered timing. INJDLY can only be calculated in 4 degree steps). */
IF ( UNCONDITIONALLY )
THEN injdly_offset_tmp = injdly + PIP_UP_DBTDC ;
END_IF
IF ( injdly_offset_tmp < 720 )
THEN
injdly_beta = injdly_offset_tmp / DEGPIP;
ELSE
injdly_beta = (injdly_offset_tmp - 720) / DEGPIP;