Been having a very productive discussion off line with another long-suffering gen 2 FJR + PCV + AT victim, Mr. Canoehead. What we were trying to figure out, among many things, was how fast the AT works to update AFR and trims table values, and whether it is targeting AFR directly in real time, or it has to have a trim table value and then adjusts fuel off of that (and not the O2 sensor directly). So I volunteered to do some simple tests, which were made obvious by our discussion.
Short answer is, it doesn't matter as both are done pretty fast. What I did was set up a zero fuel map (0's all cells), with 13.0 AFR table in all cells, +/-25% trim adjust limits, zero'd out all trims. Warmed up the bike and ran it on the center stand at idle and 2k rpms, watching how fast the AFR changed, inspecting trim tables and doing various other things.
Here's two emails that describe exactly what I did and what was learned:
======================================================================================
Subject: some results
OK did some quick tests, very interesting results.
Looks like the following happens. AT adjusts trims very quickly AND saves them to the trim table. Here is what I did.
1. Set up a zero fuel map (for later), set AFR table to 13.0 all cells.
2. Warmed bike up with a 5 mile or so ride, old map from my weekend ride. Came home, shut it off. Loaded the new zero/13.0 map. Set warm up time to 60 seconds (down from 300) for convenience.
3. Test 1: started bike, at idle (900 or so RPMs) AFR read mid low 12's. After 60 seconds AFR immediately began climbing to 13.0 and stayed there, randomly oscillating around 13.0 approx 1/10th a point or less. I let it idle there for approx 1 minute. Then I revved up light throttle to apprx 2k RPM and held it. Same behavior except now it started higher AFR (14-ish) and dropped immediately (couple seconds) to 13.0 and oscillated there. Inspecting trim table trims had been updated either + or - to hit target AFR.
4. Test 2: Here I thought maybe in previous test the AFR could be targeting 13.0 immediately but the trims taking longer to adapt. So I after clearing trim table I repeated the test except this time instead of letting it sit at idle or 2k rpm for a minute, the moment I saw it hit 13.0 on the display I revved to 2k, then the moment I saw it hit 13.0 there I turned the bike off. Inspected the trims, they'd been updated to same or similar values as test 1.
I will repeat these tests and do some more testing. But it seems that both the AFR's and the trim tables are getting updated very quickly, so it may be moot whether it is using the trim table to adjust fuel, or it is using the target AFR table and only updating trim table.
Next I will run it as is (starting with a cleared trim table) let it adapt to 13.0, then change the target AFR table to 13.5 and send that map, see how long it takes to show 13.5 on the display. I'd also like to see what happens if I restrict trim to say 10% but make the target AFR outside what it can get to.
More later.
=============
This is starting to get interesting. I repeated the first two tests, same results.
Then I did the following.
1. Cleared the trim table, but then restricted trim limits from +/-25 to +/-5. Sent map, still at all AFR targets at 13.0, started up. After 1 minute again the trims began to adjust quickly in the direction of 13.0, but could not get there. The trim limits were preventing it. Let it run for a minute at idle and a minute at 2k rpm. Neither could get to 13.0, at idel from 12 it could barely get to 12.5, at 2k down from 14 barely hit 13.5/13.6. So we can discard what one DJ guy said, trim limit does cap AFR adjustments.
2. Then I set trim limits back to 25, started up, 1 minute, let it adapt to 13.0 AFR at idle and 2k. With the bike still running pulled map and inspected trim tables, same as prior iterations. Idle leaned out 2k richened up to hit 13.0. Then without turning anything off, I edited AFR target table to 12.5 AFR. Sent map to the PCV while idling, immediately, faster than it adapted to 13.0 (which was already fast like 2 seconds or less), it dropped right down to 12.5. Then revving and holding at 2k rpm, same thing. Dropped right down to 12.5 maybe a tiny bit slower than at idle, but maybe a bit faster than initially moving to 13.0 from nothing. Then I inspected the trim tables and they had been updated richer or leaner than 13.0 to reflect targeting 12.5 AFR in rpm/throttle cells where I'd been running it.
Also one thing I noticed on all these simple tests. It is hard to hit exactly a single %/rpm cell. One or two neighboring cells were also updated, but less than the cell closest to where the bike was running. So some kind of weighted updating is going on, if you are at say 900 rpm at idle, it will update the 1k cell more than the 750 rpm one. Both it will update both. Similar with # throttle.
So conclusions.
1. I think it is targeting AFR subject to trim limits and updating trim table and AFR about as fast as it can. I am not sure it matters if it is waiting for trim table to be updated, or it targets AFR in real time and updating trim table but not using it. Whatever it is it is fast, or at least far faster than I had feared. It may not be fast enough however to do true real time closed loop AFR esp if the actual AFR is far from the target. Which is why it would be good to get a base map somewhere in the middle of where typical riding happens, and leave the AT on with maybe restricted trim limits, to be able to have best chance of hitting target under different conditions.
2. It may not be updating fast enough during a pull or rapid throttle inputs. It would be hard to do this in a garage but could certainly be done out on the road. Do say 2 somewhat identical pulls, then do 5, then 10. Inspect tables see if anything was updated. I suppose I could blip the throttle out to 5k rpms a few times in a garage to see if anything changes, or if it can hit the target while revving. We'd need some data acq to do this right.
Anyway good stuff. I am relieved to find it adapts as fast as it does, it seems unlikely that the AT itself is falling into a "parameter hole" as I had feared. However it may be the case that a sudden big throttle input is too fast for it and there's a stumble. However it should adapt back out towards target AFR after far less than a second, so something else was going on when my bike would run so poorly, and progressively worse over time.
What we are not able to see here is what the underlying open loop ECU is doing, the dithering or whatever look up table it is employing, and how the AT reacts to that. The AT should be fast enough to offset all that given what these tests show though I can still see how the 3 systems combined might get into conflict.