Machinedesign 1384 Simple Velocity Loop 200 700 0 0

20 Minute tune-up: Zoning in on position loops

July 1, 2000
The most basic servo control loop used throughout industry is a velocity loop

The most basic servo control loop used throughout industry is a velocity loop. In its simplest form, it compares an analog command to an analog tachometer output. The resulting error signal generates a current that produces torque which, in turn, speeds or slows the motor to satisfy the velocity command.

The most common velocity loop is the proportional-integral (PI) loop. It has two gains: a proportional gain KVP (which reacts to the velocity error) and an integral gain KVI (which reacts to the integration of the error).

A velocity loop fulfills many of the needs of a servo loop, responding rapidly to changing commands and resisting high-frequency load disturbances. However, it can’t keep a machine in position over long periods of time. Because most machines require position control, velocity loops are usually implemented in series with a proportional position loop.

In a series, or cascaded, position-velocity loop, the position loop compares position commands with actual position (feedback) to calculate the corresponding following error. This signal is scaled by a multiplier KP to generate a velocity command. The principle here is simple:

The greater the position error, the larger the velocity command and, hence, torque, which moves the motor in a direction reducing the error.

Years ago, position and velocity loops had separate sensors. An encoder or resolver provided feedback for the position loop, while an analog tachometer provided velocity feedback. Today, most servo systems rely solely on a position feedback sensor, deriving velocity by differentiating the position signal.

Tuning cascaded position-velocity loops can be rather challenging because there are three servo gains to deal with – the position loop gain KP and the proportional and integral velocity gains, KVP and KVI. Using a “hit-or-miss” method naturally can absorb a lot of time. Fortunately, once you understand the role of each gain, you can tune them independently, saving time and ensuring consistency.

Each gain imparts its influence in one of three frequency “zones.” The highest zone, typically 30 to 100 Hz, is where the velocity-loop proportional gain does its work. The velocity-loop integral gain covers the middle zone, between 10 and 30 Hz, while the position-loop gain handles everything below that.

Tuning begins at the highest zone. To “turn off” the lower zones, set KVI to zero and select the velocity mode, which deactivates the position-loop gain. Then, inject a square-wave velocity command, making it as large as possible without saturating the current controller (0 to 250 rpm usually works well). Next, adjust the velocity-loop proportional gain, raising it as high as possible without causing overshoot in the velocity response.

Zone 1 is the most difficult to tune because resonance (October, 1999) and audible noise (July, 1999) are excited by KVP. For this reason, you might want to consider using low-pass filters to attenuate undesirable frequency components, but be careful because filters tend to cause instability and force servo gains lower.

Once the velocity-loop proportional gain is set, it’s time to tune the velocityloop integral gain. Leaving the command signal as it was, raise the integral gain from zero until there is just about 15% overshoot.

The final zone, Zone 3, involves the position- loop gain. To tune KP, you need to get the controller in the position mode (most controllers provide a variable that lets you make this change). Next, set the command to produce a point-to-point move at the maximum acceleration rate likely to occur in normal operation. When that’s done, increase the position-loop gain until just before the response starts to overshoot. These settings will provide fairly efficient motion in any system.

Take time to tune

If you’re ready to try tuning a cascaded position-velocity loop, log on to www.motionsystemdesign.com and download this month’s ModelQ simulation program. Launch the program, select July’s model, and click “Run.”

You should be looking at a squarewave response to the velocity-loop proportional gain. The value is set a little low (0.6), so raise it until the response just overshoots and then reduce the gain slightly to eliminate the overshoot (KVP = 1.1). Next, raise KVI, adjusting for about 15% overshoot (KVI = 100).

To tune the position loop, you must first configure the model as a position controller. Set the gain KVF to 0% (it was initially set to 100% to simulate a velocity controller). Select a trapezoidal velocity command next by choosing “Trapezoid” in the waveform generator at bottom left. Finally, raise KP to just below the point where the system begins to overshoot (KP = 250).

Next month’s column will explore PID position loops and how they compare to cascaded position-velocity loops.

George Ellis is a Senior Scientist at Kollmorgen, Radford, Va. His book, “Control System Design Guide,” 2nd edition, published in May, 2000 by Academic Press. He can be reached at [email protected].

Sponsored Recommendations

Precision Motion Control for Robotics Systems

April 8, 2024
Learn more about Precision Motion Control for your Robotic Systems through Harmonic Drive's latest Webinar!

KNF Pumps Revolutionize Desert Dust Tracking

April 3, 2024
The Sahara Desert is one of the biggest sources of dust worldwide. KNF air sampling pumps help tracing this particulate matter air pollution.

Introducing the Mass Flow Rate Calculator

April 3, 2024
The KNF Mass Flow Rate Calculator makes it easy to convert volume flow rate to mass flow rate. Simply enter the volume flow and the gas or gas mixture.

Explore KNF's Cutting-Edge DC-BI Pump Drive Technology

April 3, 2024
With six new DC-BI pump series, KNF launches an entirely new pump drive technology relying on advanced BLDC motors and achieving unprecedented advantages.

Voice your opinion!

To join the conversation, and become an exclusive member of Machine Design, create an account today!