Hi Guys,
I have been trying to tune a PID for a tank heating system in RSLogix5000.
The system is a reasonably large volume of water at about 15m3. The tank is filled with luke warm water at 35oC and then boosted to 63oC via direct injection 6bar steam line distributed at 3 different points in the tank. I boost to 62oC manually before handing control to the PID. There are 3 PT100 temperature probes directly into the processor which I average and use as the PV. The CV is a 0-100% modulating valve controlling the steam input. There are two different loads that can be applied to the system, one is a water top-up when the tank is low which is a fairly major shock to the system, the other is when the product enters the tank. When product is applied it is a steady and consistent stream with occasional stoppages or spaces every couple of hours.
To compensate for the shock load of the water top up I apply the steam at 100% for the duration of the top up valve switching back to PID a couple of seconds after the valve closes.
My issue is I can't seem to be able to get stable and responsive tuning parameters. The PID seems to be wholly reactive rather than predictive which means the steam valve will only begin to open when the temperature drops below the setpoint by which time it is too late and the temperature will continue to fall a further 0.3oC until the power of the steam reverses the direction. The PID will continue to open the valve further until the setpoint is reached, then it will begin to gradually tail off the valve which (you guessed it) is too late and the temp will continue to rise by 0.3oC past the setpoint. This occurs continuously and will not stabalise. I've tried low kP and high kI followed by high kP and low kI and what seem like anything in between. Both of which give the same results as described above but with different operating speeds of the valve. Adding kD doesn't appear to do anything at all. Trying a low kP and low kI means the system is too slow to react.
I have capped the CV at 60% to try to match the heating speed with the natural cooling speed with product entering the tank which has helped the overshoot somewhat but is still not ideal. With the product moving through the tank it takes approximately 30sec to raise the temperature 0.1oC at 60% steam. Off load 8% steam will hold the tank temperature.
The settings of my PID are as follows:
Loop Update = 1 sec (in a 1 sec periodic task)
PID Equation = Independant
Control action = SP-PV
Derivative of = PV
No Derivative Smoothing = 0
No Bias Calculation = 0
No Zero Crossing For Deadband = 0
PV Tracking = 0
Cascade Loop = 0
The over and under shoot of approx 0.3oC is acceptable to the process but I know the PID should be able to keep this stable at 63oC.
Any help on this is much appreciated.
thanks
Jonny
I have been trying to tune a PID for a tank heating system in RSLogix5000.
The system is a reasonably large volume of water at about 15m3. The tank is filled with luke warm water at 35oC and then boosted to 63oC via direct injection 6bar steam line distributed at 3 different points in the tank. I boost to 62oC manually before handing control to the PID. There are 3 PT100 temperature probes directly into the processor which I average and use as the PV. The CV is a 0-100% modulating valve controlling the steam input. There are two different loads that can be applied to the system, one is a water top-up when the tank is low which is a fairly major shock to the system, the other is when the product enters the tank. When product is applied it is a steady and consistent stream with occasional stoppages or spaces every couple of hours.
To compensate for the shock load of the water top up I apply the steam at 100% for the duration of the top up valve switching back to PID a couple of seconds after the valve closes.
My issue is I can't seem to be able to get stable and responsive tuning parameters. The PID seems to be wholly reactive rather than predictive which means the steam valve will only begin to open when the temperature drops below the setpoint by which time it is too late and the temperature will continue to fall a further 0.3oC until the power of the steam reverses the direction. The PID will continue to open the valve further until the setpoint is reached, then it will begin to gradually tail off the valve which (you guessed it) is too late and the temp will continue to rise by 0.3oC past the setpoint. This occurs continuously and will not stabalise. I've tried low kP and high kI followed by high kP and low kI and what seem like anything in between. Both of which give the same results as described above but with different operating speeds of the valve. Adding kD doesn't appear to do anything at all. Trying a low kP and low kI means the system is too slow to react.
I have capped the CV at 60% to try to match the heating speed with the natural cooling speed with product entering the tank which has helped the overshoot somewhat but is still not ideal. With the product moving through the tank it takes approximately 30sec to raise the temperature 0.1oC at 60% steam. Off load 8% steam will hold the tank temperature.
The settings of my PID are as follows:
Loop Update = 1 sec (in a 1 sec periodic task)
PID Equation = Independant
Control action = SP-PV
Derivative of = PV
No Derivative Smoothing = 0
No Bias Calculation = 0
No Zero Crossing For Deadband = 0
PV Tracking = 0
Cascade Loop = 0
The over and under shoot of approx 0.3oC is acceptable to the process but I know the PID should be able to keep this stable at 63oC.
Any help on this is much appreciated.
thanks
Jonny
Last edited: