8 - My Guzzi/Ducati has a misfire at 3400 rpm on steady throttle - why?
Firstly, some background on the Weber 1.6M ECU as used on 1100 Sport and 916 Biposto.
The controller is the Motorola 68HC11, a chip developed ten years ago for injection applications. Delco ECUs also use this chip. Although it's only 8 bit it has 16 bit math, and is found in many other applications as well as injection.
The timing is derived from one sensor at cam speed. On Ducatis this is the cam drive jackshaft, on Guzzis it's in the cam drive in the timing chest. The sensor collects 48 pulses plus 2 gaps (known as missing tooth triggering) totalling 50 intervals, for a resolution of 14.4 degrees crankshaft per pulse. The ECU derives both engine speed and phase from this sensor. By phase I mean the point in the firing cycle of each cylinder.
Previous Ducati and Guzzi models used a processor which took 2 triggers, one directly from the crank at 90 degree intervals, and one phase trigger which took one pulse from the cam drive, ie once per two revs, to identify engine phase.
Herein lies the first, and most common, problem with all of the late model bikes. The ignition timing is derived from a half-speed sensor, which is prone to mechanical backlash... this means that under certain engine conditions, the gear which triggers the sensor is wobbling slightly between drive and trail on it's driving gear. In other words, the advance is calculated from an interval which can vary depending on mechanical slop in the cam drive.
Two factors affect this. First, the period immediately before the relevant ignition point is used to calculate the degrees of advance as a fraction of the overall period of 14.4 degrees. So variance on the interval produces variance on the fraction. Secondly the computer also calculates RPM from the same interval. The ECU has a sophisticated acceleration / deceleration algorithm which anticipates what is happening next, based on the history of recent pulse intervals. If the pulse intervals are getting shorter, the ECU assumes acceleration and modifies the ignition timing to accomodate a predicted shorter interval in the next pulse. If the pulse intervals are lengthening then the ECU assumes deceleration, and also trims the advance.
Now, if the interval is changing from shorter to longer, PULSE BY PULSE, the ECU is buggered because it cannot tell if the engine is in acceleration or deceleration. So we have a misfire situation. This is precisely the kind of operation you mention where your engine stumbles on cruise at 3400 or 3800 rpm. As you said, the engine pulls fine on drive, but if the engine is slopping around on constant throttle, the ECU can have difficulty working it all out, and you get a stumble. In my opinion this stumble is a "wild card" ignition pulse, maybe 10 or more degrees out, as the ECU tries to figure out an engine mode. You would also observe that it only has one bad ignition pulse usually, which often completely stops the engine. We have been observing this phenomenon since 1995 when the 1.6 was introduced on Ducati 748SP models.
The funny thing is, the rpm point at which this happens is different from Guzzi to Ducati, even from 1100 Sport to Daytona RS. But there's the rub, because each engine has different bore/stroke, different resonances, and each individual engine is microscopically different to the last. That's why some bikes seem to runs flawlessly, and others of the same type stall at every traffic light.
Further, the previous ECU did not exhibit this fault to any great degree. Remember that this ECU used an RPM (and ignition) trigger which was on the crankshaft, with no possible backlash. The only time this fault shows on the older ECU is when the main bearings are failing, and the crankshaft is wobbling on the bearings. This also produces a sequence of short and long pulse, which confused the ECU in a similar fashion. This I have seen dozens of times, with disbelieving customers who refused to listen to me when I said their misfire was caused by failing main bearings! It proved true in almost every case. (or crankcase, because a broken crankcase does the same thing by allowing the crankshaft to wobble in the cases).
The solution.. there is no solution yet. Again I am treated with disbelief when I suggest that to get rid of a misfire you split your 916 engine and re-shim the jack-shaft end float, and check the play on the jackshaft bearings. "But it's the computer" they cry.
A final comment on this misfire problem. Both Ducati and Guzzi produced a model which switched from the P8 ECU to the 1.6M ECU in mid-production. The 1994 916 Strada (solo seat) used a P8 ECU, and the Biposto (95 - now) uses a 1.6M. The engine spec did not change at all when they swapped to the new ECU, but suddenly the bikes had a misfire. Some people even traded their Stradas on a Biposto, only to find they had exactly the same power, but with an added misfire. The same applies to the Guzzi Daytona Racing (P8, C cams) and the Daytona RS (1.6M, C Cams).
We are still trying to find a fix for this in software, but I confess I don't think it is really possible. The main reason it is more prevalent on Guzzis is simply the variance in manufacture compared to Ducati.