adccommunitymod (AutomationDirect) asked a question.

PID Output DL06

Created Date: October 16,2006

Created By: Marcus

**** This post has been imported from our legacy forum. Information in this post may be outdated and links contained in the post may no longer work.****

Hello I am currently using a DL06 with the programming software vers. 4 build 25. Some background: We have a PID system controlling two gaseous mixtures. With out getting into too much detail we have a tube that is about 1 inch in diameter. We have a round plate in the tube attached to a stepper motor. PID recieves a signal type a+b(PV) from the mixture sensor. If the mixture has more of type A than B (SP-PV) this error goes to the output = The stepper Motor controling the plate in the tube, in this situation the motor would close. IF the mixture is more of B than A the stepper would open. Our problem is when the plate that is attached to the stepper motor reaches near zero conditions a small movement creates a large change where when the plate is near the full open .. 4095 range a small movement can have almost no effect. I am curious to know if there is anyway to condition the output for this type of senario. Unfortunately I found that the gain values work without regard to how close to 0 or 4095 the PID output is, its all based on amount of error. Any information regarding this situation would be great. I am more than willing to further explain if need be. Hopefully i have expained this well enough. Thanks in advance Marcus


  • adccommunitymod (AutomationDirect)

    Created Date: October 16,2006

    Created by: hanziou

    Are you awware that you can change the PID constants programmatically?

    I have seen this done in situatuations where there is a significant difference in the system response at different operating regions. For example a cooling loop when vessel temperature above 200F vs below 200F. The ladder includes a few rungsto load PID const set 'A ' the Feedback value is range 'A ', load PID Const Set 'B ' when Feedback is in range 'B ', etc.

    So if you need to change the PID constants as the Error changes, You can set up rungs based on ht eerror.

    Nothing says you have to use the loop output directly. You could use the ladder to scale the Loop out based on the error value.

    I think that there is also a PID configuration switch that uses to Square root of the PV to feed into the loop calculation.

    Chapter 8 includes the equations used in the PID loop if you want to se the calculations.

    Expand Post
  • adccommunitymod (AutomationDirect)

    Created Date: October 16,2006

    Created by: Marcus

    I have worked with the square root PV but this still only deals with the error based on SP, really My Setpoint stays the same i ask a value of 1700, in the square root PV it reduces the value calculated to the output the closer to a 0 error and increases the output dramatical the further away from 0 the error gets. ... my situation the closer the OUTPUT gets to 0 the error of SP-PV can be great or small at this point its the amount of change on the output causing the drawback.

    To better explain... If the gain value P is set high enough to crontol PV while the valve is in the 2000 to 4095 positions it will hold the PV very acurately. If the valve is in the 0 to 1000 postions it will overshoot and undershoot sending the control into hys. If I lower the gain to handle the lower valve locations then if it is in the upper region it will react too slow also creating its own set of problems.

    I do not understand what you mean by changing the PID constants. Are you saying that i can change my gain values on the fly in my control logic. If the output goes above say 2000 then use higher gain and if the output falls below 2000 use smaller gain values?

    Let me know if this is what you ment.

    thanks

    Marcus

    Expand Post
  • adccommunitymod (AutomationDirect)

    Created Date: October 17,2006

    Created by: Marcus

    Thank very much for your input, it is very much appreciated and helpful. Thank you for the ladder logic example also. This answer seems more suited for my question. The error squared of the PV I have tried extensively and has showed to do what the book says. This is not my problem. It still takes no regard to where the output is currently at when it does the calculation it is still all based on the error it only effects the output because it changes the error calculation large error on large changes small error on small changes which is awesome if I had pv noise or sudden changes that were unaccounted for. My problem is strictly the output not being linear in its movement. If you know anything about engines, my situation is roughly the same in that the throttle body works like our system. The throttle is very sensitive when in the low ranges, and less sensitive when in the higher ranges. Your idea of changing the P I and D terms is well suited and I will most definitely be giving this a try. My only concern being that is it possible to cause problems with the PID constantly changing these values. Our system has large changes occurring very quickly and needs to be very accurate. Hopefully the loading of these values will be fast enough for our setup and not cause the PID any confusion.

    Again thank you for your time if anyone else has any further suggestions or would like more clarification feel free to post.

    Marcus

    Expand Post
  • adccommunitymod (AutomationDirect)

    Created Date: October 18,2006

    Created by: AZRoger

    Marcus,

    It looks like you have a solution for this situation. However, for future projects, you might try a non-linear connection between the stepper motor and the butterfly valve. I assume you can use only 90 degrees of rotation from the stepper. You can double the degrees of rotation with unequal length arms on the stepper and the valve. And you can get much better resolution at almost-closed. Look at the picture at this link.

    http://www.shotscan.com/ad/4BarLink.jpg

    With this arrangement, 180 degrees from the stepper motor produces 90 degrees at the butterfly valve. The drawing shows the fully closed position. With this arrangement, the butterfly moves very little with each degree of stepper rotation near fully closed and fully open. As drawn, the approach to fully open is not quite as slow as the approach to fully closed but is slow. If you want faster response toward fully open (where the percentage difference in gas flow is much less per degree of butterfly rotation) put a longer arm on the servo so that full open is less than 180 degrees away from full closed.

    You can adjust the lengths of the arms to get a wide variety of operational characteristics. The trick is to get the arm on the servo and the connector arm (blue) to be in line at the extremes of motion. If you need to close and apply pressure to a seal at one extreme of motion, then make fully closed without pressure on the seal, a few degrees short of inline. Completing the rotation to exactly inline will apply additional presure (with a big mechanical advantage) to properly engage the seal.

    I hope you find this useful. http://forum1.automationdirect.com/board/smile.gif

    Roger

    Expand Post
  • adccommunitymod (AutomationDirect)

    Created Date: October 18,2006

    Created by: Marcus

    Roger,

    Your approach is something I never considered. Thank you very much for this suggestion. Hopefully I can get our prototype designer to include something like it on our next prototype. Your design definitely sounds like it would solve my problem perfectly if the arms are set up correctly. Unfortunately until then I have to try the program side of things to compensate for it. But I foresee that design saving me a lot of problems past and present and not to mention future.

    Again I would like to thank those that have helped and welcome any further suggestions as to what may work for solutions" physical or program.

    Thank you, http://forum1.automationdirect.com/board/biggrin.gif

    Marcus

    Expand Post
  • adccommunitymod (AutomationDirect)

    Created Date: October 16,2006

    Created by: Marcus

    Hello I am currently using a DL06 with the programming software vers. 4 build 25.

    Some background: We have a PID system controlling two gaseous mixtures. With out getting into too much detail we have a tube that is about 1 inch in diameter. We have a round plate in the tube attached to a stepper motor. PID recieves a signal type a+b(PV) from the mixture sensor. If the mixture has more of type A than B (SP-PV) this error goes to the output = The stepper Motor controling the plate in the tube, in this situation the motor would close. IF the mixture is more of B than A the stepper would open. Our problem is when the plate that is attached to the stepper motor reaches near zero conditions a small movement creates a large change where when the plate is near the full open .. 4095 range a small movement can have almost no effect. I am curious to know if there is anyway to condition the output for this type of senario. Unfortunately I found that the gain values work without regard to how close to 0 or 4095 the PID output is, its all based on amount of error. Any information regarding this situation would be great. I am more than willing to further explain if need be. Hopefully i have expained this well enough.

    Thanks in advance

    Marcus

    Expand Post