12-09-2005 02:59 PM
12-10-2005 11:39 AM - edited 12-10-2005 11:39 AM
Wiring up the PID should be straight forward, however It will over shoot the set point if the PID parameters for the controlled process are incorrect.
You need to 'tune' the PID values to ensure that you have acheived the desired control.
From Wikipedia
http://en.wikipedia.org/wiki/PID_controller#Tuning_a_PID_loop
"Tuning" a control loop is the adjustment of its control parameters (gain/proportional band, integral/reset, derivative/rate) to the optimum values for the desired control response. The optimum behavior on a process change or setpoint change varies depending on the application. Some processes must not allow an overshoot of the process variable from the setpoint. Other processes must minimize the energy expended in reaching a new setpoint. Generally stability of response is required and the process must not oscillate for any combination of process conditions and setpoints. Tuning of loops is made more complicated by the response time of the process; it may take minutes or hours for a setpoint change to produce a stable effect. Some processes have a degree of non-linearity and so parameters that work well at full-load conditions don't work when the process is starting up from no-load. This section describes some traditional manual methods for loop tuning.
There are several methods for tuning a PID loop. The choice of method will depend largely on whether or not the loop can be taken "offline" for tuning, and the response speed of the system. If the system can be taken offline, the best tuning method often involves subjecting the system to a step change in input, measuring the output as a function of time, and using this response to determine the control parameters.
..................
Have you tuned the PID?
UTPBChemistry a écrit:
I have a VI built and in the system there is a PID Control sub-VI. However, when running the VI, the control does not seem to respond how it should. I was under the impression that as the process variable approached the setpoint the PID would not overshoot the setpoint by a great amount. I do not know if I have the wiring wrong (I'm a very new user to LabVIEW) or if I need to take another approach. Ideally, I want the to have a set temperature and control when the heater turns on and off until the actual temperature reaches the setpoint. I appreciate any help that you can provide.
Message Edité par Conseils le 12-10-2005 06:40 PM
12-12-2005 04:42 PM
Conseils,
I have attempted to automatically and manually change the PID parameters to make a better fit. However, the slope of the actual temperature does not show a decreasing rate until the overshoot occurred. Once overshot, the temperature begins to oscillate. Even while oscillating I cannot bring the cycles down enough manipulating the parameters. I believe that the subsequent output is the main problem but I cannot determine what is the matter with it.
Sincerely,
Mark
12-13-2005 07:30 AM
12-15-2005 04:32 PM
Dear Brian,
I have tried to apply the sample VI from the link you sent me but I cannot figure out what is still going wrong with the system. Do I need to totally revamp the VI and start from the PID or is there a way to convert the VI I have now into possessing a successful PID control system?
Sincerely,
Mark
12-16-2005 07:26 AM
There are a couple of things to try. Set your PID range from 0 to 100. It is not wired now, so is using the -100 to 100 range. You should only use the negative range if you have cooling capability. Use a setpoint level of 50, and a hysterisis of 5. You might also want to add a 'Wait until next ms multiple" function inside your loop. Try a value of 200. That would even things out and make tuning easier. A timed loop would be better, but probably not really needed. Now it is just a matter of tuning. You can try the autotuning. I've found that is helps to at least get you close to where you want to be.
You could also benefit by putting your indicators and controls into clusters. That would make your diagram much easier to follow.