Help with tuning cascade temperature loop

jrowe4

Member
Join Date
Jul 2012
Location
palos park
Posts
16
Hey PLCtalk! Wall of text comming in 3.2.1.. I'm a summer intern trying to learn how to work with PLCs and tuning processes. I've been given the task with trying to tune a counter flow drying system that uses cascade control. In our process, the slave loop controls a gas valve that regulates hot inlet air, and a master loop that controls the outlet temperature of our material. The inlet air is used to heat up the material causing calcination in our product. The idea of this cascade setup I'm guessing is that the slave loop is "supposed" to help against air flow problems in our process before the material temperature is affected by them. As this is my first attempt at tuning loops (hopefully I can make a living out of this one day, I love reading about control theory and plcs!) I have tried some attempts to solving this.

First thing, we are using a plc-5 using the INDEPENDANT PID equation. Also, I have come to understand that the numbers I enter for kp,ki,kd are scaled by .01, .001, .01 respectivly. I sort of understand what P,I,D do after reading rons website, but I don't have that operators intuitive feeling for it yet. I've attached a couple pictures in a zip giving you a better idea of my tuning problem.

The daily trend picture is what we get on a normal day basis. The top line is the material temperature, and the bottom line is the inlet air. It's almost as if they are "fighting" each other. There is also a lot of deadtime it seems before a change is seen in the material temperature relating to a change in the inlet air. Currently I have a slave loop (gas valve) tuned using the lambda rules at kp=6, kp =.017 r/s, and kd=0. I have the master loop tuned to kp=7, kp=.002 r/2 and kd=0. The master loop tuning is pretty much unchanged from when I started.For the slave, I used a step test to tune, which actually works pretty well now. We found out that the valve linkage was shot because we were not able to get repeatable actions during manual tests. Now when we dial in a temperature on manual and step down or up we get good results.

I also posted a picture of the pid block used for the master loop found in rslogix 5. This is just to give you guys a better idea of what I'm working with. Some of the numbers like feedforward and deadtime were there when I got there. I also included a picture of what I believe to be a pid trigger on the logic rung. I have to still convince the higher ups that the pid block is not unconditional and is triggerd by this pid timmer. I still need to check to see if the trigger matches the loop update time.

So my question is, does anybody have any tips or advice for my next step? I feel that there is a problem with the master loop tuning. Maybe it is too agressive? When I tried to do a step test by placing the master in manual and leaving the slave in auto, I had to estimate my process gain and deadtime as I was not able to get very good results. The lambda formulas suggested a kp = 1 and a ki = .001 r/s. The cohen coon method I also tried gave similar results. When I put a low gain into the master loop, the temperature overshoots way too much. This could be because the system needs time to recover from the fast acting controls. I am not to sure.

In all, if anyone has any suggestions, tips, advice or a similar situation that can be lent to a beginner, I would extremly appreciate it. Thanks so much everybody, I really love this website as it is the only means of teaching my self these complex topics. There are some very intelligent people here. Thanks all, have a good night.
 
U need to focus on first tuning your inner loop PID B independantly ( loop that receives the setpoint from the outer loop PIDA). Proportional control is normally suffice for this. Once the inner loop responds as per your system requirements only then look at your outer loop.

Trying to tune both will almost always give undesired results.

When tuning your outer loop PID A , PID B needs to be in auto.

Also keep in mind PIDB should have a Faster Response time than PIDA (4-5 times). Also, it is important to stop PIDA to increase or decrease if PIDB saturates, otherwise it will cause controller windup.

Again first tune the inner loop and then outer loop with inner loop in auto.Inner loop should react 4-5 time quicker than outer loop, If it is not faster it will not offer any improvement.

Do you have a schematic of what your system looks like and can you draw the block diagram of your cascade controller?

That would be my next step.
 
Last edited:
In our process, the slave loop controls a gas valve that regulates hot inlet air,
What is being controlled? Flow or valve position? What is the feed back?

There is also a lot of deadtime it seems before a change is seen in the material temperature relating to a change in the inlet air. Currently I have a slave loop (gas valve) tuned using the lambda rules at kp=6, kp =.017 r/s, and kd=0. I have the master loop tuned to kp=7, kp=.002 r/2 and kd=0.
Are you sure the did the conversion to AB scaling correctly

The master loop tuning is pretty much unchanged from when I started.For the slave, I used a step test to tune, which actually works pretty well now. We found out that the valve linkage was shot because we were not able to get repeatable actions during manual tests. Now when we dial in a temperature on manual and step down or up we get good results.
[/quote
So the dead time is in the outer loop. OK.

It would be good get more graphs will the control output and PV of each loop as a function of time.

Most processes tuning rules were written assuming the ISA-PID is being used. This is the one with the controller gain and the integrator and derivative time constant.

Feed forward can be handy of the rate of material being heated changes. Obviously it will take more hot air to warm up more material.

In all, if anyone has any suggestions, tips, advice or a similar situation that can be lent to a beginner, I would extremely appreciate it.
I will let Ron Beaufort handle the initial part where he makes sure your PID is setup correctly. I don't know noting about PLC PIDs. Once the PID is setup correctly I will get more involved.

I think PIDs should use floating point and the inner PID's I and D gains should act on the PV only.
 
Thanks for responding guys, I'll try to answer some of your questions.

Also keep in mind PIDB should have a Faster Response time than PIDA (4-5 times). Also, it is important to stop PIDA to increase or decrease if PIDB saturates, otherwise it will cause controller windup.

I believe this is the case as I've seen from manual tests. The deadtime of the slave loop is shorter because within a minute or so of opening the gas valve we start to see changes to the inlet air. The deadtime of the master loop is a lot longer as the material needs to heat up before seeing a change in its temperature. The deadtime always varries on this one, but it seems to be about 10-20 minutes.

What is being controlled? Flow or valve position? What is the feed back?

the output of the slave controller controls the valve position. The higher the output of the salve controller, the more the valve opens and thus higher inlet air temperature. The master loops output sets the setpoint for the slave. The way it is set up now is that 1% output increments on the master loop corresponds to 6 degree increments on the salves setpoint.

Are you sure the did the conversion to AB scaling correctly

I believe I am doing this correctly. In the plc-5 it seems that when using the INDEPENDANT pid equation, it follows that
kp is scaled by .01, ki by .001 and kd by .01. Also the units are kp=unitless, ki= reset/sec, and kd = secs. So for example if I wanted a proportional gain of 10, an integral of 2 resets/sec and a derivative gain of 5 I would put into my PID block kp = 1000, ki = 2000, and kd = 500. I like to think of integral gain as minutes/repeat so I just take the inverse of repeats/sec and just convert to minutes.

I think my main problem in figuring this out has something to do with the tuning perhaps. Im new at this whole game, and I just figured out that you have to start the process from a moment of stability. Then I can adjust the tuning parameters and see what happens. What I've been doing is changing the tuning while the whole process is oscilating. Of course I have not seen any good results of this. Im guessing I want to tune the master for load disturbances as its setpoint is going to stay constant.

I was able to get good step test results on the slave loop. I used my results to fit the lambda tuning equations and used tried them. It seems that the slave controler does its job alright. I tuned it for set point changes as its setpoint is constantly changing.

I've included some new graphs that show the master loops PV and its output, and the Slave loops PV and its output. I believe its okay to post the rsp file, so I've included it in the post. The boss tells me its cool, so I don't think it contains any sensitive info. Im focusing on PID blocks TIC21 which is the slave loop, and TIC 23 which is the master.

Thanks so much for taking the time out to help a beginner in PLCs and controls. If there is any more info you need let me know. Again thanks, I really appreciate any help.
 
Last edited:

Similar Topics

Good afternoon all! I was wondering if anyone could explain more clearly to me the tuning parameters of a PID instruction on a 1769 AB...
Replies
7
Views
2,832
Hi, I have a question in my Instrumentation & Control HND which is as follows: Figure 3 shows the open-loop response of a process modelled by...
Replies
6
Views
4,271
Hello, I have a problem with tuning my PID loop in my RS5000 project. In my program I am using a PID loop to control the KW output of an engine...
Replies
11
Views
4,304
I have a slow temperature loop that I am struggling to get tuned. It is a large steam-heated vessel which is preheated and then material is...
Replies
8
Views
6,257
I am being thrown to the wolves and am driving to New York on Monday to tune a PIDFF loop. I am the wrong person to do this. Back in the day when...
Replies
7
Views
10,828
Back
Top Bottom