RSLogix5000 cascade loop PID for valve control

mechanizator

Member
Join Date
Mar 2007
Location
Brzeg
Posts
16
Dear all
I would like to ask you for help in solving one algorithm, because I never worked with cascade PID.
I have to realize heating valve control basing on 2 temperatures. It look like:
there's main bath tank, heat exchanger, 2 temperature probes and modulating valve.
Temperature TT2 and modulating valve are placed on entry hot water circuit that heats up exchanger. Temperature TT1 is placed on exit circuit from heat exchanger and it's showing real temperature of the water that goes to bath tank.
Operator can change setpoint of bath temperature and change also treshold for deltaT. DeltaT is calculated as temp difference: DeltaT=(T2-T1).
If treshold set > DeltaT it closes the modulating valve and it's opening back when deltaT goes below the treshold set. In theory I should use main PID to calculate difference between temperature T1 and bath temperature setpoint but I don't know how to parametrize the slave PID that will calculate the right output for valve basing on both temperatures difference.
Thank you for your help

Kind regards
 
Hi Mechanizator

I use cascade PID loops quite often in applications like this, but it is only necessary where the flowrate in your secondary circuit (TT1) is slow enough to give a huge lag time between the primary and secondary circuits. Meaning that if I open the modulating valve to apply heat to the secondary circuit and have to wait a long time before I see any effect on TT1, the modulating valve has already opened too much by the time the heat has passed to the secondary circuit, resulting in big overshoots in temperature and long stabilisation times.

So in this case, I would use a cascade PID. This means that I have 2 PID loops as so:

PID 1
SP - desired temperature of water in the bath
PV - TT1
OUT - Temperature range to give to next PID loop

PID 2
SP - OUT from previous PID loop
PV - TT2
OUT - Modulating valve

Lets put some values on this. Lets say that:

PID 1 - Water temperature of bath

SP=50 ºc (FROM OPERATOR)
PV=45 ºc (TT1)
OUT=60 ºc (Low limit@ 0, High limit @150ºc for example - this depends on your system)

PID 2

SP=60 ºc (OUTPUT FROM PID 1)
PV=55 ºc (TT2)
OUT=xxx% (modulating valve)

Hope that makes sense.

Cheers
 
Hello
Thank you for such a quick response. I wanted to realize it in similar way, the problem is, that second setpoint given by operator - in functional analyze it is written :
The temperature probe TT2 is used in order to generate a delta temperature control that is the difference between the value read from this probe and the value read from the other probe:
(R= TT0702 – TT0701)
A limit threshold (R1), for this value, is set in order to manage the following operating mode:
If the condition R < R1 is verified the heating function works normally through the temperature probe TT1 and the regulation valve, while if the condition is R ≥ R1 the
regulation valve will be closed until the condition R < R1 is verified again.
The modulating valve ways is located on the entry circuit of the exchanger, it provides regulation of hot water flow in it, according needed.
The two temperature probes are located one TT1 on the exit circuit and one TT2 on the entrance circuit of the exchanger; so the first measures the temperature of the bath and the second the temperature of the hot water.
Operator sets desired bath temperature as SP1 and maximum temperature difference between T2 and T1 as SP2.
 
ok, so you'll have 1 PID loop using TT1 to control to modulating valve, whilst the delta value is used to allow the valve to open and to close the valve if the temperature exceeds the delta SP given by the operator.

So you just have 1 PID and an upper limit. Why do you want to use cascade control?
 
I know I would realize it with 1 PID only and hi limit=TT2, low limit = TT2-R1.
Customer requires cascade regulation and I'm really confused with this.
 
So you mean to apply something like that:

PID 1
SP - desired temperature of water in the bath
PV - TT1
HiLim - TT2
LowLim - TT2-SP2
OUT - Temperature range to give to next PID loop

PID 2
SP - OUT from previous PID loop
PV - TT2
OUT - Modulating valve
 
Is your modulating valve pneumatic? If so, does it ALSO have a digital output to supply mains air to it? Or is it a plain analogue signal?

Either way, I would use the PIDs in cascade as before. Then at the output (using either the digital if it has 1, or analogue) close the valve when the high limit is reached..like:

PID1 ->> PID2 ->> LIMIT CHECK ->> OUTPUT to valve

If the limit check is not true, then the valve closes. This does not then interfere with the PIDs. You may need to disable the PID if the valve is closed by the limit check, just to stop the PID continuing to work with no reaction from the system.
 
Last edited:
Hello
Thank you very much for help. It's plain analogue signal that I send to control modulating valve. I'll try this out. Only need to be sure it's working correctly to not cause the plan stopped :(

Kind regards
 
I have just received a bit modified requirements.
The system will look like that: there are two circuits - entry circuit for heating up the heat exchanger with temperature TT2 and modulating valve that opens hot water to entry circuit; and exit recirculation circuit that supports heated water to the tank and TT1 is located before heat exchanger to show real temperature in the tank.
Operator sets two values: SP1 as temperature desired in the tank (so my TT1 has to go to SP1) and SP2 as maximum difference between the water that is heating up heat exchanger in entry circuit and temperature of the bath.
When modulating valve is open less, the temperature TT2 goes down, when it opens more, the TT2 goes up. In the final I should have such valve regulation, that gives me both temperatures varied not more as SP2, and TT1 temp as SP1.
 
Thats a very strange setup...

If TT1 is on the return to the heat exchanger then I have to ask...what is the capacity of the bath? It could take a very long time for the heated water to reach TT1.

So I suppose that's the reason for the maximum difference between TT1 + TT2. To make sure that primary water circuit doesn't heat up the secondary circuit too much before the temperature is noticed on TT1.

But in that case you are limiting the function of the PID. Apart from the fact that TT1 should be on the exit on the heat exchanger, not the return, the PID will always be limited by the maximum difference between TT1 and TT2.
 
Does it have any sense if I realize it with two PIDE like following:

PIDE1, slow responsing:

SP = SP1 temperature of bath set from operator
PV = TT1, real temperature of bath

CV1 - would be used as setpoint for PIDE2

PIDE2, fast responsing:
SP = CV1
PV - TT2, temperature of heating water
High Limit TT2 =< TT1 + SP2 (SP2 is the max span between T2 and T1, given by operator)
Low Limit TT2 >= TT1 - SP2
If so, what PIDE parameter would be HiLim and LowLim
??
 
Hello
Capacity of the bath is about 3m3. It would take a long time at the beginning when system starts up to go up to desired bath temperature. You're right, the maximum temperature span is for not overheating.
I would like to use your PID algorithm, that you've written at beginning, but I don't know where to put limits. In PIDE1 or PIDE2 ? I suppose to PIDE1 as CVHLimit and CVLLimit
 
Last edited:

Similar Topics

Hello everyone, I have an RSLogix5000 project which is running live in the factory but I need to make some changes to the logic. I want to test...
Replies
0
Views
1,097
Good Morning Everyone, I'm looking to use the GSV instruction to get I/O fault codes for my project so I know if there's a comms issue in my E/IP...
Replies
5
Views
810
The machine is running production. When trying to go online with the laptop the whole machine looses communication and faults out. Drives, HMI...
Replies
13
Views
1,867
Hello, is it possible to create a data block, something like shared datablock in Siemens STEP 7, in the RS Logix5000 PLC project? I would like...
Replies
3
Views
1,049
Hi all. This is a machine programmed by the manufacturer. There is an event task and the event tag is a MOTION_GROUP tag. Screenshot . Since the...
Replies
2
Views
978
Back
Top Bottom