Changes

Main Page

3,403 bytes added, 00:24, 15 May 2017
I Gain/Max Limit Integrator
<div class="yiv2818182665class" style="color: #000000; font-size: 13.3333px; font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; background-color: transparent; font-style: normal;"></div>
===I Gain/Max Limit Integrator===
I (Integrator) Gain can be used to eliminate persistent errors.  In fact any Integrator Gain at all guarantees the average error over infinite time is zero.  Without I Gain a system might have a small error that does not create enough output to overcome stiction to make a correction.  In such a case the error could persist forever.  Not so with any Integrator Gain.  Any error will be integrated and ramp the output higher and higher until eventually there will be a correction.  That assumes the Integrator or Output doesn't saturate or reach their programmed limits.  The rate the output ramps (or sums) is dependent on the size of the error and the I Gain value.  The Error x I Gain is summed every servo sample (90us).  This is why I Gain values are often small numbers (0.0001 - 0.01 typical range).  There is no guarantee that the position doesn't over shoot the target Destination.  In fact it is likely as as any error (area) under the trajectory will always be balanced by an equal area over the trajectory.  Too high of I Gain will make the system unstable.
 
 
Another case where I Gain is useful is when moving at high speed with a Velocity Amplifier.  To move at high speed a significant amount of output is required.  Without I Gain a significant amount of error could be required to provide this Output (ie Error x P Gain = Output).    With I Gain the Integrator will eventually ramp up to provide any Output necessary to move at the desired speed driving the error to zero.
 
 
Integrators have an issue often referred to as "Integrator Wind Up".  This issue usually doesn't arise under normal conditions.  However if something is preventing the servo from making a correction such as forcing the position away from the target for a sustained amount of time, or disabling the amplifier, the Integrator will integrate to a huge unlimited value.  When the force is removed or amplifier re-enabled, the Integrator will likely cause a violent motion and overshoot.  Max Limit Integrator can help to minimize this issue by limiting the amount the Integrator can ramp up to.  So the Max Limit Integrator Value should be set at the minimum value that can still allow the Integrator to function in normal circumstances.
 
 
Typically there are two cases that should be considered when determining the Max Limit Integrator. 
 
# The amount of output expected to be required to overcome any stiction, friction, or other forces (cutting, gravity, etc...).  This is often not a large value and can be estimated or can be observed from the Step Response Screen (green plot right side scale is the output) when making a move.
# The amount of output required to provide the output needed to move at speed.  It is important to note that D Gain provides a damping or drag effect on the Output.  So the Integrator must be able to ramp up to a sufficient level to overcome the damping or drag effect and still provide enough output to move at the commanded speed.  For example:
 
 
Assume:
 
# Commanded speed of 500,000 counts/sec
# D Gain of 35
# Output required to move at speed is 1800 DAC Counts
# Servo Sample Time of 90us
 
 
Damping effect = Speed x D Gain x Sample Time = 500000 x 35 x 90e-6 = 1575 counts
 
 
Required Integrator Value = 1800 + 1575 = 3375
 
 
So to provide some margin an Max Limit Integrator Value of 3500 might be used.
 
=== ===
===Bode Plots===
A Bode Plot is a powerful tool for characterizing and providing insight into a dynamic system. It can help determine closed loop stability, bandwidth/performance, resonant frequencies, and more. It is entirely based on the system being linear. Linear in the sense that if the amplitude of some input signal is changed then the output signal will change proportionally as well. Unfortunately most systems are not entirely linear. Stiction, backlash, encoder quantization, amplifier saturation, and other effects are non-linear. For example driving a system with a signal too small to overcome stiction will result in no output at all whereas a larger signal will result in some output. This is clearly non-linear behavior. It would be nice to use a technique that handles non-linear systems but basically none are known.<br /><br />A Bode Plot is made injecting a stimulus to the system and observing how the system responds. For the reasons of non-linearity it is very important to perform a Bode Plot measurement using a representative level of stimulus similar to what the system will actually have during normal operation. If the Stimulus is not adjusted properly the result is likely to be completely invalid. Additionally the system should be reasonably tuned and stable so that it is responding in a reasonable way to the stimulus. If the system is unstable or very poorly tuned the result is likely to be completely invalid.<br /><br />You might think of it somewhat like shaking a box to determine what is in it. You should shake it with enough intensity and at frequencies to get some reaction, but not so high of intensity to break or distort the object inside.<br /><br />To create a Bode Plot use the KMotion.exe Bode Plot Screen. First select Plot: Time domain - Command, Position, Output vs Time and adjust the Amplitude and cutoff Freq until there is small but significant Position (red) changes (ie 50 encoder counts), at a frequency low enough that the Position at least somewhat attempts to follow the Command (blue), and where the Output (green) is not near saturation for the Drive being used.<br /><br />After the Stimulus/Noise Injection settings are set switch to Plot: Open Loop - Magnitude and Phase vs Frequency. Set the number of Samples to average (ie 20) and perform a Measurement.  [http://dynomotion.com/Help/BodeScreen/BodeScreen.htm See here for more information].
Bureaucrat, administrator
469
edits