PID tuning on SLC 5/05

Note: earlier I suggested increasing both Kc (Controller gain) and Ti (minutes/repeat), as I thought the gains were independent. But the gains are dependent (cf. here), so mainly increasing Ti by itself is what is needed; Kc may be okay as is.
 
This system is slow. I'll bet Kc = 14 and Ti = T = 0 would work well enough, basically bang-bang control and allowing for a little proportional offset.
 
Last edited:
I just remembered, on a SLC, to make the ramp-up more relaxed, taking longer, the I term number must be decreased, not increased.
 
So am I reading this correctly:


1. Air pressure is your PV, Valve position is your CV.

2. Oil is pumped in, which compresses the air above the oil, increasing the pressure in the vessel.

3. The pressure is controlled by venting the air.



Is it fair to assume that there is no air supply, so if you overshoot, you simply have to wait for the oil level to increase? So really, you are just wanting to control the bleed rate at the step when you are adding oil?
And if this is the case, I'm guessing somewhere in this program you write a change to swap the control mode when pulling out oil? (ie E=SP-PV => E=PV-SP by writing a 0 or 1 to word 0, bit 2)
 
Last edited:
1. Air pressure is your PV, Valve position is your CV.

2. Oil is pumped in, which compresses the air above the oil, increasing the pressure in the vessel.

3. The pressure is controlled by venting the air.

I think

1. yes

2. yes

3. sort of, it modulates the volume of a fixed quantity (moles or mass) of air, not the quantity of air by venting. I say sort of, because, put another way, it remotely vents or adds air to the fixed volume of the pressure sensor/tap system, by removing or accumulating oil in the fixed volume between the discharge side of the pump and the upstream side of the control valve.

Pressure is controlled indirectly by

  • by modulating the control valve,
  • which modulates the flow of oil out of the total fixed volume of the system between the pump discharge
  • which modulates the net flow of oil in or out of that volume,
  • which modulates the quantity, and therefore volume, of (essentially incompressible) oil,
  • which modulates (by difference) the volume of the remaining space containing the air, Vair,
  • which modulates the pressure by the formula
    • Pressure = nair * RAvagadro * Tair / Vair
 
another issue at play here could be the valve characteristic. an equal percentage valve will behave differently than a valve with a linear characteristic.

The flow into the fixed volume between pump discharge and control valve will be fairly constant, assuming a positive displacement pump with a constant speed motor. So at steady state, assuming absorption into the wood is small, the flow through the pump would equal the flow through the valve.

A pump capable of, say, 217PSI @ 40hp can pump 20E-3 m3 s-1 max (i.e. 100% efficiency). So it would take at over four minutes to half-fill the 10m3 treating vessel and double the pressure (absolute, presumably from ambient) with the control valve closed (ignoring leaks ;)).

Since the steady-state flow is constant at any vessel pressure, but the pressure drop across the valve will change with vessel pressure, the CV% at steady state will also depend on the vessel pressure, as well as the valve characteristic as well as the associated piping back from the vessel to the control valve and from the control valve to the storage tank. All of those things could change the system gain as vessel pressure is varied.
 
The problem is about startup, which is not a strong point of the PID algorithm because of reset windup.

Rather than Feedforward, I would use Manual Mode (.AM=1) and MOV a value into the CV address (tag N9:5 in post #1 here) as the pressure ramps up from startup. Then, when the pressure gets close to setpoint, switch back to Automatic Mode (.AM=1).

Initially the CV address (N9:5) should be zero, but could be increased to some non-zero value as the pressure approaches setpoint. So say .AM=1 and N9:5=0 until PV = (SP - 20PSI), then ramp N9:5 up to 20-30% (3277-4915) between PV=(SP-20PSI) to PV=(SP-10PSI), then when PV crosses (SP-10PSI), switch to manual .AM=0.

While the PID is in manual (.AM=1), bumpless transfer will have back-calculated a non-zero Integral Sum in Control Words 17 and 18, which will eliminate the need for a large overshoot to accumulate that Integral Sum via the normal PID algorithm.

See the Manual Mode topic on this page in the SLC manual.
 
Last edited:
digital input status bits..why?

Hi all

Instead of just using the actual inputs from the digital input card in your program, why do some programmers implement a ladder designed specifically to "converting" all the physical inputs such as limit switches into status bits?
 
dP/dt = β(P)*Q(t)/V(t)
Where:
dP/dt is the rate of change of pressure
β(P) is the bulk modulus of air as a function of pressure. Yes it changes.
Q(t) is the net flow into or out of the pressurized volume. Qin(t)-Qout(t)
V(t) is the pressurized volume of air as a function of time.

Control is not simple because nothing is linear.
Ditto, the SLC500 PID integrator doesn't seem to have a decent anti windup.
How the PID is implemented makes a HUGE difference. The SLC500 PID was designed by a noob. I would roll my own and use floating point and make it a routine that can be called and used over and over again but the time for SLC500 is long part.
 
At these low pressures, ideal gas law will be good enough, linear models are almost always good enough. Assume isothermal.
Patm V0 = nRT = P (V0-Voil)
where

  • Patm,V0: absolute pressure of air, and volume of air above oil when pressure of air is at atmospheric conditions (e.g. just after loading wood into cylinder and then closing it).
  • P,Voil: absolute pressure (PV+Patm); and volume of oil pumped into fixed volume V0
so
dP/dt = (P V0 / (V0 - Voil)) dVoil/dt
Which is essentially the same as @Peter's model, and a simple model for dVoil/dt is
dVoil/dt = Foil - √(P - Patm) / [(100 Ropen / CV%) - Rpipe]
where

  • Ropen is the reciprocal of the flow coefficient of the control valve at 100% wide open.
  • Rpipe is the reciprocal of the flow coefficent of the piping, excluding the control valve, between the treating cylinder and the storage tank.
  • Foil is the assumed constant flowrate of the oil pump
 
I hope my napkin sketch clears up some of the confusion about the process details. No, the pump doesn't hang upside down or anything, it's actually near the bottom plane of the vessel, but I didn't want to have to draw overlapping lines, etc.

I will hopefully be able to capture a pressure cycle today on Trends and will post it here. I will try to include the calculated error values, though I don't think negative values are available from the data table. I believe I have the pump curves available if needed, we ran into an issue with them due to vacuum inside the vessel not allowing the oil to be pumped in circulation, that's a whole 'nother problem, I think due to viscosity and insufficient net pump suction head! 🤷

@DrBitBoy: Centrifugal pump. I think your post #24 sums it up very nicely, there is no opening of the Control Valve until the setpoint is reached. Ideal operation would have the valve opening before setpoint is crossed (rising).

@Peter: I will try to see if I can get some numbers to test your formula against.

Pressure Loop.jpg
 
Whoa, thanks!

Is the stilling pipe used for a level measurement?

Is the stilling pipe slotted or perforated down its sides inside the treating vessel?

Does the oil level reach the top of the treating vessel, or even go up into the extension of the stilling pipe above the vessel?
 
I will hopefully be able to capture a pressure cycle today on Trends and will post it here. I will try to include the calculated error values, though I don't think negative values are available from the data table.


PV, SP, and CV should be enough; error can be inferred from there.

what is the approximate flowrate (gpm, litre/s, whatever) at a pump discharge pressure of 125psi above pump suction? at 165psi?
 

Similar Topics

Hello, I'm having a lot of trouble tuning a PID loop on a SLC 5/05. Can someone tell me if I'm doing something wrong? Please see attachment to...
Replies
8
Views
3,815
Hi, I have a system (see attached illustration) that is PID controlled. The pump is used for the injection of chemical from the tank to the...
Replies
5
Views
4,556
Hello, I am using a AB SLC5/05 PLC & using the PID insrtuction for a single loop control. I have assigned N10:0 as the control block starting...
Replies
4
Views
4,943
Hello, I am attempting to tune a PID loop on a process. The process involves a valve with electronic actuator that has quite a high deadband...
Replies
10
Views
2,071
so i have 4 25gpm wells feeding a 1000gal tank (T-1), with an additional 15gpm from a decant tank for 3hrs every 12hrs. P1 and P2 both controlled...
Replies
154
Views
35,517
Back
Top Bottom