Method of detection of angular velocity and torque in an internal combustion engine

Abstract: An engine in which an elapsed time Ta(i) of 30° crank angle near top dead center of the compression stroke and an elapsed time Tb(i) of 30° crank angle near 90° after top dead center of the compression stroke are found. When the elapsed time Ta(i) increases due to the torsional vibration of the engine drive system, the detected elapsed time Tb(i) is corrected to reduce it, while when the elapsed time Ta(i) decreases, the detected elapsed time Tb(i) is corrected to increase it. The drive force or torque generated at each cylinder is calculated from the thus downward corrected or upward corrected elapsed time Tb(i) and the elapsed time Ta(i).

Description: BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method of detection in an internal combustion 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 in 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 in the time required for the crankshaft to rotate from 90° to 120° after top dead center of the compression stroke from this time, 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 (1/2)·Iωa 2 to (1/2)·Iωb 2 . Roughly speaking, the amount of rise of the kinetic energy (1/2)·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 the generated torque is calculated based on the angular velocities ωa and ωb in this way, when for example the engine drive system experiences torsional vibration, the generated torque calculated based on the angular velocities ωa and ωb will no longer express the true generated torque. That is, when the engine drive system does not experience a torsional vibration, the second angular velocity ωb increases from the first angular velocity ωa by exactly the amount of increase of the angular velocity caused by the combustion pressure. As opposed to this, when the engine drive system experiences a torsional vibration, the second angular velocity ωb will include in addition to the amount of increase of the angular velocity caused by the combustion pressure the amount of change of the angular velocity caused by the torsional vibration of the engine drive system in the period from detection of the first angular velocity ωa to detection of the second angular velocity ωb. For example, if the angular velocity increased due to the torsional vibration of the engine drive system in the period from detection of the first angular velocity ωa to detection of the second angular velocity ωb, the amount of increase of the second angular velocity ωb with respect to the first angular velocity ωa will include in addition to the amount of increase of the angular velocity due to the combustion pressure the amount of increase of the angular velocity due to the torsional vibration of the engine drive system. Therefore, in this case, in so far as the amount of increase of the angular velocity due to the torsional vibration of the engine drive system is not subtracted from the second angular velocity ωb, the difference between the square of the first angular velocity ωa and the square of the second angular, velocity ωb will not express the generated torque. However, in the above-mentioned internal combustion engine, no consideration at all is given to the amount of change of the angular velocity due to the torsional vibration of the engine drive system and therefore, in the above mentioned internal combustion engine, when the engine drive system experienced torsional vibration, there was the problem that it was not possible to detect the true generated torque. SUMMARY OF THE INVENTION It would be desirable to provide a method of detection in an engine, capable of accurately detecting an operating parameter representing the drive output from a cylinder, such as an output torque or an output driving force, and an amount of fluctuation of the output torque. According to the present invention, there is provided a method of detecting a parameter representing the drive output from a cylinder in an internal combustion 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 change of the angular velocity between cylinders from the difference of the first angular velocity of a cylinder previously performing combustion and the first angular velocity of a cylinder next performing combustion, correcting the second angular velocity of the cylinder previously performing the combustion in the direction of decrease when the amount of change of the angular velocity between cylinders has increased, correcting the second angular velocity of the cylinder previously performing the combustion in the direction of increase when the amount of change of the angular velocity between cylinders has decreased, and finding said parameter representing the drive output generated from a corresponding cylinder based on the first angular velocity and the corrected second angular velocity. 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 checking the permission for calculation of the torque; 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; Figs. 23A and 23B are views of the of fluctuation amount judgement values DH(n) and DL(n) and the levels of torque fluctuation LVLH(n) and LVLL(n) ; Fig. 24 is a flowchart showing a main routine; Figs. 25 and 26 are flowcharts for calculating the torque fluctuation value; Fig. 27 is a flowchart of the calculation of a lean limit feedback correction coefficient; Fig. 28 is a flowchart for calculating the fuel injection time; Fig. 29 is a view of the relationship of the amplitude of the torsional vibration of the crankshaft and the engine speed N; Figs. 30A and 30B are views of changes in the angular velocity; Fig. 31 is a view of the relationship of the crankshaft position and the amplitude of the torsional speed; Fig. 32 is a flowchart of an interruption.routine; Fig. 33 is a flowchart for calculating the elapsed times Ta(i) and Tb(i); Figs. 34 and 35 are flowcharts for calculating the torque; Fig. 36 is a flowchart showing a main routine; Figs. 37 and 38 are flowcharts for calculating the torque fluctuation value; Fig. 39 is a flowchart for calculating the fuel injection time; Fig. 40 is a time chart of the changes in the elapsed times Ta(i) and Tb(i) of 30° crank angle; Figs. 41A and 41B are time charts of the changes in the elapsed times Ta(i) and Tb(i) of 30° crank angle; Fig. 42 is a view of the amount of increase of the elapsed time; Fig. 43 is an enlarged side view of a rotor; Fig. 44 is a view of the amount of increase of the elapsed time; Fig. 45 is a flowchart of an interruption routine; Fig. 46 is a flowchart for checking the permission for calculation of the torque; Figs. 47 to 49 are flowcharts for calculating the torque; Figs. 50 and 51 are flowcharts for calculating the ratios KTa(i) and KTb(i); Fig. 52 is a flowchart for processing of the counter CDLNIX; Fig. 53 is a view of the timings for calculation of various values; Fig. 54 is a flowchart showing a main routine; Figs. 55 and 56 are flowcharts for calculating the torque fluctuation value; Fig. 57 is a flowchart for calculating the fuel injection time; Fig. 58 is a time chart of the changes in the elapsed time Ta(i) of 30° crank angle and the elapsed time Tb(i) of 50° crank angle; Fig. 59 is a time chart of the changes in the elapsed time Ta(i) of 30° crank angle and the elapsed time Tb(i) of 50° crank angle; Fig. 60 is a time chart of the changes in the elapsed time Ta(i) of 30° crank angle and the elapsed time Tb(i) of 50° crank angle; Fig. 61 is a flowchart of an interruption routine; Fig. 62 is a flowchart for calculating the elapsed times Ta(i) and Tb(i); Figs. 63 to 65 are flowcharts for checking the permission for calculation of the torque; Fig. 66 is a flowchart for calculating the torque; and Fig. 67 is a flowchart showing a main routine. 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 tubes 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 discharging 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 FLLFB 11 to FLLFB 33 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, since the amount of fluctuation of the torque is controlled to be within the torque fluctuation control region in this way, the amount of fluctuation of the torque must be detected and the torque must be detected to detect the amount of fluctuation of the torque. Various methods have been proposed in the past for calculating the output torque of each cylinder. That is, if it were possible to calculate the output torque of each cylinder, the thus calculated output torque could be used not only to enable the control of the lean air-fuel ratio as explained above, but also other various types of control, so finding the best method for calculating the output torque of each cylinder has great significance. Therefore, in the past, various methods have been proposed 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 engine drive system experiences torsional vibration, there is the problem that the generated torque can no longer be accurately detected. It is clear, however, that if this problem could just be solved, then the method of calculation of the torque based on the angular velocity, which does not require a new sensor, would be preferable. Therefore, the present invention calculates the generated torque based on the angular velocity and thereby can accurately detect the generated torque even if the engine drive system experiences torsional vibration. Next, the new method according to the present invention 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, since 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 (1/2) Iωa 2 to (1/2) Iωb 2 . The amount of increase of the kinetic energy (1/2)·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 the 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 ho between Ta(1) and Ta(3). This reduction of 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(2), 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 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(i), 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, the Ta(i) for each cylinder fluctuates when the vehicle is traveling over a bumpy road. Further, at this time, sometimes 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 bumpy road. AMP of Fig. 10 shows the difference between the minimum Ta(i) and maximum Ta(i), that is, the amplitude. When this amplitude AMP is small, by calculating h shown in Fig. 8 by the method explained up to now, the value of Tb'(i) expressing only the elapsed time due to the combustion pressure can be accurately detected. However, when the amplitude AMP becomes large, the drive force or the torque generated at a cylinder at which Ta(i) becomes maximum or minimum can no longer be accurately detected. That is, in Fig. 10, when for example the cylinder giving the maximum Ta(i) is first 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). Further, in a cylinder where Ta(i) changes sharply from the Ta(i) of the cylinder at which the combustion was performed one time before, the value of h deviates from the actual value, therefore the drive force and the torque generated by the cylinder can no longer be accurately detected. Therefore, in this embodiment according to the present invention, when the amplitude AMP is large, the drive force or the torque for the cylinder at which Ta(i) becomes maximum or minimum is not sought. Further, the drive force or the torque is also not sought for a cylinder where the Ta(i) rapidly changes from the Ta(i) for the cylinder at which the combustion was performed one time before. 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 (step 100) for calculating the elapsed times Ta(i) and Tb(i) is proceeded to. This routine is shown in Fig. 12. Next, the routine (step 200) for checking if calculation of the torque is permitted or not is proceeded to. This routine is shown in Fig. 13 to Fig. 15. Next, the routine for calculating the torque (step 300) is proceeded to. This routine is shown in Fig. 17. Next, the routine for calculating the ratios KTa(i) and KTb(i) (step 400) is proceeded to. 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. 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 TIMEO 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 calculated, the flag XCAL (3) is set, and when the final elapsed time Ta(2) is 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 expressed the elapsed time in the period when the crankshaft rotates by 30° crank angle . Next, the routine for checking permission for calculation of the torque shown in Fig. 13 to Fig. 15 will be explained referring to Fig. 16. This routine is set so as to prohibit the calculation of the torque for a specific cylinder when the amplitude AMP of the fluctuation of Ta(i) (Fig. 10) becomes large due to the vehicle traveling over a bumpy road. 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 214, when the amplitude AMP of the fluctuation of Ta(i) (Fig. 10) has exceeded the setting A 0 , the prohibition flag prohibiting the calculation of the torque for the cylinder where Ta(i) becomes maximum is set. 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 215 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 in Fig. 16, 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 maximum elapsed time TMXREC is subtracted by the minimum elapsed-time TMNREC (found at the later explained step 216) 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, at step 213, whether the amplitude AMP is larger than the setting A 0 or not is judged. When AMP < A 0 , step 215 is jumped to. As opposed to this, when AMP ≥ A 0 , step 214 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 of Fig. 16, as explained above, the generated torque of the No. 1 cylinder #1 is calculated. Therefore, in this interruption routine, when AMP ≥ A 0 and the torque calculation prohibition flag XNOCAL is set, the calculation of the generated torque of the No. 1 cylinder #1, that is, the calculation of the generated torque of the cylinder giving the maximum Ta(i), is prohibited. At step 215 to step 221, when the amplitude AMP of the fluctuation of Ta(i) has exceeded the setting A 0 , the prohibition flag prohibiting the calculation of the torque of the cylinder giving the minimum Ta(i) is set. That is, at step 215, 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 222 is jumped to, while when T30min < Ta(i) and XMNREC = "1", step 216 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 215 that T30min < Ta(3) and XMNREC = "1", step 216 is proceeded to. That is, step 216 is proceeded to at the time t 4 where the elapsed time Ta(i) starts to be increased. At step 216, the minimum elapsed time T30min is made TMNREC. Next, at step 217, the minimum elapsed time TMNREC is subtracted from the maximum elapsed time TMXREC whereby the amplitude AMP of the fluctuation of Ta(i) is calculated. Next, at step 218, the initial value of the maximum elapsed time T30max is made Ta(i). Next, at step 219, the decrease flag XMNREC is reset (XMNREC ← "0"). Next, at step 220, whether the amplitude AMP is larger than the setting A 0 or not is judged. When AMP < A 0 , step 222 is jumped to. As opposed to this, when AMP ≥ A 0 , step 221 is proceeded to, where the torque calculation prohibition flag XNOCAL is set (XNOCAL-"1") "1"). That is, in the interruption routine performed at the time t 4 of Fig. 16, the generated torque of the No. 1 cylinder #1 is calculated. Therefore, in this interruption routine, when AMP ≥ A 0 and the torque calculation prohibition flag XNOCAL is set, the calculation of the generated torque of the No. 1 cylinder #1, that is, the calculation of the generated torque of the cylinder where Ta(i) becomes smallest, is prohibited. At step 222 and step 223, the calculation of the torque of a cylinder where the elapsed time Ta(i) changes sharply is prohibited. That is, at step 222, 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 about 3.0 to 4.0. When it is judged at step 222 that |Ta(i-2)-Ta(i-1)| < K 0 ·[Ta(i-1)-Ta(i)|, the processing routine is ended, while when it is judged that |Ta(i-2)-Ta(i-1)| ≥ K 0 ·|Ta(i-1)-Ta(i)|, step 223 is proceeded to, where the torque calculation prohibition flag XNOCAL is set. That is, when the interruption routine is at the time t 3 of Fig. 16, whether at this time |Ta(4)-Ta(2)| is K 0 ·|Ta(2)-Ta(1)| or not is judged. As shown in Fig. 16, when Ta(2) changes rapidly 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. 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, 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 310 is proceeded to, where the prohibition flag XNOCAL is reset. As opposed to this, when prohibition flag is reset, step 304 is proceeded to. That is, only when the flag XCAL is set and prohibition flag XNOCAL is reset is step 304 proceeded to. At step 304, 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 305, 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 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 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 306, step 307 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 308, whether the amount of fluctuation of the torque DLN(i-1) is positive or not is judged. When DLN(i-1) ≥ 0, step 310 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 309 is proceeded to, where DLN(i-1) is made zero. Next, at step 310 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 calculated in the routine for checking permission for calculation of the torque is larger than the setting 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. 22 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 mean torque fluctuation value DLNISM(i) of each cylinder (this mean 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. 24 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. 25 and Fig. 26. Next, the routine for calculation of the lean limit feedback correction coefficient FLLFB (step 700) is executed. This routine is shown in 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. 28. Next, the other routines (step 900) are executed. Next, the routine for calculation of the torque fluctuation value shown in Fig. 25 and Fig. 26 will be explained. Referring to Fig. 25 and Fig. 26, 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 amount of fluctuation of the torque cumulative value DLNI(1) 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 cumulative value DLNI(i) of the amount of fluctuation of the torque is cleared. Next, at step 607, the cumulative count value CDLNI(i) is reset. Next, at step 608, the mean torque fluctuation value DLNISM(i) is calculated from the following equation: DLNISM(i) = DLNISM(i)+{DLNI(i)-DLNISM(i)}/4 That is, when there is a difference between the calculated amount of fluctuation of the torque cumulative value DLNI(i) and the previously used mean 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 mean 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 mean 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 DLNISM (= {DLNISM (1)+DLNISM (2)+DLNISM (3)+DLNISM (4)}/4) of the mean torque fluctuation values DLNISM (i) of the cylinders 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. Note that, as explained above, the count value CDLNIX is incremented by exactly 1 with each 720° crank angle. Unless the calculation of the torque is prohibited for one of the cylinders, when the count value CDLNIX has become "8", the cumulative count values CDLNI(1), CDLNI(2), CDLNI(3), and CDLNI(4) for all of the cylinders have already become "8". Therefore, in this case, the mean torque fluctuation value DLNISM(i) for all of the cylinders is calculated. On the other hand, for example, if the calculation of the torque for the No. 1 cylinder #1 is prohibited, when the count value CDLNIX has become "8", just the cumulative count value CDLNI(1) of the No. 1 cylinder #1 does not become "8", so the new amount of fluctuation of the torque cumulative value DLNI(1) for the No. 1 cylinder #1 is not calculated. Therefore, in this case, when finding the mean value DLNISM at step 610, the previously calculated amount of fluctuation of the torque cumulative value DLNISM(1) is used just for the No. 1 cylinder #1. Next, the routine for calculation of FLLFB will be explained referring to Fig. 27. Referring to 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, 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 703 and step 704, 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. 23A. That is, as will be understood from Fig. 23A, 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 702 is the value shown by the broken line. In this case, at step 703, 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 704, 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. 23B. 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. 23B are shown in the corresponding regions of Fig. 23A. When the levels of torque fluctuation LVLH(n) and LVLL(n) are calculated at step 703 and step 704, step 705 is proceeded to, where whether the mean value DLNISM of the torque fluctuation value calculated in the routine for calculation of the torque fluctuation value shown in Fig. 25 and Fig. 26 is between the levels of torque fluctuation LVLH(n) and LVLL(n) shown in Fig. 23B or not is judged. Next, at step 706, 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. 23A and the calculated mean value DLNISM of the torque fluctuation value is between LVLH(1) and LVLH(2) of Fig. 23B, 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. 23A, the feedback correction value DLFB is made +a 2 . Next, at step 707, 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 determined. Next, at step 708, the lean limit feedback correction coefficient FLLFBij determined at step 707 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) for all of the cylinders 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. Next, the routine for calculation of the fuel injection time will be explained with reference to Fig. 28. Referring to Fig. 28, 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 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 806 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. By using the method explained above, the drive force generated at each cylinder or the torque generated at each cylinder can be accurately detected. Further, when the amount of fluctuation of the drive force or torque is detected from the detected drive force or torque, the amount of fluctuation of these drive force or torque can be accurately detected. However, a crankshaft experiences natural torsional vibration due to the explosive force successively generated in the cylinders. Therefore, to accurately detect the drive force generated at each cylinder and the torque generated at each cylinder, it is necessary to consider the natural torsional vibration of the crankshaft as well. Next, an explanation will be made of a second embodiment which enables more accurate detection of the drive force generated at each cylinder or torque generated at each cylinder by considering the natural torsional vibration of the crankshaft That is, when an engine is operated, the crankshaft experiences its natural torsional vibration. The amplitude of the torsional vibration becomes larger the higher the engine speed. This torsional vibration of the crankshaft occurs in the form of various orders of torsional vibration superposed on each other. Among these, in particular the rotational sixth order of torsional vibration (torsional vibration using 60° crank angle as cycle) has a large effect on the detection of the first angular velocity ωa. Fig. 29 shows the relationship between the amplitude of this rotational sixth order of torsional vibration and the engine speed N. As shown in Fig. 29, when the engine speed N is low, the amplitude of the rotational sixth order of torsional vibration is small, therefore, at this time, as shown in Fig. 30A, the angular velocity ω rises relatively smoothly due to the combustion pressure when the top dead center TDC of the compression stroke is exceeded. As opposed to this, when the engine speed N becomes high, as shown in Fig. 29, the amplitude of the rotational sixth order of torsional vibration becomes larger. As a result, as shown by the arrow mark Z in Fig. 30B, the angular velocity ω falls sharply for a time due to the effect of the rotational sixth order of torsional vibration when the top dead center TDC of the compression stroke is exceeded. Note, however, that if the angular velocity ω falls in this way due to the rotational sixth order of torsional vibration, the latter half of the crank angle range for detecting the first angular velocity ωa will end up overlapping'the first half of the region of reduction of the angular velocity ω due to the rotational sixth order of torsional vibration. As a result, due to the effect of this rotational sixth order of torsional vibration, the first angular velocity ωa can no longer be accurately detected. If the first angular velocity ωa can no longer be accurately detected, the drive force and the torque of each cylinder calculated based on the first angular velocity ωa and second angular velocity ωb will no longer show the true values. In this way, when the engine speed N becomes high, the amplitude of the torsional vibration of the crankshaft becomes larger and it no longer becomes possible to accurately detect the first angular velocity ωa. At this time, however, the amplitude of the torsional vibration generated at the crankshaft, as explained earlier, differs depending on the crankshaft position. That is, if in Fig. 31, C is a crankshaft, F is a flywheel, R is a rotational body with a smaller moment of inertia of rotation than the flywheel, for example, a rotor, the amplitude of the torsional vibration generated at the crankshaft C will differ according to the position of the crankshaft as shown in Fig. 31. The amplitude of the torsional vibration of the crankshaft C at the. crankshaft position of the No. 4 cylinder #4 closest to the flywheel F with a large moment of inertia of rotation becomes smallest, while the amplitude of the torsional vibration of the crankshaft C at the crankshaft position of the No. 1 cylinder #1 furthest away from the flywheel F becomes largest. Further, the amplitudes of torsional vibration generated at the different positions of the crankshaft C become larger the higher the engine speed. Therefore, as shown in Fig. 29, if the engine speed N becomes higher, the crankshaft C experiences torsional vibration, but at this time, the amplitude of the torsional vibration generated at the crankshaft position of the No. 4 cylinder #4 is relatively small even if the engine speed is high, therefore it becomes possible to detect the generated torque for the No. 4 cylinder #4 regardless of the engine speed relatively accurately. However, for example, the amplitude of the torsional vibration occurring at the crankshaft position of the No. 1 cylinder #1 becomes considerably large the higher the engine speed N, therefore for the No. 1 cylinder #1, the drive force and the torque generated at the No. 1 cylinder #1 can no longer be accurately detected. Therefore, in the second embodiment, the calculation of the drive force and the torque is prohibited in the order of the cylinders of the crankshaft positions where the amplitude of the torsional vibration becomes larger as the engine speed N becomes higher. Explaining this in more detail, in the second embodiment, when the engine speed N is low, the drive force and the torque generated at the cylinders are calculated for all of the cylinders #1, #2, #3, and #4. That is, when the engine speed N is low, the amplitude of the torsional vibration of the crankshaft is small, therefore at this time, the torsional vibration of the crankshaft C has almost no effect on the first angular velocity ωa, so the drive force and the torque are calculated for all of the cylinders #1, #2, #3, and #4. On the other hand, if the engine speed N becomes high, the amplitude of the torsional vibration at the position of the crankshaft at the side away from the flywheel F becomes larger. Therefore, at this time, calculation of the drive force and the torque for the No. 1 cylinder #1 and the No. 2 cylinder #2 is prohibited. That is, at this time, the drive force and the torque are calculated only for the No. 3 cylinder #3 and the No. 4 cylinder #4. When the engine speed N becomes further higher, the amplitude of the torsional vibration at the crankshaft position near the flywheel F becomes larger. Therefore, at this time, calculation of the drive force and the torque for the No. 1 cylinder #1, No. 2 cylinder #2, and No. 3 cylinder #3 is prohibited. That is, at this time, the drive force and the torque for only the No. 4 cylinder #4 is calculated. If the calculation of the drive force and the torque for cylinders at crankshaft positions where the amplitude of the torsional vibration is large is prohibited in this way, the risk of calculating a mistaken drive force and the torque is eliminated. In the second embodiment, however, the fuel injection time TAU is calculated based on the following. equation: TAU = TP·FLEAN·FLLFB·KGTP(i)·FAF+TAUV Here, as explained above, TP shows the basic fuel injection time, FLEAN shows the lean correction coefficient, FLLFB shows the lean limit feedback correction coefficient, FAF shows the stoichiometric air-fuel ratio feedback correction coefficient, and TAUV shows the invalid injection time. Note that in the above equation, KGTP(i) shows the intercylinder correction coefficient. The intercylinder correction coefficient KGTP(i) is the correction coefficient for correcting the amount of fuel injection for each cylinder so that the times required for the expansion stroke of the cylinders #1, #2, #3, and #4 become equal. In the second embodiment, when the air-fuel ratio should be maintained at the stoichiometric air-fuel ratio, the lean correction coefficient FLEAN, lean limit feedback correction coefficient FLLFB, and intercylinder correction coefficient KGTP(i) are fixed at 1.0 and the stoichiometric air-fuel ratio feedback correction coefficient FAF is controlled based the output signal of the air-fuel ratio sensor 17. On the other hand, when the air-fuel ratio should 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 air-fuel ratio is controlled to the target lean air-fuel ratio based on the lean correction coefficient FLEAN, the lean limit feedback correction coefficient FLLFB, and the intercylinder correction coefficient KGTP(i). Next, the routine for finding the torque generated at each cylinder will be explained referring to Fig. 32 to Fig. 35. Fig. 32 shows the interruption routine performed at every 30° crank angle. Referring to Fig. 32, first, the routine (step 1100) for calculating the elapsed times Ta(i) and Tb(i) is proceeded to. This routine is shown in Fig. 33. Next, the routine (step 1200) for checking if the calculation of the torque is permitted or not is proceeded to. This routine is shown in the previously explained Fig. 13 to Fig. 15. Next, the routine for calculating the torque (step 1300) is proceeded to. This routine is shown in Fig.34 and Fig. 35. Next, the routine for calculating the ratios KTa(i) and KTb(i) (step 1400) is proceeded to. This routine is shown in the previously explained Fig.18 and Fig. 19. Next, the routine (step 1500) for processing of the counter CDLNIX used for calculation of the torque fluctuation value is proceeded to. This routine is shown in the previously explained Fig. 20. Referring to Fig. 33 showing the routine for calculating the elapsed times Ta(i) and Tb(i), first, at step 1101, the time is made the TIME0. The electronic control unit 2 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 1102, the current time is fetched. Therefore, the TIME0 at step 1101 comes to express the time of 30° crank angle before. Next, at step 1103, 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 1106 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°, step 1108 is jumped to. As opposed to this, when it is judged at step 1103 that the No. 1 cylinder is currently at ATDC 30°, step 1104 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 correcting the error due to the spaces between the outer teeth of the rotor 13, therefore the final elapsed time Ta(1) obtained by multiplying (TIME-TIME0) with KTa(1) accurately expresses the elapsed time when the crankshaft rotates by 30° crank angle. Next, at step 1105, 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, the ignition sequence is 1-3-4-2, so when the No. 1 cylinder #1 is currently at ATDC 30°, the flag XCAL(2) of the No. 2 cylinder #2 where 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 calculated, the flag XCAL(3) is set, and when the final elapsed time Ta(2) is calculated, the flag XCAL(4) is set. On the other hand, when it is judged at step 1106 that the No. 1 cylinder is currently at ATDC 90°, step 1107 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 correction of the error due to the spaces between the outer teeth of the rotor 13 is multiplied with (TIME-TIME0), the final elapsed time Tb(1) comes to accurately express the elapsed time when the crankshaft rotates by 30° crank angle. Next, at step 1108, whether the No. 1 cylinder is currently at ATDC 210° or not is judged. When the No. 1 cylinder is currently at ATDC 210°, the elapsed time T180(i) from ATDC 30° to ATDC 210° of the No. 1 cylinder, that is, the elapsed time T180(i) of the expansion stroke of the No. 1 cylinder is calculated. While not explained in detail in the specification of this application, the difference between the elapsed time T180(i) of the expansion stroke of a cylinder and the elapsed time T180(i) of the next expansion stroke of the cylinder is calculated for each cylinder and the intercylinder correction coefficient KGTP(i) for each cylinder is calculated so that the difference for each cylinder becomes smaller. Note that, this intercylinder correction coefficient KGTP(i) is disclosed in detail in for example Japanese Unexamined Patent Publication (Kokai) No. 4-370346. Next, the torque calculation routine shown in Fig. 34 and Fig. 35 will be explained. Referring to Fig. 34 and Fig. 35, 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 engine speed N is lower than the predetermined set speed NL or not is judged. When N < NL, step 307 is proceeded to, where 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 1315 is proceeded to, where the prohibition flag XNOCAL is reset. As opposed to this, when the prohibition flag is reset, step 1308 is-proceeded to. That is, only when the flag XCAL is set and prohibition flag XNOCAL is reset is step 1308 proceeded to. At step 1308, 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 1309, 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 310, 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. Note that 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 1310, the generated torque DN(i-1) is calculated, then step 1311 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 1312, whether the amount of fluctuation of the torque DLN(i-1) is positive or not is judged. When DLN(i-1) ≥ 0, step 1314 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 1313 is proceeded to, where the DLN(i-1) is made zero, then step 1314 is proceeded to. Note that the torque of each cylinder repeatedly rises and falls. To find the amount of fluctuation of the torque in this case, it is sufficient to cumulatively add the amount of increase of the torque or the amount of decrease of the torque. In the routine shown in Fig. 34 and Fig. 35, only 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. In this way, when the engine speed N is lower than even the set speed NL, so long as the prohibition flag XNOCAL is not set, the generated torque DN(i-1) of the cylinders #1, #2, #3, and #4 and the amount of fluctuation of the torque DLN(i-1) are successively calculated. On the other hand, at step 1303, when it is judged that N ≥ NL, step 1304 is proceeded to, where whether the engine speed N is lower than the predetermined set speed NH (> NL) or not is judged. When N < NH, step 305 is proceeded to, where whether the cylinder (i-1) at which combustion was performed one time before was the No. 3 cylinder #3 or the No. 4 cylinder #4 or not is judged. When the cylinder (i-1) at which combustion was performed one time before was the No. 3 cylinder #3 or the No. 4 cylinder #4, step 1307 is proceeded to, while when the cylinder (i-1) at which combustion was performed one time before was neither the No. 3 cylinder #3 nor the No. 4 cylinder #4, the processing cycle is ended. Therefore, when the engine speed N is NL ≤ N < NH, so long as the prohibition flag XNOCAL is not set, the generated torque DN(i-1) and the amount of fluctuation of the torque DLN(i-1) for only the No. 3 cylinder #3 and the No. 4 cylinder #4 are calculated. On the other hand, when it is judged at step 1304 that N ≥ NH, step 306 is proceeded to, where whether the cylinder (i-1) at which combustion was performed one time before was the No. 4 cylinder #4 or not is judged. When the cylinder (i-1) at which combustion was performed one time before was the No. 4 cylinder #4, step 1307 is proceeded to, while when the cylinder (i-1) at which combustion was performed one time before was not the No. 4 cylinder #4, the processing cycle is ended. Therefore, when the engine speed N is N ≥ NH, so long as the prohibition flag XNOCAL is not set, the generated torque DN(i-1) and the amount of fluctuation of the torque DLN(i-1) for only the No. 4 cylinder #4 are calculated. Fig. 36 shows the repeatedly executed main routine. In this main routine, first, the routine for calculation of the torque fluctuation value (step 1600) is executed. This routine is shown in Fig. 37 and Fig. 38. Next, the routine for calculation of the lean limit feedback correction coefficient FLLFB (step 1700) is executed. This routine is shown in the previously explained Fig. 27. Next, when the predetermined crank angle is reached, the injection time calculation routine (step 1800) is executed. This routine is shown in Fig. 39. Next, the other routines (step 1900) are executed. Next, the routine for calculation of the torque fluctuation value will be explained referring to Fig. 37 and Fig. 38. Referring to Fig. 37 and Fig. 38, first, at step 1601, 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 1609 is jumped to, while when the cumulative addition request flag XCDLN(i) is set, step 6102 is proceeded to. At step 1602, the cumulative addition request flag XCDLN(i) is reset. Next, at step 1603, 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 1604, the cumulative count value CDLNI(i) is incremented by exactly 1. That is, for example, if the cumulative addition request flag XCDLN(1) is set for the No. 1 cylinder at step 1601, at step 1602, this flag XCDLN(1) is reset, at step 1603, the amount of fluctuation of the torque cumulative value DLNI(1) is calculated, and, at step 1604, the cumulative count value CDLNI (1) is incremented by exactly 1. Next, at step 1605, whether the cumulative count value CDLNI(i) has become "8" or not is judged. When CDLNI(i) is not "8", step 1609 is jumped to, while when CDLNI(i) becomes "8", step 1606 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 1607, the cumulative value DLNI(i) of the amount of fluctuation of the torque for each cylinder is cleared, then, at step 1608, the cumulative count value CDLNI(i) is cleared. That is, when there is a difference between the calculated amount of fluctuation of the torque cumulative value DLNI(i) and the previously used torque fluctuation value DLNISM(i), the value of this difference {DLNI(i)-DLNISM (i)} multiplied by 1/4 is added to the torque fluctuation value DLNISM(i). Therefore, for example, when the cumulative count value CDLNI(1) becomes "8" for the No. 1 cylinder #1, at step 1606, the torque fluctuation value DLNISM(1) is calculated. Next, at step 1609, whether the count value CDLNIX calculated by 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 1610 is proceeded to, where whether or not the average value of the engine speed N AVE found at step 1509 of the routine for processing CDLNIX shown in the Fig. 20 is lower than even the set speed NL or not is judged. When N AVE < NL, step 1611 is proceeded to, where the mean value of the torque fluctuation value DLNISM(i) of each torque, that is, the mean torque fluctuation value DLNISM (= {DLNISM(1)+DLNISM(2)+DLNISM(3)+DLNISM(4)}/4) is calculated. Next, step 1615 is proceeded to. As opposed to this, when it is judged at step 1610 that N AVE ≥ NL, step 1612 is proceeded to, where whether the average value of the engine speed N AVE is lower than the set speed NH (> NL) or not is judged. When N AVE < NH, step 1613 is proceeded to, where the mean value of the torque fluctuation value DLNISM (i) of the No. 3 cylinder #3 and the No. 4 cylinder #4, that is, the mean torque fluctuation value DLNISM (= {DLNISM(3)+DLNISM(4)}/2) is calculated. Next, step 1615 is proceeded to. That is, when NL ≤ N AVE < NH, calculation of the amount of fluctuation of the torque DLN(i) for the No. 1 cylinder #1 and the No. 2 cylinder #2 is prohibited, so at this time the mean torque fluctuation value DLNISM is made the mean value of DLNISM(3) and DLNISM(4). On the other hand, when it is judged at step 1612 that N AVE ≥ NH, step 1614 is proceeded to, where the torque fluctuation value DLNISM (4) of the No. 4 cylinder #4 is made the mean torque fluctuation value DLNISM. That is, when N AVE ≥ NH, calculation of the amount of fluctuation of the torque DLN(i) for the No. 1 cylinder #1, No. 2 cylinder #2, and No. 3 cylinder #3 is prohibited, so at this time DLNISM(4) is made the mean torque fluctuation value DLNISM(4). Next, step 1615 is proceeded to. At step 1611, the count value CDLNIX is cleared. The value DLNISM representing the amount of fluctuation of the torque of the engine is calculated in this way. Next; the routine for calculation of the fuel injection time will be explained referring to Fig. 39. Referring to Fig. 39, first, at step 1801, the basic fuel injection time TP is calculated from the map shown in Fig. 2. Next, at step 1802, whether the operating state is one where a lean operation should be performed or not is judged. When the operating state is one where a lean operation should be performed, step 1803 is proceeded to, where the value of the stoichiometric air-fuel ratio feedback correction coefficient FAF is fixed at 1.0. Next, at step 1804, the lean correction coefficient FLEAN is calculated from the map shown in Fig. 4, then at step 1805, the lean limit feedback correction coefficient FLLFB is read from the map shown in Fig. 5. Next, at step 1806, the intercylinder correction coefficient KGTP(i) is calculated. Next,'at step 1811, the fuel injection time TAU is calculated based on the following equation: TAU = TP·FLEAN·FLLFB·FAF·KGTP(i)+TAUV As opposed to this, when it is judged at step 1802 that the operating state is not one in which a lean operation should be performed, that is, when the air-fuel ratio should be made the stoichiometric air-fuel ratio, step 1807 is proceeded to, where the lean correction coefficient FLEAN is fixed at 1.0. Next, at step 1808, the lean limit feedback correction coefficient FLLFB is fixed at 1.0. Next, at step 1809, the intercylinder correction coefficient KGTP(i) is fixed at 1.0. Next, at step 1810, 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 1811 is proceeded to, where the fuel injection time TAU is calculated. Next, an explanation will be made of a third embodiment which enables even more accurate detection of the drive force generated at each cylinder or the torque generated at each cylinder. That is, the change of the speed of reciprocal motion of the piston becomes smallest near top dead center and becomes largest near 90° after top dead center. In this case, if the change of the speed of reciprocal motion of the piston becomes large, the deceleration action caused by the 'inertia on the piston and other reciprocating members (hereinafter referred to as simply the inertia of the piston) acts on the crankshaft and therefore the change of the speed of reciprocal motion of the piston becomes largest near 90° after top dead center and the angular velocity of the crankshaft is reduced by the deceleration action due to the inertia of the piston. In this case, the higher the engine speed becomes, the larger the change of the speed of reciprocal motion of the piston and therefore the deceleration action due to the inertia of the piston becomes more powerful the higher the engine speed becomes. Note, however, that when the deceleration action due to the inertia of the piston works in this way, the angular velocity of the crankshaft near 90° after top dead center, that is the second angular velocity ωb, is reduced. That is, the detected second angular velocity ωb becomes the amount of increase of the angular velocity caused by the combustion pressure plus the amount of reduction of the angular velocity due to the inertia of the piston. Therefore, to find more accurately the drive force generated by each cylinder or the torque generated by each cylinder, it is necessary to consider the amount of change of the second angular velocity ωb caused by the inertia of the pistons. This will be explained next referring to Fig. 40, Fig. 41A, and Fig. 41B. As explained earlier, when the engine speed becomes higher, the deceleration action due to the inertia of the piston becomes more powerful. As a result, the angular velocity of the crankshaft near 90° after top dead center, that is, the second angular velocity ωb, is decreased. In other words, the elapsed time T30 near 90° after top dead center becomes longer due to the deceleration action due to the inertia of the piston. Fig. 40 shows the change in the elapsed time T30 at the time of high engine speed. From Fig. 40, it is learned that the elapsed times Tb(1) and Tb(3) near 90° after top dead center become longer. On the other hand, when combustion is performed, the combustion pressure causes the elapsed time T30 to be reduced from Ta(i) to Tb(i). That is, when combustion is performed, the combustion pressure causes the angular velocity of the crankshaft to rise from the first angular velocity ωa to the second angular velocity ωb. Note, however, that as explained above, the deceleration action due to the inertia of the piston causes the second angular velocity ωb to be decreased, therefore the detected second angular velocity ωb includes not only the amount of increase of the angular velocity due to the combustion pressure, but also the amount of decrease of the angular velocity due to the inertia of the piston. Therefore, in this case, in so far as the second angular velocity ωb is not increased by the amount of decrease of the angular velocity due to the inertia of the piston, the difference between the first angular velocity ωa and second angular velocity ωb does not express the generated drive force of the cylinder and the difference between the square of the first angular velocity ωa and the square of the second angular velocity ωb does not express the generated torque of the cylinder. Therefore, in the third embodiment, when the supply of fuel is stopped at the time of a deceleration operation, the difference between the elapsed times Ta(i) and Tb(i) is found and then the difference is used to correct the elapsed time Tb(i). That is, when the supply of fuel is stopped, no combustion pressure occurs, therefore, at this time, only the effect due to the inertia of the piston appears in the elapsed time T30. Fig. 41A shows the change in the elapsed time T30 when the supply of fuel is stopped. As shown in Fig. 41A, when the supply of fuel is stopped, the deceleration action due to the inertia of the piston causes the elapsed times Tb(1) and Tb(3), that is, Tb(i) to become longer. At this 'time, the difference r (r= Tb(i)-Ta(i)) between the elapsed times Ta(i) and Tb(i) expresses the amount of increase of the elapsed time Tb(i) due to the inertia of the piston. Therefore, by subtracting this amount of increase r from the actually detected Tb(i) shown in Fig. 40, this result of subtraction (actually detected Tb(i)-amount of increase r) comes to express the elapsed time Tb(i) reduced by the combustion pressure. The elapsed time Tb(i) decreased by this combustion pressure is shown in Fig. 41B. Therefore, by calculating the generated drive force and the generated torque of a cylinder based on the elapsed time Ta(i), Tb(i) shown in Fig. 41B, the generated drive force and the generated torque come to express the true generated drive force and generated torque from which the effect of the inertia of the pistons has been eliminated. In other words, at the time when the supply of fuel is stopped, the second angular velocity ωb is reduced by the inertia of the piston by exactly the difference between the first angular velocity ωa and the second angular velocity ωb. By adding the amount of decrease of the angular velocity (ωa-ωb) at this time to the actually detected second angular velocity ωb, the result of the addition comes to express the second angular velocity ωb increased by the combustion pressure. Note, however, that the amount of increase r of the elapsed time due to the above inertia of the piston becomes a function of the engine speed. That is, if the engine speed becomes high, the deceleration action due to the inertia of the piston becomes powerful, so the amount of increase r of the elapsed time becomes larger, but the elapsed times Ta(i) and Tb(i) themselves become shorter, so the amount of increase r of the elapsed time becomes smaller as the engine speed N becomes higher as shown by the broken line in Fig. 42. Therefore, in this embodiment according to the present invention, the amount of increase r of the elapsed time in accordance with the engine speed N is calculated from the relationship shown by the broken line in Fig. 42. The amount of increase r is used to correct the elapsed time Tb(i). Note, however, that a value found in advance by experiments may be used as the amount of increase r of the elapsed time, but in this embodiment according to the present invention, this amount of increase r is learned. That is, as shown in Fig. 42, a plurality of learning regions S 1 , S 2 , S 3 , S 4 , S 5 ... are set for the engine speed N. When the supply of fuel is stopped at the time of a deceleration operation, the amount of increase r 1 (i), r 2 (i), r 3 (i), r 4 (i), r 5 (i) ... of the elapsed time according to the engine speed N at that time is found for each cylinder. On the other hand, in the third embodiment, the rotor 13 has an outer tooth formed every 10° crank angle on its outer periphery and has some of the outer teeth removed for detection of the top dead center of compression of the No. 1 cylinder for example. The portion where the outer teeth have been removed, that is, this non-tooth portion, is shown by the reference numeral 18 in Fig. 43. Further, in the third embodiment, the positional relationship between the crank angle sensor 14 and the non-tooth portion 18 at ATDC 60° to ATDC 90° of the No. 2 cylinder #2 and the No. 3 cylinder #3 is set so that the crank angle sensor 14 faces the non-tooth portion 18. However, if the crank angle sensor 14 faces the non-tooth portion 18 at ATDC 60° to ATDC 90° of the is No. 2 cylinder #2 and the No. 3 cylinder #3 in this way, the elapsed time Tb(2) of the No. 2 cylinder #2 and the elapsed time Tb(3) of the No. 3 cylinder #3 cannot be accurately detected, therefore the amount of increase r(2) of the elapsed time for the No. 2 cylinder #2 and the elapsed time r(3) for the No. 3 cylinder #3 can no longer be accurately detected. That is, at the non-tooth portion 18, the output signal of the crank angle sensor 14 fluctuates by a large amount according to the engine speed N. As a result, as shown in Fig. 44, the amount of increase r(i) of the elapsed time for the No. 2 cylinder #2 and the No. 3 cylinder #3 largely deviate from the amount of increase r(i) of the No. 1 cylinder #1 and the No. 4 cylinder #4 showing the true values. Therefore, in the third embodiment, the drive force and the torque generated by the cylinder cannot be accurately detected for the No. 2 cylinder #2 and the No. 3 cylinder #3, therefore the drive force and the torque generated by the cylinder are made not to be calculated for the No. 2 cylinder #2 and the No. 3 cylinder #3. Of course in this case, as in the first embodiment and the second embodiment, if the positional relationship between the crank angle sensor 14 and the non-tooth portion 18 is set so that the crank angle sensor 14 is made not to face the non-tooth portion 18 when detecting the elapsed times Ta(i) and Tb(i), it becomes possible to accurately calculate the drive force and the torque for all cylinders. Note that in the same way as in the second embodiment, in the third embodiment as well, the fuel injection time TAU is calculated based on the following equation: TAU = TP·FLEAN·FLLFB·FAF·KGTP(i)+TAUV Next, the routine for finding the torque generated by each cylinder will be explained referring to Fig. 45 to Fig. 53. Note that, Fig. 53 shows the timing of calculation of the various values performed in each routine. Fig. 45 shows an interruption routine performed at every 30° crank angle. Referring to Fig. 45, first, the routine (step 2100) for calculating the elapsed times Ta(i) and Tb(i) is proceeded to. This routine is shown in Fig.46. Next, the routine (step 2200) for checking whether the calculation of the torque is permitted .or not is proceeded to. This routine is explained previously in Fig. 13 to Fig. 15. Next, the routine for calculating the torque (step 2300) is proceeded to. This routine is shown in Fig. 47 to Fig. 49. Next, the routine for calculating the ratios KTa(i) and KTb(i) (step 2400) is proceeded to. This routine is shown in Fig. 50 and Fig. 51. Next, the routine for processing of the counter CDLNIX used for. calculation of the torque fluctuation value (step 2500) is proceeded to. This routine is shown in Fig. 52. Referring to Fig. 46 showing the routine for calculation of the elapsed times Ta(i) and Tb(i), first, at step 2101, the time is made the TIME0. The electronic control unit 20 is provided with a free run counter for showing the time. The time is calculated from the count value of this free run counter. Next, at step 2102, the current time is fetched. Therefore, the TIME0 at step 101 shows the time at 30° crank angle before. Next, at step 2103, 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 2107 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°, step 2109 is jumped to. As opposed to this, when it is judged at step 2103 that the No. 1 cylinder is currently at ATDC 30°, step 1204 is proceeded to, where the 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 the ratio for correcting the error due to the spaces between the outer teeth of the rotor 13, therefore the final elapsed time Ta(1) obtained by multiplying (TIME-TIME0) with KTa(1) accurately expresses the elapsed time when the crankshaft rotates by 30° crank angle. Next, at step 2105, whether the No. (i-1) cylinder where combustion had been performed one time before is the No. 1 cylinder #1 or the No. 4 cylinder #4 or not is judged. When the No. (i-1) cylinder where combustion had been performed one time before is the No. 2 cylinder #2 or the No. 3 cylinder #3, step 2109 is jumped to. As opposed to this, when the No. (i-1) cylinder where combustion had been performed one time before is the No. 1 cylinder #1 or the No. 4 cylinder #4, step 2106 is proceeded to. At step 2106, 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, the ignition sequence is 1-3-4-2, so when the No. 3 cylinder #3 is currently at ATDC 30°, the flag XCAL(1) of the No. 1 cylinder #1 where combustion had been performed one time earlier showing that the generated torque should be calculated is set. In the same way, as shown in Fig. 53, when the final elapsed time Ta(2) is calculated, the flag XCAL(4) is set. That is, the flag showing that the generated torque should be calculated is set only for the No. 1 cylinder #1 and the No. 4 cylinder #4. On the other hand, when it is judged at step 2107 that the No. 1 cylinder is currently at ATDC 90°, step 2108 is proceeded to, where the final elapsed time Tb(i) from ATDC 60° to ATDC 90° of the No. 1 cylinder is calculated from 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 correction of the error due to the spaces between the outer teeth of the rotor 13 is multiplied with (TIME-TIME0), the final elapsed time Tb(1) accurately expresses the elapsed time when the crankshaft rotates by 30° crank angle. Next, at step 2109, whether the No. 1 cylinder is currently at ATDC 210° or not is judged. When the No. 1 cylinder is currently at ATDC 210°, the elapsed time T180(i) from ATDC 30° to ATDC 210° of the No. 1 cylinder, that is, the elapsed time T180(i) of the expansion stroke of the No. 1 cylinder is calculated. While not explained in detail in the specification of this application, the difference between the elapsed time T180(i) of the expansion stroke of each cylinder and the elapsed time T180(i) of the next expansion stroke of the cylinder is calculated for each cylinder and the intercylinder correction coefficient KGTP(i) is calculated for each cylinder so that the difference for each cylinder becomes smaller. Note that, this intercylinder correction coefficient KGTP(i) is disclosed in detail in for example, Japanese Unexamined Patent Publication (Kokai) No. 4-370346 as mentioned above. Next, the torque calculation routine shown in Fig. 47 to Fig. 48 will be explained. Referring to Fig. 47 to Fig. 48, first, at step 2301, whether the supply of the fuel has been stopped or not at the time of a deceleration operation, that is whether the fuel has been cut or not is judged. When the supply of fuel is not stopped, step 2313 is jumped to, while when the supply of fuel is stopped, step 2302 is proceeded to. At step 2302, whether the amplitude AMP calculated in the routine for checking permission for calculation of the torque shown in Fig. 13 to Fig. 18 is larger than the setting B 0 or not is judged. When AMP > B 0 , step 2313 is jumped to, while when AMP ≤ B 0 , step 2303 is proceeded to. At step 2303, 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°, step 2313 is jumped to. As opposed to this, when the No. 1 cylinder is currently at ATDC 90°, step 2304 is proceeded to. At step 2304, whether the No. (i-1) cylinder which was in the expansion stroke one time before (at this time, no combustion is performed) is the No. 1 cylinder #1 or the No. 4 cylinder #4 or not is judged.When the No. (i-1) cylinder which was in the expansion stroke one time before is the No. 2 cylinder #2 or the No. 3 cylinder #3, step 2313 is jumped to. As opposed to this, when the No. (i-1) cylinder which was in the expansion stroke one time before is the No. 1 cylinder #1 or the No. 4 cylinder #4, step 2305 is proceeded to. At step 2305, whether the No. (i-1) cylinder which was in the expansion stroke one time before was at one of the calculation regions S 1 , S 2 , S 3 , S 4 , S 5 ... shown in Fig. 42 for the engine speed N is judged. When the No. (i-1) cylinder was not at one of the calculation regions S 1 , S 2 , S 3 , S 4 , S 5 ..., step 2313 is jumped to, while when the No. (i-1) cylinder was at one of the calculation regions S 1 , S 2 , S 3 , S 4 , S 5 ..., step 2306 is proceeded to. At step 2306, the difference T(i-1) (= Tb(i-1)-Ta(i-1)) between the elapsed time Tb(i-1) of the No. (i-1) cylinder which was in the expansion stroke one time before and the elapsed time Ta(i-1) is calculated. That is, when the cylinder which was in the expansion stroke one time before is the No. 1 cylinder #1, the difference T(1) (= Tb(1)-Ta(1)) is calculated, while when the cylinder which was in the expansion stroke one time before is the No. 4 cylinder #4, the difference T(4) (= Tb(4)-Ta(4)) is calculated. Next, at step 2307, the difference T(i-1) is added to the cumulative value ΣT(i-1) of the difference T(i-1) (ΣT(i-1) = ΣT(i-1)+T(i-1)). Next, at step 2308, the count value Cn(i-1) for the calculation region SN of the No.' (i-1) cylinder is incremented by exactly 1. Next, at step 2309, whether the engine speed N has passed the calculation region Sn or not is judged. When the engine speed N is in the calculation region Sn, step 2313 is jumped to, while when engine speed N has passed the calculation region Sn, step 2310 is proceeded to. At step 2310, the amount of increase r n (i-1) of the elapsed time is calculated based on the following equation. r n (i-1) = r n (i-1)+{ΣT(i-1)/C n (i-1)-r n (i-1)}/16 That is, for example, when the No. (i-1) cylinder which was in the expansion stroke one time before is the No. 1 cylinder #1 and the calculation region SN is S 1 in Fig. 42, the amount of increase r 1 (1) of the'elapsed time is represented as shown in the following equation: r 1 (1) = r 1 (1)+{ΣT(1)/C 1 (1)-r 1 (1)}/16 That is, ΣT(1)/C 1 (1) shows the mean value of the difference T(i-1) of the elapsed time when the No. 1 cylinder #1 is in the calculation region S 1 . When there is a difference between this mean value ΣT(1)/C 1 (1) and the previously used amount of increase r 1 (1), the amount of increase r 1 (1) is updated so as to approach the mean value ΣT(1)/C 1 (1). At step 310, the amount of increase r n (i-1) is updated, then step 2311 is proceeded to, where the cumulative value ΣT(i-1) is cleared, then at step 312, the count value C n (i-1) is cleared. On the other hand, at step 2313, whether 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 or not is judged. When the flag XCAL(i-1) = "0", that is, 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 2314 is proceeded to, where the flag XCAL(i-1) is reset, then step 2315 is proceeded to. At step 2315, whether the prohibition flag XNOCAL of the cylinder at which the combustion was performed one time before prohibiting the calculation of the torque is reset (XNOCAL = "0") or not is judged. When this prohibition flag is set (XNOCAL = "1"), step 2324 is proceeded to, where the prohibition flag XNOCAL is reset. As opposed to this, when the prohibition flag is reset, step 2316 is proceeded to. That is, when the flag XCAL is set and the prohibition flag XNOCAL is reset, step 2316 is proceeded to. At step 2316, the amount of increase r n (i-1) according to the current engine speed N is calculated by interpolation from the amounts of increase r 1 (i), r 2 (i), r 3 (i), r 4 (i), r 5 (i) ... found for the calculation regions S 1 , S 2 , S 3 , S 4 , S 5 ... Next, at step 2317, the amount of fluctuation 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 fluctuation h of the elapsed time becomes one-third of h o (= Ta(i-1)-Ta(i)). Next, at step 2318, Tb'(i-1) expressing only the elapsed time reduced due to the combustion pressure is calculated based on the following equation: Tb'(i-1)=Tb(i-1)-r n (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)-r n (1)+h. Further, when finding Tb'(4) for the No. 4 cylinder #4, h = {Ta(4)-Ta(2)}·60/180 and Tb'(4) = Tb(4)-r n (4)+h. Next, at step 2319, 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 the elimination of the effect due to the inertia of the piston, the effect due to the torsional vibration of the engine drive system, and the effect due to the variation in spaces between the outer teeth of the rotor 13. Note that, when finding the drive force GN(i-1) generated by the cylinders, 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 2319, the generated torque DN(i-1) is calculated, then step 2320 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 2321, whether the amount of fluctuation of the torque DLN(i-1) is positive or not is judged. When DLN(i-1) ≥ 0, step 2323 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 2322 is proceeded to, where DLN(i-1) is made zero, then step 2323 is proceeded to. Note that, the torque of each cylinder repeatedly rises and falls. In this case, to find the amount of fluctuation of the torque, it is sufficient to cumulatively add either of the amount of increase of the torque or the amount of decrease of the torque. In the routine shown in Fig. 47 to Fig. 49, only 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. 50 and Fig. 51. Referring to Fig. 50 and Fig. 51, first, at step 2401, 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 2415 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 ended. As opposed to this, when the fuel is cut, step 2402 is proceeded to, where whether the amplitude AMP calculated by the routine for checking permission for calculation of the torque is larger than the setting B 0 or not is judged. When AMP > B 0 , step 2415 is proceeded to, while when AMP ≤ B 0 , step 2403 is proceeded to. At step 2403 to step 2408, KTa(i) is calculated. That is, at step 2403,'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 2404, 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 2409 is jumped to, while when cumulatively added n number of times, step 2405 is proceeded to. At step 2405, 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 2406, the correction value α(i) (= Ma/ΣTa(i)) for each cylinder is calculated. Next, at step 2407, 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, when α(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), so KTa(1) gradually approaches α(1). When the KTa(i) is calculated for each cylinder at step 2407, step 2408 is proceeded to, where the cumulative value ΣTa(i) for each cylinder is cleared. On the other hand, at step 2409 to step 2415, the KTb(i) for the No. 1 cylinder #1 and the No. 4 cylinder #4 are calculated. That is, at step 2409, whether the Tb(1) of the No. 1 cylinder #1 or the Tb(4) of the No. 4 cylinder #4 has been calculated or not is judged. If the Tb(1) of the No. 1 cylinder #1 or the Tb(4) of the No. 4 cylinder #4 have not been calculated, the processing cycle is ended. As opposed to this, when the Tb(1) of the No. 1 cylinder #1 or the Tb(4) of the No. 4 cylinder #4 has been calculated, step 2410 is proceeded to. At step 2410, the corresponding elapsed time Tb(i) is added to the cumulative value ΣTb(i) for the No. 1 cylinder #1 or the No. 4 cylinder #4. That is, Tb(1) is added to ΣTb(1), while Tb(4) is added to ΣTb(4). Next, at step 2411, whether Tb(i) has 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 if cumulatively added n number of times, step 2412 is proceeded to. At step 2412, the mean value Mb(= {ΣTb(1)+ΣTb(4)}/2) of each cumulative value ΣTb(i) is calculated. Next, at step 2413, the correction value β(i) (= Mb/ΣTb(i)) for each of the No. 1 cylinder #1 and No. 4 cylinder #4 is calculated. Next, at step 2414, 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) and KTb(4) are calculated for the No. 1 cylinder #1 and the No. 4 cylinder #4. For example, if β(1) becomes larger than the KTb(1) used up to now, the 1/4 of the difference between β(1) and KTb(1) {β(1)-KTb(1)}/4 is added to KTb(1) and therefore KTb(1) gradually approaches β(1). When the KTb(i) is calculated at step 2414, step 2415 is proceeded to, where the cumulative value ΣTb(i) is cleared. Next, the processing of the counter CDLNIX will be explained referring to Fig. 52. Referring to Fig. 52, first, whether the No. 3 cylinder #3 is currently at ATDC 30° or not is judged. When the No. 3 cylinder #3 is not currently at ATDC 30°, the processing cycle is ended, while when the No. 3 cylinder #3 is currently at ATDC 30°, step 2502 is proceeded to. At step 2502, 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 in the surge tank 3 is more than a 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 2502 that the conditions for calculating the fluctuation value stand, step 2508 is proceeded to, where the count value CDLNIX is incremented by exactly 1. The increment action of this count value CDLNIX is performed each time the No. 3 cylinder #3 reaches ATDC 30°, that is, with each 720° crank angle. Next, at step 2509, the average value of the engine speed N AVE and the average value PM AVE of the absolute pressure in the surge tank 3 are calculated in the period from when the increment action of the count value CDLNIX is started to when the count value CDLNIX is cleared. On the other hand, when it is judged at step 2502 that the conditions for calculating the fluctuation value do not stand, step 2503 is proceeded to, where the count value CDLNIX is cleared. Next, at step 2504, the cumulative value DLNI(i) of the torque fluctuation value DLN(i) for each of the No. 1 cylinder #1 and the No. 4 cylinder #4 is cleared, then at step 2505, the cumulative count value CDLNI(i) for these cylinders is cleared. Next, at step 2506, the target torque fluctuation value LVLLFB is calculated. Next, at step 2507, the mean torque fluctuation value DLNISM(i) of each of the No. 1 cylinder #1 and No. 4 cylinder #4 is made the target torque fluctuation value LVLLFB calculated from the map of Fig. 22B. Fig. 54 shows the repeatedly executed main routine. In this main routine, first, the routine (step 2600) for calculation of the torque fluctuation value is executed. This routine is shown in Fig. 55 and Fig. 56. Next, the routine (step 2700) for calculation of the lean limit feedback correction coefficient FLLFB is executed. This routine is shown in the previously explained Fig. 27. Next, when the predetermined crank angle is reached, the routine (step 2800) for calculation of the injection time is executed. This routine is shown in Fig. 57. Next, the other routines (step 2900) are executed. Next, the routine for calculation of the torque fluctuation value shown in Fig. 55 and Fig. 56 will be explained. Referring to Fig. 55 and Fig. 56, first, at step 2601, 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 2609 is jumped to, while when the cumulation request flag XCDLN(i) is set, step 2602 is proceeded to. At step 2602, the cumulative addition request flag XCDLN(i) is reset. Next, at step 2603, 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 2604, the cumulative count value CDLNI(i) is incremented by exactly 1. That is, for example, assuming that at step 2601 the cumulative addition request flag XCDLN(1) is set for the No. 1 cylinder, at step 2602, this flag XCDLN(1) is reset, at step 2603, the amount of fluctuation of'the torque cumulative value DLNI(1) is calculated, and at step 2604 the cumulative count value CDLNI (1) is incremented by exactly 1. Next, at step 2605, whether the cumulative count value CDLNI(i) has become "8" or not is judged. When CDLNI(i) is not "8", step 2609 is jumped to, while when CDLNI(i) becomes "8", step 2606 is proceeded to, where the mean torque fluctuation value DLNISM(i) of the cylinders is calculated from the following equation: DLNISM(i) = DLNISM(i)+{DLNI(i)-DLNISM(i)}/4 Next, at step 2607, the cumulative value DLNI(i) of the amount of fluctuation of the torque for No. 1 cylinder #1 or the No. 4 cylinder #4 is cleared, then, at step 2608, the cumulative count value CDLNI(i) is reset. That is, if there is a difference between the calculated amount of fluctuation of the torque cumulative value DLNI(i) and the previously used amount of fluctuation of the torque DLNISM(i), the value of this 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 2606, the torque fluctuation value DLNISM(1) is calculated. Next, at step 2609, whether the count value CDLNIX calculated in the routine shown in Fig. 52 has become "8" or not is judged. When CDLNIX is not "8", the processing cycle is ended, while when CDLNIX becomes "8", step 2610 is proceeded to, where the mean value of the torque fluctuation value DLNISM(i) of the No. 1 cylinder #1 and the No. 4 cylinder #4, that is, the mean torque fluctuation value DLNISM (= {DLNISM(1)+DLNISM(4)}/2), is calculated. Next, at step 2611, the count value CDLNIX is cleared. In this way, the value DLNISM showing the amount of fluctuation of the torque of the engine is calculated. Note that, as explained above, if the count value CDLNIX is increased by exactly 1 every 720° crank angle and the calculation of the torque for both of the No. 1 cylinder #1 and No. 4 cylinder #4 is not prohibited, when the count value CDLNIX has become "8", the cumulative count values CDLNI(1) and the CDLNI(4) for these cylinders will already be "8". Therefore, in this case, the torque fluctuation value DLNISM(i) for these cylinders is calculated. On the other hand, for example, if calculation of the torque for the No. 1 cylinder #1 is prohibited, when the count value CDLNIX has become "8", the cumulative count value CDLNI(1) for the No. 1 cylinder #1 will not become "8", therefore the new amount of fluctuation of the torque cumulative value DLNI (1) for the No. 1 cylinder #1 is not calculated. Therefore, in this case, when finding the mean torque fluctuation value DLNISM at step 2610, the previously calculated torque fluctuation value DLNISM(1) is used for just the No. 1 cylinder #1. Next, the routine for calculation of the fuel injection time will be explained referring to Fig. 57. Referring to Fig. 57, first, at step 2801, the basic fuel injection time TP is calculated from the map shown in Fig. 2. Next, at step 2802, whether the operating state is one where a lean operation should be performed or not is judged. When the operating state is one where a lean operation should be performed, step 2803 is proceeded to, where the value of the stoichiometric air-fuel ratio feedback correction coefficient FAF is fixed at 1.0. Next, at step 2804, the lean correction coefficient FLEAN is calculated from the map shown in Fig. 4, then at step 2805, the lean limit feedback correction coefficient FLLFB is read from the map shown in Fig. 5. Next, at step 2806,'the intercylinder correction coefficient KGTP(i) is calculated. Next, at step 2811, the fuel injection time TAU is calculated based on the following equation: TAU = TP·FLEAN·FLLFB·FAF·KGTP(i)+TAUV As opposed to this, when it is judged at step 2802 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 2807 is proceeded to, where the lean correction coefficient FLEAN is fixed at 1.0, then, at step 2808, the lean limit feedback correction coefficient FLLFB is fixed at 1.0. Next, at step 2809, the intercylinder correction coefficient KGTP(i) is fixed at 1.0. Next, at step 2810, 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 2811 is proceeded to, where the fuel injection time TAU is calculated. As already explained with reference to Fig. 29, Fig. 30A, and Fig. 30B, when the engine is operated, various orders of torsional vibration occur in the crankshaft. Among these, particularly the sixth order of torsional vibration (torsional vibration having 60° crank angle as cycle) has a major impact on the detection of the first angular velocity ωa. Therefore, in the previously explained second embodiment, to prevent the drive force generated in each cylinder and the torque generated in each cylinder from being mistakenly detected, the torque was not detected for some of the cylinders. In the fourth embodiment to be explained below, a method separate from the second embodiment is used to accurately find the drive force generated at each cylinder or the torque generated at each cylinder. That is, for the generated torque to be accurately found from the first angular velocity ωa and the second angular velocity ωb, the first angular velocity ωa and the second angular velocity ωb must be accurately detected. However, the angular velocity repeatedly fluctuates both when the first angular velocity ωa should be detected and when the second angular velocity ωb should be detected, therefore in the crank angle region where the generated torque can be suitably detected, as the value most accurately expressing each of the first angular velocity ωa and the second angular velocity ωb, a mean value of the angular velocity in a period of a certain length must be used. In this embodiment according to the present invention, the mean value of this angular velocity is calculated from the elapsed time required for the crankshaft to rotate by a predetermined crank angle, therefore, in this embodiment according to the present invention, to find the accurate first angular velocity ωa and second angular velocity ωb, the above-mentioned predetermined crank angle degree must be made a crank angle degree of a certain length. However, when the predetermined crank angle degree for detecting the angular velocity is made a crank angle degree of a certain length in this way, a separate problem sometimes occurs. For example, if the crank angle range for detecting an angular velocity is made long, the latter half of the angular range for detecting the first angular velocity ωa ends up overlapping the first half of the region of reduction (Z of Fig. 30B) of the angular velocity ω due to the sixth order of torsional vibration. As a result, this sixth order of torsional vibration causes the first angular velocity ωa to be no longer accurately detectable. To solve this problem, it is possible to shift the crank angle range for detection of the first angular velocity ωa to the compression stroke side so that the region of reduction of the angular velocity ω due to the sixth order of torsional vibration is not overlapped. However, if the crank angle range for detection of the first angular velocity ωa is shifted to the compression stroke side, the first half of the crank angle range ends up overlapping the crank angle region unsuitable as the region for detection of the first angular velocity for detection of the generated torque, therefore it is impossible to detect the accurate generated torque. Therefore, in the fourth embodiment according to the present invention, the crank angle range for detecting the first angular velocity ωa is set to a crank angle smaller than the crank angle range for detecting the second angular velocity ωb. Explaining this with reference to the specific example used in this embodiment according to the present invention, the crank angle range for detecting the first angular velocity ωa is made the 30° crank angle from 20° before the top dead center of the compression stroke (hereinafter referred to as BTDC) to 10° after the top dead center of the compression stroke (hereinafter referred to as ATDC), while the crank angle range for detecting the second angular velocity ωb is made the 50° crank angle from ATDC 50° to ATDC 100°. If crank angle range for detecting the first angular velocity ωa is set to a crank angle smaller than the crank angle range for detecting the second angular velocity ωb in this way, the crank angle range for detecting the first angular velocity ωa will not overlap the region of reduction of the angular velocity caused by the sixth order of torsional vibration and further will not overlap the crank angle region unsuitable as the region of detection of the first angular velocity, so the second angular velocity ωb of course and also the first angular velocity ωa can be accurately detected. Note that, even in cases other than when the sixth order of torsional vibration occurs, there are cases where it is necessary to set the magnitude of the crank angle range for detecting the first angular velocity ωa and the magnitude of the crank angle range for detecting the second angular velocity ωb to different magnitudes so as to accurately detect the first angular velocity ωa and the second angular velocity ωb. For example, when the timing for detection of the second angular velocity ωb and the timing where the crank angle sensor 14 faces the non-tooth portion of the rotor 13 overlap, to accurately detect the second angular velocity ωb, the crank angle range for detecting the second angular velocity ωb is made a crank angle larger than the crank angle range for detecting the first angular velocity ωa. In the fourth embodiment, the rotor 13 has an outer tooth formed every 10° crank angle on its outer periphery and has some of the outer teeth removed for detection of the top dead center of compression of the No. 1 cylinder for example. The crank angle sensor 14 produces an output pulse every time the output shaft 12 rotates by 10° crank angle except at the portion where the outer teeth have been removed, that is, this non-tooth portion. The output pulse is input to the input port 26. Next, the method for calculating the drive force generated by each cylinder and the torque generated by each cylinder will be explained using a specific example. First, the method of calculating the drive force generated by a cylinder and the torque generated by a cylinder will be explained with reference to Fig. 58 showing the steady state operation. As explained above, the crank angle sensor 14 generates an output pulse each time the crankshaft rotates by 10° crank angle. Further, the crank angle sensor 14 is disposed so as to generate an output pulse at the top dead center of the compression stroke (hereinafter referred to as TDC) of the cylinders #1, #2, #3, and #4. Therefore, the crank angle sensor 14 generates an output pulse with each 10° crank angle giving the TDC 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. The solid line of Fig. 58 shows the elapsed time when converting the time required for the crankshaft to rotate in each crank angle range divided by the broken lines to the time required for the crankshaft to rotate 30° crank angle. That is, in Fig. 58; Ta(i) shows the elapsed time T30 of the 30° crank angle from BTDC 20° to ATDC 10° of the No. 1 cylinder. As opposed to this, Tb(i) shows the time for conversion of the elapsed time T50 of the 50° crank angle from ATDC 50° to ATDC 100° of the No. 1 cylinder to the elapsed time of 30° crank angle, that is, three-fifths of the elapsed time T50 of 50° crank angle. Therefore, for example, Ta(1) shows the elapsed time from BTDC 20° to ATDC 10° of the No. 1 cylinder and Tb(1) shows three-fifths of the elapsed time from ATDC 50° to ATDC 100° of the No. 1 cylinder. On the other hand, if each crank angle degree divided by the broken lines is divided by the elapsed time, the result of the division expresses the angular velocity ω. In the fourth embodiment, 30° crank angle/Ta(i) is called the first angular velocity ωa of the No. 1 cylinder, while 30° crank angle/Tb(i) is called the second angular velocity ωb of the No. 1 cylinder. Note that the change in the elapsed time shown in Fig. 58 differs somewhat by 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 determined so that in accordance with the engine (ωb-ωa) best expresses the drive force generated by the engine or (ωb 2 -ωa 2 ) best expresses the torque generated by the engine. Therefore, depending on the engine, the angular range for detecting the first angular velocity ωa may be from before top dead center of the compression stroke BTDC 25° to ATDC 5° and the crank angle range for detecting the second angular velocity ωb may be ATDC 45° to ATDC 95°. Fig. 59 shows in an enlarged manner the portion where the elapsed time Ta(i) successively calculated for each cylinder when the engine drive system experiences torsional vibration decreases. As shown in Fig. 59, the elapsed time Ta(i) decreases between Ta(1) and Ta(3) by exactly the time ho. The decrease in this time ho may be considered to be due to the 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 the time Ta(1) and Ta(3) may be considered 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 expressed by the difference between the broken line connecting Ta(1) and Ta(3) and the horizontal line passing through Ta(1). Therefore, the torsional vibration causes the elapsed time to decrease by exactly h between Ta(1) and Tb(1). Therefore, in the fourth embodiment as well, h is added or subtracted to find the elapsed time Tb'(1) decreased by the combustion pressure. Fig. 60 shows the case where the space between the outer tooth of the rotor 13 showing BTDC 20° of the No. 1 cylinder #1 and the outer tooth of the rotor 13 showing ATDC 10° 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) ends 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 of the elapsed time due to the torsional vibration h' becomes smaller than the correct amount of decrease h, therefore the value of Tb'(1) expressing only the elapsed time decreased by the combustion pressure also becomes smaller than the correct value. Therefore, in the fourth embodiment as well, at the time of a deceleration operation when the engine drive system does not experience torsional vibration, when the supply of fuel has been stopped, the ratio KTa(i) (= Ta(i)m/Ta(i)) of the mean value Ta(i)m of the elapsed times Ta(i) of all of the cylinders and the mean value Tb(i)m of the elapsed time Ta(i) of each cylinder and the ratio KTb(i) (= Tb(i) m/Tb(i)) of the elapsed times Tb(i) of all of the cylinders and the elapsed time Tb(i) of each cylinder are found, while when the fuel is being supplied, the actually detected elapsed time Ta(i) for each cylinder is multiplied by the ratio KTa(i) to find the final elapsed time Ta(i) for each cylinder, while the actually detected elapsed time Tb(i) for each cylinder is multiplied by the ratio KTb(i) to find the final elapsed time Tb(i) for each cylinder. On the other hand, as already explained with reference to Fig. 10, the Ta(i) for each cylinder fluctuates when the vehicle is driving over a bumpy road. In this case, as explained above, Therefore, for example, as explained above, if the value of the amount of decrease h with respect to Tb(1) of the No. 1 cylinder #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 by the cylinder can no longer be accurately detected. When the amplitude AMP becomes large, the same occurs at the cylinder giving the smallest Ta(i). Further, at the cylinder where Ta(i) changes sharply from the Ta(i) of the cylinder at which the combustion was performed one time before, the value of h deviates from the actual value, therefore the drive force and the torque generated by the cylinder can no longer be accurately detected. Therefore, in the fourth embodiment as well, when the amplitude AMP is large, the drive force or the torque for the cylinder at which Ta(i) becomes maximum or minimum is not found and further the drive force or the torque for the cylinder where Ta(i) changed sharply with respect to the Ta(i) of the cylinder where combustion was performed one time before is made not to be found. Next, the routine for finding the torque generate at each cylinder will be explained referring to Fig. 61 to Fig. 66. Fig. 61 shows the interruption routine performed at BTDC 20°, ATDC 10°, ATDC 50°, and ATDC 100°. Referring to Fig. 61, first the routine (step 3100) for calculating the elapsed times Ta(i) and Tb(i) is proceeded to. This routine is shown in Fig.62. Next, the routine (step 3200) for checking whether calculation of the torque is permitted or not is proceeded to. This routine is shown in Fig. 63 to Fig. 65. Next, the routine for calculating the torque (step 3300) is proceeded to. This routine is shown in Fig. 66. Next, the routine for calculating the ratios KTa(i) and KTb(i) (step 3400) is proceeded to. This routine is shown in the previously explained Fig.18 and Fig. 19. Next, the processing routine (step 3500) of the counter CDLNIX used for calculation of the torque fluctuation value is proceeded to. This routine is shown in the previously explained Fig. 20. Referring to Fig. 62 showing the routine for calculation of the elapsed times Ta(i) and Tb(i), first, at step 3101, the time is made the TIME0. The electronic control unit 20 is provided with a free run counter for counting the time. The time is calculated from the count value of this free run counter. Next, at step 3102, the current time is fetched. Therefore, the TIME0 of step 3101 comes to express the time when the previous interruption was performed, that is, BTDC 20°, ATDC 10°, ATDC 50°, or ATDC 100°. Next, at step 3103, whether the No. 1 cylinder is currently at ATDC 10° or not is judged .When the No. 1 cylinder is not currently at ATDC 10°, step 3106 is jumped to, where whether the No. 1 cylinder is currently at ATDC 100° or not is judged .When the No. 1 cylinder is not currently at ATDC 100°, the routine for calculation of the elapsed time sTa(i) and Tb(i) is ended. As opposed to this, when it is judged at step 3103 that the No. 1 cylinder is currently at ATDC 10°, step 3104 is proceeded to, where the final elapsed time Ta(i) from BTDC 20° to ATDC 10° of the No. 1 cylinder is calculated from the following equation: Ta(i) = KTa(i)·(TIME-TIME0) Here, TIME0 shows the time at BTDC 20°. That is, for example, if the No. 1 cylinder #1 is currently at ATDC 10°, the final elapsed time Ta(1) from BTDC 20° to ATDC 10° of the No. 1 cylinder #1 is calculated from KTa(1)·(TIME-TIME0). Here, (TIME-TIME0) expresses the elapsed time Ta(1) of 30° crank angle actually measured by the crank angle sensor 14 and KTa(1) is a ratio for correction of the error due to the space between the outer teeth of the rotor 13 therefore the final elapsed time Ta(1) obtained by multiplying (TIME-TIME0) with KTa(1) accurately expresses the elapsed time when the crankshaft rotates 30° crank angle. Next, at step 3105, 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, the ignition sequence is 1-3-4-2, so if the No. 1 cylinder #1 currently is at ATDC 10°, the flag XCAL(2) of the No. 2 cylinder #2 where combustion was performed one time before showing that the generated torque should be calculated is set. In the same way, if the final elapsed time Ta(3) is calculated as shown in Fig. 21, the flag XCAL(1) is set, if the final elapsed time Ta(4) is calculated, the flag XCAL(3) is set, and if the final elapsed time Ta(2) is calculated, the flag XCAL(4) is set. On the other hand, when it is judged at step 3106 that the No. 1 cylinder is currently at ATDC 100°, step 3107 is proceeded to, where the final elapsed time Tb(i) obtained by converting the elapsed time of 50° crank angle from the ATDC 50° to ATDC 100° of the No. 1 cylinder to the elapsed time of 30° crank angle is calculated based on the following equation: Tb(i) = 3/5.KTb(i)·(TIME-TIME0) Here, TIME0 expresses the time at ATDC 50°. That is, for example, when the No. 1 cylinder is currently at ATDC 100°, the final elapsed time Tb(1) of the No. 1 cylinder #1 is calculated from 3/5·KTb(1)·(TIME-TIMEO). Here, (TIME-TIME0) shows the elapsed time of the 50° crank angle actually measured by the crank angle sensor 14, and KTb(1) is the ratio for correction of the error due to the spaces between the outer teeth of the rotor 13. Therefore, the final elapsed time Tb(1) obtained by multiplying the (TIME-TIME0) by 3/5 and KTb(1) accurately expresses the elapsed time while rotating by 30° crank angle. Next, the routine for checking permission for calculation of the torque shown in Fig. 63 to Fig. 65 will be explained. This routine is provided for prohibiting the calculation of the torque for a specific cylinder when the amplitude AMP of the fluctuation of Ta(i) (Fig. 10) becomes larger due to the vehicle traveling over a bumpy road. Referring to Fig. 63, first, at step 3201, whether one of the cylinders is currently at ATDC 10° or not is judged. When none of the cylinders is currently at ATDC 10°, the processing cycle is ended, while when one of the cylinders is currently at ATDC 10°, step 3202 is proceeded to. The routine from step 3202 to step 3223 is the same as the routine from step 202 to step 223 shown in Fig. 15, therefore the explanation of the routine from step 3202 to step 3223 will be omitted. Next, the torque calculation routine shown in Fig. 66 will be explained. Referring to Fig. 66, first, at step 3301, whether 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 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 3302 is proceeded to, where the flag XCAL(i-1) is reset, then step 3303 is proceeded to. At step 3303, 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 3310 is proceeded to, where the prohibition flag XNOCAL is reset. As opposed to this, when the prohibition flag is reset, step 3304 is proceeded to. That is, step 3304 is proceeded to only when the flag XCAL is set and the prohibition flag XNOCAL is reset. At step 3304, the amount of fluctuation h of the elapsed time (Fig. 59) based on the torsional vibration of the engine drive system is calculated based on the following equation: h = {Ta(i-1)-Ta(i)}·80/180 That is, as will be understood from Fig. 59, the amount of fluctuation h of the elapsed time becomes four-ninths of ho (= Ta(i-1)-Ta(i)). Next, at step 305, Tb'(i-1) expressing just 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)}·80/180 and Tb'(1) = Tb(1)+h. Further, when finding Tb'(3) for the No. 3 cylinder #3, h = {Ta(3)-Ta(4)}·80/180 and Tb'(3) = Tb(3)+h. Next, at step 3306, 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 fluctuation in the spaces between 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 the 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 3306, the generated torque DN(i-1) is calculated, then step 3307 is proceeded to, where the amount of fluctuation of the torque DLN(i-1) due to 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 3308, whether the amount of fluctuation of the torque DLN(i-1) is positive or not is judged. When DLN(i-1) ≥ 0, step 3310 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 3309 is proceeded to, where the DLN(i-1) is made 0, then step 3310 is proceeded to. Note that, the torque of each cylinder repeatedly rises and falls. In this case, to find the amount of fluctuation of the torque, it is sufficient to cumulatively add either of the amount of increase of the torque or the amount of decrease of the torque. In the routine shown in Fig. 66, only the amount of decrease of the torque is cumulatively added, therefore, as explained above, when DLN(i-1) < 0, DLN(i-1) is made 0. Fig. 67 shows the repeatedly executed main routine. In this main routine, first, the routine (step 3600) for calculation of the torque fluctuation value is executed. This routine is shown in the previously explained Fig. 25 and Fig. 26. Next, the routine (step 3700) for calculation of the lean limit feedback correction coefficient FLLFB is executed. This routine is shown in the previously explained Fig. 27. Next, when the predetermined crank angle is reached, the injection time calculation routine (step 3800) is executed. This routine is shown in the previously explained Fig. 28. Next, the other routines (step 3900) are executed.

Claims: A method of detecting a parameter representing the drive output from a cylinder in an internal combustion 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 change of the angular velocity between cylinders from the difference of the first angular velocity of a cylinder previously performing combustion and the first angular velocity of a cylinder next performing combustion, correcting the second angular velocity of the cylinder previously performing the combustion in the direction of decrease when the amount of change of the angular velocity between cylinders has increased, correcting the second angular velocity of the cylinder previously performing the combustion in the direction of increase when the amount of change of the angular velocity between cylinders has decreased, and finding said parameter representing the drive output generated from a corresponding cylinder based on the first angular velocity and the corrected second angular velocity. A method of detection as set forth in claim 1, wherein a predetermined ratio of the amount of change of the angular velocity between cylinders is made an amount of correction of said second angular velocity in a lower direction and higher direction. A method of detection as set forth in claim 2, wherein said predetermined ratio is a ratio of the crank angles of the first crank angle range and the second crank angle range with respect to the crank angle between two consecutive expansion strokes. A method of detection as set forth in claim 1, further having the steps of finding for each cylinder a first ratio between a mean value of the first angular velocities of all of the cylinders and the first angular velocity of each cylinder when the supply of fuel has stopped during engine operation, finding for each cylinder a second ratio between a mean value of the second angular velocities of all of the cylinders and the second angular velocity of each cylinder when the supply of fuel has stopped during engine operation, correcting the first angular velocity of each cylinder by the corresponding first ratio and correcting the second angular velocity of each cylinder by the corresponding second ratio when fuel is being supplied in the engine operation. A method of detection as set forth in claim 1, wherein the step of finding said parameter representing the drive output comprises finding a difference of squares between a square of said first angular velocity and a square of said corrected second angular velocity, and wherein said parameter represents the generated torque expressed by said difference of squares. A method of detection as set forth in claim 5, further having the step of calculating the amount of torque fluctuation of each cylinder from the fluctuation of the torque generated at each cylinder. A method of detection as set forth in claim 6, wherein the amount of torque fluctuation of each cylinder is expressed by the difference between the torque generated when the previous combustion was performed and the torque generated when the next combustion is performed. A method of detection as set forth in claim 6, further having the steps of finding the cumulative value of the amount of torque fluctuation by cumulatively adding successively calculated amounts of torque fluctuation for each cylinder exactly a predetermined number of times, finding a representative value of the amount of torque fluctuation for each cylinder based on said cumulative value of the amount of torque fluctuation and finding the mean amount of torque fluctuation for all cylinders, which is the mean value of the representative values of the cylinders. A method of detection as set forth in claim 8, wherein when a difference occurs between a current representative value and the calculated cumulative value of the amount of torque fluctuation, the representative value is updated so as to approach the calculated cumulative value of the amount of torque fluctuation. A method of detection as set forth in claim 6, wherein the angular velocity is detected based on an output signal of a crank angle sensor disposed to face the teeth of a rotor connected to the crankshaft and having non-tooth portions, the generated torque is calculated for cylinders other than cylinders where the crank angle sensor faces the non-tooth portion when detecting the angular velocity, and the amount of torque fluctuation is calculated based on the calculated generated torque. A method of detection as set forth in claim 6, wherein an amplitude of the fluctuation of the successively found first angular velocities is found and, when the amplitude becomes larger than a predetermined amplitude, the fluctuations of the generated torques of the cylinders where the first angular velocities were largest and smallest are prohibited from being used for calculation of the amount of torque fluctuation. A method of detection as set forth in claim 6, wherein when the difference between the first angular velocity of a cylinder where combustion had previously been performed and the first angular velocity of a cylinder where combustion is next performed becomes larger than a difference between the first angular velocity of the cylinder where combustion is next performed and the first angular velocity of a cylinder where combustion is performed after that, the use of the fluctuation of the generated torque of the cylinder where the combustion had been performed second is prohibited from being used for calculation of the amount of torque fluctuation. A method of detection as set forth in claim 1, wherein when an amplitude of a torsional vibration of the crankshaft accompanying an increase in the engine speed increases, calculation of the parameter representing the drive output is prohibited for the cylinder at the crankshaft position where the amplitude of the torsional vibration becomes larger. A method of detection as set forth in claim 13, wherein calculation of the parameter related to the drive output is prohibited for the cylinder at the crankshaft position where the amplitude of the torsional vibration becomes larger along with an increase of the engine speed. A method of detection as set forth in claim 14, where calculation of the parameter related to the drive output is prohibited in the order from the cylinder positioned at the opposite side to a flywheel attached to the crankshaft. A method of detection as set forth in claim 1, further having the steps of detecting a difference of angular velocity obtained by subtracting from the first angular velocity the second angular velocity when the supply of fuel is stopped and correcting the second angular velocity by adding said difference of angular velocity to the second angular velocity when the fuel is being supplied. A method of detection as set forth in claim 16, wherein the difference of angular velocity is calculated for every predetermined engine speed region when the supply of fuel is stopped and the second angular velocity is corrected based on the difference of angular velocity detected for the engine speed region corresponding to the engine speed when the fuel is supplied at that time. A method of detection as set forth in claim 16, further having the step of calculating a mean value of the difference of angular velocity when the supply of fuel is stopped and wherein when the fuel is being supplied, the difference of angular speed to be added to the second angular velocity is corrected so as to approach the mean value of the difference of angular velocity. A method of detection as set forth in claim 1, wherein said first crank angle range is set to a crank angle range of a size different from the second crank angle range. A method of detection as set forth in claim 19, wherein said first crank angle range is narrower than said second crank angle range. A method of detection as set forth in claim 19, wherein said first crank angle range extends from a crank angle before top dead centre of the compression stroke to a crank angle after top dead centre of the compression stroke.

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