KRRA 15.130 (Knock Control with Individual Cylinder Retard)

From Nefmoto

Revision as of 15:01, 2 May 2012 by TTQS (Talk | contribs)

Jump to: navigation, search

See the funktionsrahmen for the following diagrams:

krra-main KRRA: knock control including steady state adaptation

krra-bbkrra BBKRRA: release of knock control and adaptation

krra-bbkr BBKR: release of knock control and adaptation

krra-bb-krdws BB-KRDWS: condition for safety retard of ignition

krra-bb-lzf BB-LZF: release of leading cylinder function

krra-lzist LZIST: determination of led and leading cylinders

krra-uewkr UEWKR: overwrite ignition retard of led cylinders

krra-wkral WKRAL: Update of the cylinder selective ignition retard at adaptation area change (wkra -- > wkr)

krra-wkrber WKRBER: Calculation of ignition retard

krra-krvf FRUEHVERST: Release of ignition advance adjustment

krra-wkri WKRI: calculation of the average ignition retard

krra-begwkr BEGWKR: limitation of ignition retard after reading adaptation map

krra-stkra STKRA: Detection of load- and speed range

krra-kr-adap KR_ADAP: Adaptation of ignition retard

krra-vswkr VSWKR: Ignition adjustment with VS2x

krra-kr-freeze KR-FREEZE: calculation of ignition retard for frozen knock control

krra-initialise Initialise function


Note: The cylinder-specific variables wkr, dwkrz, wkra and zkrvf are indicated in the following description through a control variable (i) - like in the ECU code, for example wkr(i). The corresponding RAM-cell which can be read via VS100 is marked by _i, for example: wkr_i


The Knock Control cylinder counter zzylkr serves as control variable (except wkra)

The following applies to it:

zzylkr = 1 ... SY_ZYLZA ASCET-Model zzylkr = 0 ... SY_ZYLZA-1 ECU-Code

See also the Application Notes section in this module


KRRA 15.130 Function Description

Function of Knock Control

The KRRA module includes calculation of the cylinder-specific change of ignition angle of the knock control and adaptive calculation of the cylinder-specific retarding wkr(i) (WKRBER) with storage in an adaptation characteristic map wkra(i) (KR ADAP). The input values of the adaptation map are current cylinder number, engine speed and load (STKRA)


The value of the retarding dwkrz(i) which is passed on to the ignition comes to dependent on the operating condition (BBKC):

1. B_kr & !B_krdws & !B_llr dwkrz(i) = wkr(i)

2. B_kr & B_krdws dwkrz(i) = krdwsw KRDWS – Safety retarding see modules DKRS, DKRNT and DKRTP

3. B_kr & !B_krdws & B_llr dwkrz(i) = wkrm wkrm – average retard over all cylinders

4. !B_kr & (!)B_krdws dwkrz(i) = 0

Condition for active Knock Control without exhaust gas recirculation B_kr: ((rl > LKRN) v B_krldy) & (tmot > TMKR) &

B_stend & (nmot > NKRF) Condition for active Knock Control with exhaust gas recirculation B_kr: (( rl > LKRAGRN) v B_krldy) & (tmot > TMKR) &

B_stend & (nmot > NKRF) Condition for active adaptation: B_kra : B_kr & (tmot > TMKRA)

The lower speed threshold NKRF should prevent the engine stalling at low speed by Knock Control-Ignition Angle-intervention


Co-ordination of the Ignition Angle for Torque Management

When knock control is active, the earliest cylinder-specific ignition angle results: KFZW + dwkrz(i) + wkrdy (wkrdy is derived dynamically from module KRDY, included in module ZUE)

There are two types of control action:

1. Output ignition angle = KFZW + dwkrz(i) + wkrdy --> B_zwkraa = 1 --> knock control algorithm remains unchanged

2. Output ignition angle < KFZW + dwkrz(i) + wkrdy --> B_zwkraa = 0 --> advancing algorithm of wkr(i) is frozen and knock control adaptation is disabled. (due to exhaust gas reasons, Stability Program operation, idle control, etc.)

In module ZUE the bit B zwkra is formed synchronously to the ignition angle output and it is then stored in the corresponding position in bit array zwkrafld. E.g. B_zwkraa is then determined from zwkrafld as follows: SW cylinder counter


(zzylkr)

5

4

3

2

1

0

B_zwkra

1

1

0

1

0

0

zwkrafld = 25 + 24 + 22 = 52


B_zwkraa (zzylkr = 3) = 0 (= false)

Please note: Signs of the ignition angle (in degrees crankshaft (°KW)) according to mathematical convention

KFZW > 0 (with TDC as the point of reference, ignition "before" DTC means mathematically positive angles KFZW) dwkrz(i) £ 0 ("retard" timing with regard to the basis ignition angle means mathematically negative dwkrz(i))


Retarding of the ignition angle without adaptation (WKRBER)

If B_kr and !B_kra are set the knock control operates as follows:

If a knocking combustion (B_kl) is detected in module KRKE then the ignition angle of the corresponding cylinder i is adjusted by retarding it by an amount KRFKN per knock event. If the engine is in the Knock Control-steady-state operation, is adjusted by retarding it by an amount KRFKLN per knock event. This cylinder-individual retarding is added independently of load and engine speed in the RAM area wkr(i)

For engine smoothness reasons and in order to avoid spurious misfire detections, the retarding is limited in each calculation to a range around the mean value wkrm of the latest given SY_ZYLZA retardings wkr(i), given by wkrm plus/minus a freely selectable threshold. This threshold DWKRMSN is a characteristic line over the engine speed

Additionally the retarding is limited in wkr(i) towards retard to KRMXN and towards advance to 0°

wkr is a RAM-area in which a RAM-cell is reserved for each cylinder.


If the “Knock Control active” operating range of the engine is left (!B kr) then the latest present retarding remains stored in wkr(i) until the “Knock Control active” range is entered again. The same applies for wkrm.

In the “Knock Control not-active” range of the engine zero is passed on to module ZUE as adjustment value dwkrz(i).

If the ignition is switched off, the retardings in wkr(i) are set equal to zero.


Advancing of the ignition angle (WKRBER & FRUEHVERST)

The retardings from wkr(i) are cancelled on a cylinder-specific basis if B_kr is set and if a cylinder-specific advancing counter zkrvf(i) has reached zero.

During each knock event B_kl, the cylinder-specific counter zkrvf(i) is populated with the value KRVFN. Each non-knocking combustion in cylinder i for which in addition B zwkraa = 1 applies (i.e. the given ignition angle was limited by Knock Control) decrements zkrvf(i) by 1. When zkrvf(i) = 0 is reached, the retarding in wkr(i) assigned to the corresponding cylinder is decremented by one quantization step and the counter is again populated with KRVFN.

During each timing towards advance, the wkr(i) are limited to the mean value wkrm of the latest given retarding SY_ZYLZA minus a freely selectable threshold DWKRMSN or to the value zero.

If the “Knock Control active” operating range of the engine is left (!B_kr) the latest available counter values remain stored in zkrvf(i) until the “Knock Control active” range is entered again.

If the ignition is switched off, the counter values inzkrvf(i) are set equal to zero.

If changed engine operating conditions result in a reduced tendency to knock, a quicker advancing of the wkr(i) is performed until the first knock event occurs after the beginning of this quick advancing. In this case, the counters zkrvf(i) are started when KRVFSN < KRVFN. The condition for the start of the quick advancing is either the transition from reading adaptation values ​​wkra(i) to wkr(i) or the termination of a dynamic phase or a negative load range shift.

There should be no quick advance during dynamic operation (B_krldya / B_krndy = 1).


Knock Control Steady-State Mode

In Knock Control steady-state mode, the ignition angle per knock event is retarded by the value KRFKLN or KRFKN. So that the knock frequency at different retards is not too high, the Knock Control steady-state mode advance adjustment speed adjusted by KRLVFKN.

The Knock Control steady-state operation is indicated by B_krstatb. This bit is set if |drl| < DRLKRSTMX and |ngfil| < NGKRSTMX for TVKRSTAT seconds.

Retarding of the ignition angle with adaptation (KR ADAP)

B_kra = B_kr & (tmot > TMKRA) --> Adaptation active

B_krafrz = B_kra & ((rl < lkraw) || (tmot < TMKRAS) || (nmot < NKRAMIN) || (nmot > NKRAMX) || B_asr || B_nmax || B_vmax) --> Learning the adaptation values ​​is prohibited

The adaptation ensures that also for strongly map-dependent varying retardings the knock frequency does not increase in case of quick changes of the map ranges. For this purpose, when adaptation is active, the current retards under certain conditions are written in a load-speed-dependent adaptation map (see Storage) or overwritten with the values ​​stored in the map (see Read). Read access to the adaptation map is only enabled when the engine temperature is stable and when there is a significant knock control requirement (i.e. TMKRA >= TMKR), whereas the knock control must be activated even at low knock control requirements (worst case conditions). Write accesses to the adaptation map are enabled until the second temperature threshold (TMKRAS ³ TMKRA) and the second load threshold (LKRAN >= LKRN) are exceeded. This prevents, on the one hand, spurious adaptation due to retardings during warm-up and on the other hand, a learning of the adaptation value to 0 at lower loads.

A RAM cell is reserved in the adaptation map wkra for each load- and speed range per cylinder. The load and speed limits are removed for administration labels (KRAL1-3N or KRAN1-4). The values ​​stored there will be used as the limiting values in case of increasing load or speed.

In case of decreasing load or engine speed, an adjustable hysteresis (KRALH, KRANH) is subtracted from these values

The current load range is stored in stkrlx, the speed range in stkrnx.

When the ignition is switched off all values remain stored in wkra. If the supply voltage of the ECU is disconnected the values are lost. After the supply voltage of the ECU has been reconnected all values are set to 0.

DIAGRAM

For the indexing of the wkra(i) - RAM-cells the following specification is used in the SW: i = zzylkr + (8 x stkrnx) + (40 x stkrlx zzylkr) = 0...7, so at the maximum, 8 cylinders can be represented

stkrnx = 0...4, 5 engine speed ranges

stkrlx = 0...3, 4 load ranges (value of 0 is notwithstanding the ASCET-Model!)

The wkra of the current adaptation range can be obtained from the RAM cells wkraa_i, i = 0 ... SY_ZYLZA-1


Adaptation - Learning Conditions:

The following conditions update the adaptation map:

1. During each knock event, the ignition angle retard wkr of the cylinder in which the knock event occurred, is increased by an offset KRDWKLA then stored in the current load-speed range of the adaptation map when this sum (wkr + KRDWKLA) is later than the value stored in wkra.

2. If the current retard wkr(i) is at least KRDWA earlier than the last value stored in the adaptation map and advance adjustment counter zkrvf (i) = 0, the ignition angle retard is changed to KRDWSA towards advance in the adaptation map.

3. If the current retard wkr(i) = 0 and the advance adjustment counter zkrvf (i) = 0, wkra (i) is changed by KRDWSA towards advance.

The adaptation of the characteristic map is only performed during steady-state operation and during not active safety retarding (B krdws=0). When idle control is active, the steady-state adaptation is also blocked, because the control is via the average wkrm retardation.

In order to avoid the unjustified adaptation of large amounts of retardation, further writing to the adaptation map (combined into B_krafrz) is prohibited under the following conditions:

- tmot < TMKRAS error identifiers due to extraneous noise during warm-up

- nmot > NKRAMAX error identifiers due to extraneous noise from the dump valve

- nmot < NKRAMIN error identifiers due to extraneous noise from the drivetrain

- B_asr = 1 transient engine conditions via fast ignition angle-intervention, possibly error identifiers

- B_nmax = 1 ditto

- B_vmax = 1 ditto

Writing is also prohibited when

- rl < LKRAN


Adaptation – Read Conditions

During active adaptation the retarding of all cylinders wkr(i) is overwritten by the values from wkra(i) if one of the following conditions is fulfilled:

1. Transition from !B_kra to B_kra

2. Load range changes with dynamic response (B_krl/ndyn = 1)

3. Engine speed changes with dynamic response (B_krl/ndyn = 1)

4. Entering or exiting idle control

During overwriting of wkr(i) with wkra(i), ignition angle jumps away from advance can happen (e.g adaptation has not yet settled in all adaptation ranges) which may give rise to undesirable results (judder, knock). For this reason, early ignition angle changes will be limited via overwriting KRDWAA. KRDWAA = 0 means that ignition angle jumps away from advance will be prevented. KRDWAA = KRMXN means that ignition angle jumps away from advance within the scope of the maximum Knock Control range are permitted.


Knock Control in the case of Active Dynamic Response (KRRA, KR_ADAP, BBKR)

In case of active dynamic response (B_krldy, B_krldya, B_krndy, see module KRDY) the further adaptation of the steady-state values wkra(i) is blocked. A change of the adaptation ranges leads to an updating of wkr(i) with the values adjusted in wkra(i).

Each knocking combustion (B_kl), like so far, leads to a retarding by KRFKN and is therefore added to the cylinder-individual retarding in wkr(i).

In addition to B_krldya, an adaptive dynamic derivative action wkrdy (see module KRDY) is added. For the fastest possible inclusion of this derivative action for dynamic response detection, an auxiliary bit B_wkrdyw set in module KRDY triggers the corresponding updating of all dwkrz_i included in wkrdy in the next KR-time frame. This algorithm is not shown in the ASCET images.


Knock Control during Active Idle Control (KRRA)

When idle control is active (B_llr = 1) cylinder-specific knock detection and control of the retardings wkr(i) still occurs. However, at ignition, the average retardation wkrm is output (dwkrz(i) = wkrm for all i).

In this way, additional idle disturbance via KR-ZW-intervention is avoided. During activation or deactivation of idle control respectively, the adaptation map is read.


Knock Control Above NKRMAX (BBKR, WKRBER)

Errors can frequently occur at high speeds due to noise (e.g. valve lift). Therefore, in order to avoid unduly large amounts of retarding, there is a speed threshold, NKRMAX, above which the de facto knock control is disabled! Instead, wkr(i) is permanently overwritten with the adapted values ​​of the current adaptation range wkra(i) + an offset. This offset (krfkw - KRDWKLA) is implemented so that a margin from krfkw to the knock limit in this adaptation range is maintained. However, the prerequisites for this are a nearly constant knock limit within the respective adaptation areas and the presence of a current adaptation value.

Please apply this function with the utmost care!


Optional Leading Cylinder (LZ)

The leading cylinder function is enabled: - On exceeding a cylinder-specific speed threshold KRNLZ[i], above which the cylinder has poor knock detection, this cylinder is led by the cylinder with a good knock detection


- For systems with two knock sensors, if an error has been detected for the knock sensors. (The one knock sensor associated cylinder are hereafter referred to as a group.) The cylinders of the group concerned are then led by the cylinders of the group having a good working knock sensor. On exceeding KRNLZ [i], the safety retardation will be activated for all of the cylinders. This mitigation measure will be turned off via the codeword CWKRNLR. If an error is detected, a sensor immediately activates the security retardation


Leading Cylinder Function when Engine Speed > KRNLZ, Without Knock Sensor Error The corresponding leading and led cylinders are selected via the elements LZFUER_0 to _k (k = SY_ZYLZA - 1), of the blocks of constants ​​LZFUER. The leading cylinder (LZ) is indicated by set bits in the bytes to LZFUER_0 _k


The elements i = 0 to k of the constants LZFUER ​​are selected via the cylinder block counter zzylkr in Knock Control, i.e. LZFUER_i belongs to zzylkr = i the cylinder counter counts the combustion within an AS. The connection between zzylkr and physical cylinder is given by the firing sequence. Accordingly, the bits 0-7 of LZFUER_i refer to zzylkr indexed combustion


During activation of the lead cylinder function in this case, the contents of LZFUER is copied into the RAM-array LZIST (loop from i = 0 ... SY_ZYLZA-1 on a 100 ms time frame). Thus LZIST will contain the most current association between leading and led cylinders


For example: 6 cylinder engine with firing sequence zzylkr = 0 1 2 3 4 5 Physical cylinders: 1 4 3 6 2 5 Block of constants LZFUER Led cyl. Bit 7 6 5 4 3 2 1 0 <-- (leading cylinder) LZFUER_0 0 0 0 0 0 0 0 0 -- > 00 -- > physical cylinder 1 will not be led, i.e. separate knock detection LZFUER_1 0 0 0 0 1 0 0 0 -- > 08 -- > physical cylinder 4 will be led by cylinder 6 LZFUER_2 0 0 0 0 1 0 0 1 -- > 09 -- > physical cylinder 3 will be led by phys. cylinder 6 or 1 (late selection) LZFUER_3 0 0 0 0 0 0 0 0 -- > 00 -- > physical cylinder 6 will not be led, i.e. separate knock detection LZFUER_4 0 0 0 0 1 0 0 0 -- > 08 -- > physical cylinder 2 will be led by cylinder 6 LZFUER_5 0 0 0 0 1 0 0 0 -- > 08 -- > physical cylinder 5 will be led by cylinder 6 A led cylinder may not be defined as a lead cylinder for itself, i.e. the bit i in LZFUER_i must be "0"


In the lead cylinder function, the following active measures are taken:

1. The knock detection will continue unchanged

2. The knock control and adaptation of the leading cylinder continues unchanged

3. For

Personal tools