PIDE Logix5000 - Cascade/Ratio and my process

devo.xx

Member
Join Date
Jan 2013
Location
Edmonton
Posts
69
Hey guys,

I've got a system that will apply an even coating to a conveyor belt. My product is moving at a variable speed on this belt.
The system has 2 pumps:
- Pump 1 is for the Water
- Pump 2 is for the Product
- These will be mixed at a ratio, 10:1
The amount of mixture to be applied to the conveyor belt will be a linear relationship where:
- Mixture flow rate = Constant * Belt Velocity

My question relates to Ratio and Cascade controls using the PIDE FB. Logix5000 v21.03 on ControlLogix 1756

From what I have read here it looks like I should be running Loop 1 (Water) as a Ratio to my Conveyor belt speed. Then I should run Loop 2 (Product) as a Cascade to Loop 1, but really it is just a Ratio to Loop 1...
Is this correct?

I am attaching a quick schematic of my mechanical system, hopefully someone else has come across exactly this problem before ;)
View attachment Process Schematic.pdf
 
Do you have independent feedback of the flow rates for water and product? Is your pump system such that you would expect the systems errors to respond linearly to speed? I don't mean the base material requirements; I mean errors.

While the two can be combined I am generally an advocate for separating my feed forward from my closed loop correction. For example, you have already defined your flow requirement relative to the conveyor speed. You have also already defined your constituent flow requirements as 0.9*base flow for water and 0.1*base flow for product. Those values should be conditioned by you pump curve and head straight to the respective drive as a feed forward value for pump speed. After that the individual flow requirements would go to the individual flow PI controllers as setpoints and the PI outputs would add to to the feed forward ad a trim for each drive.

From your diagram it would appear these are not a candidate for cascade control. They are truly parallel control paths. I also believe the control effort should be an offset/trim as opposed to a ratio but that really depends on your process. The only way a ratio of product to water would make sense as a PI control output is if you have a way of measuring the final concentration of the mix and you want to control to that concentration.

Keith
 
Do you have independent feedback of the flow rates for water and product?
Yes, both have a flow meter attached inline, before mixing.
Is your pump system such that you would expect the systems errors to respond linearly to speed? I don't mean the base material requirements; I mean errors.
Yes, I expect it to respond linearly.
From your diagram it would appear these are not a candidate for cascade control. They are truly parallel control paths.
Yeah, I noticed that when I went for lunch today. Cascade is really used to control a single CV through multiple PVs. Right?
I also believe the control effort should be an offset/trim as opposed to a ratio but that really depends on your process. The only way a ratio of product to water would make sense as a PI control output is if you have a way of measuring the final concentration of the mix and you want to control to that concentration.
No, there won't be any way of measuring the final concentration.

K, so it sounds like I just need to run standard PID loops then.
Water Loop
  • SP_1 = C_1*v + F_1, where v is the belt speed, C is a gain/ratio, and F is my offset. F will likely be zero.
  • PV_1 = Flow Meter of Water
  • CV_1 = Pump speed output in Hz

Product Loop
  • SP_2 = C_2*PV_1 + F_2, where PV_1 is the flow from the Water Loop
  • PV_2 = Flow Meter of Product
  • CV_2 = Pump speed output in Hz

So, is the only thing that "Ratio Control" does is calculate my C_1 and C_2? Because I can just write some Ladder to vary my SPs. Will the PIDE instruction fault/break if I vary my SP while it is running the PID calculations? Maybe, is this why "Ratio Control" got added?
 
Originally posted by devo.xx:

Cascade is really used to control a single CV through multiple PVs. Right?

Correct, I think. Cascade control requires that the two loops be "in series". the classic example of a cascade control system is the velocity and torque control loops in a drive. The output of the velocity loop is a torque command and becomes the input to the torque loop. The output of the torque loop is a current command. The velocity loop does not have direct control over the control action that will influence its PV. It is important that each loop has it's own independent, measurable feedback.

I would base both setpoints off the conveyor velocity and an application setpoint. Then calculate both flow setpoints based off that result and the ratio of the two to each other. If at all possible you don't want to base the setpoint of the product flow off the feedback of the water flow. The feedback value will tend to move around enough that it will be hard to keep the product loop stable.

Total Flow Rate = Cf * Vc

Total Flow Rate = (1 * Fw) + (Ratio * Fw) = Fw * (1+Ratio)
Fw = Total Flow Rate / (1+Ratio)
Fp = Fw * Ratio

where:
Cf = flow constant (application rate in gal/min/(FPM) or some such)
Fw = flow setpoint of water loop
Fp = flow setpoint of product loop

You now have your flow setpoints that are as stable as the conveyor velocity. Each flow loop gets the appropriate setpoint. You can change either the total flow setpoint or the flow ratios at any time and both setpoints will change appropriately. The loops will also track the setpoints as they change.

Now for feed forward. Since you know the setpoints and (presumably) you can calculate the drive speed required to reach any given setpoint you should be able to calculate the pump motor speed for any given setpoint without having to wait for the PI loop to come up with it. Feed forward values are output values based on the setpoint and its derivatives. You only need to worry about the setpoint. Calculate that speed and send it to the drive in parallel with the PI output. You will find you have a much more responsive system that settles on the setpoint much more quickly with much less control loop correction.

Keith
 
Last edited:
Great Keith! Thanks!

Now for feed forward. Since you know the setpoints and (presumably) you can calculate the drive speed required to reach any given setpoint you should be able to calculate the pump motor speed for any given setpoint without having to wait for the PI loop to come up with it. Feed forward values are output values based on the setpoint and its derivatives. You only need to worry about the setpoint. Calculate that speed and send it to the drive in parallel with the PI output. You will find you have a much more responsive system that settles on the setpoint much more quickly with much less control loop correction.

I see also that there is a Parameter called "FeedForward"
From the description, it sounds like it is just an Offset for the CV, and not actually a Feed Forward...

Typically, I work my Feed Forwards by just MOV FeedForward Analog_Output until a TON.DN (ie. 5 sec) is finished, then MOV PID_Output Analog_Output
Is there a way to do it in the PIDE instruction?

Is there a manual on this PIDE instruction?
The only stuff I can find looks more like a presentation from AB "Check out what's coming in the next version! More features with no documentation!"
{LINK} Allen-Bradley, "Using the PIDE Instruction"
 
I guess we need to agree on what you consider a feed forward. The feed forward value shouldn't disappear after a specific time unless the feed froward itself is time dependent. For example, if you have a constant flow setpoint of 100 liters/min the pump speed required to achieve that 100 liters/min doesn't disappear after a set time. It only changes if the setpoint changes. So your feed forward should reflect that. The same applies the the higher order derivative of the setpoint. these would be time dependent based on the rate of chage of the setpoint. But your system wouldn't use these.

You are correct in that the feed forward can be though of as an offset to the Cv output of the PIDE. At the end of the day your process requires a certain pump speed to achieve a given flow. You have control over the sources and relative contribution of the components of the pump speed command. In this case it can come from either the closed loop control function or from a feed forward term.

I'm not an expert on the PIDE instructions. I usually write my own control loops because I lack the patience to figure put how to make the canned functions work the way I want them to. There are several contributors who do know the instruction, however. With any luck one of them will reply.

Ultimately, the benefit of a feed forward term is it puts the Cv closer to it's ultimate requirement more quickly than the PI loop can alone. This is especially helpful in a dynamic setpoint system like you will have.

Keith

Keith
 
It look to me like you have the right idea

- Mixture flow rate = Constant * Belt Velocity
This is a good start.
If there is no feed back on the mixture then the best you can do is
product_flow_rate= product_Constant * Belt Velocity
water_flow_rate = water_Constant * Belt Velocity
You just need to find what the ratio of the water_constant to the product_constant needs to be to yield about a 10 to 1 ratio.

I don't see where a PID will help at all without feed back from the mixture.

I would have two gains:
product_flow_rate=flow_gain * Belt Velocity
water_flow_rate = flow_gain*ratio_gain* Belt Velocity

This should be simple if the system is linear.
 
Originally posted by Peter Nachtwey:

I don't see where a PID will help at all without feed back from the mixture.

Given the assumption that the system is capable of making a correct mixture if the constituent flows are correct, flow feedback in each of the supply lines will allow closed loop feedback on the constituent flows. This will account for pump non-linearity or changes in head pressure that aren't accounted for.

But, yes, at the end of the day you still don't know if you are making the mixture correctly.

Keith
 

Similar Topics

Hi erverybody. My question is related on how to use Feedforward to add a value to the CV of a PIDE intruction. I think is not easy and it is not...
Replies
3
Views
8,175
Hello All, Looking to get a better understanding behind an issue that I had earlier today with a PIDE Instruction that was not changing it's CV...
Replies
3
Views
1,263
Hi, I am working on control level project using PLC 1756-L62 (Rockwell). I put the same parameters on a MATLAB PID and PIDE of Logix5000...
Replies
1
Views
1,650
Hello, I am trying to figure out the difference between Hand Mode, Override mode and Manual mode and what advantage one has over the other. The...
Replies
1
Views
2,640
Hello, I am trying to modify an existing program because the temperature is not stable (according to the operator it was never precise). So, I...
Replies
14
Views
5,413
Back
Top Bottom