Two Independent PIDs controlling one Valve

plcnovel

Member
Join Date
Feb 2006
Location
LHR
Posts
215
hi There
I am trying to use two independant PID loops in RsLogix5000 (Control Logix Controller) to control the Temperature by the flow rate. If the temperature is within the the desired range then flow control loop is controlling the valve and if temperature goes out of range then temperature loops kicks in and ofcourseit should start of it same output where flow control loop given up. i am new two PID world, if someone can guide me how to achieve this, it would be of great help. Lets say when condition 'A' or Condition 'B' True, then its time to start Temperature loop and when Condition 'A' AND condition 'B' are Not true , its time to switch the control back to Flow loop.

Is there a specific bit that i need to energize or deenergize to switch the loops back n forth?

regards
 
Hello,

I'm not 100% positive what you are trying to accomplish but I'll try anyways...

I think you are talking about a duel loop, having two set of PID's for a wide range of control, if so I have not done this in a PLC but I have done it in a Honeywell controller and it worked well

The issue I had was, I was incinerating a air gas/vapor mixture, when a machine would start and produce the vapor (LEL/LFL 50%) I would need a fast reacting valve or I would over temp, in normal conditions, I would need a different ratio by making up the loss of LEL with natural gas

So...You may just be able to have two different running routines, if you are within XXX range then enable 1st routine, if you are out of range then enable 2nd routine

Hope this helps..
 
SO you trying to say that i just use .EN bit for PID control in PLC to enable and disbale the pids depending upon my conditions? By disabling or enabling the loops, effect the process flow?
 
I would keep them separate, by having a routine enabled under specific conditions, say...

your SP is 1000deg

Code:
enable routine Slow_Reaction if your temp is less then 1025 and greater then 975
 
or 
 
enable routine Fast_Reaction if your temp is greater then 1026 or less then 974

{{Temperature by the flow rate}} being Slow_Reaction
{{flow control loop}} being Fast_Reaction

Like I said I have never done this in a PLC, but I dont see why it would not work, someone else may have done it or have a better solution
 
How are planning to raise the flow temperature? Is it with a heat exchanger, heat coil , mabye a 3-way valve.

I have never done what you are asking but I do remember that there is a way to cascade PID loops in the 5000.

Do a search here on "Cascade PID", members have wrote in before on that topic.
 
This is a fairly common PID application requirement called "Override Control" that we use in virtually all our pumping systems with excellent results. The CLX "velocity" form PIDE block is especially well suited to implementing this in a very simple, robust and elegant form.

See this attached document PIDE_Vel.pdf for details.
 
Last edited:
Hi Philipw
i HAVE never used a PIDE instruction and pretty much have no idea how to use it in my situation. I have a few questions that i need to ask you, in my case i will have a temperature loop and second one is a flow loop. I will still enable and disbale these loops based on the instructions i am using right now for positional control algorithm. Like for example, if i am under a desired temperature range i will be using flow control PID to control the end device, as soon as my temperature gets out of normal range my Temperatur control loop will override my flow control loop and once the the temperature gets back to the normal range, flow control loop will over ride my temp loop.

Also what would be the setpoint to these pids, meaning do i have to give them SP or they are using the previous output as a setpoint?

Thanks in advance
 
The method described on pg3 of the pdf file attached above uses both PIDE loops running in parallel at the same time.

1. Each PID loop has it's own setpoint and it's own feedback PV.

2. Both loops are run in Auto at the same time and will act as if to control PV to the SP as all normal PID loops.

3. The ESEL block chooses one of the outputs (usually the lower, but it can be the higher) and is used to control the common acuator (in your case the flow rate.)

4. At the same time the selected control output is fed back to an input called "CVPrevious" on both PIDE loops. The PIDE must have the CVSetPrevious flag set. This forces the PIDE algorithm to use the CVPrevious value as the starting value each time it recalculates and updates a new CV Output.

5. In your application you state:

If the temperature is within the the desired range then flow control loop is controlling the valve and if temperature goes out of range then temperature loops kicks in and ofcourseit should start of it same output where flow control loop given up.

You need be more specific about what you are trying to achieve here. What you have written is somewhat ambiguous. It could be interpreted as standard Cascade control where you have an inner PIDE loop controlling the flow and an outer PIDE loop controlling temperature and the CV output of that loop becomes the SP to the inner flow loop.

OR what you have asked for could be that you have asked for Override control where:

You want the flow to be controlled to some limit value (ie don't go higher than some setpoint value) and at the same time you want the temperature to be controlled to another limit value and you want the transition between the two to happen automatically and smoothly.

In order to make sense of this we need more details about your exact application and what you are trying to achieve.
 
Hi Philip

what i am trying to achieve is actually the override system. I have two loops, one is Temperature and the other one is flow control. The flow loop is actually controlling the flow of liquid through pumps to maintain the temperature in the vessel where the pump is pumping the liquid. If the temperature of that vessel is beyond the desired range (lets say if X1<T1<X2, flow loop is controlling the process, As soon as T1 > X2 or T1 <X2, temperature loop will override flow loop and will control the process untill or unless T1 is back within the desired range. At this point Flow loop will take over again). In my case, i think,, both loops will not be enables all the time, one will be enabled one time. I tried to achieve this in a following way:

IF T1 < X2 AND T1 > X1 (X2>X1) THEN
temp-Override = 1
Else
Flow-override = 1
End_if

If Temp-override is 1 then enable Temperature loop
else Enable flow loop.

I guess in my case i might not need that ESEL block at the end, rather i need some conditions to enable or disable active/inactive loop. Whats your thought on to this?

Regards
 
So you have a flow setpoint that comes from somewhere (operator entered, recipe, etc). however, the flow setpoint is in no way related to the desired temperature.

This certainly does look like an override control situation. Don't worry selectively disabling the two loops. As Phillip said, just use the CVPrevious input to the PIDE and use the velocity, or incremental, form of the PID. Using the CVPrevious input will force each of the loops to use the value of the control variable calculated in the last control period as the starting point for the next calculation. If you use the output of the ESEL block for this value the starting point of the calculation in both blocks will be forced to the last output of the previously active block. This ensures that when you switch between them using the ESEL block the starting points will be common.

The easiest way to think of this, although maybe not technically correct, is that the CVPrevious input presets the value of the integral to the previous output minus the proportional correction and the bias from the previous control iteration. So even if the two loops are trying to go two different direction the integral sum won't be way out of whack for either of them when the switch is made.

Keith
 
Last edited:
kamenges said:
The easiest way to think of this, although maybe not technically correct, is that the CVPrevious input presets the value of the integral to the previous output minus the proportional correction and the bias from the previous control iteration. So even if the two loops are trying to go two different direction the integral sum won't be way out of whack for either of them when the switch is made.
That is correct.
I explain that the controller will try to reach the temperature or flow setpoint what ever comes first.
 
Really old thread. I bounced here looking for something else (the override control PDF answered my question. I couldn't remember the name of the tag that I needed)

The OP's loop needed to be a Cascade loop. AB has a really nice diagram in the manual for setting up a cascade loop. It's pretty typical to use a temperature controller to set the setpoint of a flow control loop.
 

Similar Topics

Hello and thanks for reading my question/problem. I am working on an a application where I have a servo controlled gate that allows product (dry)...
Replies
14
Views
2,769
Dear Experts, We have two PLC independent PLC panels with two independent controllers , we need to make hardware splitting for some AI and DI...
Replies
2
Views
1,031
So I have been thinking about opening my own business as an independent consultant. I would like feedback from people that are/or used to be one...
Replies
6
Views
2,632
Hi everyone, I setting a PTO instruction with different Accel/Decel in ML1400 (ADI=1). According to the manual: “If separate acceleration and...
Replies
5
Views
2,572
I know that this question has been asked and answered here on the forum, but I would love some additional insights. I am very seriously trying to...
Replies
33
Views
10,238
Back
Top Bottom