I am creating a control system which has a temperature control in it. Most of my experience has been in controlling servo motors in very fast (2KHz+) hybrid torque / position loops, so the relatively slow TC in the temperature system is making me question the best approach.
The oil loop consists of a pump (which can add a disturbace energy), an input manifold (heat loss disturbance), the load actuator (more loss), a return manifold (loss), an electric heater, a heat exchanger, and back to the pump reservoir.
I have thermocouples at the input manifold, the return manifold, the heater core, and the heater output. The actual state variable I wish to control is the temperature going into the actuator, which here is best obtained by the thermocouple on the input manifold immediately before the actuator.
However, my actual point of control is a couple feet away at the heater, which is a lag and a loss or two away from the primary point we want to keep under control.
I'm worried that if I close a PID loop on the input thermocouple, I'll be dancing the heater around all day trying to accomodate for the inherent lags and disturbances in the system.
From what little I know about Cascade Control, this seems a likely candidate. However, from what examples I've seen, there would be an outer PID loop based on my overall desired setpoint and the input thermocouple.
The inner loop is the heater loop which would either close on the heater core temperature or the heater outlet temperature (or perhaps a weighted average of these).
What's kinda throwing me is that if the outer loop measured variable reaches the setpoint, the PID output will go to zero (in a primarily P setup) or would stop integrating (in a primarily I setup). Nowhere in any examples (and I apologize for using the web as a reference library instead of going out and getting the actual books I need) does anyone discuss that the outer loop should be primarily integral in nature (unless I just don't get it).
In other words, if I set up a PID loop for the outer loop, is the goal to "slowly" tweek the inner (heater) loop "a little higher" or "a little lower" and try to stop integrating on a setpoint command to the inner loop when the outer loop is satisfied. I guess I'm envisioning the outer loop having its hand on the thermostat in the living room. He's asking for more or less heat but the inner loop is the faster control who tries to accommodate that request.
So in the presence of a common disturbance offset (let's say a 10 degree loss through a manifold), the outer loop would end up setting on a request for 210 degrees out of the inner loop to satisfy an outer loop 200 degree setpoint. Or am I lost here?
[note... I'm coding this well in advance of the hardware being constructed, so I have no actual measurements on flow times, lags, etc. I have "good guesses", but the task right now is just to get a framework of code in place prior to HW integration]Thanks in advance to anyone who can nudge me towards the right direction!
Regards,
Dan