ENGINE CONTROL AND COMBUSTION QUALITY DETECTION SYSTEM AND METHOD

Abstract: A system is provided for controlling an internal combustion engine (10) and detecting combustion quality such as knock. A knock sensor (22) senses knock in the engine. A memory (25) and a calculation device (26) establish a base value for an engine control input, such as spark advance in a spark ignition engine. A generator (30) periodically perturbs the control input about the base value. A calculation device (31) determines a combustion quality value by calculating the slip of the output of the sensor (22) with respect to the control input. Means (36-39) may be provided for updating a correction schedule for the control input. Such a system may also be used for engine roughness with the engine control input being air/fuel ratio.

Description: This invention relates to engine knock and roughness detection systems for internal combustion engines and also to methods of detecting engine knock and roughness in such engines. Knock in an internal combustion engine causes damage to the engine and a reduction in power output. In spark ignition engines, differences between engines and the build up of deposits cause the spark advance angle at which knock occurs to vary considerably between engines. It is therefore desirable to provide a system which can detect knock accurately. It is already known to use a knock sensor for detecting knock. Such a knock sensor may take the form of a piezo-electric sensor mounted on a cylinder block or a pressure sensor mounted inside an engine cylinder. These prior art systems suffer from the problems of identifying the level of sensor output which corresponds to noise rather than to a genuine knock signal. Various measures are used to distinguish the genuine knock signal from the noise signal and these include bandpass filtering to select the characteristic knock frequency, gating the output of the knock sensor so as to select the region in which knock occurs, and making the knock threshold adaptive. However, none of these measures provides a satisfactory solution to the problem of identifying the genuine knock signal. In US-A-4 454 750, the output of a knock sensor is compared with a background reference signal. In order to obtain the background reference signal, the sensor output is sampled and the resulting signal is averaged. With the intention of removing the knock component from the background reference signal, sampling is controlled by comparing the output of the knock sensor with a threshold which is established as being proportional to the background reference signal. However, this system suffers from the disadvantage that an error in establishing the threshold for sampling will result in an error in the background reference signal. In EP-A-0 155 680, a spark ignition engine is provided with a knock sensor and the output of the knock sensor is compared with a threshold. At periodic intervals, the threshold is recalibrated by gradually advancing the spark advance angle until there is a sudden increase in sensor output and then judging this point to be the knock threshold. This system suffers from the disadvantage that the gradual advancing of the spark ignition angle is not compatible with normal driving conditions. US-A-4 471 736 discloses an ignition timing control system in which knock is detected by periodically applying a large ignition retardation and vibration levels are stored in a map against engine operating conditions. The stored levels are used as a threshold against which to compare prevailing vibration levels at the corresponding engine operating conditions so as to detect knock. However, the ignition must be retarded by a relatively large amount so as to ensure that the stored vibration levels represent background noise and do not include any vibration caused by knock. A similar problem occurs in measuring engine roughness. When measuring engine roughness, the problem is caused by background noise due to road irregularities and the difficulty in distinguishing genuine engine roughness from engine speed fluctuations caused by these road irregularities. US-A-3 142 967 and US-A-4 428 342 disclose control systems for internal combustion engines having at least one control input. In US-A-4 428 342, the at least one control input is ignition timing. The system of US 3 142 967 establishes a base value for the control input, which is periodically dithered about the base value. The change in engine power output caused by the dithering is measured. The term "knock" refers to high frequency fluctuations in cylinder pressure in one combustion event. "Engine roughness" refers to fluctuations in engine speed between successive ignition cycles. In this specification, the term "combustion quality" means "knock or engine roughness". It is an object of this invention to provide a new detection system and method in which the above problem in identifying the genuine signal is overcome or reduced. According to a first aspect of the invention, there is provided a knock detection system as defined in the appended Claim 1. According to a second aspect of the invention, there is provided a roughness detection system as defined in the appended Claim 5. According to a third aspect of the invention, there is provided a combined knock and roughness detection system as defined in the appended Claim 11. According to a fourth aspect of the invention, there is provided a knock detection method as defined in the appended Claim 13. According to a fifth aspect of the invention, there is provided a roughness detection method as defined in the appended Claim 16. Preferred embodiments of the invention are defined in the other appended claims. This invention will now be described in more detail, by way of example, with reference to the drawing in which: Figure 1 is a sketch illustrating the principle behind the present invention; Figure 2 is a diagram of the functional components of an adaptive control system constituting a first embodiment of the invention; Figure 3 is a block diagram of a microcomputer system which implements the functional components of Figure 2; Figure 4 is a circuit diagram of a signal conditioning circuit forming part of the microcomputer system of Figure 3; Figure 5 is a layout diagram of a computer program used in the microcomputer system of Figure 3; Figure 6 is a diagram illustrating the calculation of weighting functions used in the program; Figure 7 is a flow chart of part of the program; Figure 8 shows three graphs against a common time axis of spark advance, accelerometer knock, and correlated knock; and Figure 9 is diagram of the functional components of an adaptive control system constituting a second embodiment of the invention. The principle behind the present invention is illustrated in Figure 1 with reference to a spark ignition engine. The spark advance angle is perturbed about a base value to provide advanced and retarded perturbations in alternate engine cycles and the output of a knock sensor is examined during each perturbation. The output of the knock sensor in a pair of advanced and retarded perturbations is indicated respectively by bars 10 and 11 in Figure 1. In each bar, the part which corresponds to the knock signal is shaded and the unshaded part corresponds to the noise component. By subtracting the output for the retarded perturbation from the output for the advanced perturbation, there is obtained a component 12 which represents the slope of the output of the knock sensor. When knock is not present, the component 12 will be zero and, during knock conditions, the slope 12 will indicate the amount of knock present. Thus, with the present invention, the noise component is eliminated without providing a noise threshold. Referring now to Figure 2, there is shown a functional form of an adaptive control system embodying this invention and installed in a motor vehicle. The control system comprises a four cylinder spark ignition internal combustion engine 10 having a flywheel 11. The flywheel 11 is associated with a position transducer 12 which produces a reference pulse for each 180° of rotation of the engine crankshaft. Each pulse is produced when the piston in the cylinder executing an expansion stroke is at 30° after the top dead centre position. The pulses from the transducer 12 are supplied to a dwell control device 13, the output of which is connected through a power stage 14 to a coil and distributor 15. The coil and distributor 15 is connected to four ignition plugs 16 and causes ignition sparks to occur in these plugs at appropriate moments. The output of transducer 12 is also supplied to a speed calculation device 20 which calculates engine speed and supplies this to the dwell control device 13. The engine is also provided with a transducer 21 which measures the load demand to which the engine is subjected. In the present example, the transducer 21 measures the depression in the inlet manifold for the engine cylinders. The load demand could also be detected by measuring other quantities such as the throttle valve opening position or the rate of air flow into the inlet manifold. The engine 10 is also provided with a knock sensor 22. In the present example, the knock sensor is a piezo-electric transducer mounted on the cylinder block to detect vibrations. The knock sensor could take other forms and could, for example, be a pressure sensor mounted in an engine cylinder. The system also includes a memory 25 in which is stored a two dimensional array of spark advance angles, the abscissa and ordinate of the array corresponding to engine speed and load demand. The memory 25, the speed calculation device 20, and the load demand sensor 21 are connected to a calculation device 26. For each prevailing engine speed and load demand, the calculation device 26 calculates a basic value for spark advance and supplies this to one input of a summer 27. The calculation device 26 calculates this basic value from the spark advance values stored in the array in memory 25 at the four points in the speed/load plane surrounding the prevailing engine speed and load demand. Each of these values is multiplied by an appropriate weighting factor and the four resulting values are added to provide the basic spark advance value. Thus, the calculation device 26 calculates the basic spark advance angle by interpolation. The spark advance values are stored in memory 25 at a density which provides a good match for irregularities of a true optimum spark advance characteristic of engine 10. The spark advance values stored in memory 25 take the form of a fixed schedule which is established from rig-tests and sample engines. In such a fixed schedule, each spark advance value is normally the value at which maximum engine output is obtained with the avoidance of knock or is slightly retarded from the values at which knock will occur. As explained above, the spark advance angles at which knock occurs vary considerably between engines. If such fixed values are used without correction, there is a risk that knock will occur in some engines. In order to overcome this risk, in the present control system, knock is measured using the principles described with reference to Figure 1. The results of these measurements are used both to retard the ignition timing angle when knock exceeds a threshold and to update a correction memory 38 for the spark advance values. The system includes a perturbation generator 30 which generates perturbation values for the spark advance angle for each cylinder. In the present example, these perturbation values are alternately +2.5° and -2.5° of crankshaft rotation and the value is changed after each ignition spark. These perturbation values are supplied to an input of a summer 29, the output of which is connected to an input of the dwell control device 13 as a command value for the spark advance angle. The dwell control device 13 uses the output of the speed calculation device 20 and position transducer 12 to ensure that ignition sparks occur at the commanded advance values. The perturbation values from generator 30 are supplied to a slope calculation device 31. Also, the output of knock sensor 22 is supplied via a signal conditioning circuit 32 to slope calculation device 31. The slope calculation device 31 calculates the gradient or slope of the output of the knock sensor 22 with respect to the spark advance angle. The slope calculation device 31 supplies a slope value to a threshold comparator 33, which provides output values to a negative input of summer 34. The output of summer 34 is connected to a second input of summer 29. When the slope value is less than the threshold value, the output value of comparator 33 is zero. When the slope value is greater than the threshold value, the output value of comparator 33 is set to 5° thereby causing a 5° retardation in the spark advance angle. Alternatively, the signal conditioning circuit 32 may supply a knock signal to the threshold comparator 33 in place of the slope value from the device 31. This acts as a fast correction when large levels of knock are present which may occur during transients. The slope values are also supplied to an input of a summer 36, a negative input of which receives a bias value for a reason which will be described below. The output of summer 36 is supplied to a device 37 for updating the memory 38 in which are stored correction values for spark advance angle. The correction values are stored as a two dimensional array in which the abscissa and ordinate represent engine speed and load demand and they are stored with the same density as the values in memory 25. The correction memory updating device 37 also receives the outputs of the speed calculation device 20 and the load demand sensor 21. The device 37 updates the values stored in memory 38 for each of the four array points surrounding the prevailing engine speed and load demand. Specifically, for each array point, a new correction is calculated and stored from the old correction in accordance with the following formula:- new correction = old correction + K x (weighting factor) x (SLOPE - BIAS) (1) where K is a constant, SLOPE is the output value produced by device 31, and BIAS is the bias value supplied to the negative input of summer 36. The weighting factors used in the formula are the same as the weighting factors used by device 26 and by a device 39 for calcuating spark advance correction values. The method of calculating the weighting factors will be described below. The device 39 for calculating spark advance correction values is also responsive to the outputs of the speed calculation device 20 and the load demand sensor 21 and can retrieve values from memory 38. For prevailing engine conditions the device 39 calculates a correction value and supplies this to a positive input of summer 27. This correction value is used only if it is negative, corresponding to a retard of spark angle. Thus, no correction is made at low knock levels and the system allows a small amount of knock to be present before any corrective action is taken. This small level of knock can improve fuel economy. Because the correction value is used only when it is negative, any residual noise which may be present in the values calculated by the device 31 does not cause corrective action. The output of summer 27 is connected to an input of summer 34. The device 39 calculates the correction values by using the same interpolation method as that used by the device 26. It is to be noted that the interpolation process used to calculate the spark advance angles by devices 26 and 39 is symmetrical with the interpolation process used to update memory 38. The various functional blocks shown in Figure 2 are implemented by using a microcomputer system shown in Figure 3. As shown in Figure 3, the microcomputer system comprises an Intel Corporation 8097 microcomputer 50 which is connected via a data and address bus 51 to a type 27C64 read only memory 52, a Hitachi type 6116 read/write memory 53, and a Greenwich Instruments Limited type NVR2 non-volatile read/write memory 54. The program and fixed schedules are stored in memory 52, temporary variables are stored in memory 53, and the corrections for the spark advance angle are stored in memory 54. Referring to the functional components of Figure 2 the microcomputer system implements the speed calculation device 20, memories 25 and 38, the spark advance calculation devices 26 and 39, summers 27, 29, 34 and 36, perturbation generator 30, slope calculation device 31, threshold comparator 33, and correction memory updating device 37. Referring again to Figure 3, the load demand transducer 21 is connected through a conventional signal conditioning circuit 55 to an ANALOG input of microcomputer 50. The position transducer 12 is of the variable reluctance type and coacts with a toothed wheel secured to the flywheel 11 (Figure 2). A tooth has been removed from this toothed wheel to establish the required reference position. Transducer 12 is connected through a signal conditioning circuit 56 to a HIGH SPEED input of microcomputer 50. The knock sensor 22 is connected through a signal conditioning circuit 57 to a further ANALOG input of microcomputer 50. The signal conditioning circuit 57 is shown in more detail in Figure 4 and comprises, in series, a switch 58, an amplifier 59, a bandpass filter 60, a rectifier circuit 61 and an integrator 62. The control terminals of switch 58 and integrator 62 are connected to HIGH SPEED outputs of microcomputer 50. The microcomputer system is arranged so that the switch 58 is closed for each ignition spark when the respective piston is 10° before the top dead centre position and opened when the piston is at 40° after the top dead centre position. Thus, switch 58 selects that part of the output signal of the knock sensor 21 during which knock can occur. The integrator 62 is reset to zero output after the internal analog/digital converter of microcomputer 50 has read the integrated knock signal after each spark. A HIGH SPEED output of microcomputer 50 is connected to the input of dwell control circuit 63. The dwell control circuit 63 together with part of the program stored in memory 52 performs the function of the dwell control device 13 shown in Figure 2. The dwell control circuit 63 is a type L497 dwell control circuit supplied by S.G.S Limited. The dwell control circuit 63 initiates the build up of current in the primary winding of the ignition coil at the correct moment to achieve the required level just before the current is interrupted. The dwell control circuit 63 also limits the coil current to the required level during the short period which elapses between achieving the required current level and the current being interrupted. The output of dwell control circuit 63 is connected to the power stage 14 which, as mentioned with reference to Figure 2, is connected at the input of the coil and distributor 15. Referring now to Figure 5, there is shown the general arrangement of the modules which form the program and also the flow of data between these modules. The program comprises the modules MISDET 70, IGNLU 71, SAFIRE 72, and DWELL 73. The modules IGNLU calls a sub-module LOOK_UP 74 and the module SAFIRE calls sub-modules MAP_STORE 75 and LOOK_UP_CORRECTION 76. Figure 5 also shows a spark advance schedule 77 which contains the fixed spark advance values and which correspond to memory 25 of Figure 2. Figure 5 further shows a spark advance correction schedule 78 which contains the correction values for spark advance and corresponds to memory 38 shown in Figure 2. The module MISDET receives an interrupt TOOTH_ INTERRUPT (indicated by a line 79) and this module is executed each time a tooth is detected. A variable TOOTH is supplied to the module DWELL (indicated by a line 80) and this variable represents the position of the crankshaft to within one tooth of the transducer 12. This module MISDET compares the period between each tooth and thereby detects the missing tooth. When the missing tooth is detected, this module re-establishes the relationship between the variable TOOTH and the absolute position of the crankshaft. The module MISDET also calculates the fire period and supplies this as a variable FIRE-PERIOD (indicated by a line 81) to the module INGLU. The module IGNLU receives a variable MAN_PRESS (indicated by a line 82) representing manifold pressure which is indicative of the load demand. The variable MAN_PRESS is derived from the output signal of transducer 21 by the internal analog/digital converter of the microcomputer 50. The module SAFIRE receives a variable KNOCK (indicated by a line 83). The variable KNOCK is indicative of the knock as sensed by the sensor 22 after processing by the signal conditioning circuit 57 and after analog/digital conversion by a further converter which also forms part of microcomputer 50. In each of the schedules 77 and 78, the spark advance values are stored as a 16 x 16 array. In each array, the abscissa and ordinate correspond respectively to engine speed and load demand and the abscissa and ordinate are divided respectively into 16 discrete engine speed and load demand values. Thus, each array point contains the spark advance value for one of the discrete engine speed values and one of the discrete load demand values. In order to address the schedule 77 and 78, the module IGNLU generates address variables SPEED_INDEX and LOAD_INDEX corresponding respectively to engine speed and load demand. Each of these address variables can assume any one of values 0 to 15 corresponding to 16 discrete engine speed and load demand values. These variables are set to values corresponding to the engine speed and load demand immediately below the prevailing speed and load demand. The address variables SPEED_INDEX and LOAD_INDEX are supplied to the sub-modules LOOK_UP, MAP_STORE and LOOK_UP_CORRECTION. The module IGNLU also calculates four variables MAP_INT 0 to 3 which represent the four weighting factors described above. The variables MAP_INT 0 to 3 are supplied to the sub-module LOOK_UP, MAP_STORE, and LOOK_UP_CORRECTION. The four variables MAP_INT 0 to 3 correspond respectively to the four addresses (SPEED_INDEX, LOAD_INDEX), (SPEED_INDEX + 1, LOAD_ INDEX), (SPEED_INDEX, LOAD_INDEX + 1), (SPEED_INDEX + 1, LOAD_INDEX + 1). The method of calculating the weighting factors MAP-INT 0 to 3 for the prevailing speed and load is shown in Figure 6. A main rectangle is formed in the speed/load plane, the corners of the rectangle lying at the addresses (SPEED_INDEX, LOAD_INDEX), (SPEED_INDEX + 1, LOAD_INDEX), (SPEED_INDEX, LOAD_INDEX + 1), (SPEED_INDEX + 1, LOAD INDEX + 1). This main rectangle is divided into four sub-rectangles by drawing lines parallel to the abscissa and ordinate passing through the prevailing speed and load demand, these sub-recantangles having areas A0, A1, A2, A3. In Figure 6, line 90 indicates the prevailing load, and lines 91 and 92 respectively indicate LOAD_INDEX and LOAD_INDEX + 1. Line 93 indicates the prevailing engine speed and lines 94 and 95 respectively indicate SPEED_INDEX and SPEED_INDEX + 1. The weighting factor for each of the four array points is calculated by dividing the area of the sub-rectangle diagonally opposite the array point by the area of the main rectangle. Thus, the weighting factors MAP_INT 0 to 3 have the following values:- MAP_INT 0 = AO/A MAP_INT 1 = A1/A MAP_INT 2 = A2/A MAP_INT 3 = A3/A where A = A0 + A1 + A2 + A3. The module IGNLU calls the sub-module LOOK_UP which calculates the basic spark advance angle as a variable SPK_ANG_BASE by the interpolation process which has been described above. The module IGNLU then supplies the variable SPK_ANG_BASE to the module SAFIRE as indicated by line 96. The module IGNLU is executed after each ignition spark and the module SAFIRE is executed after module IGNLU. The module SAFIRE calculates the perturbation values to the spark advance angle, and calculates the slope of the knock (as sensed by knock sensor 22 and processed by signal conditioning circuit 57) with respect to spark advance angle. This module uses the calculated slope to update the spark advance correction schedule 78 and also retrieves a correction value to the spark advance from the schedule 78. This module also sums the basic spark advance value SPK_ANG_BASE with the perturbation value and the calculated correction value to produce a spark advance command value SPK_ANG and this value is supplied to the module DWELL. The module SAFIRE will now be described with reference to the flow chart shown in Figure 7. After entering the module SAFIRE, in a step 200, a variable DITHER is examined. This variable represents the present perturbation value. If DITHER equals + 2.5°, the program continues with a step 201 but otherwise continues with a step 202. In step 202, a variable NEG-KNOCK is set to the present value of the variable KNOCK and the program then jumps to a step 204. In step 201, a variable POS_KNOCK is set to the present value of variable KNOCK and the program continues with a step 205. In step 205, a variable SLOPE, which represents the slope of the knock with reference to the spark advance angle, is calculated in accordance with the following equation: SLOPE = POS_KNOCK - NEG_KNOCK Next, in a step 206, a variable MOD_SLOPE, which represents the amount by which the knock exceeds the acceptable level, is calculated in accordance with the following equation: MOP_SLOPE = SLOPE - BIAS. The variable MOP_SLOPE is supplied by module SAFIRE to the sub-module MAP_STORE as indicated by line 97. The constant BIAS is the bias value mentioned with reference to the summer 36 in Figure 2. The sub-module MAP_STORE then uses the value of MOP_SLOPE together with the values of MAP_INT 0 to 3, SPEED_INDEX and LOAD_INDEX, to update the spark advance correction schedule 78. This is performed in a manner already described with reference to Figure 2. Next, in a step 208, the variable SLOPE is compared with a constant THRESHOLD, which represents the knock level at which an immediate retardation of spark advance angle is required. If SLOPE is greater than THRESHOLD, a variable KNOCK_RETARD is set to a value corresponding to 5° of crankshaft rotation in a step 209. Otherwise, the variable KNOCK_RETARD is set to zero in a step 210. The program then continues with step 304. In step 304, the sub-module LOOK_UP_CORRECTION is called. This sub-module calculates a variable CORRECTION, which represents the appropriate correction to the spark advance angle for the present engine load and engine speed. This variable is supplied to the module SAFIRE as indicated by line 98. This variable is calculated by the interpolation method described with reference to Figure 2. CORRECTION can be positive indicating that the maximum allowable knock level has not been reached. In this case, it is not desirable to advance the spark angle. In steps 305 and 306, CORRECTION is examined and, if it is positive, it is set to zero. Next, in a step 307, a variable SPK_ANG_OPT is calculated in accordance with the following equation: SPK_ANG_OPT = SPK_ANG_BASE + CORRECTION - KNOCK_RETARD Thus, the variable SPK_ANG_OPT represents the spark advance angle modified in accordance with the correction value stored in schedule 78 and adjusted to take account of any retardation which is necessary when an excessive knock level is detected. The program then continues with a step 308. In step 308, the variable DITHER is set to -DITHER. Thus, the variable DITHER always has a magnitude of 2.5° and its polarity is reversed after each ignition spark. This ensures that the spark advance value is alternately retarded and advanced by 2.5°. In a step 309, the variable SPK-ANG, which represents the commanded spark advance value, is set in accordance with the following equation: SPK_ANG = SPK_ANG_OPT + DITHER The variable SPK_ANG is supplied to the module DWELL as indicated by line 99. The sub-module SAFIRE then ends. Returning to Figure 5, the routine DWELL uses the variables TOOTH, ENG_SPEED, and SPK_ANG to calculate a variable COIL_DRIVE (indicated by line 100) which controls the generation of each spark. Specifically, COIL_DRIVE causes the HIGH SPEED output of the microcomputer 50 to go low when the engine crankshaft passes the commanded spark advance position and to go high early enough to allow the primary current in the ignition coil to reach the required value. The routine DWELL also calculates a variable GATE (indicated by line 101) which causes the HIGH SPEED output of microcomputer 50, which is connected to the signal conditioning circuit 57, to go high and low in order to control switch 58. The routine DWELL also calculates a variable RESET (indicated by line 102) which causes the HIGH SPEED output of microcomputer 50, which is also connected to the signal conditioning circuit 57, to go high and low in order to reset integrator 62. The graphs of Figures 8b and 8c illustrate the effects of steadily increasing spark advance angle as shown in Figure 8a at an engine speed of 4000 r.p.m. on a typical sample engine. Figure 8b shows the output signal of the signal conditioning circuit 32 in Figure 2. Although knock is occurring to the right of this graph, it is largely masked by the high noise level. Previously known systems for detecting knock use similar signal processing techniques as that used in the signal conditioning circuit 32, but attempt to distinguish between the knock signal and the noise by applying a detection threshold corresponding to the noise level. However, because of the randomness and level of the noise, particularly at high engine speeds, the threshold must either be conservative, in which case low levels of knock are not detected, or be relatively low, in which case false detection of knock occurs. Figure 8c shows the output signal of the slope calculation circuit 31 for the same conditions of steadily increasing spark advance. The noise level of this signal is much smaller and, because of the correlation technique provided by the slope calculation circuit 31, has a mean level of zero. Equation 1 given hereinbefore for finding the new correction in the correction memory updating device 37 is that of a discrete time integrator. As applied to the output of the slope calculation circuit 31 (including the effect of the summer 36 and the BIAS), the resulting integration increases the signal to noise ratio because the noise has zero mean level. By changing the integration constant K, the signal to noise ratio can be improved to any desired value. Previously known systems do not have noise with zero mean level. Thus, if integration were to be applied in such cases, the noise would be increased in the same proportion as the signal and the signal to noise ratio would remain unchanged. In the example of the present invention which has been described above, the spark advance angle is perturbed by being alternately advanced and retarded after each ignition spark. By way of modification, the spark advance angle may be perturbed by being alternately advanced and retarded after each complete engine cycle. Thus, with the a four stroke engine, each ignition cycle would include four ignition sparks. With this modification, the variable SLOPE would be calculated from the values of KNOCK for two succeeding engine cycles. By way of another modification, the spark advance angles may be set for each individual cylinder. In this case, the variable SLOPE will be calculated for each cylinder from values of the variable KNOCK in successive engine cycles. In the above example, a control input in the form of a spark advance angle is perturbed in order to measure KNOCK and this same control input is then adjusted to eliminate knock. However, the present invention is not limited to using this particular control input and, moreover, the present invention is not limited to using the same control input both for the perturbations to measure knock and for the adjustment to eliminate knock. The present invention can also be applied to a diesel engine. Examples of the control inputs which can be used for the perturbations to measure knock and the adjustment to eliminate knock include, apart from spark advance angle, timing of fuel injection in either petrol or diesel engines, air/fuel ratio in either petrol or diesel engines, and exhaust gas/air ratio in engines in which exhaust gases are mixed with the engine intake air. The system described above may be combined with an adaptive control system in which spark advance angle is corrected to achieve optimum engine output. An example of such an adaptive control system is described in United Kingdom patent application 8604260. In such a combination, perturbation generator 30 would be common to both systems and, as specified in application 8604260, it would maintain the perturbations at a frequency slightly higher than the resonance of the vehicle driveline. The correction value to spark advance to achieve optimum output would be compared with the correction value required to control knock and the lower value would be supplied to summer 27. Thus, the value which causes the most retardation (or least advance) would be used. The present invention may also be applied to measurement of engine roughness. Measurement of engine roughness is discussed in SAE paper 860413, entitled "Lean Limit A/F Control System by Using Engine Speed Variation". As explained in this paper, measurement of engine roughness also suffers from the problem of identifying background noise. In the case of engine roughness, the background noise is caused by road irregularities. When using the present invention to measure engine roughness, the perturbed parameter is air/fuel ratio. As an engine approaches the lean limit of combustion, engine roughness varies considerably with air/fuel ratio. Referring now to Figure 9, there is shown a functional form of an adaptive control system embodying this invention and installed in a motor vehicle. The control system is applied to a four cylinder spark ignition or compression ignition (diesel) internal combustion engine 110 having a flywheel 111. The system bears a substantial resemblance to the system shown in Figure 2, and corresponding parts or parts performing a similar function to those in Figure 2 are indicated by the same reference numerals increased by 100. The flywheel 111 is associated with a position transducer 112 which produces a reference pulse for each 180° of rotation of the engine crankshaft. Each pulse is produced when the piston in the cylinder executing an expansion stroke is at a predetermined angle after the top dead centre position. The pulses from the transducer 112 are supplied to an injector pulse width calculation device 113, the output of which is connected through a power stage 114 to the injectors 115 of a fuel injection system of the engine 110 so as to control the duration of injection of fuel into the inlet manifold or cylinder. The output of the transducer 112 is also supplied to a speed calculation device 120 which calculates engine speed and supplies this to the calculation device 113. The engine is also provided with a transducer 121 which measures the load demand to which the engine is subjected. In the present example, the transducer 121 measures the depression in the inlet manifold for the engine cylinders. The load demand could also be detected by measuring other quantities such as the throttle valve opening position or the rate of air flow into the inlet manifold. The output of the transducer 112 is also connected to a roughness calculation circuit 122 which calculates the engine roughness from variations in engine speed. A suitable formula for calculating roughness is described in SAE paper 860413. The simplified formula used here is: ROUGHNESS = K(T₁-2T₂+T₃)/(T₁+T₂+T₃)³ where T₁, T₂, and T₃ are the periods of three successive complete engine cycles and K is a constant. The system also includes a memory 125 in which is stored a two dimensional array of air/fuel ratio values, the abscissa and ordinate of the array corresponding to engine speed and load demand. The memory 125, the speed calculation device 120, and the load demand sensor 121 are connected to a calculation device 126. For each prevailing engine speed and load demand, the calculation device 126 calculates a basic value for air/fuel ratio and supplies this to one input of a summer 127. The calculation device 126 calculates this basic value from the air/fuel ratio values stored in the array in the memory 125 at the four points in the speed/load plane surrounding the prevailing engine speed and load demand. Each of these values is multiplied by an appropriate weighting factor and the four resulting values are added to provide the basic air/fuel ratio. Thus, the calculation device 126 calculates the basic air/fuel ratio by interpolation. The air/fuel ratio values are stored in the memory 125 at a density which provides a good match for irregularities of a true optimum air/fuel ratio characteristic of the engine 110. The interpolation technique performed by the calculation device 126 corresponds to that performed by the device 26 of Figure 2 and described in more detail hereinbefore with reference to Figure 6. The air/fuel ratio values stored in the memory 125 take the form of a fixed schedule which is established from rig-tests and sample engines. In such a fixed schedule, each value is normally that at which minimum fuel consumption or minimum engine emissions is or are obtained, and these values are usually on the rich side of the values at which engine roughness will occur and for any particular engine the desired air/fuel ratio is not always obtained because of drift and tolerances in the fuelling system components. The air/fuel ratios at which engine roughness occurs vary considerably between engines. If such fixed values are used without correction, there is a risk that roughness or excessive fuel consumption or emissions will occur in some engines. In order to overcome this risk, in the present control system, engine roughness is measured and used to correct the air/fuel ratio when engine roughness differs from a desired value and to update a correction memory 138 for the air/fuel ratio values. The system includes a perturbation generator 130 which generates perturbation values for the air/fuel ratio for each cylinder. In the present example, these perturbation values are alternatively ± 0.5 and the value is changed after a predetermined time period, equal to 1 second in the particular example. These perturbation values are supplied to an input of a summer 129, the output of which is connected to an input of the injector pulse width calculation device 113 as a command value for the air/fuel ratio. The device 113 uses the outputs of the speed calculation device 120, the position transducer 112, and the load transducer 121 to ensure that fuel injection begins at the correct crankshaft position and that the duration of fuel injection produces the commanded air/fuel ratio. The perturbation values from the generator 130 are also supplied to a slope calculation device 131. Also, the output of the roughness calculation circuit 122 is supplied to the slope calculation device 131. The slope calculation device 131 calculates the gradient or slope of the output of the roughness calculation circuit 122 with respect to air/fuel ratio. The slope values are supplied to a negative input of a summer 136, whose positive input is connected to the output of a slope schedule device 140. The slope schedule device 140 receives the outputs of the speed calculation device 120 and the load demand sensor 121 and stores a schedule of target slope values which are always greater than zero and which correspond to minimum fuel consumption or minimum emissions. The output of the summer is supplied to a device 137 for updating the memory 138 in which are stored correction values for the air/fuel ratio. The correction values are stored as a two dimensional array in which the abscissa and ordinate represent engine speed and load demand and they are stored with the same density as the values in the memory 125. The correction memory updating device 137 also receives the outputs of the speed calculation device 120 and the load demand sensor 121. The device 137 updates the values stored in the memory 138 for each of the four array points surrounding the prevailing engine speed and load demand. Specifically, for each array point, a new correction is calculated and stored from the old correction in accordance with the following formula: new correction = old correction + K x (weighting factor) x (SCHEDULED SLOPE - CALCULATED SLOPE) where K is a constant, CALCULATED SLOPE is the output value produced by the device 131, and SCHEDULED SLOPE is the value supplied by the slope schedule device 140. The weighting factors used in this formula are the same as those used by the device 126 and by a device 139 for calculating air/fuel ratio correction values. This has been described hereinbefore, for instance with reference to the devices 26 and 39 of Figure 2, and will not therefore be described further. The device 139 for calculating air/fuel ratio correction values is also responsive to the outputs of the speed calculation device 120 and the load demand sensor 121 and can retrieve the values from the memory 138. For prevailing engine conditions, the device 139 calculates a correction value and supplies this to a positive input of summer 127. The output of the summer 127 is connected to an input of the summer 129. The device 139 calculates the correction values by using the same interpolation method as that used by the device 126. It is to be noted that the interpolation process used to calculate the air/fuel ratio values by the devices 126 and 139 is symmetrical with the interpolation process used to update the memory 138. The various functional blocks shown in Figure 9 may be implemented in substantially the same way as the functional blocks shown in Figure 2 as described hereinbefore with reference to Figures 3, 5 and 7. This is well within the capabilities of an ordinary engineer to whom this specification would be addressed, and will not therefore be described further. A system is also envisaged in which spark advance and air/fuel ratio are perturbed alternately. In such a system, the perturbation in spark advance would be used to control spark advance so as to maximize torque and to control knock. The perturbation in air/fuel ratio would be used to control air/fuel ratio to the lean limit as determined by the roughness slope measurement in order to minimize fuel consumption and to reduce emissions. Under certain conditions, such as high load, it is necessary to maximise the power output of the engine rather than minimize the fuel consumption. Under such conditions, the perturbations of air/fuel ratio could be used to detect the slope of engine output against air/fuel ratio and maximize engine output in a manner analagous to that described in United Kingdom patent application 8604260.

Claims: An engine knock detection system for an internal combustion engine having at least one control input, the system comprising means (25, 26) for establishing a base value for a first control input, means (30) for periodically perturbing the first control input about the base value, and a knock sensor (22) for sensing engine knock, characterised in that the system further comprises means (31) for determining a knock quality value as the slope of the output of the knock sensor (22) with respect to the first control input. A system as claimed in Claim 1, characterised in that the knock sensor (22) is a device for sensing knock induced vibrations arising in the engine (10). A system as claimed in Claim 1 or 2, characterised in that the first control input is an ignition timing input. A system as claimed in Claim 3, for a spark ignition engine, characterised in that the first control input is spark advance angle. An engine roughness detection system for an internal combustion engine having at least one control input, the system comprising means (125, 126) for establishing a base value for a first control input, means (130) for periodically perturbing the first control input about the base value, and means (122) for sensing engine roughness, characterised in that the system further comprises means (131) for determining an engine roughness quality value as the slope of the output of the sensing means (122) with respect to the first control input. A system as claimed in Claim 5, characterised in that the first control input is air/fuel ratio. A system as claimed in any one of the preceding claims, characterised by means (25,26; 125,126) for establishing a base value for a particular control input, and means (31-39; 131-139) for correcting the base value of the particular control input in accordance with the quality value. A system as claimed in Claim 7, characterised in that the correcting means (31-39, 131-139) includes means (33; 133) for correcting the base value by a fixed amount when the quality value exceeds a threshold value. A system as claimed in Claim 7 or 8, characterised in that the correcting means includes a correction schedule (38; 138), in which correction values of the particular control input are stored as a function of engine operating conditions, and means (37; 137) for updating the schedule in accordance with the quality value. A system as claimed in any one of Claims 7 to 9, characterised in that the particular control input is the first control input. An engine knock and roughness detection system for an internal combustion engine (10) having an ignition timing input and an air/fuel ratio input, the system comprising means (25,26) establishing a first base value for the ignition timing input and means (125,126) for establishing a second base value for the air/fuel ratio input, characterised in that the system further comprises a knock sensor (22), means (122) for detecting engine roughness, means (30,130) for alternately periodically perturbing the ignition timing input about the first base value and the air/fuel ratio input about the second base value, means (31) for determining a knock quality value as the slope of the output of the knock sensor with respect to the ignition timing input, and means (131) for determining an engine roughness quality value as the slope of the output of the roughness detecting means with respect to the air/fuel ratio input. A system as claimed in Claim 12, characterised by including means (31-39) for correcting the base value of the ignition timing input in accordance with the knock quality value and means (131-139) for correcting the base value of the air/fuel ratio input in accordance with the engine roughness quality value. A method of detecting knock in an internal combustion engine, comprising establishing a base value for a first control input of the engine, periodically perturbing the first control input about the base value, and determining a knock quality value as a slope of the output of a knock sensor with respect to the first control input. A method as claimed in Claim 13, characterised in that the first control input is an ignition timing input. A method as claimed in Claim 14, characterised in that the engine is a spark ignition engine and the first control input is spark advance angle. A method of detecting engine roughness in an internal combustion engine, comprising establishing a base value for a first control input of the engine, periodically perturbing the first control input about the base value, and determining an engine roughness quality value as a slope of the output of an engine roughness sensing means with respect to the first control input. A method as claimed in Claim 16, characterised in that the first control input is air/fuel ratio. A method as claimed in any one of Claims 13 to 17, characterised by including establishing a base value for a particular control input and correcting the base value of the particular control input in accordance with the quality value. A method as claimed in Claim 18, characterised by including correcting the base value of the particular control input by a fixed amount when the quality value exceeds a threshold value. A method as claimed in Claim 18 or 19, characterised by including storing correction values of the particular control input as a function of engine operating conditions and updating the correction values in accordance with the quality value. A method as claimed in any one of Claims 18 to 20, characterised in that the particular control input is the first control input.

Inventors: HOLMES ESQ, MICHAEL
Applicants: LUCAS INDUSTRIES PUBLIC LIMITED COMPANY
Application year: 1987
Main classification: F02P5
IPC codes: F02D35, F02P5, F02D45, F02D41