Another PID thread

JonAW

Member
Join Date
Sep 2013
Location
Somewhere
Posts
121
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
 
Last edited:
Are you trending your PV, SP and OP? Post screen shots of the trend it will be much easier to analyze. Include SP changes so we can see the response of the system.
 
Yes, I have them averaged as the water temperature is not always perfectly even throughout the tank. As the product is moving through the tank the water stratifies more and the temperature evens out. By taking an average, when the product enters the tank and mixes the water up there is not as great a difference as there would be in using just one of the probes as the control.
 
I'm not too concerned about the shock load as this only happens a few times a day and will not be as great in the future as the line will be upgraded to 60oC water. The product hitting the water for the first time is not too great a shock load either and the system can recover reasonably well from this.

When product is moving through the tank the load is constant but I can't get my PID control to stabalise at a constant temperature. My issue is the temperature is constantly fluctuating by +-0.3oC due to fluctuation on the output.

I've looked more in depth into the RSlogix 5k PID controller. There may be a few tick boxes which I need to check to help the control a bit better. I'm more used to standard PID controllers so I'll change the control to Dependant and also change the 'Derivative of' to Error. Hopefully this will help me get closer to a stable temperature.
 
if i not mistake ,your accuracy +- 0.3 C form SP is very critical,

for the PID settings i think you can handle it,

but i think you need to look forward the control valve type/precision and trimmer valve
 
Well Duh

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.
Yes PIDs are reactive. Use feed forwards and apply to the bias if you want to be predictive. Using the derivative gain should help too. You probably don't have the derivative gain set high enough.

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.
There is also dead time. The heat you apply doesn't reach the temperature sensors instantly. stirring may help.

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.
The controller gains and time constants will change as the water volume changes.

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
Show us a trend.

This is not an easy application because the heat capacity of the water changes with volume. This means that when the tank volume is low it will be easy to change the temperature rapidly but when the tank volume is high then more heat and time will be required to change the temperature. Therefore the gains and time constants will need to be continually changing.

Ideally I would try to find a competent mechanical engineer that is good at thermodynamics try to generate an approximate model of your system. However, competent mechanical engineers are hard to find.

An alternative is to tune the tank at different volumes and interpolated for volumes in between.

((Heat in - Heat out)/mass of water)*constant=temperature rate.
Something divided by the rate of change of something is the "time constant" but in this case the "time constant" is not constant.

I would consider this to be a worthy challenge
 
Hi Guys,

Just wanted to thank you for your help in this. I finished commissioning this yesterday and have it working +-0.1oC which is more than enough.

This is how I did it.

I manually take control of the steam up to 0.3oC from the setpoint by operating it at 100%. I then forward a value into the Bias of the loop which I know will continue to raise the temp slowly. I set tight min and max output values so the valve only operates within a small band instead of 0-100%, just enough to allow the temperature to rise or fall slowly. The loop is then set to slowly react to the changing load conditions and slight water level deviations to maintain the setpoint. I also put in a sensor to detect when the system is on load and off load so I forward different min and max output and also a new value to the bias so there is no mad overshoots.

When there is lukewarm water added I take control of the valve and open it at 100% before water has even began to flow in the pipe, this sets the system as best as possible and minimises the time the temperature is below the setpoint.

I changed the operation of the PID to operate on the error and changed the controller gain as dependant.

It actually turns out that exact temperature control is not required the deviation can be as much as +-3oC.

Now onto the next project!
 
Last edited:

Similar Topics

Hi all, I have pretty much read all the PID threads on this forum which helped me a lot. I am working with the following system and trying to get...
Replies
21
Views
6,244
Hi all, I posted recently about a HVAC-style process control application I'm working on, and have a related question that probably warrants its...
Replies
12
Views
3,947
This is my first post here...so HI I own a small injection molding operation (thermosets) and I've had good success replacing the relay logic in...
Replies
9
Views
2,396
Just curious, trying to make set up of 20 PID tags identical. What if on first scan I COPY MyPIDtag01 to MyPIDtag02 Length 1 COPY MyPIDtag01 to...
Replies
4
Views
2,925
Hi, I've been searching the Internet for days now and there's so much confusing information about PID terms. I'm not new to the general concept...
Replies
11
Views
2,619
Back
Top Bottom