09-05-2012 09:59 AM
Hello,
I have been trying to use PID control to automate using a reciprocating pump to pressurize a test piece with water. My output is an electronic regulator to control pump drive pressure. The PV is a pressure transducer. I have been successful coming up with settings for PI control using the open loop method. The problem is there is considerable difference between sample volume. The lag and deadtime seem fairly consistant but the process gain is different from sample to sample. If I tune the system for one sample volume and then test a bigger volume, the output increases considerably due to a lower pressurization rate of the new sample however it overshoots quite a bit before it even thinks to reduce the output. I have tried detecting the sample volume by measuring the initial pressurization slope and then using gain scheduling based on the slope detected. The problem is that this method isn't repeatable. Sometimes it chooses the correct settings and sometimes it misses. I have recently played with the linearity setting on the advanced PID vi and that seems to help but doesn't totally improve overshooting. The system is actually pretty linear but I think maybe the sample volume somewhat makes it operate non-linear. I have seen other controllers work well regardless of what the sample volume is so I know it can be done but I am apparently missing something. My inital thought would be that I should create PI or PID settings with no or low volume so my settings relate to the actual system (without test sample). Any ideas?
Thanks,
Dave
09-05-2012 03:32 PM
Dave,
Seems like you have thought this through, so I'll just put the obvious for completeness:
The gain scheduling you suggest sounds good. Just need to select a few sample volumes over range your controller will experience and tune each one separately, There are quite a few ways of doing gain scheduling - all with possible problems if not implemented correctly - either switch between different gains, or blend them together based on a weighting - I'm sure you can find some web-sites that explain that properly. One suggestion it might be good to use the ideal form of PID, as this may make tuning changes easier from one case to the other - i.e. it may just require scheduling of the proportional gain.
If you can think about the physics behind the nonlinearity, and come up with a relationship, then a more natural way to deal with the nonlinearity might be to put in the inverse nonlinear function so the controller effectively sees a (more) linear system. These all depend upo the nonlinear response being repeatable.
Hope this helps.
Andy
09-06-2012 11:48 AM
Andy,
Thanks for taking the time to reply. Yes, I am seeing consistancy in consistant sample volumes. As far as the reponse time being critical, I'm actually trying to maintain a desired pressurization rate. While how close I come to that rate isn't that critical, consistancy from one test to another is. The problem with accepting a slow but stable rate is my volumes vary from 2 in^3 to 600 in^3. I previously went that route and went from a roughly 3 minute manual pressurization time to a 30 minute one.
Fortunaly this morning I started working with changing the linearity input to zero or near zero. I'm starting see better response. I think that a low linear setting will get me there but I just need to play around the PID settings. I'm seeing an intitial output increase with larger volumes but it's finally slowing down as we approach zero error.
Thanks again,
Dave