Robb B
Lifetime Supporting Member
Hi everyone, yet another PID problem. I'm hoping I understand enough of the process I'm controlling that my request for help is reasonable. If a different approach is needed or more information, we can do that. Testing intervals are few and far between, typically days, which makes data collection tricky. I'm using https://literature.rockwellautomation.com/idc/groups/literature/documents/rm/1747-rm001_-en-p.pdf as a reference, if it helps. Chapter 9.
First, what am I controlling? Air pressure in a treating vessel, in the range of 0 - 180 psi (Pressure Relief Valve setting). The vessel is large, but the volume is relatively low (I don't know exactly what volume, maybe 10 cubic meters?) due to being full of oil and wood.
Second, how is it controlled? The pressure is supplied by a constant speed pump (40 HP motor), pumping the oil from a storage tank. The Control Element is an analog output to a Current to Pressure (I/P) transducer, piloting 3 - 15 psi to a larger valve which modulates the air from the vessel to a vent line. Response time from closed to open is around 8 seconds, if more accurate timing is needed, we can do.
Third, what changed? Current PID settings worked okay when the pressure setpoint was 165 PSI. The process would run up to about 170 PSI, at which time enough error accumulated to drive the valve to a position that maintained setpoint fairly well (around 38 - 40% open), plus or minus a few PSI. The setpoint has now changed to 125 PSI, and results in a lot of overshoot, up to 35 PSI, which is undesirable to the managers.
I have read a lot of the threads here about PID, and I think a complete re-tuning of the PID terms is required, I'm not sure where to start. I have tried a few informed WAG's, and noticed that with increasing D (no D previously used) there is action on the CV before it reaches setpoint, without D, there is no action until the setpoint is reached. Negative error accumulates from the P and I, and doesn't cause any change in the CV. From this, I infer that D is an absolute value, whereas P and I both are a positive, in that negative error produces negative CV. I have also tried the PID in manual mode, entering CV at 40%, then switching to automatic. This provides a very desirable response, although it will increase the time required to get to steady state. I was thinking of implementing feed forward bias, but I can't see how to enter a value into the setup screen, it's grayed out. I tried entering a number directly into word 6 of the control block, but it zeros out. Is it a value that needs to be MOV in by logic? Is a feed forward a reasonable way to proceed if the response is adequate?
I have attached a screenshot of the PID rung. Yes, it is on a conditional rung, this is how I inherited the programming. Ideal results would be the fastest possible PV = SV with minimal overshoot (<5 PSI). Minimal overshoot is more important than time to reach steady state.
First, what am I controlling? Air pressure in a treating vessel, in the range of 0 - 180 psi (Pressure Relief Valve setting). The vessel is large, but the volume is relatively low (I don't know exactly what volume, maybe 10 cubic meters?) due to being full of oil and wood.
Second, how is it controlled? The pressure is supplied by a constant speed pump (40 HP motor), pumping the oil from a storage tank. The Control Element is an analog output to a Current to Pressure (I/P) transducer, piloting 3 - 15 psi to a larger valve which modulates the air from the vessel to a vent line. Response time from closed to open is around 8 seconds, if more accurate timing is needed, we can do.
Third, what changed? Current PID settings worked okay when the pressure setpoint was 165 PSI. The process would run up to about 170 PSI, at which time enough error accumulated to drive the valve to a position that maintained setpoint fairly well (around 38 - 40% open), plus or minus a few PSI. The setpoint has now changed to 125 PSI, and results in a lot of overshoot, up to 35 PSI, which is undesirable to the managers.
I have read a lot of the threads here about PID, and I think a complete re-tuning of the PID terms is required, I'm not sure where to start. I have tried a few informed WAG's, and noticed that with increasing D (no D previously used) there is action on the CV before it reaches setpoint, without D, there is no action until the setpoint is reached. Negative error accumulates from the P and I, and doesn't cause any change in the CV. From this, I infer that D is an absolute value, whereas P and I both are a positive, in that negative error produces negative CV. I have also tried the PID in manual mode, entering CV at 40%, then switching to automatic. This provides a very desirable response, although it will increase the time required to get to steady state. I was thinking of implementing feed forward bias, but I can't see how to enter a value into the setup screen, it's grayed out. I tried entering a number directly into word 6 of the control block, but it zeros out. Is it a value that needs to be MOV in by logic? Is a feed forward a reasonable way to proceed if the response is adequate?
I have attached a screenshot of the PID rung. Yes, it is on a conditional rung, this is how I inherited the programming. Ideal results would be the fastest possible PV = SV with minimal overshoot (<5 PSI). Minimal overshoot is more important than time to reach steady state.
Last edited: