Method of controlling an air-fuel ratio of an engine

Abstract: In an engine, the elapsed time for rotation through 30 degrees crank angle near top dead center of the compression stroke and the elapsed time for rotation through 30 degrees crank angle near 90 degrees after top dead center of the compression stroke are found and the amount of torque fluctuation is found from these elapsed times. Whether the vehicle is driving on a rough road is judged from the amount of fluctuation of the angular velocity of the crankshaft. When it is judged that the vehicle is driving on a rough road, the correction of the air-fuel ratio based on the amount of torque fluctuation is prohibited.

Description: BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method of controlling an air-fuel ratio of an engine. 2. Description of the Related Art Known in the art is an internal combustion engine which finds a first angular velocity of the crankshaft during the time required for the crankshaft to rotate from 30° to 60° after top dead center of the compression stroke from this period, finds a second 'angular velocity of the crankshaft during the time required for the crankshaft to rotate from 90° to 120° after top dead center of the compression stroke from this period, finds the torque generated by a cylinder from the square of the first angular velocity and the square of the second angular velocity, and calculates the amount of fluctuation of the torque from the amount of fluctuation of the generated torque (see Japanese Examined Patent Publication (Kokoku) No. 7-33809). That is, when combustion is performed in a cylinder, the combustion pressure causes the angular velocity of the crankshaft to rise from a first angular velocity ωa to a second angular velocity ωb. At this time, if the moment of inertia of rotation of the engine is I, the combustion pressure causes the kinetic energy to rise from (½)•Iωa 2 to (½)•Iωb 2 . Roughly speaking, the amount of rise of the kinetic energy (½)•I•(ωb 2 -ωa 2 ) causes a torque to be generated, so the generated torque becomes proportional to (ωb 2 -ωa 2 ). Therefore, the generated torque is found from the difference between the square of the first angular velocity ωa and the square of the second angular velocity ωb and, therefore, in the above-mentioned internal combustion engine, the amount of fluctuation of the torque is calculated from the thus found generated torque. However, if it is possible to calculate the amount of fluctuation of the torque in this way, it would also be possible to control the air-fuel ratio to the lean limit based on this amount of torque fluctuation. That is, when the air-fuel ratio is at the rich side of the lean limit, the amount of torque fluctuation is small, while when the air-fuel ratio is at the lean side of the lean limit, the amount of torque fluctuation becomes large, so by correcting the air-fuel ratio based on the amount of torque fluctuation so that the amount of torque fluctuation becomes within a predetermined range, it is possible to control the air-fuel ratio to the lean limit. This type of control of the air-fuel ratio becomes possible when the torque fluctuation calculated based on the first angular velocity ωa and second angular velocity ωb expresses the torque fluctuation due to the fluctuation of the combustion pressure. When the vehicle is driving over a rough road, however, the engine drive system experiences large amplitude torsional vibration and, as a result, the torque calculated based on the first angular velocity ωa and the second angular velocity ωb fluctuates considerably. The occurrence of the large torque fluctuation when torque fluctuation not due to the fluctuation of the combustion pressure occurs means that if the air-fuel ratio is corrected, the air-fuel ratio will end up deviating considerably from the lean limit. Therefore, it is necessary to prohibit correction of the air-fuel ratio when large torque fluctuations occur due to driving over a rough road. The related art of the above internal combustion engines explained above, however, do not give any suggestions on the occurrence of torque fluctuations due to driving over a rough road and therefore application of the methods described in the above related art would result in the problem of the air-fuel ratio deviating from the target air-fuel ratio. Reference may be made to US 4691286, relative to which the present invention is characterised. SUMMARY OF THE INVENTION Aspects of the invention are defined in the claims. An advantage of the present invention is that it can provide a method of control of an air-fuel ratio capable of preventing the air-fuel ratio from deviating from a target air-fuel ratio when a vehicle is driving over a rough road. BRIEF DESCRIPTION OF THE DRAWINGS The present invention may be more fully understood from the description of the preferred embodiments of the invention set forth below together with the accompanying drawings, in which: Fig. 1 is an overall view of an internal combustion engine; Fig. 2 is a view of a map of the basic fuel injection time; Fig. 3 is a view of the amount of generation of NOx and torque fluctuation; Fig. 4 is a view of a map of a lean correction coefficient; Fig. 5 is a view of a map of a lean limit feedback correction coefficient; Figs. 6A and 6B are time charts of the changes in the elapsed times Ta(i) and Tb(i) of 30° crank angle; Fig. 7 is a time chart of the changes in the elapsed time Ta(i) of 30° crank angle; Fig. 8 is a time chart of the changes in the elapsed times Ta(i) and Tb(i) of 30° crank angle; Fig. 9 is a time chart of the changes in the elapsed times Ta(i) and Tb(i) of 30° crank angle; Fig. 10 is a time chart of the changes in the elapsed time Ta(i) of 30° crank angle; Fig. 11 is a flowchart of the interruption routine; Fig. 12 is a flowchart for calculating the elapsed times Ta(i) and Tb(i); Figs. 13 to 15 are flowcharts for calculating the amplitude of fluctuation of Ta(i); Fig. 16 is a time chart of the changes of the elapsed time Ta(i) and the changes of the flags XMXREC and XMNREC; Fig. 17 is a flowchart for calculating the torque; Figs. 18 and 19 are flowcharts for calculating the ratios KTa(i) and KTb(i); Fig. 20 is a flowchart for processing of the counter CDLNIX; Fig. 21 is a view of the timings for calculation of various values; Figs. 22A and 22B are views of a target torque fluctuation value; Fig. 23 is a flowchart showing a main routine; Figs. 24 and 25 are flowcharts for calculating the torque fluctuation value; Figs. 26 and 27 are flowcharts of the calculation of a lean limit feedback correction coefficient; Figs. 28A and 28B are views of the fluctuation amount judgement values DH(n) and DL(n)and the levels of torque fluctuation LVLH(n)and LVLL(n); Fig. 29 is a time chart of changes in the average value SINPAV of the amplitude of the fluctuation of Ta(i); Fig. 30 is a view of a map of a learning value KBUij; Fig. 31 is a flowchart of the calculation of the fuel injection time; Fig. 32 is a graph of the region of judgement of a vehicle driving over a rough road; Fig. 33 is a view of the fluctuation amount judgement values DH(n)and DL(n); Figs. 34 and 35 are flowcharts for calculating the lean limit feedback correction coefficient; Fig. 36 is an overview of another embodiment of the internal combustion engine; Fig. 37 is flowchart of an interruption routine; Figs. 38 to 40 are flowcharts of the check of the approval for torque calculation; Fig. 41 is a flowchart of the calculation of the torque; Figs. 42A and 42B are views for explaining the method of detection of turbine speed; Figs. 43 to 46 are flowcharts of an interruption routine; Fig. 47 is a time chart of the changes in DLNT and the changes in the flags XNXREC and XNNREC; Fig. 48 is a flowchart of a main routine; Figs. 49 and 50 are flowcharts of calculation of the lean limit feedback correction coefficient; and Fig. 51 is a time chart of the changes in SINPAV1, SINPAV2, etc. DESCRIPTION OF THE PREFERRED EMBODIMENTS Referring to Fig. 1, 1 shows an engine body provided with four cylinders consisting of the No. 1 cylinder #1, No. 2 cylinder #2, No. 3 cylinder #3, and No. 4 cylinder #4. The cylinders #1, #2, #3, and #4 are respectively connected through the corresponding intake pipes 2 to a surge tank 3. In the intake pipes 2 are provided fuel injectors 4 for injecting fuel toward the corresponding intake ports. The surge tank 3 is connected through an intake duct 5 to an air cleaner 6. In the intake duct 5, a throttle valve 7 is arranged. On the other hand, the cylinders #1, #2, #3, and #4 are connected through an intake manifold 8 and an exhaust pipe 9 to a casing 11 accommodating an NOx absorbent 10. This NOx absorbent 10 has the function of absorbing the NOx included in the exhaust gas when the air-fuel ratio is lean and releasing the absorbed NOx when the air-fuel ratio is the stoichiometric air-fuel ratio or rich. The electronic control unit 20 is comprised of a digital computer and is provided with a ROM (read only memory) 22, a RAM (random access memory) 23, a CPU (microprocessor) 24, a backup RAM 25 connected to a constant power supply, an input port 26, and an output port 27 connected with each other by a bidirectional bus 21. The output shaft of the engine 12 has attached to it a rotor 13 with outer teeth. A crank angle sensor 14 comprising an electromagnetic pickup is arranged facing the outer teeth of the rotor 13. As shown in Fig. 1, in this embodiment, the rotor 13 has an outer tooth formed on its periphery at every 30° crank angle and, for example, has part of the outer teeth removed for detecting the top dead center of the compression stroke of the No. 1 cylinder. Therefore, except for the portion where the outer teeth are removed, that is, the non-tooth portion, the crank angle sensor 14 generates an output pulse every time the output shaft 12 turns by 30° crank angle. This output pulse is input to the input port 26. The surge tank 3 has attached to it a pressure sensor 15 for generating an output voltage proportional to the absolute pressure in the surge tank 3. The output voltage of this pressure sensor 15 is input through a corresponding AD converter 28 to the input port 26. Further, the throttle valve 7 has attached to it an idle switch 16 for detecting when the throttle valve 7 is at the idling opening position. The output signal of this idle switch 16 is input to the input port 26. Further, the intake manifold 8 has disposed in it an air-fuel ratio sensor (O 2 sensor) 17 for detecting the air-fuel ratio. The output signal of this air-fuel ratio sensor 17 is input through the corresponding AD converter 28 to the input port 26. On the other hand, the output port 27 is connected through the corresponding drive circuit 29 to the fuel injectors 4. In the internal combustion engine shown in Fig. 1, the fuel injection time TAU is calculated based on the following equation: TAU = TP•FLEAN•FLLFB•FAF+TAUV Here, TP shows a basic fuel injection time, FLEAN a lean correction coefficient, FLLFB a lean limit feedback correction coefficient, FAF a stoichiometric air-fuel ratio feedback correction coefficient, and TAUV an invalid injection time. The basic fuel injection time TP shows the injection time required for making the air-fuel ratio the stoichiometric air-fuel ratio. This basic fuel injection time TP is found from experiments. This basic fuel injection time TP is stored in the ROM 22 in advance in the form of a map shown in Fig. 2 as a function of the absolute pressure PM in the surge tank 3 and the engine speed N. The lean correction coefficient FLEAN is a correction coefficient for making the air-fuel ratio a target lean air-fuel ratio. This lean correction coefficient FLEAN is stored in advance in the ROM 22 in the form of the map shown in Fig. 4 as a function of the absolute pressure PM in the surge tank 3 and the engine speed N. The lean limit feedback correction coefficient FLLFB is a correction coefficient for maintaining the air-fuel ratio at the lean limit. In this embodiment according to the present invention, the learning region for the lean air-fuel ratio feedback control for the absolute pressure PM in the surge tank 3 and the engine speed N is divided into nine regions as shown in Fig. 5 for example. Lean limit feedback correction coefficients FLLFB11 to FLLFB33 are set for the learning regions. The stoichiometric air-fuel ratio feedback correction coefficient FAF is a coefficient for maintaining the air-fuel ratio at the stoichiometric air-fuel ratio. The stoichiometric air-fuel ratio feedback correction coefficient FAF is controlled based on the output signal of the air-fuel ratio sensor 17 so as to maintain the air-fuel ratio at the stoichiometric air-fuel ratio. At this time, the stoichiometric air-fuel ratio feedback correction coefficient FAF varies substantially about 1.0. The lean correction coefficient FLEAN is set in accordance with the operating state of the engine for the operating region enclosed by the broken lines in Fig. 4. In this operating region, the air-fuel ratio is maintained at the target lean air-fuel ratio. As opposed to this, in the operating region outside the region enclosed by the broken line in Fig. 4, the air-fuel ratio is maintained at the stoichiometric air-fuel ratio. When the air-fuel ratio is to be maintained at the stoichiometric air-fuel ratio, the lean correction coefficient FLEAN and the lean limit feedback correction coefficient FLLFB are fixed at 1.0 and the stoichiometric air-fuel ratio feedback correction coefficient FAF is controlled based on the output signal of the air-fuel ratio sensor 17. On the other hand, when the air-fuel ratio is to be maintained at the target lean air-fuel ratio, the stoichiometric air-fuel ratio feedback correction coefficient FAF is fixed at 1.0, that is, the feedback control based on the output signal of the air-fuel ratio sensor 17 is stopped, and the lean correction coefficient FLEAN and the lean limit feedback correction coefficient FLLFB are used to control the air-fuel ratio to the target lean air-fuel ratio. Next, the lean limit feedback control will be explained referring to Fig. 3. Fig. 3 shows the relationship between the amount of fluctuation of the torque of the engine output and the amount of generation of NOx and the air-fuel ratio. The leaner the air-fuel ratio, the smaller the fuel consumption rate. Further, the leaner the air-fuel ratio, the smaller the amount of generation of NOx. Therefore, viewed from these points, the air-fuel ratio should desirably be made as lean as possible. Note, however, that when the air-fuel ratio becomes leaner than a certain extent, the combustion becomes unstable and, as a result, as shown in Fig. 3, the amount of fluctuation of the torque becomes large. Therefore, in this embodiment according to the present invention, as shown in Fig. 3, the air-fuel ratio is maintained in the air-fuel ratio control region where the torque fluctuation starts to increase. That is, explaining this in more detail, the lean correction coefficient FLEAN is determined so that the air-fuel ratio becomes the middle of the air-fuel ratio control region shown in Fig. 3 when the lean limit feedback correction coefficient FLLFB is-made 1.0. On the other hand, the lean limit feedback correction coefficient FLLFB is controlled to within the torque fluctuation control region shown in Fig. 3 in accordance with the amount of fluctuation of the torque. When the amount of fluctuation of the torque becomes larger, the lean limit feedback correction coefficient FLLFB is increased, that is, the air-fuel ratio is made smaller, while when the amount of fluctuation of the torque becomes smaller, the lean limit feedback correction coefficient FLLFB is reduced, that is, the air-fuel ratio is made larger. In this way, the air-fuel ratio is controlled to within the air-fuel ratio control region shown in Fig. 3. Note that, as will be understood from a comparison of Fig. 4 and Fig. 5, the lean limit feedback correction coefficient FLLFB is set to substantially the same region as the engine operating region where the lean correction coefficient FLEAN is set. If the amount of fluctuation of the torque is controlled to within the torque fluctuation control region shown in Fig. 3, an excellent drivability of the vehicle may be ensured while the fuel consumption rate and the amount of generation of NOx can be greatly reduced. However, to control the amount of fluctuation of the torque to be within the torque fluctuation control region in this way, the amount of fluctuation of the torque must be detected. To detect the amount of fluctuation of the torque, the torque must be detected. Various methods have been proposed in the past for calculating the output torque of each cylinder. Mentioning typical ones, there are the method of providing a combustion pressure sensor in the combustion chamber and calculating the output torque based on the output signal of this combustion pressure sensor or the method of, as explained at the beginning, calculating the output torque from the difference between the square of the first angular velocity ωa and the square of the second angular velocity ωb. If a combustion pressure sensor is used, there is the advantage that the torque generated in the cylinder provided with the combustion pressure sensor can be reliably detected, but there is conversely the disadvantage that the combustion pressure sensor is required. As opposed to this, the angular velocities ωa and ωb can be calculated from the output signal of the crank angle sensor provided in the internal combustion engine in the past, so when calculating the output torque based on the angular velocities ωa and ωb, there is the advantage that there is no need to mount a new sensor. However, in this case, as explained at the beginning, if the amount of fluctuation of the angular velocity of the crankshaft becomes larger due to the vehicle driving over a rough road, it is necessary to prohibit the correction of the air-fuel ratio. It is clear, however, that except for this, the method of calculation of the torque based on the angular velocity, which does not require a new sensor, is preferable. Therefore, the present invention calls for calculating the generated torque based on the angular velocity and prohibiting the correction of the air-fuel ratio when it is judged that the vehicle is driving over a rough road. Next, the new method for calculating the drive force generated by each cylinder and the torque generated in each cylinder will be explained. First, the method of calculating the drive force generated by each cylinder and the torque generated in each cylinder will be explained while referring to Figs. 6A and 6B showing the steady operating state where the engine drive system does not experience torsional vibration. As explained above, the crank angle sensor 14 produces an output pulse each time the crankshaft rotates by 30° crank angle. Further, the crank angle sensor 14 is arranged to generate an output pulse at the top dead center TDC of the compression stroke of the cylinders #1, #2, #3, and #4. Therefore, the crank angle sensor 14 produces an output pulse for each 30° crank angle from the top dead center TDC of the compression stroke of the cylinders #1, #2, #3, and #4. Note that, the ignition sequence of the internal combustion engine used in the present invention is 1-3-4-2. In Figs. 6A and 6B, the vertical axis T30 shows the elapsed time of 30° crank angle from when the crank angle sensor 14 produces an output pulse to when it produces the next output pulse. Further, Ta(i) shows the elapsed time from the top dead center of the compression stroke (hereinafter referred to as TDC) to 30° after top dead center of the compression stroke (hereinafter referred to as ATDC) of the No. I cylinder, while Tb(i) shows the elapsed time from ATDC 60° to ATDC 90° of the No. I cylinder. Therefore, for example, Ta(1) shows the elapsed time from TDC to ATDC 30° of the No. 1 cylinder, while Tb(1) shows the elapsed time from ATDC 60° to ATDC 90° of the No. 1 cylinder. On the other hand, if the 30° crank angle is divided by the elapsed time T30, the result of the division shows the angular velocity ω. In this embodiment according to the present invention, 30° crank angle/Ta(i) is referred to as the first angular velocity ωa in the No. I cylinder, while 30° crank angle/Tb(i) is referred to as the second angular velocity ωb in the No. I cylinder. Therefore, 30° crank angle/Ta (1) shows the first angular velocity ωa of the No. 1 cylinder, while 30° crank angle/Tb(1) shows the second angular velocity ωb of the No. 1 cylinder. Taking note of the No. 1 cylinder of Figs. 6A and 6B, when the combustion is started and the combustion pressure rises, the elapsed time falls from Ta(1) to Tb(1) then rises from Tb(1). In other words, the angular velocity of the crankshaft ω rises from the first angular velocity ωa to the second angular velocity ωb, then falls again from the second angular velocity ωb. That is, the combustion pressure causes the angular velocity ω of the crankshaft to increase from the first angular velocity ωa to the second angular velocity ωb. Fig. 6A shows the case where the combustion pressure is relatively high, while Fig. 6B shows the case where the combustion pressure is relatively low. From Figs. 6A and 6B, when the combustion pressure is high, the amount of reduction of the elapsed time (Ta(i)-Tb(i)) becomes larger compared with when the combustion pressure is low, therefore the amount of increase (ωb-ωa) of the angular velocity ω becomes larger. When the combustion pressure becomes higher, the drive force generated by the cylinder becomes larger, therefore if the amount of increase (ωb-ωa) of the angular velocity ω becomes larger, the drive force generated by the cylinder becomes larger. Therefore, it is possible to calculate the drive force generated by a cylinder from the difference (ωb-ωa) between the first angular velocity ωa and the second angular velocity ωb. On the other hand, if the moment of inertia of rotation of the engine is I, the combustion pressure causes the kinetic energy to increase from (½)•Iωa 2 to (½)•Iωb 2 . The amount of increase of the kinetic energy (½)•I•(ωb 2 -ωa 2 ) expresses the torque generated by that cylinder, therefore it becomes possible to calculate the torque generated by a cylinder from the difference (ωb 2 -ωa 2 ) between the square of the first angular velocity ωa and the square of the second angular velocity ωb. By detecting the first angular velocity ωa and the second angular velocity ωb in this way, it becomes possible to calculate the drive force generated by the corresponding cylinder and the torque generated by the corresponding cylinder from the detection values. Note that the change in the elapsed time T30 shown in Figs. 6A and 6B differs somewhat depending on the engine, therefore the crank angle range for detecting the first angular velocity ωa and the crank angle range for detecting the second angular velocity ωb are set in accordance with the engine so that (ωb-ωa) best expresses the drive force generated by the engine or so that (ωb 2 -ωa 2 ) best expresses the torque generated by the engine. Therefore, depending on the engine, the crank angle range for detecting the first angular velocity ωa may be from before top dead center of the compression stroke BTDC 30° to TDC, while the crank angle range for detecting the second angular velocity ωb may be from ATDC 90° to ATDC 120°. Therefore, explaining the method of detecting the angular velocities ωa and ωb in general terms, the first crank angle range is set in the crank angle region from the end of the compression stroke to the beginning of the expansion stroke, the second crank angle range is set in a crank angle region in the middle of the expansion stroke a predetermined crank angle away from the first crank angle range, the first angular velocity ωa of the crankshaft in the first crank angle range is detected, and the second angular velocity of the crankshaft ωb in the second crank angle range is detected. As explained above, by detecting the angular velocities ωa and ωb, it becomes possible to calculate the drive force and the torque generated by a corresponding cylinder based on the detected values. The engine drive system, however, experiences torsional vibration occurring at the natural frequency of the drive system due to the successive explosive actions of the cylinders. If the engine drive system experiences such torsional vibration, it no longer becomes possible to accurately detect the drive force and the torque generated by a cylinder based on the angular velocities ωa and ωb. Next, this will be explained with reference to Fig. 7 and Fig. 8. Fig. 7 shows the changes in the elapsed time Ta(i) successively calculated for each cylinder when the engine drive system experiences torsional vibration. When the engine drive system experiences torsional vibration, this torsional vibration causes the angular velocity of a crankshaft to be cyclically increased and decreased, so the elapsed time Ta(i) increases and decreases cyclically as shown in Fig. 7. On the other hand, Fig. 8 shows the portion where the elapsed time Ta(i) is reduced in an enlarged manner. As shown in Fig. 8, the elapsed time Ta(i) falls by the time ho between Ta(1) and Ta(3). This reduction of the time ho is believed to be due to an increase in the amount of torsion due to the torsional vibration. In this case, the amount of decrease of the elapsed time due to the torsional vibration between Ta(1) and Ta(3) is believed to increase substantially linearly along with the elapse of time, therefore this amount of decrease of the elapsed time due to the torsional vibration is shown by the difference between the broken line connecting Ta(1) and Ta(3) and the horizontal line passing through Ta(1). Therefore, between Ta(1) and Tb(1), the torsional vibration causes the elapsed time to fall by exactly h. That is, Tb(1) is lower in elapsed time than Ta(1), but this lower elapsed time includes the amount of decrease f of the elapsed time due to the combustion pressure and the amount of decrease h of the elapsed time due to the torsional vibration. Therefore, to find just the elapsed time Tb'(1) decreased due to the combustion pressure, it becomes necessary to add h to Tb(1). That is, when the elapsed time Ta(i) decreases between cylinders (Ta(1)→Ta(3)), to find just the elapsed time Tb'(1) decreased due to the combustion pressure, the detected elapsed time Tb(1) must be corrected in the upward direction. In other words, when the first angular velocity ωa increases between cylinders, the second angular velocity ωb of the cylinder where the combustion was first performed must be corrected in the downward direction. As opposed to this, when Ta(3) increases with respect to Ta(1), the elapsed time Tb(1) reduced from Ta(1) includes the amount of decrease of the elapsed time due to the combustion pressure and the amount of increase of the elapsed time due to the torsional vibration. Therefore, in this case, to find just the elapsed time Tb'(1) reduced due to the combustion pressure, the amount of increase of the elapsed time due to the torsional vibration must be subtracted from Tb(1). That is, when the elapsed time Ta(i) increases between cylinders, to find just the elapsed time Tb'(1) decreased due to the combustion pressure, the detected elapsed time Tb(1) must be corrected in the downward direction. In other words, when the first angular velocity ωa decreases between cylinders, the second angular velocity ωb of the cylinder where the combustion was first performed must be corrected in the upward direction. As explained above, correction of the second angular velocity ωb enables the drive force generated by each cylinder to be accurately detected from the difference (ωb-ωa) between the first angular velocity ωa and the second angular velocity ωb even when the engine drive system experiences torsional vibration and enables the torque generated by each cylinder to be accurately calculated from the difference (ωb 2 -ωa 2 ) between the square of the first angular velocity ωa and the square of the second angular velocity ωb. Note, however, that if there is variation in the spaces between the outer teeth formed along the outer periphery of the rotor 13 (Fig. 1), even if the second angular velocity ωb is corrected as explained above, the drive force and the torque generated by a cylinder cannot be accurately detected. Next, this will be explained with reference to Fig. 9. Fig. 9 shows the case where the space between the outer tooth of the rotor 13 showing the TDC of the No. 1 cylinder #1 and the outer tooth of the rotor 31 showing ATDC 30° is smaller than the space between other outer teeth. In this case, as will be understood from a comparison of Fig. 8 and Fig. 9, the elapsed time Ta(1) will end up becoming smaller than the correct elapsed time for 30° crank angle. Further, at this time, as will be understood from a comparison of Fig. 8 and Fig. 9, the amount of decrease h' of the elapsed time Ta(1) due to the torsional vibration will end up becoming smaller than the correct amount of decrease h and therefore the value of Tb'(1) expressing just the elapsed time decreased due to the combustion pressure will also end up becoming smaller than the correct value. Therefore, in this embodiment according to the present invention, the ratio KTa(i) (= Ta(i)m/Ta(i)) between the mean value Ta(i)m of the elapsed times Ta(i) of all of the cylinders and the elapsed time Ta(i) of each cylinder and the ratio KTb(i) (= Tb(i) m/Tb(i)) between the mean value Tb(i)m of the elapsed times Tb(i) of all of the cylinders and the elapsed time Tb(i) of each cylinder at the time of when the supply of fuel has been stopped in a deceleration operation when the engine drive system does not experience torsional vibration are found. When the fuel is being supplied, the actually detected elapsed time Ta(i) for each cylinder is multiplied by the ratio KTa(i) so as to find the final elapsed time Ta(i) for each cylinder and the actually detected elapsed time Tb(i) for each cylinder is multiplied by the ratio KTb(i) so as to find the final elapsed time Tb(i) for each cylinder. Therefore, for example, when, as explained above, the elapsed time Ta(1) actually detected for the No. 1 cylinder #1 is shorter than the correct elapsed time, the ratio KTa(1) becomes larger than even 1.0, therefore the final elapsed time Ta(1) obtained by multiplying the actually detected elapsed time Ta(1) with the ratio KTa(1) becomes considerably close to the correct elapsed time Ta(1). Further, by finding the amount of decrease of the elapsed time due to the torsional vibration h based on the thus obtained final elapsed time Ta(1), this amount of decrease h substantially matches with the correct amount of decrease, therefore even the value of Tb'(1) expressing just the elapsed time due to the combustion pressure substantially shows the correct value. In this way, in this embodiment according to the present invention, even if there is a variation in the spaces between the outer teeth of the rotor 13, the drive force and the torque generated at each cylinder can be accurately detected. On the other hand, when the vehicle is driving over a rough road, the engine drive system experiences large amplitude torsional vibration and so the amount of fluctuation of Ta(i) becomes extremely large. Fig. 10 shows the fluctuation in Ta(i) when the vehicle is traveling over a rough road. AMP of Fig. 10 shows the difference between the minimum Ta(i) and maximum Ta(i), that is, the amplitude. As explained referring to Fig. 8, when the engine drive system experiences torsional vibration due to the explosive actions of the cylinders, the amplitude AMP does not become that large and therefore at this time it is possible to calculate the h shown in Fig. 8 by the method explained previously so as to accurately detect the value of Tb'(i) showing just the elapsed time reduced due to the combustion pressure. However, when the amplitude AMP becomes large, the drive force or the torque generated at a cylinder at which particularly Ta(i) becomes maximum or minimum can no longer be accurately detected. That is, in Fig. 10, when for example the cylinder first giving the maximum Ta(i) is the No. 1 cylinder, the amount of decrease h due to the torsional vibration for calculating the Tb'(1) of the No. 1 cylinder #1 is found from the inclination of the broken line connecting Ta(1) and Ta(3) in Fig. 10. However, near when the No. 1 cylinder #1 reaches TDC, the amount of increase or the amount of decrease of the elapsed time due to the torsional vibration changes by the smooth curve passing through Ta(2), Ta(1), and Ta(3). Therefore, if the value of the amount of decrease h of the No. 1 cylinder #1 with respect to Tb(1) is found from the inclination of the broken line connecting Ta(1) and Ta(3), the value of this amount of decrease h is calculated considerably larger than even the actual value. As a result, Tb'(1) no longer shows the correct value, therefore the drive force and the torque generated at the cylinder can no longer be accurately detected. When the amplitude AMP becomes large, the same thing occurs at the cylinder giving the minimum Ta(i). In this way, when the vehicle is driving over a rough road, it becomes no longer possible to accurately detect the drive force and torque generated by the cylinder. If the amount of torque fluctuation is sought based on the detected torque at this time, the amount of torque fluctuation found would end up becoming larger than the torque fluctuation based on the fluctuation of the combustion pressure. Correction of the air-fuel ratio when the amount of torque fluctuation increases due to reasons other than the fluctuation of the combustion pressure in this way would cause erroneous correction of the air-fuel ratio. Therefore, in this embodiment of the present invention, the average value of the amplitude AMP of the fluctuation of the elapsed time Ta(i) is found and correction of the air-fuel ratio is prohibited when the average value of the amplitude AMP exceeds a predetermined value for over a certain time. Next, the routines for finding the torque generated at each cylinder will be explained referring to Fig. 11 to Fig. 21. Note that, Fig. 21 shows the timing for calculation of the various values performed in each routine. Fig. 11 shows an interruption routine performed at every 30° crank angle. Referring to Fig. 11, first the routine for calculating the elapsed times Ta(i) and Tb(i) is proceeded to (step 100). This routine is shown in Fig. 12. Next, the routine for calculating the amplitude of the fluctuation of the elapsed time Ta(i)is proceeded to (step 200). This routine is shown in Fig. 13 to Fig. 15. Next, the routine for calculating the torque is proceeded to (step 300). This routine is shown in Fig. 17. Next, the routine for calculating the ratios KTa(i) and KTb(i) is proceeded to (step 400). This routine is shown in Fig. 18 and Fig. 19. Next, the routine for processing of the counter CDLNIX used for calculation of the torque fluctuation value is proceeded to (step 500). This routine is shown in Fig. 20. Referring to Fig. 12 showing the routine for calculation of the elapsed times Ta(i) and Tb(i), first, at step 101, the time is made the TIME0. The electronic control unit 20 is provided with a free run counter showing the time. The time is calculated from the count value of this free run counter. Next, at step 102, the current time is fetched. Therefore, the TIME0 of step 101 expresses the time of 30° crank angle before. Next, at step 103, whether the No. 1 cylinder is currently at ATDC 30° or not is judged. When the No. 1 cylinder is not currently at ATDC 30°, step 106 is jumped to, where whether the No. 1 cylinder is currently at ATDC 90° or not is judged. When the No. 1 cylinder is not currently at ATDC 90°, the routine for calculation of the elapsed times Ta(i) and Tb(i) is ended. As opposed to this, when it is judged at step 103 that the No. 1 cylinder is currently at ATDC 30°, step 104 is proceeded to, where the final elapsed time Ta(i) from TDC to ATDC 30° of the No. 1 cylinder is calculated based on the following equation: Ta(i) = KTa(i)•(TIME-TIME0) That is, for example, when the No. 1 cylinder #1 is currently at ATDC 30°, the final elapsed time Ta(1) from TDC to ATDC 30° of the No. 1 cylinder #1 is calculated from KTa(1)·(TIME-TIME0). Here, (TIME-TIME0) expresses the elapsed time Ta(1) actually measured from the crank angle sensor 14 and KTa(1) is a ratio for correction of the error due to the spaces of the outer teeth of the rotor 13, therefore the final elapsed time Ta(1) obtained by multiplying (TIME-TIME0) with KTa(1) comes to accurately express the elapsed time when the crankshaft rotates by 30° crank angle. Next, at step 105, the flag XCAL(i-1) of the No. (i-1) cylinder where combustion had been performed one time before showing that the generated torque should be calculated is set (XCAL(i-1) ← "1"). In this embodiment according to the present invention, as explained above, since the ignition sequence is 1-3-4-2, when the No. 1 cylinder #1 is currently at ATDC 30°, the flag XCAL(2) of the No. 2 cylinder #2 where the combustion had been performed one time before showing that the generated torque should be calculated is set. In the same way, when the final elapsed time Ta(3) is calculated as shown in Fig. 21, the flag XCAL(1) is set, when the final elapsed time Ta(4) is to be calculated, the flag XCAL(3) is set, and when the final elapsed time Ta(2) is to be calculated, the flag XCAL(4) is set. On the other hand, when it is judged at step 106 that the No. 1 cylinder is currently at ATDC 90°, step 107 is proceeded to, where the final elapsed time Tb(i) from ATDC 60° to ATDC 90° of the No. 1 cylinder is calculated based on the following equation: Tb(i) = KTb(i)•(TIME-TIME0) That is, for example, when the No. 1 cylinder #1 is currently at ATDC 90°, the final elapsed time Tb(1) from ATDC 60° to ATDC 90° of the No. 1 cylinder #1 is calculated from KTb(1)•(TIME-TIME0). In this case as well, since the ratio KTb(1) for correcting the error due to the spaces of the outer teeth of the rotor 13 is multiplied with (TIME-TIME0), the final elapsed time Tb(1) accurately expresses the elapsed time in the period when the crankshaft rotates by 30° crank angle. Next, the routine for calculating the amplitude of fluctuation of the Ta(i) shown in Fig. 13 to Fig. 15 will be explained referring to Fig. 16. That is, referring to Fig. 13 to Fig. 15, first, at step 201, whether one of the cylinders is currently at ATDC 30° or not is judged. When none of the cylinders is currently at ATDC 30°, the processing cycle is ended, while when one of the cylinders is at ATDC 30°, step 202 is proceeded to. At step 202 to step 204, the maximum elapsed time T30max when the elapsed time Ta(i) increases and then decreases is calculated. That is, at step 202, whether the Ta(i) calculated at the routine shown in Fig. 12 is larger than the maximum elapsed time T30max or not is judged. When T30max > Ta(i), step 205 is jumped to, while when T30max ≤ Ta(i), step 203 is proceeded to, where Ta(i) is made T30max. Next, at step 204, the increase flag XMXREC showing that Ta(i) is increasing is set (XMXREC ← "1"), then step 205 is proceeded to. A step 205 to step 207, the minimum elapsed time T30min when the elapsed time Ta(i) decreases and then increases is calculated. That is, at step 205, whether the Ta(i) calculated by the routine shown in Fig. 12 is smaller than the calculated minimum elapsed time T30min or not is judged. When T30min < Ta(i), step 208 is jumped to, while when T30min ≥ Ta(i), step 206 is proceeded to, where Ta(i) is made T30min. Next, at step 207, the decrease flag XMNREC showing that Ta(i) has decreased is set (XMNREC ← "1"), then step 208 is proceeded to. At step 208 to step 217, the amplitude AMP of the fluctuation of Ta(i) (Fig. 10) is calculated. That is, at step 208, whether T30max > Ta(i) and XMXREC = "1" or not is judged. When T30max ≤ Ta(i) or the increase flag XMXREC is reset (XMXREC = "0"), step 213 is jumped to, while when T30max > Ta(i) and XMXREC = "1", step 209 is proceeded to. That is, as shown in Fig. 16, assume that at the time t 1 , the elapsed time Ta(1) of the No. 1 cylinder #1 has become maximum. In this case, in the interruption routine performed at the time t 1 , step 202 to step 203 is proceeded to, where the Ta(1) is made T30max, then, at step 204, the increase flag XMXREC is set. On the other hand, in the interruption routine performed at the time t 2 of Fig. 16, step 202 to step 205 is jumped to. At this time, since it is judged at step 208 that T30max > Ta(3) and XMXREC = "1", step 209 is proceeded to. That is, step 209 is proceeded to at the time t 2 when the elapsed time Ta(i) starts to decrease. At step 209, the maximum elapsed time T30max is made TMXREC. Next, at step 210, the minimum elapsed time TMNREC (found at the later explained step 216)is subtracted from the maximum elapsed time TMXREC so as to calculate the amplitude AMP of the fluctuation of Ta(i). Next, at step 211, the initial value of the minimum elapsed time T30min is made Ta(i). Next, at step 212, the increase flag XMXREC is reset (XMXREC ← "0"). Next, step 213 is proceeded to. At step 213, whether T30min < Ta(i) and XMNREC = "1" or not is judged. When T30min ≥ Ta(i) or the decrease flag XMNREC is reset (XMNREC = "0"), step 218 is jumped to, while when T30min < Ta(i) and XMNREC = "1", step 214 is proceeded to. That is, as shown in Fig. 16, at the time t 3 , the elapsed time Ta(1) of the No. 1 cylinder #1 is considered to have become the minimum. In this case, at the interruption routine performed at the time t 3 , step 205 to step 206 is proceeded to, where the Ta(1) is made T30min, then at step 207, the decrease flag XMNREC is set. On the other hand, the interruption routine performed at the time t 4 of Fig. 16 jumps from step 205 to step 208. At this time, since it is judged at step 213 that T30min < Ta(3) and XMNREC = "1", step 214 is proceeded to. That is, step 214 is proceeded to at the time t 4 where the elapsed time Ta(i) starts to be increased. At step 214, the minimum elapsed time T30min is made TMNREC. Next, at step 215, the minimum elapsed time TMNREC is subtracted from the maximum elapsed time TMXREC so as to calculate the amplitude AMP of the fluctuation of Ta(i). Next, at step 216, the initial value of the maximum elapsed time T30max is made Ta(i). Next, at step 217, the decrease flag XMNREC is reset (XMNREC ← "0"). Next, step 218 is proceeded to. At step 218, the amplitude AMP of Ta(i) is added to the cumulative value ΣAMP of the amplitude of Ta(i). Next, at step 219, whether the amplitude AMP has been cumulatively added n number of times or not is judged. When cumulatively added n number of times, step 220 is proceeded to, where the average value SINPAV (=ΣAMP/n) of the amplitude of Ta(i) serving as the criteria for prohibition of the correction of the air-fuel ratio is calculated. Next, at step 221, ΣAMP is cleared. Next, the torque calculation routine shown in Fig. 17 will be explained. Referring to Fig. 17, first, at step 301, whether the flag XCAL(i-1) showing that the generated torque of the No. (i-1) cylinder where combustion had been performed one time before should be calculated is set or not is judged. When the flag XCAL(i-1) = "0", that is when the flag XCAL(i-1) is not set, the processing cycle is ended. As opposed to this, when the flag XCAL(i-1) = "1", that is, the flag XCAL(i-1) is set, step 302 is proceeded to, where the flag XCAL(i-1) is reset, then step 303 is proceeded to. At step 303, the amount of change h of the elapsed time due to the torsional vibration of the engine drive system (Fig. 8) is calculated based on the following equation: h = {Ta(i-1)-Ta(i)}•60/180 That is, as will be understood from Fig. 8, the amount of change h of the elapsed time becomes one-third of h o (= Ta(i-1)-Ta(i)). Next, at step 304, Tb'(i-1) expressing only the elapsed time decreased due to the combustion pressure is calculated based on the following equation: Tb'(i-1) = Tb(i-1)+h That is, when finding Tb'(1) for the No. 1 cylinder #1, h = {Ta(1)-Ta(3)}•60/180 and Tb'(1) = Tb(1)+h. Further, when finding Tb'(3) for the No. 3 cylinder #3, h = {Ta(3)-Ta(4)}•60/180 and Tb'(3) = Tb(3)+h. Next, at step 305, the generated torque DN(i-1) of the cylinder at which the combustion was performed one time before is calculated based on the following equation: DN(i-1) = ωb 2 -ωa 2 = (30°/Tb'(i-1)) 2 -(30°/Ta(i-1)) 2 This generated torque DN(i-1) expresses the torque after elimination of the effect due to the torsional vibration of the engine drive system and the effect due to the variation in spaces of the outer teeth of the rotor 13, therefore this generated torque DN(i-1) expresses the true torque generated due to the combustion pressure. Note that, when finding the drive force GN(i-1) generated by each cylinder, this drive force GN(i-1) may be calculated based on the following equation: GN(i-1) = (30°/Tb'(i-1))-(30°/Ta(i-1)) When the generated torque DN(i-1) is calculated at step 305, step 306 is proceeded to, where the amount of fluctuation of the torque DLN(i-1) in a single cycle of the same cylinder is calculated based on the following equation: DLN(i-1) = DN(i-1)j-DN(i-1) Here, DN(i-1)j expresses the generated torque of the same cylinder one cycle (720° crank angle) before for DN(i-1). Next, at step 307, whether the amount of fluctuation of the torque DLN(i-1) is positive or not is judged. When DLN(i-1) ≥ 0, step 309 is jumped to, where the cumulative addition request flag XCDLN(i-1) showing that the amount of fluctuation of the torque DLN(i-1) of the cylinder at which the combustion was performed one time before should be cumulatively added is set (XCDLN(i-1) ← "1"). As opposed to this, when DLN(i-1) < 0, step 308 is proceeded to, where DLN(i-1) is made zero. Next, step 309 is proceeded to. Note that, the torque of each cylinder repeatedly rises and falls, so in this case to find the amount of fluctuation of the torque, it is sufficient to cumulatively add either the amount of increase of the torque or the amount of decrease of the torque. In the routine shown in Fig. 17, just the amount of decrease of the torque is cumulatively added, therefore, as explained above, when DLN(i-1) < 0, DLN(i-1) is made zero. Next, the routine for calculating the ratios KTa(i) and KTb(i) will be explained referring to Fig. 18 and Fig. 19. Referring to Fig. 18 and Fig. 19, first, at step 401, whether the supply of fuel has been stopped during the deceleration operation or not, that is, whether the fuel has been cut or not. is judged. When the fuel has not been cut, step 415 is proceeded to, where the cumulative values ΣTa(i) and ΣTb(i) of the elapsed times Ta(i) and Tb(i) are cleared, then the processing cycle is completed. As opposed to this, when the fuel has been cut, step 402 is proceeded to, where whether the amplitude AMP of Ta(i) is larger than a set value B 0 or not is judged. When AMP > B 0 , step 415 is proceeded to, while when AMP ≤ B 0 , step 403 is proceeded to. At step 403 to step 408, KTa(i) is calculated. That is, at step 403, the corresponding elapsed time Ta(i) for each cylinder is added to the cumulative value ΣTa(i). For example, Ta(1) is added to ΣTa(1) and Ta(2) is added to ΣTa(2). Next, at step 404, whether the Ta(i) for each cylinder has been cumulatively added n number of times each or not is judged. When not cumulatively added n number of times each, step 409 is jumped to, while when cumulatively added n number of times, step 405 is proceeded to. At step 405, the mean value Ma (= {ΣTa(1)+ΣTa(2)+ΣTa(3)+ΣTa(4)}/4) of the cumulative values ΣTa(i) of the cylinders is calculated. Next, at step 406, the correction value α(i) (= Ma/ΣTa(i)) for the cylinders is calculated. Next, at step 407, the ratio KTa(i) is updated based on the following equation: KTa(i) ← KTa(i)+{α(i)-KTa(i)}/4 In this way, the ratios KTa(1), KTa(2), KTa(3), and KTa(4) for the cylinders are calculated. For example, if α(1) has become larger than the KTa(1) used up to then, one-quarter of the difference between α(1) and KTa(1) {α(1)-KTa(1)} is added to KTa(1), therefore KTa(1) gradually approaches α(1). At step 407, the KTa(i) for each cylinder is calculated, then step 408 is proceeded to, where the cumulative value ΣTa(i) for each cylinder is cleared. On the other hand, at step 409 to step 414, KTb(i) is calculated. That is, at step 409, the corresponding elapsed time Tb(i) for each cylinder is added to the cumulative value ΣTb(i). For example, Tb(1) is added to ΣTb(1) and Tb(2) is added to ΣTb(2). Next, at step 410, whether the Tb(i) for each cylinder has each been cumulatively added n number of times or not is judged. When not cumulatively added n number of times each, the processing cycle is ended, while when cumulatively added n number of times, step 411 is proceeded to. At step 411, the mean value Mb (= {ΣTb(1)+ΣTb(2)+ΣTb(3)+ΣTb(4)}/4) of the cumulative values ΣTb(i) of the cylinders is calculated. Next, at step 412, the correction value β(i) (= Mb/ΣTb(i)) for each cylinder is calculated. Next, at step 413, the ratio KTb(i) is updated based on the following equation: KTb(i) ← KTb(i)+{β(i)-KTb(i)}/4 In this way, the ratios KTb(1), KTb(2), KTb(3), and KTb(4) for the cylinders are calculated. For example, assuming that β(1) has become larger than the KTb(1) used up to then, one-quarter of the difference between β(1) and KTb(1) {β(1)-KTb(1)} is added to KTb(1), therefore KTb(1) gradually approaches β(1). When the KTb(i) for each cylinder is calculated at step 413, step 414 is proceeded to, where the cumulative value ΣTb(i) for each cylinder is cleared. Next, the processing of the counter CDLNIX will be explained referring to Fig. 20. The count value of the counter CDLNIX is used for the later explained calculation of the torque fluctuation value. Referring to Fig. 20, first, whether the No. 3 cylinder #3 is currently at ATDC 30° or not is judged. When the No. 3 cylinder #3 is currently not at ATDC 30°, the processing cycle is ended, while when the No. 3 cylinder #3 is currently at ATDC 30°, step 502 is proceeded to. At step 502, whether the conditions for calculating the torque fluctuation value stand or not is judged. For example, when the conditions for making the air-fuel ratio lean do not stand or the amount of change per unit time ΔPM of the absolute pressure of the surge tank 3 is more than the setting or the amount of change per unit time ΔN of the engine speed is more than a setting, it is judged that the conditions for calculating the fluctuation value do not stand, while at other times it is judged that the conditions for calculating the fluctuation value stand. When it is judged at step 502 that the conditions for calculating the fluctuation value stand, step 508 is proceeded to, where the count value CDLNIX is incremented by exactly 1. The increment action of this count value CDLNIX is performed every time the No. 3 cylinder #3 reaches ATDC 30°, that is, every 720° crank angle. Next, at step 509, the average value of the engine speed N AVE and the average value PM AVE of the absolute pressure in the surge tank 3 in the period from when the increment action of the count value CDLNIX is started to when the count value CDLNIX is cleared are calculated. On the other hand, when it is judged at step 502 that the conditions for calculating the fluctuation value do not stand, step 503 is proceeded to, where the count value CDLNIX is cleared. Next, at step 504, the cumulative value DLNI(i) of the torque fluctuation value DLN(i) for each cylinder (this cumulative value is calculated by the later explained routine) is cleared. Next, at step 505, the cumulative count value CDLNI(i) for each cylinder (this cumulative count value is calculated by the later explained routine) is cleared. Next, at step 506, the target torque fluctuation value LVLLFB is calculated. In this embodiment according to the present invention, as explained later, the air-fuel ratio is feedback controlled so that the calculated torque fluctuation value becomes this target torque fluctuation value LVLLFB. This target torque fluctuation value LVLLFB, as shown by Fig. 22A showing the equivalent fluctuation value by the solid line, becomes larger the higher the absolute pressure PM in the surge tank 3 and becomes larger the higher the engine speed N. This target torque fluctuation value LVLLFB is stored in the ROM 22 in advance in the form of a map shown in Fig. 22B as a function of the absolute pressure PM in the surge tank 3 and the engine speed N. Next, at step 507, the torque fluctuation value DLNISM(i) of each cylinder (this torque fluctuation value is calculated by the later explained routine) is made the target torque fluctuation value LVLLFB calculated from the map of Fig. 22B. Fig. 23 shows the repeatedly executed main routine. In this main routine, first the routine for calculation of the torque fluctuation value (step 600) is executed. This routine is shown in Fig. 24 and Fig. 25. Next, the routine for calculation of the lean limit feedback correction coefficient FLLFB (step 700) is executed. This routine is shown in Fig. 26 and Fig. 27. Next, when the predetermined crank angle is reached, the routine for calculation of the injection time (step 800) is executed. This routine is shown in Fig. 31. Next, the other routines (step 900) are executed. Next, the routine for calculation of the torque fluctuation value shown in Fig. 24 and Fig. 25 will be explained. Referring to Fig. 24 and Fig. 25, first, at step 601, whether the cumulative addition request flag XCDLN(i) showing that the amount of fluctuation of the torque DLN(i) should be cumulatively added is set (XCDLN(i) = "1") or not is judged. When the cumulative addition request flag XCDLN(i) is not set, step 609 is jumped to, while when the cumulative addition request flag XCDLN(i)is set, step 602 is proceeded to. At step 602, the cumulative addition request flag XCDLN(i) is reset. Next, at step 603, the amount of fluctuation of the torque DLN(i) is added to the cumulative value DLNI(i) of the amount of fluctuation of the torque. Next, at step 604, the cumulative count value CDLNI(i) is incremented by exactly 1. That is, for example, at step 601, if the cumulative addition request flag XCDLN(1) is set for the No. 1 cylinder, this flag XCDLN(1) is reset at step 602, the cumulative value DLNI(1)of the amount of fluctuation of the torque is calculated at step 603, and the cumulative count value CDLNI(1) is incremented by exactly 1 at step 604. Next, at step 605, whether the cumulative count value CDLNI(i) has become "8" or not is judged. When CDLNI(i) is not "8", step 609 is jumped to, while when CDLNI(i) becomes "8", step 606 is proceeded to, where the torque fluctuation value DLNISM(i) of each cylinder is calculated from the following equation: DLNISM(i) = DLNISM(i)+{DLNI(i)-DLNISM(i)}/4 Next, at step 607, the cumulative value DLNI(i) of the amount of fluctuation of the torque for each cylinder is cleared, then at step 608, the cumulative count value CDLNI(i) is reset. That is, when there is a difference between the calculated cumulative value DLNI(i) of the amount of fluctuation of the torque and the previously used amount of fluctuation of the torque DLNISM(i), the value of the difference {DLNI(i)-DLNISM(i)} multiplied by 1/4 is added to the amount of fluctuation of the torque DLNISM(i). Therefore, for example, when the cumulative count value CDLNI(1) for the No. 1 cylinder #1 becomes "8", at step 606, the torque fluctuation value DLNISM(1) is calculated. Next, at step 609, whether the count value CDLNIX calculated at the routine shown in Fig. 20 has become "8" or not is judged. When CDLNIX is not "8", the processing cycle is ended, while when CDLNIX becomes "8", step 610 is proceeded to, where the mean value of the torque fluctuation values DLNISM(i) of the cylinders, that is, the mean torque fluctuation value DLNISM (= {DLNISM(1)+DLNISM(2)+DLNISM(3)+DLNISM(4)}/4) is calculated. Next, at step 611, the count value CDLNIX is cleared. In this way, the value DLNISM expressing the amount of fluctuation of the torque of the engine is calculated. Next, the routine for calculation of FLLFB will be explained referring to Fig. 26 and Fig. 27. Referring to Fig. 26 and Fig. 27, first, at step 701, whether the conditions for updating the lean limit feedback correction coefficient FLLFB stand or not is judged. For example, at the time of engine warmup or when the operating state of the engine is not in the learning region enclosed by the broken lines in Fig. 5, it is judged that the conditions for updating do not stand, while at other times it is judged that the conditions for updating stand. When the conditions for updating do not stand, the processing cycle is ended, while when the conditions for updating stand, step 702 is proceeded to. At step 702, whether the average value SINPAC of the amplitude AMP of the fluctuation of the elapsed time Ta(i) exceeds the standard value SINP 0 or not is judged. When SINPAV is smaller than the standard value SINP 0 , step 703 is proceeded to, where the rough road counter CRR is cleared. That is, when SINPAV is smaller than the standard value SINP 0 as in the zone Z in Fig. 29, the rough road counter CRR is maintained at zero. Next, at step 704, the target torque fluctuation value LVLLFB is calculated from the absolute pressure PM in the surge tank 3 and the engine speed N based on the map shown in Fig. 22B. Next, at step 705 and step 706, the levels of torque fluctuation LVLH(n) and LVLL(n) shown in the following equations are calculated based on the fluctuation amount judgement values DH(n) and DL(n) in accordance with the target torque fluctuation value LVLLFB: LVLH(n) = LVLLFB+DH(n) LVLL(n) = LVLLFB+DL(n) Here, the fluctuation amount judgement values DH(n) and DL(n) are determined in advance as shown in Fig. 28A. That is, as will be understood from Fig. 28A, three positive values are set for DH(n) which are in the relationship of DH(3) > DH(2) > DH(1). Further, these DH(1), DH(2), and DH(3) gradually increase as the target torque fluctuation value LVLLFB becomes larger. On the other hand, three negative values are set for DL(n) which are in the relationship of DL(1) > DL(2) > DL(3). Further, the absolute values of these DL(1), DL(2), and DL(3) gradually increase as the target torque fluctuation value LVLLFB becomes larger. Assume however that the target torque fluctuation value LVLLFB calculated at step 704 is the value shown by the broken line. In this case, at step 705, the values of DH(1), DH(2), and DH(3) on the broken line plus the target torque fluctuation value LVLLFB are made the levels of torque fluctuation LVLH(1), LVLH(2), and LVLH(3) and, at step 706, the values of DL(1), DL(2), and DL(3) on the broken line plus the target torque fluctuation value LVLLFB are made the levels of torque fluctuation LVLL(1), LVLL(2), and LVLL(3). On the other hand, the feedback correction values +a 1 , +a 2 , +a 3 , +a 4 , -b 1 , -b 2 , -b 3 , and -b 4 are determined in advance for the regions between the levels of torque fluctuation LVLH(n) and LVLL(n) as shown in Fig. 28B. For example, the feedback correction value becomes +a 2 for the region where the level of torque fluctuation is between LVLH(1) and LVLH(2). These feedback correction values are +a 4 > +a 3 > +a 2 > +a 1 and -b 1 > -b 2 > -b 3 > -b 4 . The feedback correction values +a 1 , +a 2 , +a 3 , +a 4 , -b 1 ,-b 2 , -b 3 , and -b 4 shown in Fig. 28B are shown in the corresponding regions of Fig. 28A. When the levels of torque fluctuation LVLH(n) and LVLL(n) are calculated at step 705 and step 706, step 707 is proceeded to, where whether the mean torque fluctuation value DLNISM calculated in the routine for calculation of the torque fluctuation value shown in Fig. 24 and Fig. 25 is between the levels of torque fluctuation LVLH(n) and LVLL(n) shown in Fig. 28B or not is judged. Next, at step 708, the corresponding feedback correction value DLFB is calculated. For example, when the target fluctuation level LVLLFB is the value shown by the broken line in Fig. 28A and the calculated mean value DLNISM of the torque fluctuation value is between LVLH(1) and LVLH(2) of Fig. 28B, that is the deviation of the mean value DLNISM of the torque fluctuation value from the target fluctuation level LVLLFB is between DH(1)and DH(2)on the broken line in Fig. 28A, the feedback correction value DLFB is made +a 2 . Next, at step 709, what lean limit feedback correction coefficient of which learning region shown in Fig. 5 the lean limit feedback correction coefficient FLLBFij to be updated based on the average value of the engine speed N AVE and the average value PM AVE of the absolute pressure in the surge tank 3 found at step 509 of the processing routine of CDLNIX shown in Fig. 20 is is determined. Next, at step 710, the lean limit feedback correction coefficient FLLFBij determined at step 709 is increased by the feedback correction value DLFB. That is, as explained above, when for example, DLNISM > LVLLFB and LVLH(1) < DLNISM < LVLH(2), the lean limit feedback correction coefficient FLLFBij is increased by +a 2 . As a result, the air-fuel ratio becomes smaller, so the amount of fluctuation of the torque of each cylinder is reduced. On the other hand, when DLNISM < LVLLFB and LVLL(1) > DLNISM > LVLL(2), the lean limit feedback correction coefficient FLLFBij is increased by -b 2 . As a result, the air-fuel ratio becomes large, so the amount of fluctuation of the torque of the cylinders is increased. In this way the air-fuel ratio at the time of lean operation is controlled so that the mean value DLNISM of the amount of fluctuation of the torque of all of the cylinders becomes the target torque fluctuation value LVLLFB. Note that, when the conditions for calculation of the torque fluctuation value in the routine shown in Fig. 20 do not stand, at step 507, the DLNISM(i)is made LVLLFB and therefore the mean value DLNISM of the torque fluctuation value is also made the target torque fluctuation value LVLLFB. Therefore, at this time, the lean limit feedback correction coefficient FLLFBij is not updated. When the action for updating the lean limit feedback correction coefficient FLLFBij is completed at step 710, step 711 is proceeded to, where the learning count value CFLLFB is incremented by exactly 1. Next, at step 712, whether the rough road count value CRR is zero and the learning count value CFLLFB has reached a constant value n or not is judged When CRR is not 0 or CFLLFB is not n, the processing cycle ends. As opposed to this, when CRR = 0 and CFLLFB = n, step 713 is proceeded to, where the learning value KBUij of the lean limit feedback correction coefficient FLLFBij is calculated based on the following equation: KBUij = KBUij+(FLLFBij-KBUij)/m Here, m is a positive integer. The learning value KBUij is decided on for each learning region corresponding to each learning region of FLLFBij shown in Fig. 5 as shown in Fig. 30. As will be understood from the above, when there is a difference between FLLFBij and KBUij, KBUij is added to the value of this difference multiplied by l/m, therefore the learning value KBUij changes to gradually approach FLLFBij. When the learning value KBUij is calculated at step 713, step 714 is proceeded to, where the learning counter CFLLFB is cleared. That is, as shown by the zone Z of Fig. 29, each time the learning count value CFLLB reaches n, the corresponding learning value KBUij is updated based on the lean limit feedback correction coefficient FLLBFij and then the learning counter CFLLFB is cleared. On the other hand, when it is judged at step 702 that SINPAV has exceeded the standard value SINP 0 , step 715 is proceeded to, where the rough road count value CRR is incremented by exactly 1. Next, at step 716, the learning counter CFLLFB is cleared. Next, at step 717, whether a predetermined time TC has elapsed from the start of the countup action of the rough road counter CRR or not is judged. When the predetermined time TC has not elapsed, step 704 is proceeded to, therefore the action for updating the lean limit feedback correction coefficient FLLBFij is performed. At this time, the mean torque fluctuation value DLNISM becomes larger, so as shown in Fig. 29 FLLFBij increases. Note that the action for updating the learning value KBUij is stopped at this time. Next, when the predetermined time TC elapses, step 718 is proceeded to, where whether the engine has operated for eight cycles is judged. When eight cycles have elapsed, step 719 is proceeded to, where the lean limit feedback correction coefficient FLLFBij is decreased by exactly the predetermined value α. Next, at step 720, whether FLFBiji has become smaller than the corresponding learning value KBUij or not is judged. When FLLFBij < KBUij, step 721 is proceeded to, where FLLFBij is made KBUij. That is, as shown in Fig. 29, when a predetermined time TC elapses from when SINPAV1 or SINPAV2 exceeds the standard SINP 0 , the lean limit feedback correction coefficient FLLFBij is gradually returned to the learning value KBUij. Since the mean torque fluctuation value DLNISM becomes larger when the vehicle is driving over a rough road, the lean limit feedback correction coefficient FLLFBij becomes larger as shown in Fig. 29. As a result, the air-fuel ratio moves to the rich side and therefore the amount of NOx generated increases. However, torque fluctuation occurs at this time due to the driving over the rough road and not due to the fluctuation of the combustion pressure. From the standpoint of the combustion, the optimal lean limit feedback correction coefficient FLLFBij at this time substantially matches with the learning value KBUij. Therefore, to suppress the generation of NOx and obtain a good combustion, FLLFBij is gradually returned to the learning value KBUij. Note that if FLLFBij is returned to KBUij when the vehicle is driving over a rough road in this way, there is the advantage that the lean limit feedback correction coefficient FLLFBij will not become disturbed when passing from the rough road to a smooth road. Next, the routine for calculation of the fuel injection time will be explained with reference to Fig. 31. Referring to Fig. 31, first, at step 801, the basic fuel injection time TP is calculated from the map shown in Fig. 2. Next, at step 802, whether the operating state is one in which a lean operation should be performed or not is judged. When the operating state is one in which a lean operation should be performed, step 803 is proceeded to, where the value of the stoichiometric air-fuel ratio feedback correction coefficient FAF is fixed at 1.0. Next, at step 804, the lean correction coefficient FLEAN is calculated from the map shown in Fig. 4, then, at step 805, the lean limit feedback correction coefficient FLLFB is read from the map shown in Fig. 5. Next, at step 809, the fuel injection time TAU is calculated from the following equation: TAU = TP•FLEAN•FLLFB•FAF+TAUV As opposed to this, when it is judged at step 802 that the operating state is not one where a lean operation should be performed, that is, when the air-fuel ratio should be made the stoichiometric air-fuel ratio, step 806 is proceeded to, where the lean correction coefficient FLEAN is fixed at 1.0, then, at step 807, the lean limit feedback correction coefficient FLLFB is fixed at 1.0. Next, at step 808, the stoichiometric air-fuel ratio feedback correction coefficient FAF is controlled based on the output signal of the air-fuel ratio sensor 17 so that the air-fuel ratio becomes the stoichiometric air-fuel ratio. Next, step 809 is proceeded to, where the fuel injection time TAU is calculated. In the embodiment explained above, when the average value SINPAV of the amplitude of the fluctuation of Ta(i) exceeds a predetermined standard value SINP 0 , it is judged that the vehicle is driving over a rough road. However, this standard value SINP 0 is preferably made a function of the amount of fluctuation of the torque, for example, the mean torque fluctuation value DLNISM. This will be explained next with reference to Fig. 32. Fig. 32 shows the relationship between the average value SINPAV of the amplitude of fluctuation of Ta(i) and the mean torque fluctuation value DLNISM. The region for judgement that the vehicle is driving over a rough road in Fig. 32 is shown by the hatching SS. That is, the state where the vehicle is currently driving over a smooth road and the mean torque fluctuation value DLNISM is maintained at the target torque fluctuation value LVLLFB is shown by the point P 1 in Fig. 32. If the combustion pressure fluctuates in the state where the vehicle is driving over a smooth road in this way, the fluctuation of (ωa 2 -ωb 2 ) will become larger and the fluctuation of Ta(i) will become greater, so the mean torque fluctuation value DLNISM will become larger and the average value of the amplitude SINPAV will become larger. At this time, the mean torque fluctuation value DLNISM will move from the point P 1 to the point P 2 in Fig. 32. That is, when the combustion pressure fluctuates under constant road conditions, the mean torque fluctuation value DLNISM will change along with the broken line Q 12 in Fig. 32. On the other hand, if the combustion pressure does not fluctuate but the degree of roughness of the road becomes greater, the average value of the amplitude SINPAV will become larger along with this. If the average value of amplitude SINPAV becomes larger, the amount of fluctuation of the torque will also increase somewhat accordingly, so the mean torque fluctuation value DLNISM will become somewhat larger and therefore at this time the mean torque fluctuation value DLNISM will move from the point P 1 to the point P 3 in Fig. 32. That is, if the degree of roughness of the road becomes larger under the same conditions of fluctuation of combustion, the mean torque fluctuation value DLNISM will change along the solid line Q 13 of Fig. 32. Note that in this case, the point P 3 becomes the standard value SINP 0 where it is judged that the vehicle is driving over a rough road. On the other hand, if the degree of roughness of the road becomes larger at the time of the mean torque fluctuation value DLNISM shown at the point P 2 in Fig. 32, the mean torque fluctuation value DLNISM will change along the solid line Q 24 parallel to the solid line Q 13 . Since the length of the solid line Q 24 and the length of the solid line Q 13 up until the road is judged to be rough should become equal, the point P 4 becomes positioned on the line passing through the point P3 and parallel to the broken line Q 12 . That is, the standard value SINP 0 serving as the standard fo rthe judgement that the vehicle is driving over a rough road is positioned on the line parallel to the broken line Q 12 and therefore the standard value SINP 0 becomes larger than greater the mean torque fluctuation value DLNISM. If the point determined by DLNISM and SINPAV passes the standard value SINP 0 , it is judged that the vehicle is driving over a rough road and therefore, as explained above, the hatching region SS of Fig. 32 shows the region where the vehicle is judged to be driving over a rough road. On the other hand, Fig. 33 shows another embodiment of the fluctuation value judgement values DH(n) and DL(n) shown in Fig. 28A for moving the air-fuel ratio to the rich side when the vehicle is traveling over a rough road. In this embodiment, the fluctuation value judgement values DL(1), DH(2), and DH(3) at the side where the mean torque fluctuation value DLNISM becomes smaller than the target torque fluctuation value LVLLFB are maintained constant regardless of the target torque fluctuation value LVLLFB and the amplitude average value SINPAVC. As opposed to this, the fluctuation value judgement values DH(1), DH(2), and DH(3) at the side where the mean torque fluctuation value DLNISM becomes larger than the target torque fluctuation value LVLLFB are straight lines having the same inclination as the solid lines Q 13 and Q 24 shown in Fig. 32. That is, the fluctuation value judgement values DH(n) gradually increase as the amplitude average value SINPAV becomes larger. Note that the hatching region SS in Fig. 33 shows the region where the vehicle is judged to be driving over a rough road in the same way as Fig. 32. That is, as explained above, the fluctuation value judgement values DH(n) form the same inclinations as the solid lines Q 13 and Q 24 of Fig. 32, therefore when the degree of roughness of the road increases in a state where the amount of fluctuation of the combustion pressure does not change, the mean torque fluctuation value DLNISM will change along with the fluctuation value judgement value DN(n), so the feedback correction values +a 1 , +a 2 , +a 3 , and +a 4 will not change. For example, assume the current feedback correction value is +a 2 . If the degree of roughness of the road increases from this state without a change in the amount of fluctuation of the combustion pressure, the amount of torque fluctuation will increase at this time, but the feedback correction value will be maintained as is at +a 2 without increasing to +a 3 . Therefore, even if the vehicle drives over a rough road, the air-fuel ratio will not move to the rich side and the air-fuel ratio will be maintained at the optimum air-fuel ratio determined from the fluctuation of the combustion pressure. Fig. 34 and Fig. 35 show the routine for calculation of the lean limit feedback correction coefficient FLLFB in the case of use of the method of judgement of driving on a rough road shown in Fig 32 and the fluctuation value judgement values DH(n) shown in Fig. 33. The routine for calculation of FLLFB differs from the routine shown in Fig. 26 and Fig. 27 only at step 702'. The rest of it is the same as the routine shown in Fig. 26 and Fig. 27. That is, in the routine shown in Fig. 34 and Fig. 35, at step 702', whether the point determined from the mean torque fluctuation value DLNISM and the amplitude average value SINPAV is within the region SS of Fig. 32 is judged. When the point determined by the mean torque fluctuation value DINISM and the amplitude average value SINPAV is not within the region SS, the torque fluctuation levels LVLH(n) and LVLL(n) are calculated at step 705 and step 706 from the fluctuation value judgement values DH(n) and DL(n) shown in Fig. 33 and the target torque fluctuation value LVLLFB, then at steps 707 and 708, the feedback correction value DLFB is determined from the feedback correction values +a 1 , +a 2 , +a 3 , +a 4 ,-b 1 , -b 2 , -b 3 , and -b 4 shown in Fig. 33. Fig. 36 to Fig. 51 show the case of application of the present invention to an engine provided with a torque converter provided with a lockup mechanism. Referring to Fig. 36, in this embodiment, the crankshaft 12 is connected to an automatic transmission 30. The output shaft 31 of the automatic transmission 30 is connected to the drive wheels. The automatic transmission 30 is provided with a torque converter 32. In this torque converter 32 is provided a lockup mechanism 33. That is, the torque converter 32 is provided with a pump cover 34 which is connected to the crankshaft 12 and rotates together with the crankshaft 12, a pump impeller 35 which is supported by the pump cover 34, a turbine runner 37 which is attached to an input shaft 36 of the automatic transmission 30, and a stator 37a. The rotational motion of the crankshaft 12 is transmitted through the pump cover 34, pump impeller 35, and turbine runner 37 to the input shaft 36. On the other hand, the lockup mechanism 33 is provided with a lockup clutch plate 38 which is attached to the input shaft 36 in a manner movable along its axial direction and rotates together with the input shaft 36. Usually, that is, when the lockup mechanism is not activated, pressurized oil is supplied in the chamber 39 between the lockup clutch plate 38 and the pump cover 34 through an oil passage in the input shaft 36, then the pressurized oil flowing out from this chamber 39 is fed into a chamber 40 around the pump impeller 35 and turbine runner 37, then is exhausted through the oil passage in the input shaft 36. At this time, there is almost no pressure difference between the chambers 39 and 40 at the two sides of the lockup clutch plate 38, so the lockup clutch plate 38 is separate from the inner wall of the pump cover 34 and therefore at this time the rotational force of the crankshaft 12 is transmitted through the pump cover 34, pump impeller 35, and turbine runner 37 to the input shaft 36. On the other hand, when the lockup mechanism is to be activated, pressurized oil is supplied into the chamber 40 through the oil passage in the input shaft 36. The oil in the chamber 39 is exhausted through the oil passage in the input shaft 36. At this time, the pressure in the chamber 40 becomes higher than even the pressure in the chamber 39, so the lockup clutch plate 38 is pressed on the inner circumference of the pump cover 34 and the crankshaft 12 and input shaft 36 rotate at the same speed in a directly connected state. The supply of the oil into the chambers 39 and 40, that is, the activation and deactivation of the lockup mechanism 33, is controlled by a control value provided in the automatic transmission 30. This control value is controlled based on an output signal of the electronic control unit 20. Further, a plurality of clutches are provided in the automatic transmission for the speed change operation. These clutches are also controlled based on an output signal of the electronic control unit 20. In the automatic transmission 30 are also provided a rotational speed sensor 41 which generates an output pulse expressing the rotational speed of the input shaft 36, that is, the turbine runner 37, and a rotational speed sensor 42 which generates an output pulse expressing the rotational speed of the output shaft 31. The output pulses of these rotational speed sensors 41 and 42 are input to an input port 26. In Fig. 36, if the lockup mechanism 33 is on, that is, if the crankshaft 12 and the input shaft 36 of the automatic transmission 30 are directly connected, the external force acting on the drive wheels will be applied directly to the crankshaft 12 through the automatic transmission 30. As a result, if the engine drive system experiences a large amplitude torsional vibration due to the vehicle driving over a rough road, the amplitude AMP (Fig. 10) of Ta(i) will become extremely large. As explained above, however, when the amplitude AMP becomes large, the drive force or torque generated by the cylinder giving the maximum or minimum Ta(i) will not be able to be accurately detected. Further, even at a cylinder where Ta(i) changes sharply from the Ta(i) of the cylinder performing combustion one time earlier, the value of h will deviate from the actual value and therefore the drive force and torque generated at that cylinder will not be able to be accurately detected. Therefore, in the embodiment shown from Fig. 36 to Fig. 51, when the amplitude AMP is large, the drive force or torque is not sought for the cylinder giving the maximum or minimum Ta(i) and, further, the drive force or torque is not sought for the cylinder where Ta(i) changes sharply from the Ta(i) of the cylinder performing combustion one time earlier. Further, in this embodiment as well, when the lockup mechanism 33 is on, the average value of the amplitude AMP is found and when the average value of the amplitude AMP exceeds a certain value for more than a predetermined period, the correction of the air-fuel ratio is prohibited. On the other hand, in this embodiment, the amount of fluctuation of the rotational speed of the turbine runner 37 of the torque converter 32 is detected from the output pulse of the rotational speed sensor 41. When the lockup mechanism 33 is off, if the average value of the amount of fluctuation of the rotational speed of the turbine runner 32 exceeds a certain value for more than a predetermined period, it is judged that the vehicle is driving over a rough road and the correction of the air-fuel ratio is prohibited. That is, when the vehicle is driving over a rough road, the external force acting on the drive wheels acts directly on the turbine runner 37 of the torque converter 32, so the rotational speed of the turbine runner 37 fluctuates considerably. On the other hand, if the lockup mechanism 33 is off at this time, the fluctuation in the rotational speed of the turbine runner 37 is transmitted to the crankshaft 12 through the pump impeller 35, so the rotational speed of the crankshaft 12 does not fluctuate by a large extent. At this time, the rotational speed of the crankshaft 12 fluctuates by a small extent. On the other hand, the crankshaft 12 also fluctuates in rotational speed due to the fluctuation in the combustion pressure, therefore it is not known whether the fluctuation in the rotational speed of the crankshaft 12 is due to the vehicle driving over a rough road or the fluctuation in the combustion pressure. However, when the vehicle is driving on a rough road, the rotational speed of the turbine runner 37 fluctuates by a large degree even when the fluctuation of the rotational speed caused at the crankshaft 12 is small. On the other hand, even if the crankshaft 12 fluctuates in speed by a large extent due to the fluctuation of the combustion pressure, this fluctuation of the rotational speed of the crankshaft 12 is transmitted to the turbine runner 37 through the pump impeller 35, so the amount of fluctuation of the rotational speed of the turbine runner 12 becomes smaller. That is, the rotational speed of the turbine runner 37 fluctuates by a large degree only when the vehicle is driving on a rough road, therefore it is possible to judge that the vehicle is driving on a rough road when the fluctuation in the rotational speed of the turbine runner 37 becomes large. Accordingly, in this embodiment, when the lockup mechanism 22 is off, if the average value of the amount of fluctuation of the rotational speed of the turbine runner 32 exceeds a certain value for more than a predetermined time, it is judged that the vehicle is driving on a rough road and the correction of the air-fuel ratio is prohibited. On the other hand, when the lockup mechanism 33 is on, as explained above, if the vehicle is driving on a rough road, the rotational speed of the crankshaft 12 will fluctuate considerably and therefore whether the vehicle is driving on a rough road or not at this time can be judged from the fluctuation of the rotational speed of the crankshaft 12. However, when the rotational speed of the crankshaft 12 fluctuates slightly due to the effect of the road surface, it cannot be judged if the fluctuation in the rotational speed of the crankshaft 12 is due to the road surface or due to fluctuations in the combustion pressure. Next, the routines for finding the torque generated at each cylinder will be explained referring to Fig. 37 to Fig. 41. Fig. 37 shows an interruption routine performed at every 30° crank angle. Referring to Fig. 37, first the routine for calculating the elapsed times Ta(i) and Tb(i) is proceeded to (step 1100). This routine is shown in the previously explained Fig. 12. Next, the routine for checking whether the calculation of the torque is permitted (step 1300) is proceeded to. This routine is shown in Fig. 41. Next, the routine for calculating the ratios KTa(i) and KTb(i) is proceeded to (step 1400). This routine is shown in the previously explained Fig. 18 and Fig. 19. Next, the routine for processing of the counter CDLNIX used for calculation of the torque fluctuation value is proceeded to (step 1500). This routine is shown in the previously explained Fig. 20. Next, an explanation will be made, referring to Fig. 16, of the routine for checking for permission for calculation of the torque shown from Fig. 38 to Fig. 40. This routine is provided to prohibit the calculation of the torque for a specific cylinder when the amplitude (Fig. 10) of the fluctuation of Ta(i) becomes large due to the vehicle driving over a rough road and for finding the mean value of the amplitude AMP serving as the standard for judgement for prohibiting the correction of the air-fuel ratio. That is, referring to Fig. 38 to Fig. 40, first, at step 1201, whether one of the cylinders is currently at ATDC 30° or not is judged. When none of the cylinders is currently at ATDC 30°, the processing cycle is ended, while when one of the cylinders is at ATDC 30°, step 1202 is proceeded to. At step 1202 to step 1204, the maximum elapsed time T30max when the elapsed time Ta(i) increases and then decreases is calculated. That is, at step 1202, whether the Ta(i) calculated at the routine shown in Fig. 12 is larger than the maximum elapsed time T30max or not is judged. When T30max > Ta(i), step 1205 is jumped to, while when T30max ≤ Ta(i), step 1203 is proceeded to, where Ta(i) is made T30max. Next, at step 1204, the increase flag XMXREC showing that Ta(i) is increasing is set (XMXREC ← "1"), then step 1205 is proceeded to. A step 1205 to step 1207, the minimum elapsed time T30min when the elapsed time Ta(i) decreases and then increases is calculated. That is, at step 1205, whether the Ta(i) calculated by the routine shown in Fig. 12 is smaller than the calculated minimum elapsed time T30min or not is judged. When T30min < Ta(i), step 1208 is jumped to, while when T30min ≥ Ta(i), step 1206 is proceeded to, where Ta(i) is made T30min. Next, at step 1207, the decrease flag XMNREC showing that Ta(i) has decreased is set (XMNREC ← "1"), then step 1208 is proceeded to. At step 1208 to step 1217, the amplitude AMP of the fluctuation of Ta(i) (Fig. 10) is calculated. That is, at step 1208, whether T30max > Ta(i) and XMXREC = "1" or not is judged. When T30max ≤ Ta(i) or the increase flag XMXREC is reset (XMXREC = "0"), step 1213 is jumped to, while when T30max > Ta(i) and XMXREC = "1", step 1209 is proceeded to. That is, as shown in Fig. 16, assume that at the time t 1 , the elapsed time Ta(1) of the No. 1 cylinder #1 has become maximum. In this case, in the interruption routine performed at the time t 1 , step 1202 to step 1203 is proceeded to, where the Ta(1) is made T30max, then, at step 1204, the increase flag XMXREC is set. On the other hand, in the interruption routine performed at the time t 2 of Fig. 16, step 1202 to step 1205 is jumped to. At this time, since it is judged at step 1208 that T30max > Ta(3) and XMXREC = "1", step 1209 is proceeded to. That is, step 1209 is proceeded to at the time t 2 when the elapsed time Ta(i) starts to decrease. At step 1209, the maximum elapsed time T30max is made TMXREC. Next, at step 1210, the minimum elapsed time TMNREC (found at the later explained step 1216)is subtracted from the maximum elapsed time TMXREC so as to calculate the amplitude AMP of the fluctuation of Ta(i). Next, at step 1211, the initial value of the minimum elapsed time T30min is made Ta(i). Next, at step 1212, the increase flag XMXREC is reset (XMXREC ← "0"). Next, at step 1213, whether the amplitude AMP is larger than the setting A 0 or not is judged. When AMP < A 0 , step 1215 is jumped to. As opposed to this, when AMP ≥ A 0 , step 1214 is proceeded to, where the torque calculation prohibition flag XNOCAL is set (XNOCAL ← "1"). That is, in the interruption routine performed at the time t 2 in Fig. 16, the torque generated at the No. 1 cylinder #1 is calculated as explained above Therefore, in this interruption routine, when AMP ≥ A 0 and the torque calculation prohibition flag XNOCAL is set, the calculation of the torque generated at the No. 1 cylinder #1, that is, the calculation of the torque generated at the cylinder giving the maximum Ta(i) is prohibited. From step 1215 to step 1221, when the amplitude AMP of the fluctuation of Ta(i) exceeds the setting A 0 , the prohibition flag for prohibiting the calculation of the torque of the cylinder giving the minimum Ta(i) is set. That is, at step 1215, whether T30min < Ta(i) and XMNREC = 1 or not is judged. When T30min ≥ Ta(i) or the decrease flag XMNREC is reset (XMNREC = "0"), step 1222 is jumped to, while when T30min < Ta(i) and XMNREC = "1", step 1216 is proceeded to. That is, as shown in Fig. 16, at the time t 3 , the elapsed time Ta(1) of the No. 1 cylinder #1 is considered to have become the minimum. In this case, at the interruption routine performed at the time t 3 , step 1205 to step 1206 is proceeded to, where the Ta(1) is made T30min, then at step 1207, the decrease flag XMNREC is set. On the other hand, the interruption routine performed at the time t 4 of Fig. 16 jumps from step 1205 to step 1208. At this time, since it is judged at step 1215 that T30min < Ta(3) and XMNREC = "1", step 1216 is proceeded to. That is, step 1216 is proceeded to at the time t 4 where the elapsed time Ta(i) starts to be increased. At step 1216, the minimum elapsed time T30min is made TMNREC. Next, at step 1217, the minimum elapsed time TMNREC is subtracted from the maximum elapsed time TMXREC so as to calculate the amplitude AMP of the fluctuation of Ta(i). Next, at step 1218, the initial value of the maximum elapsed time T30max is made Ta(i). Next, at step 1219, the decrease flag XMNREC is reset (XMNREC ← "0"). Next, at step 1220, whether the amplitude AMP is larger than the setting A 0 or not is judged. When AMP < A 0 , step 1222 is jumped to. As opposed to this, when AMP ≥ A 0 , step 1221 is proceeded to, where the torque calculation prohibition flag XNOCAL is set (XNOCAL ← "1"). That is, in the interruption routine performed at the time t 4 in Fig. 16, the torque generated at the No. 1 cylinder #1 is calculated as explained above Therefore, in this interruption routine, when AMP ≥ A 0 and the torque calculation prohibition flag XNOCAL is set, the calculation of the torque generated at the No. 1 cylinder #1, that is, the calculation of the torque generated at the cylinder giving the minimum Ta(i) is prohibited. In step 1222 to step 1223, calculation of the torque for cylinders where the elapsed time Ta(i) sharply changes is prohibited. That is, at step 1222, whether |Ta(i-2)-Ta(i-1)| is larger than K 0 •|ta(i-1)-Ta(i)| or not is judged. Here, the constant K 0 is a value of 3.0 to 4.0 or so. When it is judged at step 1222 that |Ta(i-2)-Ta(i-1)| < K 0 •|ta(i-1)-Ta(i)|, step 1224 is jumped to, while when |Ta(i-2)-Ta(i-1)| ≥ K 0 •|ta(i-1)-Ta(i)|, step 1223 is proceeded to, where the torque calculation prohibition flag XNOCAL is set. Next, step 1224 is proceeded to. That is, when using the interruption routine at the time t 3 of Fig. 16, whether |Ta(4)-Ta(2)| is larger than K 0 •|Ta(2)-Ta(1)| or not is judged. When as shown in Fig. 16 Ta(2) changes sharply from Ta(4), |Ta(4)-Ta(2)| becomes larger than K 0 •|Ta(2)-Ta(1)|. At this time, the torque calculation prohibition flag is set and the calculation of the torque of the No. 2 cylinder #2 where the elapsed time Ta(i) has changed sharply is prohibited. At step 1224, the amplitude AMP is added to cumulative value ΣAMP of the amplitude. Next, at step 1225, whether the amplitude AMP has been cumulatively added n number of times or not is judged. When cumulatively added n number of times, step 1226 is proceeded to, where the average value SINPAV1 (=C 1 •ΣAMP/n) of the amplitude serving as the criteria for judgement of prohibition of the correction of the air-fuel ratio is calculated. Here, C 1 is a constant. Next, at step 1229, ΣAMP is cleared. Next, the torque calculation routine shown in Fig. 41 will be explained. Referring to Fig. 41, first, at step 1301, whether the flag XCAL(i-1) of the No. (i-1) cylinder where the combustion was performed one time before showing that the generated torque should be calculated is set or not is judged. When the flag XCAL(i-1) = "0", that is, when the flag XCAL(i-1) is not set, the processing cycle is ended. As opposed to this, when the flag XCAL(i-1) = "1", that is, when the flag XCAL(i-1) is set, step 1302 is proceeded to, where the flag XCAL(i-1) is reset, then step 1303 is proceeded to. At step 1303, whether the prohibition flag XNOCAL prohibiting the calculation of the torque for the cylinder at which the combustion was performed one time before is reset (XNOCAL = "0") or not is judged. When this prohibition flag is set (XNOCAL = "1"), step 1311 is proceeded to, where the prohibition flag XNOCAL is reset. As opposed to this, when the prohibition flag is reset, step 1304 is proceeded to. That is, only when the flag XCAL is set and prohibition flag XNOCAL is reset is step 1304 proceeded to. At step 1304, the amount of fluctuation h of the elapsed time (Fig. 8) due to the torsional vibration of the engine drive system is calculated based on the following equation: h = {Ta(i-1)-Ta(i)}•60/180 That is, as will be understood from Fig. 8, the amount of fluctuation h of the elapsed time becomes one-third of h 0 (= Ta(i-1)-Ta(i)). Next, at step 1305, Tb'(i-1) expressing only the elapsed time due to the combustion pressure is calculated from the following equation: Tb'(i-1)= Tb(i-1)+h That is, when finding Tb'(1) for the No. 1 cylinder #1, h = {Ta(1)-Ta(3)}•60/180 and Tb'(1) = Tb(1)+h. Further, when finding Tb'(3) for the No. 3 cylinder #3, h = {Ta(3)-Ta(4)}•60/180 and Tb'(3) = Tb(3)+h. Next, at step 306, the generated torque DN(i-1) of the cylinder at which the combustion was performed one time before is calculated based on the following equation: DN(i-1) = ωb 2 -ωa 2 = (30°/Tb'(i-1)) 2 -(30°/Ta(i-1)) 2 This generated torque DN(i-1) expresses the torque after elimination of the effect of the torsional vibration of the engine drive system and the effect of the variation in spaces between the outer teeth of the rotor 13 and therefore expresses the true torque generated due to the combustion pressure. Note that, as explained above, when finding the drive force GN(i-1) generated by a cylinder, this drive force GN(i-1) may be calculated based on the following equation: GN(i-1) = (30°/Tb'(i-1))-(30°/Ta(i-1)) At step 1306, the generated torque DN(i-1) is calculated, then step 1307 is proceeded to, where the amount of fluctuation of the torque DLN(i-1) in one cycle of the same cylinder is calculated based on the following equation: DLN(i-1) = DN(i-1)j-DN(i-1) Here, DN(i-1)j expresses the generated torque of the same cylinder one cycle (720° crank angle) before for DN(i-1). Next, at step 1308, whether the amount of fluctuation of the torque DLN(i-1) is positive or not is judged. When DLN(i-1) ≥ 0, step 1310 is jumped to, where the cumulative addition request flag XCDLN(i-1) of the cylinder at which the combustion was performed one time before showing that the amount of fluctuation of the torque DLN(i-1) should be cumulatively added is set (XCDLN(i-1) ← "1"). As opposed to this, when DLN(i-1) < 0, step 1309 is proceeded to, where the DLN(i-1) is made zero, then step 1310 is proceeded to. As explained above, however, when the lockup mechanism 33 is off, whether the correction of the air-fuel ratio is prohibited is judged based on the fluctuation in the rotational speed of the turbine runner 37 of the torque converter 32. Next, this will be explained with reference to Fig. 42A to Fig. 47. That is, in the embodiment shown in Fig. 36, 16 projections are formed at equiangular distances on the input shaft 36 of the automatic transmission 30. A rotational speed sensor 41 is provided so as to be able to face these projections. The rotational speed sensor 41 generates a pulse each time it faces a projection, therefore the rotational speed sensor 41 generates a pulse every time the input shaft 36, that is, the turbine runner 37, turns 22.5 degrees. On the other hand, when the vehicle is driving on a rough road, the engine drive system experiences torsional vibration of a certain period determined by the natural frequency of the engine drive system. It has been confirmed by experiments that at this time, to find the amount of fluctuation of the rotational speed caused by the torsional vibration, it is preferable to detect the rotational speed of the turbine runner 37 from the time interval of generation of the output pulses by the rotational speed sensor 41 about eight to 10 times during one period of the torsional vibration. That is, if the number of times of detection of the speed of the turbine runner 37 in one period of the torsional vibration is too small, it is clear that finding the fluctuation of the rotational speed is difficult. On the other hand, the turbine runner 37 fluctuates in speed constantly at a short period. This fluctuation in speed is superposed over the fluctuation in speed of the turbine runner 37 caused by driving on a rough road. In this case, if the number of times of detection of the speed of the turbine runner 37 during one period of the torsional vibration is too great, the rotational speed detected for the turbine runner 37 will change by a large degree due to the superposition of the short period fluctuation in speed caused at the turbine runner 37 at all times and as a result it will become impossible to accurately detect the rotational speed of the turbine runner 37. Therefore, in this embodiment, the frequency of sampling for calculation of the speed of the output pulse of the rotational speed sensor 41 is changed in accordance with the rotational speed of the turbine runner 17 so as to enable detection of the rotational speed of the turbine runner 17 from eight to 10 times during one period of the torsional vibration. That is, in Fig. 42A and Fig. 42B, P shows the time of generation of the output pulse of the rotational speed sensor 41, while S shows the timing of sampling of the output pulse for calculation of speed. Fig. 42A shows the time when the rotational speed of the turbine runner 37 is low, while Fig. 42B shows the time when the rotational speed of the turbine runner 37 is high. As shown in Fig. 42A, when the rotational speed of the turbine runner 37 is low, the output pulse is sampled for calculation of the speed each time four output pulses are output and the elapsed times NTj-4, NTj-3, Ntj-2, NTj-1, and NTj are calculated from the previous sampling to the current sampling each time sampling is performed. As opposed to this, as shown in Fig. 42B, when the rotational speed of the turbine runner 37 is high, the output pulse is sampled for calculation of the speed each time eight output pulses are output and the elapsed times NTj-2, NTj-1, and NTj are calculated from the previous sampling to the current sampling each time sampling is performed. Therefore, it will be understood that when the rotational speed of the turbine runner 37 becomes higher, the sampling frequency of the output pulses becomes lower. Next, an explanation will be given of the interruption routine shown from Fig. 43 to Fig. 46. Note that this interruption routine is executed each time the rotational speed sensor 41 generates an output pulse. Referring to Fig. 43 to Fig. 46, first, at step 1550, the average rotational speed NT AV of the turbine runner 37 is calculated from the output pulse of the rotational speed sensor 41. Next, at step 1551, whether the average rotational speed NT AV of the turbine runner 37 is lower than a predetermined speed setting, for example, 1800 rpm, or not is judged. When NT AV < 1800 rpm, step 1552 is proceeded to, where whether the output pulse of the rotational speed sensor 41 has been generated four times is judged. When the output pulse has not been generated four times, step 1563 is jumped to, while when the output pulse has been generated four times, step 1553 is proceeded to. At step 1553, the elapsed time NTj from when the output pulse was generated four times before to when the current output pulse is generated. Next, at step 1554, the elapsed time NT360j (=Ntj+NTj-1+NTj-2+NTj-3) required for the turbine runner 37 to rotate 360 degrees up to now is calculated. Next, at step 1555, NTj-2 is made NTj-3, NTj-1 is made NTj-2, and NTj is made Ntj-1. Next, at step 1556, the previously calculated elapsed time NT360j-1 is subtracted from the currently calculated elapsed time NT360j to calculate the amount of fluctuation DLNT of the elapsed time. Note that the relationship between NT360j-1 and NT360j is shown in Fig. 42A. By calculating DLNT in this way, it is possible to cancel out the error in the interval between output pulses. Next, at step 1562, NT360j is made NT360j-1, then step 1563 is proceeded to. On the other hand, when it is judged at step 1551 that NT AV ≥ 1800 rpm, step 1557 is proceeded to, where whether the output pulse of the rotational speed sensor 41 has been generated eight times or not is judged. When the output pulse has not been generated eight times, step 563 is jumped to, while when the output pulse has been generated eight times, step 1558 is proceeded to. At step 1558, the elapsed time Ntj fromj the generatoin of the output pulse eight times before to the currently generated output pulse is caculated. Next, at step 1559, the elapsed time NT360j (=NTj+NTj-1) required for the turbine runner 37 to turn by 360 degrees up to now is calculated. Next, at step 1560, Ntj is made Ntj-1. Next, at step 1561, the result of subtraction of the previously calculated elapsed time NT360j-1 fromj the currently calculated elapsed time NT360j is halved so as to calculate the amount of fluctuation DLNT of the elapsed time. Note that the relationship between NT360j-1 and NT360j is shown in Fig. 42B. That is, even if the difference in elapsed time (NT360j-NT360j-1) is the same, the difference in elapsed time (NT360j-NT360j-1) calculated at step 1561 becomes double the difference in elapsed time (NT360j-NT360j-1) calculated at step 1556, so at step 1561, one-half of (NT360j-NT360j-1) is made DLNT. Next, at step 1562, NT360j is made NT360j-1, then step 1563 is proceeded to. At step 1563 to step 1582, processing similar to the routine performed from Fig. 13 to Fig. 15 is performed and the average value of the amplitude AMN of the amount of fluctuation DLNT in the elapsed time is calculated. That is, from step 1563 to step 1565, the maximum value NTmax when DLNT increases and then decreases is calculated. That is, at step 1563, whether DLNT is larger than the maximum value NTmax or not is judged. When NTmax > DLNT, step 1566 is jumped to, while when NTmax ≤ DLNT, step 1564 is proceeded to, where DLNT is made NTmax. Next, at step 1565, the increase flag XNXREC showing that DLNT is increasing is set (XNXREC ← "1"), then step 1566 is proceeded to. From step 1566 to step 1568, the minimum value NTmin when DLNT decreases, then increases is calculated. That is, at step 1566, whether DLNT is smaller than the minimum value NTmin or not is judged. When NTmin < DLNT, step 1569 is jumped to, while when NTmin ≥ DLNT, step 1567 is proceeded to, where DLNT is made NTmin. Next, at step 1568, the decrease flag XNNREC showing that DLNT is decreasing is set (XNNREC ← "1"), then step 1569 is proceeded to. From step 1569 to step 1573, the amplitude AMN of DLNT is calculated. That is, at step 1569, whether NTmax > DLNT and XNREC = "1" or not is judged. When NTmax ≤ DLNT or the increase flag XNXREC is reset (XNXREC = "0"), step 1574 is jumped to, while when NTmax > DLNT and XNXREC = "1", step 1570 is proceeded to. That is, assume as shown in Fig. 47 that DLNT has become maximum at the time tl. In this case, in the interruption routine performed at the time tl, the routine proceeds from step 1563 to step 1564, where DLNT is made NTmax, then the increase flag XNXREC is set at step 1565. On the other hand, in the interruption routine performed at the time t 2 in Fig. 47, the routine jumps from step 1563 to step 1566. At this time, at step 1569, it is judged that NTmax > DLNT and XNXREC = "1", so step 1570 is proceeded to. That is, step 1570 is proceeded to at the time t 2 when DLNT begins to decrease. At step 1570, the maximum value NTmax is made TNXREC. Next, at step 1571, the minimum value TNNREC (found by the later explained step 1575) is subtracted from the maximum value TNXREC to calculate the amplitude AMN of DLNT. Next, at step 1572, the initial value of the minimum value NTmin is made DLNT. Next, at step 1573, the increase flag XNXREC is reset (XNXREC ← "0"). At step 1574 to step 1578, the amplitude AMN of DLNT is calculated. That is, at step 1574, whether NTmin <DLNT and XNNREC = 1" or not is judged. When NTmin ≥ DLNT or the decrease flag XNNREC is reset (XMNREC = "0"), step 1579 is jumped to, while when NTmin < DLNT and XNNREC = "1", step 1575 is proceeded to. That is, as shown in Fig. 47, it is assumed that the DLNT became smallest at the time t 3 . In this case, in the interruption routine performed at the time t 3 , the routine proceeds from step 1566 to 1567 where DLNT is made NTmin, then the decrease flag XNNREC is set at step 1568. On the other hand, in the interruption routine performed at the time t 4 in Fig. 47, the routine jumps from step 1566 to step 1569. At this time, at step 1574, it is judged that NTmin < DLNT and XNNREC = "1", so step 1575 is proceeded to. That is, step 1575 is proceeded to at the time t 4 when DLNT starts to increase. At step 1575, the minimum value NTmin is made TNNREC. Next, at step 1576, the minimum value TNNREC is subtracted from the maximum value TNXREC so as to calculate the amplitude AMN of DLNT. Next, at step 1577, the initial value of the maximum value Ntmax is made DLNT. Next, at step 1578, the decrease flag XNNREC is reset (XNNREC ← "0"). At step 1579, the amplitude AMN is added to the cumulative amplitude ΣAMN of the amplitude. Next, at step 1580, whether the amplitude AMN has been cumulatively added n number of times or not is judged. When cumulatively added n number of times, step 1581 is proceeded to, where the average value SINPAV2 (=C 2 •ΣAMN/n) of the amplitude serving as the standard for judgement for prohibition of correctoin of the air-fuel ratio is calculated. Here, C 2 is a constant. Next, at step 1582, ΣAMN is cleared. Fig. 48 shows the repeated executed main routine. In this main routine, first, the routine for calculation of the amount of fluctuation of the torque (step 1600) is executed. This routine is shown in the previously explained Fig. 24 and Fig. 25. Next, the routine for calculation of the lean limit feedback correction coefficient FLLFB (step 1700) is executed. This routine is shown in Fig. 49 and Fig. 50. Next, when the predetermined crank angle is reached, the routine for calculation of the injection time (step 1800) is executed. This routine is shown in the previously explained Fig. 31. Next, the other routines (step 1900) are executed. Next, the routine for calculation of FLLFB will be explained referring to Fig. 49 and Fig. 50. Referring to Fig. 49 and Fig. 50, first, at step 1701, whether the conditions for updating the lean limit feedback correction coefficient FLLFB stand or not is judged. For example, at the time of engine warmup or when the operating state of the engine is not in the learning region enclosed by the broken lines in Fig. 5, it is judged that the conditions for updating do not stand, while at other times it is judged that the conditions for updating stand. When the conditions for updating do not stand, the processing cycle is ended, while when the conditions for updating stand, step 1702 is proceeded to. At step 1702, whether either the average value SINPAV1 of the amplitude AMP of the fluctuation of the elapsed time Ta(i) or the average value SINPAV2 of the amplitude AMP of the fluctuation of the DLNT expressing the fluctuation of the rotational speed of the turbine runner 37 exceeds the standard value SINP 0 or not is judged. When SINPAV1 and SINPAV2 are both smaller than the standard value SINP 0 , step 1703 is proceeded to, where the rough road counter CRR is cleared. That is, when SINPAV1 and SINPAV2 are both smaller than the standard value SINP 0 as in the zone Z in Fig. 51, the rough road counter CRR is maintained at zero. Next, at step 1704, the target torque fluctuation value LVLLFB is calculated from the absolute pressure PM in the surge tank 3 and the engine speed N based on the map shown in Fig. 22B. Next, at step 1705 and step 1706, the levels of torque fluctuation LVLH(n) and LVLL(n) shown in the following equations are calculated based on the fluctuation amount judgement values DH(n) and DL(n) in accordance with the target torque fluctuation value LVLLFB: LVLH(n) = LVLLFB+DH(n) LVLL(n) = LVLLFB+DL(n) Here, the fluctuation amount judgement values DH(n) and DL(n) are determined in advance as shown in Fig. 28A and the feedback correction values +a 1 , +a 2 , +a 3 , +a 4 , -b 1 , -b 2 , -b 3 , and -b 4 are determined in advance for the regions between the levels of torque fluctuation LVLH(n) and LVLL(n) as shown in Fig. 28B. When the levels of torque fluctuation LVLH(n) and LVLL(n) are calculated at step 1705 and step 1706, step 1707 is proceeded to, where whether the mean torque fluctuation value DLNISM calculated in the routine for calculation of the torque fluctuation value shown in Fig. 24 and Fig. 25 is between the levels of torque fluctuation LVLH(n) and LVLL(n) shown in Fig. 28B or not is judged. Next, at step 1708, the corresponding feedback correction value DLFB is calculated. Next, at step 1709, what lean limit feedback correction coefficient of which learning region shown in Fig. 5 the lean limit feedback correction coefficient FLLBFij to be updated based on the average value of the engine speed N AVE and the average value PM AVE of the absolute pressure in the surge tank 3 found at step 509 of the processing routine of CDLNIX shown in Fig. 20 is is determined. Next, at step 1710, the lean limit feedback correction coefficient FLLFBij determined at step 1709 is increased by the feedback correction value DLFB. Next, step 711 is proceeded to, where the learning count value CFLLFB is incremented by exactly 1. Next, at step 1712, whether the rough road count value CRR is zero and the learning count value CFLLFB has reached a constant value n or not is judged When CRR is not 0 or CFLLFB is not n, the processing cycle ends. As opposed to this, when CRR = 0 and CFLLFB = n, step 1713 is proceeded to, where the learning value KBUij of the lean limit feedback correction coefficient FLLFBij is calculated based on the following equation: KBUij = KBUij+(FLLFBij-KBUij)/m Here, m is a positive integer. The learning value KBUij is decided on for each learning region corresponding to each learning region of FLLFBij shown in Fig. 5 as shown in Fig. 30. As will be understood from the above, when there is a difference between FLLFBij and KBUij, KBUij is added to the value of this difference multiplied by l/m, therefore the learning value KBUij changes to gradually approach FLLFBij. When the learning value KBUij is calculated at step 1713, step 1714 is proceeded to, where the learning counter CFLLFB is cleared. On the other hand, when it is judged at step 1702 that one of SINPAV1 or SINPAV2 has exceeded the standard SINP 0 , step 1715 is proceeded to, where the rough road counter value CRR is incremented by exactly 1. Next, at step 1716, the learning counter CFLLFB is cleared. Next, at step 1717, whether a predetermined time TC has elapsed from the start of the countup actionb of the rough road counter CRR or not is judged. When the predetermined time TC has not elapsed, step 1704 is proceeded to, therefore the action for updating the lean limit feedback correction coefficient FLLBFij is performed. Since the mean torque fluctuation value DLNISM becomes larger at this time, the FLLFBij increases as shown in Fig. 51. Note that at this time, the action for updating the learning value KBUij is stopped. Next, when the predetermined time TC elapses, step 1718 is proceeded to, where whether the engine has operated for eight cycles is judged. When eight cycles have elapsed, step 1719 is proceeded to, where the lean limit feedback correction coefficient FLLFBij is decreased by exactly the predetermined value α. Next, at step 1720, whether FLFBiji has become smaller than the corresponding learning value KBUij or not is judged. When FLLFBij < KBUij, step 1721 is proceeded to, where FLLFBij is made KBUij. That is, as shown in Fig. 51, when a predetermined time TC elapses from when SINPAV1 or SINPAV2 exceeds the standard SINP 0 , the lean limit feedback correction coefficient FLLFBij is gradually returned to the learning value KBUij. Since the mean torque fluctuation value DLNISM becomes larger when the vehicle is driving over a rough road, the lean limit feedback correction coefficient FLLFBij becomes larger as shown in Fig. 51. As a result, the air-fuel ratio moves to the rich side and therefore the amount of Nox generated increases. However, torque fluctuation occurs at this time due to the driving over the rough road and not due to the fluctuation of the combustion pressure. From the standpoint of the combustion, the optimal lean limit feedback correction coefficient FLLFBij at this time substantially matches with the learning value KBUij. Therefore, to suppress the generation of Nox and obtain a good combustion, FLLFBij is gradually returned to the learning value KBUij. In this way, according to the present invention, it becomes possible to prevent erroneous correction of the air-fuel ratio when the vehicle is driving over a rough road. While the invention has been described by reference to specific embodiments chosen for purposes of illustration, it should be apparent that numerous modifications could be made thereto by those skilled in the art without departing from the scope of the invention.

Claims: A method of control of an air-fuel ratio in an engine, comprising the steps of: setting a first crank angle range in a crank angle region from the end of a compression stroke to the beginning of an expansion stroke, setting a second crank angle range in a crank angle region in the middle of the expansion stroke a predetermined crank angle away from the first crank angle range, detecting a first angular velocity of the crankshaft in the first crank angle range, detecting a second angular velocity of the crankshaft in the second crank angle range, finding the amount of fluctuation of the torque generated by each cylinder based on the first angular velocity and the second angular velocity, judging whether the vehicle is driving over a rough road; and prohibiting a correction of the control of the air-fuel ratio based on the amount of fluctuation of the torque, when it is judged that the vehicle is driving over a rough road; characterised in that the step of judging whether the vehicle is driving over a rough road is based on the amount of fluctuation of the angular velocity of the crankshaft. A method of control as set forth in claim 1, wherein an average value of the amplitude of the amount of fluctuation of the angular velocity of the crankshaft is found and it is judged that the vehicle is driving on a rough road when that average value exceeds a predetermined value. A method of control as set forth in claim 1, wherein whether the vehicle is driving on a rough road is judged from the amount of fluctuation of the angular velocity of the crankshaft and the amount of fluctuation of the torque. A method of control as set forth in claim 3, wherein it is judged that the vehicle is driving on a rough road when the amount of fluctuation of the angular velocity of the crankshaft exceeds a predetermined setting and that predetermined setting becomes larger the larger the amount of fluctuation of the torque. A method of control as set forth in claim 1, wherein the amount of correction of the air-fuel ratio is controlled based on the amount of fluctuation of the torque when it is judged that the vehicle is not driving on a rough road. A method of control as set forth in claim 5, wherein a target torque fluctuation value based on engine operating conditions is stored in advance, the amount of correction of the air-fuel ratio becomes larger the greater the deviation of the amount of fluctuation of the torque from the target torque fluctuation value, and the amount of correction of the air-fuel ratio becomes smaller the larger the target torque fluctuation amount with respect to the same amount of fluctuation of the torque. A method of control as set forth in claim 1, wherein when it is judged that the vehicle is not driving on a rough road, the amount of correction of the air-fuel ratio is controlled based on the amount of fluctuation of the angular velocity of the crankshaft and the amount of fluctuation of the torque. A method of control as set forth in claim 7, wherein the amount of correction of the air-fuel ratio becomes larger the larger the amount of fluctuation of the torque and the amount of correction of the air-fuel ratio becomes smaller the larger the amount of fluctuation of the angular velocity of the crankshaft with respect to the same amount of fluctuation of the torque. A method of control as set forth in claim 1, wherein a feedback correction coefficient is controlled so that the amount of fluctuation of the torque becomes within a predetermined range, the feedback correction coefficient of the time when it is judged the vehicle is not driving on a rough road is stored, and the feedback correction coefficient is returned to the stored feedback correction coefficient when it is judged that the vehicle is driving on a rough road. A method of control of an air-fuel ratio in an engine, comprising the steps of: setting a first crank angle range in a crank angle region from the end of a compression stroke to the beginning of an expansion stroke, setting a second crank angle range in a crank angle region in the middle of the expansion stroke a predetermined crank angle away from the first crank angle range, detecting a first angular velocity of the crankshaft in the first crank angle range, detecting a second angular velocity of the crankshaft in the second crank angle range, finding the amount of fluctuation of the torque generated by each cylinder based on the first angular velocity and the second angular velocity, judging whether the vehicle is driving over a rough road; and prohibiting a correction of the control of the air-fuel ratio based on the amount of fluctuation of the torque, when it is judged that the vehicle is driving over a rough road; characterised in that the step of judging whether the vehicle is driving over a rough road is based on the amount of fluctuation of a rotational speed of a turbine of a torque converter of an automatic transmission when a lock-up mechanism of the torque converter is off. A method of control as set forth in claim 10, wherein whether the vehicle is driving on a rough road is judged from the amount of fluctuation of the angular velocity of the crankshaft when the lockup mechanism is on. A method of control as set forth in claim 10, wherein the average value of the amplitude of the fluctuation of the rotational speed of the turbine is found and it is judged that the vehicle is driving on a rough road when that average value exceeds a predetermined value. A method of control as set forth in claim 10, wherein rotational speed of the turbine is calculated by sampling an output pulse of a rotational speed sensor detecting the rotational speed of the turbine, the fluctuation in the rotational speed of the turbine is found from the rotational speed of the turbine which has been calculated, and the sampling frequency of the output pulse is made lower the higher the rotational speed of the engine. A method of control as set forth in claim 1 or 10, further comprising the steps of: finding an amount of change of the angular velocity between cylinders from a difference between a first angular velocity of a cylinder previously performing combustion and a first angular velocity of a cylinder next performing combustion, correcting a second angular velocity of the cylinder previously performing combustion in a downward direction when the amount of change of the angular velocity between cylinders increases, correcting a second angular velocity of the cylinder previously performing combustion in an upward direction when the amount of change of the angular velocity between cylinders decreases, and finding an amount of fluctuation of the drive force generated by each cylinder based on the first angular velocity and the corrected second angular velocity. A method of control as set forth in claim 14, wherein a predetermined ratio of the amount of change of the angular velocity between cylinders is made the amount of correction of the second angular velocity in the downward and upward directions. A method of control as set forth in claim 15, wherein said predetermined ratio is a ratio of crank angles between a first range of crank angles and a second range of crank angles with respect to the crank angle between two consecutive expansion strokes. A method of control as set forth in claim 1 or 10, wherein: a first ratio between the average value of the first angular velocities of all cylinders and the first angular velocity of each cylinder when the supply of fuel is stopped during engine operation is found for each cylinder, a second ratio between the average value of the second angular velocities of all cylinders and the second angular velocity of each cylinder when the supply of fuel is stopped during engine operation is found for each cylinder, and the first angular velocity of each cylinder is corrected by the corresponding first ratio and the second angular velocity of each cylinder is corrected by the corresponding second ratio during engine operation in which the fuel is being supplied. A method of control as set forth in claim 1 or 10, further having a step of finding a difference between a square of the first angular velocity and a square of the second angular velocity, where the drive force shows the generated torque expressed by said difference of squares. A method of control as set forth in claim 18, further having a step of calculating an amount of fluctuation of torque of each cylinder from the torque generated in each cylinder. A method of control as set forth in claim 19, wherein the amount of fluctuation of the torque of each cylinder is expressed by a difference between a torque generated at the time of the previous combustion and a torque generated at the time of a next combustion. A method of control as set forth in claim 19, further having the steps of: finding a representative value of the amount of torque fluctuation by cumulatively adding for each cylinder the successively calculated amounts of torque fluctuation exactly a predetermined number of times, finding a representative value of the amount of torque fluctuation of each cylinder based on said cumulative value of the amounts of torque fluctuation, and finding an average value of torque fluctuation of all cylinders, which is an average value of the representative values of each cylinder. A method of control as set forth in claim 21, wherein when there is a difference between the current representative value and the calculated cumulative value of torque fluctuation, the representative value is updated so as to reduce said difference. A method of control as set forth in claim 19, wherein the amplitude of fluctuation of the successively found first angular velocities is found and the fluctuation of the torque generated in the cylinder giving the maximum or minimum first angular velocity is used for calculation of the amount of torque fluctuation when that amplitude becomes larger than a predetermined amplitude. A method of control as set forth in claim 19, wherein when a difference between a first angular velocity of a cylinder previously performing combustion and a first angular velocity of a cylinder next performing combustion becomes predetermined times larger than a difference between the first angular velocity of said cylinder next performing combustion and a first angular velocity of the cylinder performing combustion after that, the use of the fluctuation of the generated torque of the cylinder performing combustion the second time for calculation of the amount of torque fluctuation is prohibited.

Inventors: SHIBAGAKI NOBUYUKI, SHIBAGAKI, NOBUYUKI
Applicants: TOYOTA MOTOR CO LTD, TOYOTA JIDOSHA KABUSHIKI KAISHA
Application year: 1997
Main classification: F02D41
IPC codes: F02D41