6.8.36. Injection direct — set schedule (pan_Injection_DI)

Update the requested schedule of direct injections for one injector channel.

6.8.36.1. Supported targets

M220-000, M221-000, M250-000 and M670-000

6.8.36.2. Required license

None (Main library). (See Section 2.3, “Licensed Features”.)

6.8.36.3. Description

The pan_Injection_DI block updates the direct injection schedule for an injector channel. See the Section 6.5.2, “Direct injection” for an overview of direct injection. In short, the ECU monitors the angle clock and starts injection pulses based on the schedule on_angles. The schedule of pulses can be specified in units of volume or time at run-time, based on the duration_mode inport.

If duration_mode is set to volume mode, the ECU converts a requested volume of fuel from the amount inport into a pulse duration. The ECU samples fuel rail pressure shortly before the injection on angle and uses a map lookup to derive the required injection duration. This is to compensate for very rapid fluctuations in fuel rail pressure that cannot be compensated for in the higher-level strategy, as the correction must be made as late as near to the injection start as possible.

The desired analogue input for fuel rail pressure and related map data and axes are configured with the pan_InjectorCompConfig_DI block.

If duration_mode is set to time mode, the ECU uses the amount inport directly for pulse duration. The ECU will not compensate for fuel rail pressure in this mode.

The injection schedule update takes effect depending on whether the schedule has been started for this cycle or not:

  • If the application has not previously requested an injection schedule for this injector channel, then the update is applied immediately and the first pulse scheduled. If the angle clock has passed the first pulse's on angle for this cylinder cycle, then the first pulse will be postponed until the next cylinder cycle.

  • Otherwise, if the first injection pulse from the schedule prior to this update has not yet been generated for this cylinder cycle, then the update is applied immediately and the first pulse rescheduled. If first pulse is in the past compared to the current angle clock, then the first pulse will be postponed until the next cylinder cycle.

  • Otherwise, if the first injection pulse from the schedule prior to this update has been generated, then the request is buffered and applied at the start of the next cylinder cycle.

  • Otherwise, if the application makes no further requests to update the injection schedule, then the ECU will repeat the schedule at most 4 times. Once the repeats are completed, the ECU clears the schedule and no further injection pulses are generated until the application requests a new injection schedule.

The ECU supports the generation of up to six injection pulses per cylinder cycle. The on angles are relative to the each cylinder's TDC-firing angle (positive angles after TDC-firing).

Figure 6.9. Multiple injection pulses

Multiple injection pulses

Injection pulses are performed on each cylinder according to the requested pulse schedule. If two pulses overlap, the latter pulse will be delayed. (Note that its duration will not be modified.) If this delay then means that the next two pulses overlap, then the next pulse will be delayed too, and so on for the remaining pulses. In effect, the pulses will be shuffled along in time.

The pan_InjectorConfig_DI block is used to define constraints that apply to all injections.

Figure 6.10. Injection constraints

Injection constraints

  • A minimum injection duration that is applied to all pulses can be defined.

  • A minimum inter-injection delay applied to the durations between all pulses can be defined.

  • The drop-dead angle for each cylinder is an angle relative to TDC-firing and acts as a final injection cut-off point for a cylinder. That is, any injection in progress at this angle will be terminated and any subsequent injections for that cylinder cycle will not be scheduled.

    The drop-dead angle can be set through the pan_InjectorConfig_DI block and remain fixed during application run-time. Or the application can tick this block's Allow updates to drop dead angle for this injector? mask parameter and adjust the drop dead angle during application run-time using the inport dd_angle.

The direct injection functionality is active in full engine synchronisation mode only (see Section 6.1.9, “Engine synchronisation modes” for a description of modes). In any other mode, the ECU forces all injectors off. When the ECU detects loss of engine synchronisation, the injection schedule is cleared and the application must request a new schedule for injections to occur once full engine synchronisation is gained.

6.8.36.4. Inports

  • injector_id

    The injector identifier number. When the injection was configured using the pan_InjectorConfig block then the injection identifier is the same as the cylinder identifier from that block. When the injection was configured using the pan_SingleInjectorConfig block then the injector identifier is taken from that block.

    Range: [1, n] where n represents the number of supported injector outputs by the selected ECU.

    Value type:Integer
  • on_angle

    A vector of angles, relative to TDC-firing (positive angles after TDC-firing). Each angle represents the start of an injection pulse. This vector may contain up to six elements and must be the same width as the amount vector. Due to the potential of cyclic wrap-around in the application layer, monotonicity of the vector is not enforced in the platform layer. The platform layer will attempt to schedule all on-angles after the first on-angle in the same cycle by taking the cycle modulus of the relative difference and adding that to the first angle. For correct operation the schedule must have one or two sequences of strictly increasing angles (no repeated values). For example, [0, 90, 180, 270, 360, 450, 540, 630] and [270, 360, 450, 540, 630, 0, 90, 180] are acceptable.

    If the drop-dead angle specified by the pan_InjectorConfig_DI block is earlier than the first pulse, the drop-dead angle will be adjusted in cycle increments to be after the first pulse. Any subsequent pulses which occur after that conditioned drop-dead angle will result in no corresponding injection pulse.

    Range: [-360, 360) ° crank, for a two-stroke engine Range: [-720, 720) ° crank, for a four-stroke engine Resolution: at least 0.1 degrees

    Value type:Real
  • amount

    A vector of pulse volumes or pulse durations depending on the duration_mode inport. This vector may contain up to six elements and must be the same size and ordering as the on_angle inport vector.

    Range: [0, 512) mm3 if duration_mode is set to volume Range: [0, 1000] milliseconds if duration_mode is set to time

    Note

    The best resolution of injection duration is 0.25 microseconds for M2xx targets and 0.2424 microseconds for M670. Actual resolution of the duration is a function of the maximum duration of all pulses in this schedule request. In the current implementation, granularity doubles every power of two times the maximum timer duration. The maximum timer duration is 16.384 milliseconds for M2xx targets, and 15.887 milliseconds for M670. For example, the M2xx resolution is 0.25 us if the maximum pulse duration is less than 16.384 milliseconds, and the resolution will go to 0.50 us if the maximum pulse duration is between 16.384 us and 32.7675 us, etc.

    Value type:Real
  • duration_offset

    An additive offset of duration applied to each injection pulse, used to compensate for slight mechanical and electrical differences between injectors.

    Range: [-8.192, 8.192] milliseconds

    Value type:Real
  • duration_mode

    Set to zero to interpret the amount inport in units of volume, set to one to interpret as units of time.

    Value type:Boolean
  • dd_angle

    The drop dead angle applied to this injector, relative to TDC-firing. The ECU will stop injections at this point on a given cylinder. Available when the Allow updates to drop dead angle for this injector? mask parameter is ticked.

    Range: [-360, 360) ° crank, for a two-stroke engine Range: [-720, 720) ° crank, for a four-stroke engine Resolution: at least 0.1 degrees

    Value type:Real

6.8.36.5. Outports

None.

6.8.36.6. Mask parameters

  • Allow updates to drop dead angle for this injector?

    Tick to enable the inport dd_angle.

    Value type:Boolean
    Calibratable:No

6.8.36.7. Notes

None.