Sign in to follow this  
Followers 0
lonegator

PID Function - Help Needed

4 posts in this topic

Hello everyone. I am fairly fluent with the basics of PLC programming but am totally uneducated on some of the lesser-used functions (at least lesser-used by me). One such function is the PID function and I wanted to see if someone could explain how to properly use it, based on my scenario. I am onsite at a river/rail terminal for coal. They've installed a new conveyor system to transfer the coal from river barge to ground and then have 4 new conveyor lines used to create different blends of coal. I'm working on these blending lines. I have everything working but want the best method for producing their desired tons per hour. For a line, they enter in an initial conveyor speed and desired TPH and start the line. A belt scale attached to the line measures the actual TPH and sends this to the PLC thru a 4-20 mA signal. I need to compare the actual TPH with the desired TPH and then adjust the conveyor speed +/- accordingly. I have tried reading up on the PID function but just am not grasping it. Can someone let me know how they'd suggest I handle this scenario? Any ideas would be greatly appreciated!! If you need more information to provide an adequate solution, just let me know. Thanks!!

Share this post


Link to post
Share on other sites
Measuring pounds of coal per unit time on the conveyer will give you TPH of course. I do not see how teh conveyer will be able to control how much coal is dumped on it - its only job is to carry the coal to somewhere else. I do see the need to control conveyer speed proportional to input rate (weight / time) mostly to avoid overloading conveyer motors. I think the TPH will be determned by how much coal you are dumping onto the conveyer and should be controlled at the infeed end. Dan Bentler

Share this post


Link to post
Share on other sites
These are fairly simple to do. Forget worrying about "initial speed". Use the PID loop to control the speed entirely. One of the problems though that you may encounter is two fold. First, your feeder system may not be easy to control in the first place. Second, depending on positioning of the weigh belt feeder, it might be quite a ways from the feeder, which causes a time lag which is difficult for a weigh belt/belt speed system to handle. Best to put the weigh bridge as close as practical (keeping the number of required idlers in mind) to the feed location. There are articles and such describing good weigh feeder systems. Read up on them because many times you can fix the system much easier and better with adjustments to the system design. Also note that if you can't achieve the desired level of control by hand, you are highly unlikely to suddenly be able to make it work with a PLC. This is especially true with vibratory feeders that are very nonlinear or other badly configured weigh-feeder systems which have very nonlinear responses or lots of slugging and/or surging. Now, if it's a PLC-5 or SLC, use the "PD" file type. If it's a CLX, this is already taken care of. When you stop, or run in manual control, use the .SWM (software manual) bit to go into manual mode, and use the .SO variable (software output) to control speed (units are 0-100). Set the tieback to an unused dummy location. You will have to manually put your TPH set point into the .SP variable. The rest should be self-explanatory. Now, create a trend chart in Logix. Put the control variable (output speed), set point, and process variable (TPH) on the trend chart. The chart shows you graphically what's going on. First time out, run in manual using the PID loop. Set a fixed slow speed and then input a step change to a faster speed. Use these to calculate the proportional gain (the relative increase in TPH vs. the relative increase in control output). This is your first loop gain parameter. At this point you can use Ziegler-Nichols but I recommend staying away from it as I've had poor success with it. Set your proportional gain and then set the integral gain at 25% of the proportional gain. Don't worry about derivative gain for now as with this system, you will not need much (if any). Now try to use automatic mode to control to a set point and observe what happens. If it holds set point, then make a change in the set point and watch what happens. Try to use a "middle of the range" set point for these tests as very low/high settings may give you different gains (and different results). If it starts oscillating, back off on the integral gain in steps of 2 or 1/2 (doubling or halving). If it appears to be slow, crank up the proportional gain until it starts to oscillate. Adjust the integral gain if it takes a long time to settle out but not so much that it oscillates badly. Now set the derivative gain roughly equal to half your integral gain and start playing with derivative vs. proportional gains. What you will find is that using PI alone, you can make the system work. With the addition of derivative gain, you can increase the speed that the system reaches the set point without oscillations because the derivative gain sort of damps them out (reacts to the rate of change...derivative). This is a hand tuning method. It is difficult at best to predict what the correct tuning parameters would be ahead of time with this type of control loop. The above is a trial and error but works and with practice, you can tune your loops in to within a fraction of what an auto-tuner can achieve. It is difficult to measure exactly how a material is going to feed though so you need to try both sticky and free flowing coals. You may find you end up detuning the loop mostly to deal with one extreme or the other. In extreme cases, you may have to set up 2 sets of parameters and let an operator pick one (or switch to sliding mode controllers that are more robust against variable system gains).

Share this post


Link to post
Share on other sites
A simple speed control system has a time constant or bandwidth and a gain. A PI controller is all that is required. This is the easy part though. What hasn't been addressed is keeping track of the loading on the conveyor. If the coal mass/conveyor length changes the speed will need to change just to keep the mass rate of coal constant. That is the first problem to work out. I bet the total mass on the conveyor may change and this would affect the time constant or the bandwidth of the motor but if the system is fully loaded and still responds quickly the problem is then this time constant isn't critical and now one must look at the conveyor gain in velocity per percent control output. If this value doesn't change much as a function of the total mass of coal then the problem is simply one of keeping track of the coal on the conveyor. So does the speed of the conveyor change as more coal is added to it. Does the response change as more coal is added to the conveyor. If so then by how much? If the motor responds with 1 second to difference in coal loading then the PID tuning of the motor will not be as critical as keeping track of the coal loading for each length of the conveyor.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0