Allen Nelson
Member
PID Loop Updates
Ron:
This is the sort of information that I've been trying to get a deifinitative answer for YEARS. Not the tuning stuff, but some "best practices" in regards to how to tune an AB PID block.
Take this line from the RSLogix5 help file:
What I think they are saying is that if I set KI to zero, and lower KP until I get an oscillation, the timer preset should be about 1/5 to 1/10 of the peak-to-peak time. Is this correct?
One thing I have done (but abandoned but am considering reviving) is to do a MOV of the timer preset to the PID's Loop Update Time address. Change the frequency in the timer, change the PID, right?
But take a look at the PID equations:
[attachment]
If the dt term is doubled (i.e., if the timer preset term is doubled), then the KI term should be halved, to keep the tuning the same.
Unless you are using ISA, in which case the TI term should double (since KI = 1/TI)
This a simple MOV becomes a oneshot check which PID type and double or half the Integral value. Ditto for derivative (only opposite, since [/i]dt[/i] is in the demonimator).
All this to prevent someone who's inside the PLC from doing harm if he isn't clear on what he's doing and understands what I did.
Independent v. Dependent? Is there an application where one is more appropriate to use over the other, or is it just a matter of how and when you learned to tune / what you are used to?
How about "Derivative on Error" v. "Derivative on PV"?
I notice that Sparky's using an N-type controlled PID, instead of a PD-type, even though he has a 5/40E, which supports PD data files. Would there be any advantage to using PD (other than ease of addressing)?
Ron:
This is the sort of information that I've been trying to get a deifinitative answer for YEARS. Not the tuning stuff, but some "best practices" in regards to how to tune an AB PID block.
Take this line from the RSLogix5 help file:
Loop Update Time
Enter an update time (greater than or equal to 0.01 seconds) at 1/5 to 1/10 times the natural period of the load (load time constant). Valid range is 1 through 32,767 seconds. The processor divides the entry value by 100 for calculations. The load time constant should be greater than:
1ms(algorithm) + block transfer time (ms)
Periodically enable the PID instruction at a constant interval equal to the update time. For update times of less than 100 msec, use an STI. When update times of greater than 100 msec, use a timer or a real-time sampling.
© 1997 Rockwell Software Inc.
What I think they are saying is that if I set KI to zero, and lower KP until I get an oscillation, the timer preset should be about 1/5 to 1/10 of the peak-to-peak time. Is this correct?
One thing I have done (but abandoned but am considering reviving) is to do a MOV of the timer preset to the PID's Loop Update Time address. Change the frequency in the timer, change the PID, right?
But take a look at the PID equations:
[attachment]
If the dt term is doubled (i.e., if the timer preset term is doubled), then the KI term should be halved, to keep the tuning the same.
Unless you are using ISA, in which case the TI term should double (since KI = 1/TI)
This a simple MOV becomes a oneshot check which PID type and double or half the Integral value. Ditto for derivative (only opposite, since [/i]dt[/i] is in the demonimator).
All this to prevent someone who's inside the PLC from doing harm if he isn't clear on what he's doing and understands what I did.
Independent v. Dependent? Is there an application where one is more appropriate to use over the other, or is it just a matter of how and when you learned to tune / what you are used to?
How about "Derivative on Error" v. "Derivative on PV"?
What kind of system WOULD you use "On Error" with?...for most systems you’ll get better results with this set for PV....
I notice that Sparky's using an N-type controlled PID, instead of a PD-type, even though he has a 5/40E, which supports PD data files. Would there be any advantage to using PD (other than ease of addressing)?
Last edited: