PIDE freeze output?

dginbuffalo

Member
Join Date
Dec 2010
Location
Buffalo,NY
Posts
630
Hello,
I have a enhanced PID funning in a function block on a Compactlogic L35 processor. it is running to a pressure SP but if the current gets too high or too low i need to stop the CV from updating. The low and high limits will always be calculating depending on what pressure the unit is at. Any suggestions on the best way to do this? i was thinking about a LES and GRT then on the CV output that i would turn on and off if current was hitting a certain level. or changing the CV out low and high limits on the fly. Ideas?
 
Place the PIDE in program manual mode. The CV will halt at whatever value it was at and remain there until the PIDE is put back in auto mode or CV is changed by the program.
 
if i put it in manual though, and the system pressure drops, the PID needs to increase again. i suppose i could have a bit that says if manual and SP is greater than PV, go back to auto.
when i switch to Auto, will it begin to calculate from it's last CV, or will it drop back to zero and start again? that would be bad....
 
You only put it in program manual for as long as you need to freeze the CV. Then you have to switch back to program auto. The PIDE will begin updating from the current CV value, it won't go back to zero. While in manual the PV may continue to change and that will result in a large E when you resume. If you need to change the CV then adjust the CVPrevious value or change the manual value before going back to auto.


What exactly are you trying to do? You shouldn't have to do a lot of fudging if the PIDE is correctly configured and tuned.
 
i am controlling a valve to supply pressure to a system, so the PID is looking at SP pressure vs PV pressure. i want the valve to run all the way open until i get to nameplate current on the blower motor. i also need to let the valve run down to a calculated motor current that indicates the system is unstable at that pressure. this calculated motor current is always changing based on pressure. so basically, i want to run the PID normally anywhere between the low and high current settings.
 
To be clear, this current you are talking about is not the current going to the control valve ( e.g 4-20ma) but the current to the blower motor?

Are you measuring this current and is it's value going to your PLC by way of an analog input?
 
If I understand you correctly then you want to normally control the blower with the PID to maintain a specific pressure but you want to clamp blower motor current (hence blower load) between an upper and lower limit.

That sounds like a good application for a low select PID configuration. Low select loops can be an effective means to control a process actuator on two different kinds of process variables.


You would basically have two PIDs - one PID has pressure as its PV and the other has motor current as its PV. The two PIDs control the same analog output. Which ever PID has the lowest CV is the one that is written to the output. The selected PID CV is also written to the CVPrevious value of the non-selected PID.

As the CV for the pressure PID rises and increases blower speed the current PID CVPrevious is updated to track it. When current rises above the current setpt then the current PID will have the lowest output and so it will be written to the analog output and the pressure PID CVPrevious will be updated to track it.

A simple example of a low select is shown on page 7 of this document: http://literature.rockwellautomation.com/idc/groups/literature/documents/wp/logix-wp008_-en-p.pdf

There are also some examples of how to do a low select in the AB knowledge base if you have a tech connect contract. Look for technote 50840.
 
Last edited:
I've set up low selects before but never a Low/High select which is what seems to me to be one way to do what the OP needs. So just for the hell of it I decided to see what a Low/High might look like.

In the attached program one PIDE loop controls blower pressure while the other PIDE loop limits motor current. The motor current limiting loop uses a high current setpoint when CV > 50% and a low current setpoint when CV <= 50%. Likewise, when CV > 50% the scheme selects the lowest CV for the blower speed command and when CV <= 50% is selects the highest CV for the blower speed command.

When CV > 50%, as long as motor current is less than the high current setpoint then the current PIDE is going to have the higher output so the low select will keep the pressure PIDE in control of the blower speed. When current rises above high current setpoint then the current PIDE will start decreasing its output and the low select will put it in control of the motor, holding motor current at the high current setpoint. When the pressure PIDE output decreases it will again resume control.

When CV <= 50%, the loop will operate on high select and as long as motor current is greater than the low current setpoint then the motor current PIDE will have the lowest output and the high select loop will select the output from the pressure PIDE to control blower speed. If the pressure PIDE output drops to where current is lower than the low current setpoint then the current PIDE will increase its output and the high select will put it in control of the blower speed until the pressure PIDE output begins to rise again.

The output of the select loop is tied back to CVn-1 or CVPrevious so that the two loops track each other so that transfer from one to the next is bumpless.

The blower current loop should have CV limits set to something that will always allow the needed range but at the same time allow the loop to continuously adapt the command to the actual high and low current setpoints.


I haven't tested a loop like this but I think it will work.

Note to everyone: You'll need the RSLoigx5000 function block language extension and at least V16 to view the file.
 
Last edited:
TConnolly
I loaded the program into Emulate5000 and ran it for a bit. I will add some auto ramping of pressures and current when I get a chance to look at further. However, Seems to work as you described, Very nice. I will keep this tucked in my pocket for that day when I am confronted with a similar problem.

This is why I enjoy this Forum so much. Lots of great folks and lots of great ideas!!!
:p
 
That's a sweet control scheme there!! i actually had something like this going into a multiplexer and was trying to do the same thing. I'm not familar with all the instructions of the function blocks and there sure are a lot of wild things you can do. thank you much for all the help everyone provides on this site. maybe one day- i'll be smart enough to do the same! lol!!!
 
Any chance you provide a pdf printout of your "High-Low Select PIDE", for those of us with only LAD version of RSLogix5000?
 
Here it is.

SEL02 is hard configured with the values of 1 and 2 internally.
GRT01 has 50 hard configured for input 2.
PIDEs both have SETCVPREVIOUS bit set on internally.
 
Last edited:
After looking at it again it occurred to me that using three PIDEs with a single ESEL block configured for median select (select mode 3, number of inputs = 3) would be simpler (it might not execute faster though). As before the ESEL output is tied back to CVPrevious of all three PIDEs and the SETCVPREVIOUS bit is set in all three PIDEs.

Whichever PIDE has the middle output value is in control of the Blower_CV. The max and min CVEUs are ignored.

As long as motor current is less than the HiCurrentSetpt then PIDE_Pressure controls the Blower_CV.

When motor current rises above HiCurrentSetpt the PIDE_HI_CURRENT.CVEU will decrease below PIDE_PRESSURE.CVEU
and become the median value. It will remain in control until PIDE_PRESSURE.CVEU decreases.

When motor current drops below LoCurrentSetpt the PIDE_LO_CURRENT.CVEU will increse above PIDE_PRESSURE,CVEU
and become the median value. It will remain in control until PIDE_PRESSURE.CVEU increases.

TC022112-1.jpg
 
Last edited:

Similar Topics

Hello all, we have an homogenizing oven with three zones, 2 burners in each zone, a soak (smaller) and a main (large). during ramp to the air...
Replies
5
Views
104
Greetings ... someone sent me a request for some student handsouts that I developed ... turns out that I had this hosted on my business website...
Replies
0
Views
138
Have a logix controller and I'm using the PIDE block for the autotuner. I've got the hang of doing it for direct control things like pressure...
Replies
21
Views
1,781
Studio 5000 version 34. Have error on PIDE CVFaulted (Status1.2), Control variable (CV) health bad. No more information online or in...
Replies
3
Views
975
Hi everyone, I am trying to add a control loop to my HMI interface however I keep getting the following issue, any idea why this would happen?
Replies
8
Views
1,621
Back
Top Bottom