Did some more idling of the Miata. Please see attached logs/tunes.
At various times I played with electrical loads and AC to see reactions to increase/decrease in load. The only part documented in the log is the AC switch, other loads can not be identified. Typical sequence of loads was: Headlights, high-beams add interior fan
1. Testing response to Idle valve
From this test we can determine that response to the idle valve in terms of increase in MAP takes about 20ms. It takes 600ms or so for the increase in rpm to realize about half-way
2. Testing response to CL idle timing only
Observations: Negative authority seems to mostly not have any effect on timing at all and rpm-gating of the CL timing algorithm appears to be flawed. Timing goes back to base timing seemingly randomly. Possibly when the actual rpm falls far below target rpm which can be rather counterproductive
Also: Even giving timing very wide authority has very little appreciable effect. Offset was at 5* and authority was +20* / -10*. The effect on varying loads, even small electric loads was negligible.
3. CL Idle valve response
Even trying idle valve increase during coasting conditions has zero effect on idle droop after throttle blip. IAC increases briefly, but if the I-term is set to a value that will have a reasonable response, it will also go into negative saturation after a throttle blip- even with narrow rpm gating for CL algorithm to kick in.
4. CL idle and CL timing
The addition of CL timing has no appreciable effect on idle droop
5. CL idle, CL timing and Anti-windup
The addition of anti-windup makes no appreciable difference to idle droop.
Conclusion:
The current options are insufficient for proper idle performance on this particular type vehicle. The problem is one of gating.
First of all it appears that rpm gating is applied also to rpms below target. Let's say the gate is 200rpm, target is 1000rpm. It would appear (but I may be wrong) that the CL timing algorithm only works in the window between 800rpm and 1200 rpm. This had the effect of timing going back to offset when the rpm dropped to low. This is not desirable. Therefore I increased the window to 500rpm.
HOWEVER: This is not the actual problem, since CL timing has very little appreciable effect anyway. While this should be fixed, it will not really help.
Secondly, rpm gating for IAC, seems to not be of much assistance either. If the rpm gating is set to a value that is likely to be reached, for example 200rpm, I-windup will be in full force and cause severe droop.
As stated before, the only way I can see for CL idle on this type car to work is to have an offset table that is safely above target rpm. Once rpm has stabilized at the rpm determined by the offset, or rpm drops below target, the CL IAC algorithm kicks in. Any other gating will lead to non-acceptable idle droop.