Heres the situation.....
I have a control loop (TIC-3148) that consists of one Glycol cooled exchanger, that cools the oil from a Vertical Stabilizer to the tank farm. We currently control this loop by PID control with the Oil Flow through the cooler Fed Forward, with a filter block, Lead lag and dead time block. I have tried manually tuning and,Insight, and cant seem to get this to stop over cooling and undercooling (as you can see in the attached trend) Is there some kind of FRSPID_OPT or STRUCTURE that i am missing? Below are some of the Process Disturbances i have noticed
1. Flow through the cooler: I have tuned the Flow to be fairly constant through the oil trains but the composition is still changing (Slugs of Oil) and the odd time the stabilizer gets a huge push of oil
2. Cold Glycol Temperature: when we have hot weather it will affect the glycol cooling capacity so the Glycol flow demand will go up in order to cool the same capacity of Oil
I also find that there is loop interaction between the Min Flow controller and the Shipping controller when production is low, and the system starts "batching". The stabilizer closes off shipping, the re-circulation valve opens until it builds level, then starts opening the shipping valve and closing the re-circulation and the Oil cooler will see a big rush of flow and almost high temps and shuts down. This is only a problem when production is low and i believe we can fix by split ranging between the two valves to minimize loop interaction
Any thoughts?
Attached below is a Graphic, Control studio and a trend for clarification
In reply to Junggyu Yu:
In reply to James Beall:
James Beall,
Thanks so much for the reply. I am assuming that the positioner is an old one since it is part of the old plant, but I will look into this when I make a field trip. I did the testing you recommended and i got some trends that i will attach below. I also took a disturbance trend for FF calculations, But FF is disabled for now
The value of the FF scale on TIC-3148 is 0-150m3/Hr
FI-1305 Scale= 0-150m3/Hr
Example1: This Trend shows how the system is currently tuned/controlling...
Example 2: The Requested valve performance indicator
Example 3: No disturbances (Oil Flow Steady) and manipulate the Temperature controller output (3%) step change
Example 4: (extra Info) How the Controllers reacted from being put into auto with current tuning values
Example 5: Flow Disturbance
Let me know if you need more information!
In reply to Shamusk:
Shamusk,
I think the glycol valve has problems. It looks like it has overshoot and an excessive delay upon a reversal in direction. However, it does appear to responding in some manner to 1% changes. You should have it checked but we can proceed!
Ok, let calculate the loop dynamics.
Up Step: Process (loop) Gain = %PV Change/%Output Change = ~(54.4 - 42.5 Deg C)*(100%/150 Deg C) / 3% out = 2.6 %PV/%OUT
Dead Time ~30 seconds
Time Constant = Tss/4 = 12 min/4 = 3 min = 180 seconds (my estimate)
Down Step: Process (loop) Gain = %PV Change/%Output Change = ~(48.8 - 54.4 Deg C)*(100%/150 Deg C) / 3% out = 1.24 %PV/%OUT
Dead Time ~60 seconds
Time Constant = Tss/4 = 16 min/4 = 4 min = 240 seconds (my estimate)
To be on the robust side of tuning, let's use the Highest Process Gain (2.6) and the slowest dynamics (Dead Time=60 seconds, TC=240 Seconds).
I'll use Lambda Tuning for First Order Self Regulating Process, Lambda = 3* Dead Time = 180 Seconds.
Reset= Time Constant = 240 seconds
Gain = Reset / [(Process Gain)(Lambda + Dead Time) = 240/[(2.60)(240+60)] = 0.31
Rate = 0 seconds
I'd be concerned about using FFWD until you get the production oil FT responding better. Also, it looks like in the test where you increase the Production Oil flow from
When you do, it looks like you should have the following FF_GAIN, based on a FF_SCALE of 0-150 M3/hr. Looks like a ~4 Deg C increase in Temperature when the Production Oil was increased 6 m3/hr.
FF_GAIN max = -(gain vs ffwd variable) /(process loop gain) = -[(4 deg C*100%/150 Deg C)/ (6 m3/hr *100%/150 m3/hr)] /(-2.6) = 0.25
I generally start with about 1/2 of max FF_GAIN and increase based on performance. So, start with ~0.15 and increase slowly as dictated by performance!
Don't forget to have the glycol valve checked! Let me know how this works out.
Note the temperature response had the typical 2nd order response so some derivative (20-50 seconds) would be helpful but let's see how this works first!
James
Shamus,
I did not calculate a derivative because I could not see the Temperature Trend on the step test trends well enough to estimate the second order time constant, which would dictate the Derivative (Rate) setting. Since I could see the second order, I mentioned that you might try adding a Rate setting of ~20-50 seconds (start at 20, move to 50 if beneficial). With some run time to confirm stability, you might also try increasing the controller gain from 0.31 towards 0.61 if it shows benefit. My initial tuning was pretty mild. The FFWD will be very beneficial if the production oil flow meter can be fixed!
Here are links to Lambda Tuning articles that I wrote in the ISA Intech magazine.
I'm not sure how the minimum flow scheme is configured currently. Perhaps the erratic flow reading is causing some problems with the current scheme.
Good luck! Let me know how it goes!
James,
Hope all is well,
Thank you for the ISA links. Here is how the loop looks with just throwing some Tuning values in. As you can see it is handling the Flow (upset) fairly well. I found it went to +/- 4Deg C (Previously +/- 15Deg c and would almost trip the unit)
The next problem to solve here is the level swings in the stabilizer, which will take some time to figure out and find a feasible solution. I've definitely learned that you have to get all your loops checked for errors before trying to tune....
My current Tuning settings that I would like to trim up and actually come up with a calculated Tune instead of numbers thrown together:
Gain: 0.31
Reset: 160
Rate: 5
PV Filter TC: 6
FF Gain: 0.4
Filtering on the FF signal: 20 lead time and 10 time constant filtering
Thanks so much,
ShamusK