What’s the difference between a motion controller and a driver?
by Bob White, Nippon Pulse America, Inc.
There are numerous terms that float around the motion control world and they can sometimes be confusing to novice engineers. It also can be quite unnerving to design a motion controller into a machine platform only to realize later that another component is needed to actually drive the motors. Let’s clear up the terminology of what a controller and driver each refers to.
It all starts with the basics of servo control; specifically, the embedded loops that make up a typical servo system. What makes a servo motor a servo is the presence of a closed feedback loop. You can have a very simple system with just one loop, but most systems will incorporate three loops. The basic inner loop is a tied to motor current, which produces torque. The current loop is made possible by measuring the current drawn by the motor. (Since current is proportional to torque, this could also be called the torque loop.) We could stop here – ending up with a torque-controlled system. In this scenario, a motor that is connected to a source of power, able to apply a current waveform at the right voltage level based on a commanded input measured against the current feedback, provides a torque-controlled system.
What’s the driver, and what’s the controller in this case? In the servo world, the apparatus providing the power to the motor is called in proper terms, a servo amplifier, or in current vernacular, a driver. What about the controller? A current or torque driver is of no use unless there is a specific command to tell the driver what torque to produce. This command can come from a variety of sources, and is in essence the controller. The “controller” can be a simple potentiometer applying a +/- 10 Vdc signal to the driver based on the desired output torque, or a command from the output of the next loop – the velocity loop. From here, things can get somewhat complicated as to where the driver begins and the controller ends.
Let’s look at a more typical arrangement for a brushless dc servo system. In this case, there are likely three embedded loops with various compensation and filtering elements around these major loops. The inner loop is the current loop, which in turn is controlled via the velocity loop, which in turn is controlled via a position loop. The current loop will always reside in the driver, with the velocity loop and position loop residing in either the driver or controller. The torque loop is closed by measuring current in the motor windings, and the velocity is captured from a feedback element (typically an encoder), which also can be used for position information to close the position loop. Given the power of today’s microprocessors, most controllers have the ability to handle position and velocity loops, and simply provide the command required to the driver of the torque needed to achieve the commanded velocity and position.
The key word is command – the position command sets the three loops in motion (pun intended). As a desired position is requested, the controller observes the feedback to determine if that position is reached and updates the command to the velocity loop, which in turn observes the velocity feedback to determine if the commanded velocity is reached, updating the command to the current loop, which in turn is monitoring the current feedback to make certain it is maintaining the correct voltage to produce the desired current. All of this is being checked and adjusted at update rates in the micro second levels. In the simplest terms, a controller is the element that is applying the specific command to a position, velocity, or current loop, while a driver is providing the voltage and current to the motors as demanded by the controller.
Taking a deeper dive on this subject, controllers typically are microprocessor-based devices that have specific algorithms associated with how they generate the PWM signals that drive the power devices of the driver to shape the current and voltage wave forms that energize the motor. Controllers utilize feedback from the motor to determine how to commutate the motor so it spins appropriately as commanded by the microprocessor. The controller is typically a programmable device that stores and runs code developed for the application in order for the controller to operate. Programming can take place in a variety of languages, such as BASIC, C+/C++, VB, and the variety of languages specified in IEC 61131-3 code. Controllers have numerous safety elements that prevent overloads or stop motion in the event of some component failure. Drivers, on the other hand, tend to be focused on accepting the input commands of the controller and switching power transistors on and off to create the current and voltage required to meet the desired torque and speed as commanded.
With advances in microprocessors and new switching devices, controllers and drivers are becoming more and more intertwined. This is true mostly in centralized systems where all electronics are co-located in a single control cabinet. However, in decentralized solutions, the controller resides in the cabinet, yet the drivers are co-located near the motors and communicate with the controller through a motion field bus. But in the end, the delineation between controller and driver boils down to this: the controller is typically the brains, while the driver is the brawn.