Man it's nice not to have everyone standing around looking at me like I'm an idiot when I say something valid. While better written, everything you said I've said over on MS-forums and been told I don't understand what I'm talking about.
Including the bit about using an input to determine the offset for the motor. My simple (input limited) way is using an A/D, putting all your devices on there, so each adds some voltage to the pin on the ECU, and the ECU adjusts offset based on that. It would work even for 'uncontrolled' "warm up" style idle valve control, just a straight offset. My guess is, in real life, that would totally work.
But most things on modern cars have this output - my power steering, AC, and others have outputs to tell the rpm to kick up. You could even account for alternator load by looking at battery voltage verses RPM, and at some level decide you need more oomph based on it.
thebigmacd wrote:
Yes by all means lock out the PID control when outside of the idle window. If you want to get tricky, an easy trick is to make the requested rpm equal the actual rpm as soon as the system leaves the window. What this does is "freeze" the PID in its current state, so the integral keeps its same sum until the controller is re-introduced into operation, and the output stays at the last value that was calculated before the control was released from operation. There is no point in having the PID try to control something that it cannot. The output will drift and saturate unpredictably if you leave it in the loop.
This I don't 100% agree with. Well, depending what the 'leaving the window' is. If it's RPM based that's bad, since you'll be too far out. If it's TPS based, then yes, you're golden.
I think with a good controller, the issues I've had with MS wouldn't be a problem, where most of the time I press the gas it's to save a stalling motor, so as soon as it gets back into "PID" control, it's got horrid values. Even worse when it's idling too high (from a warm up, I think), it will "idle" at 6,000 rpm since it was the too-opened start value, plus the 'dashpot adder' (could we PLEASE name our variables less cryptically, at least on the front end?).. I dunno, I haven't thought it out much yet, but I can tell you from the driver's seat it doesn't work right. Too many pockets of bad control, in whatever you might call it. Control space?
Also, your diagrams would be better if the left side were labeled "set point". Heh... An arrow going to nothing is weird. I love that controller though - only I don't know if it would work for something like idle, you don't really choose a "acceleration", you choose a valve position. It seems like that loop would generate the input to a PID for awesome control.