Servo Velocity vs Torque control

Join Date
Apr 2002
Location
Just a bit northeast of nowhere
Posts
1,117
In all the servos I've done, I've always used either discrete positioning, or else velocity control with a preset torque limit.

Now I'm working on an application that has me wondering is torque control might be the better approach, but I'm not finding any clear-cut explanations as to what "torque control" means. I tend to think it's not as simple as assigning a fixed speed and varying the force applied by the armature.

This is a Yaskawa SGDH servo drive. Any thoughts?

TM
 
It depends on what you mean by 'torque control'. Taking that completely out of context I think you mean a drive that accepts a torque command as opposed to a velocity command. Keep in mind that this may be a semantic point if the motion controller and drive are the same physical piece of hardware or if this is a high speed bus based system (SERCOS, ServoWire, Lightbus, MACRO, EtherCat, etc).

I'm sure guys like Peter Nachtwey have done extensive analysis on this and have very definite opinions on the subject. In my case the highest performance servo system I have ever personally touched was a torque based controller. I like the torque command method mostly because it allows you to do profile based command side feed forwards pretty easily. To a large degree these feed forwards define where torque is added to the motor command. Being able to easily influence this torque is pretty nice. I also like the idea of having only one set of gains to worry about in one location.

On the down side many people don't have a good feel whn looking at a torque command to a drive. If you have a high inertia low friction system you can have your motor running at ludicrous speed with a near zero torque command. The command to accelerate the motor at a constant acceleration is a flat line at some torque level. Many people seem to have a hard time getting their arms around this.

Most of what I listed above is personal preference. Run the system you feel comfortable with. Assuming the drive velocity loop is sufficiently fast there probably isn't much difference. In the final analysis you need a certain number of control elements to make your system work. You are essencially asking 'Where is the best place to put these functions?'.

Keith
 
I like torque control.

Torque is roughly proportional to the input current and the accelerations of what is being controlled if one ingores resistive and frictional losses. I you torque conrol at the office and do all my servo testing using torque control. I think one gets better conrol. The down side is that one just can't use a PLC to send an analog voltage to the drive because the now the acceleration is proportional to the control voltage, not the velocity.

More latter. I am at a trade show, I spent a hour last night 'geek speaking' about servos and control algorithms with a Siemens drive expert. This one is very good. It was interesting to get different perspectives. I liked it a lot.
 
Thanks guys. Peter, I'm glad you're enjoying the show.

When you have a moment, could you elaborate on this a bit?

Peter Nachtwey said:
The down side is that one just can't use a PLC to send an analog voltage to the drive because the now the acceleration is proportional to the control voltage, not the velocity.

Based on yours and Keith's statements, here are some assumptions to verify or knock down -

1. Torque is based on analog input, speed is set as a constant.
2. Accel is proportional to torque command, if load and speed are constant.
3. If load increases, and torque command is unchanged, accel will take longer. This differs from velocity command, which matches speed to analog command regardless of load (within limit).
4. Conversely, if load is decreased, or minimal, accel will drive to maximum speed immediately, as Keith described.

Does this mean that if I apply a torque command to a given load, and reach the amount of motive force targeted prior to acheiving my speed, that I will never achieve the top speed with that particular load/command combination? How would you use something like that?

Thanks! I'm learning alot from this one...

TM
 
Last edited:
I'm going to reply largely to have my own assumptions checked. I'm learning every day, too.


1. Torque is based on analog input, speed is set as a constant.

Part of what can make this confusing is that we tend to describe things in a vacuum. To a certain degree you need to do that to make things clear but that method can add confusion of its own.
For the first part, yes, the command to the drive is a torque reference. However, the drive itself is not concerned with speed at all. Don't think of this as torque limiting. Think of it purely as a torque sepoint with no regard for speed.
In a true closed loop system the velocity control function is performed by the controller developing the torque command. So the torque corrections required to stay on velocity are performed by the controller not the drive.


2. Accel is proportional to torque command, if load and speed are constant.

Yes and no. Accel it proportional to torque if the load stays constant. Given that the speed will increase until you reach the electrical limit of the motor (maximum bus voltage). With a constant, unregulated torque reference and a constant load there is nothing to control speed. This is one of those in a vacuum things. In this case speed is a consequence of applied torque, not a controlling or directly limiting factor.


3. If load increases, and torque command is unchanged, accel will take longer. This differs from velocity command, which matches speed to analog command regardless of load (within limit).

This is correct, keeping in mind that accel will continue until the electrical limit of the drive system is reached. As you said, it just takes longer.

4. Conversely, if load is decreased, or minimal, accel will drive to maximum speed immediately, as Keith described.

To a degree. You will always have motor rotor inertia to deal with. That inertia will result in an absulute maximum acceleration rate. As an aside, I have been equating load in this context to rotational inertia. In reality, as long as you have some inertia, all the things we are talking about are true regardless of the source of the load, be it friction or added inertia. In the impossible system that has no inertia but has friction the acceleration rate would be infinite for any torque above the friction load and zero for any torque below it.


Does this mean that if I apply a torque command to a given load, and reach the amount of motive force targeted prior to acheiving my speed, that I will never achieve the top speed with that particular load/command combination? How would you use something like that?

I'm a little confused by this one. By 'motive force' do you mean the drive bus limit? Basically, in a purely theoretical system with no limits, any torque command that is greater than the load will cause the motor to continuously accelerate toward infinity. For any given load constant torque will produce constant acceleration. Velocity is the time integral of acceleration. If you hold acceleration constant and don't put a limit on time then velocity just keeps increasing.

As you noted, that exact system doesn't have much use. However, most systems will have a controller of some type generating the torque command to the drive. This controller is what is concerned with the motor velocity and will modify the torque command to keep the motor speed at the desired level. In the vast majority of systems the velocity controller doesn't disappear. It just changes venues from the drive to the controller and may have a slightly different form. But it's still there.

Keith
 
kamenges said:
I'm going to reply largely to have my own assumptions checked. I'm learning every day, too.

That's what makes it fun :)

kamenges said:
Part of what can make this confusing is that we tend to describe things in a vacuum. To a certain degree you need to do that to make things clear but that method can add confusion of its own.

Absolutely. I would like to be more specific, but I don't have enough info to ask specific questions yet. Have to start with the high-falutin' conceptual stuff first.

kamenges said:
For the first part, yes, the command to the drive is a torque reference. However, the drive itself is not concerned with speed at all. Don't think of this as torque limiting. Think of it purely as a torque sepoint with no regard for speed.

That clarifies it a bit.


kamenges said:
In a true closed loop system the velocity control function is performed by the controller developing the torque command. So the torque corrections required to stay on velocity are performed by the controller not the drive.

That clarifies it a bit further.

kamenges said:
Yes and no. Accel it proportional to torque if the load stays constant. Given that the speed will increase until you reach the electrical limit of the motor (maximum bus voltage). With a constant, unregulated torque reference and a constant load there is nothing to control speed. This is one of those in a vacuum things. In this case speed is a consequence of applied torque, not a controlling or directly limiting factor.

My servo mentions that target speed is set as a register within the drive. I assumed this to be the speed it would reach with no load, a velocity limit if you prefer, and I guessed the controller would have to manipulate the torque command to maintain velocity - I just had no idea how.


kamenges said:
I'm a little confused by this one. By 'motive force' do you mean the drive bus limit? Basically, in a purely theoretical system with no limits, any torque command that is greater than the load will cause the motor to continuously accelerate toward infinity. For any given load constant torque will produce constant acceleration. Velocity is the time integral of acceleration. If you hold acceleration constant and don't put a limit on time then velocity just keeps increasing.

When I visualize this system, I imagine the motor connected to an immobile load, something it cannot turn. Placing a torque command on the drive will make the drive attempt to turn up to the point the command is reached, and could be measured by an appropriate meter (torque gauge?)

Moving from this, I imagine a load requiring some degree of torque to turn it, say 100 inch-lbs. This theoretical load will not move at all until this threshold is reached, and will move freely above this level (I know, vastly over-simplified, but I'm trying to be simple here). Applying a torque command below this level does nothing, and above it turn the load.

From what you describe, my imaginary load would move once the torque setpoint is high enough, then accelerate out of control. This is interesting to me - I'd imagined something akin to "terminal velocity" where you could only move a given load, with a given force, at a certain speed. Think Ohm's Law - torque/load = velocity, or something similiar.

But the more I think about it, the more sense it makes - once the load breaks free from it's friction and inertion, the torque load on the drive will reduce. Like pushing a car, hard to start, easier once it's rolling.

kamenges said:
As you noted, that exact system doesn't have much use. However, most systems will have a controller of some type generating the torque command to the drive. This controller is what is concerned with the motor velocity and will modify the torque command to keep the motor speed at the desired level. In the vast majority of systems the velocity controller doesn't disappear. It just changes venues from the drive to the controller and may have a slightly different form. But it's still there.

Keith

So the controller will reduce the torque command to manage the speed? This means that in the closed loop system, the drive is always accelerating or decelerating - which it would anyway under velocity control. So is it actually stable enough to do accurate positioning?

This is getting more interesting the further we go!

TM
 
I'll try to clarify this some.

My servo mentions that target speed is set as a register within the drive. I assumed this to be the speed it would reach with no load, a velocity limit if you prefer, and I guessed the controller would have to manipulate the torque command to maintain velocity - I just had no idea how.

I suspect this register isn't used if the drive is run with a torque command. In torque mode the drive shouldn't be concerned with speed at all.

When I visualize this system, I imagine the motor connected to an immobile load, something it cannot turn. Placing a torque command on the drive will make the drive attempt to turn up to the point the command is reached, and could be measured by an appropriate meter (torque gauge?)

This is correct. Assuming there is little or no shaft displacement this torque value will be reached quite quickly. How quickly thins level is reached is based largely on the drives current loop bandwidth.


Moving from this, I imagine a load requiring some degree of torque to turn it, say 100 inch-lbs. This theoretical load will not move at all until this threshold is reached, and will move freely above this level (I know, vastly over-simplified, but I'm trying to be simple here). Applying a torque command below this level does nothing, and above it turn the load.

This is similar to the friction only load with no inertia I talk about in my previous post. In that case the motor would jump to the bus limit speed as fast as the drive can commutate it. This is a fairly unrealistic load but what you describe based on that load is essentially correct.


From what you describe, my imaginary load would move once the torque setpoint is high enough, then accelerate out of control. This is interesting to me - I'd imagined something akin to "terminal velocity" where you could only move a given load, with a given force, at a certain speed. Think Ohm's Law - torque/load = velocity, or something similiar.

Torque to velocity is not a direct relationship like Ohm's Law. It is an integral. Think of it more like a water hose filling a bucket. If the bucket is sealed (no external friction losses) the volume of water in the bucket (velocity) will continue to increase until it overflows (bus voltage limit). The bucket will eventually overflow no matter how slow the feed water (torque) trickles in. Bigger buckets (larger intertias) fill more slowly but will also eventually overflow.
On a side note, the integration of torque/force into velocity is why ion drives and solar sails are such popular ideas for deep space travel. The forces are small but they are constant and limited only at the speed of light. Applied long enough a body would reach ludicrous speed.

But the more I think about it, the more sense it makes - once the load breaks free from it's friction and inertion, the torque load on the drive will reduce. Like pushing a car, hard to start, easier once it's rolling.

In this case think mostly inertia. That is what really makes the car hard to push. But again, if you apply the constant pushing force long enough the car will end up going really fast. The problem is you can't continue to apply the same amount of force as the car's speed increases. To a large degree a drive/motor combination can until it hits it's bus voltage limit.

So the controller will reduce the torque command to manage the speed? This means that in the closed loop system, the drive is always accelerating or decelerating - which it would anyway under velocity control. So is it actually stable enough to do accurate positioning?

Yes, the controller will control the torque command level to achieve any goal the controller is trying to achieve. If the goal is velocity control then torque is controlled to maintain velocity. In reality the controller will produce the required torque command to accelerate the load to the desired speed and then basically go into a torque balance with the system friction. The controller doesn't intentionally accel and decel the load. That jsut happens as a consequence of trying to stay on the setpoint.

Keith
 
Good question.

TimothyMoulder said:
From what you describe, my imaginary load would move once the torque set point is high enough, then accelerate out of control. This is interesting to me - I'd imagined something akin to "terminal velocity" where you could only move a given load, with a given force, at a certain speed. Think Ohm's Law - torque/load = velocity, or something similar.
TM

Yes, it does in open loop or manual control and that is the down side of torque control. The motor will accelerate until the net torque applied on the motor is zero. As Keith pointed out there is a voltage build up ( Vemf ) that reduces the apparent voltage across the motor so that current and torque start to drop off as the motor RPM builds up. There are also resistive elements that limit the maximum current for any voltage.

The result is that torque control should not be used in manual or open loop modes. Most of my customers like to use velocity control because of this fact.

Study this:
http://www.mathworks.com/access/helpdesk/help/toolbox/control/getstart/buildmo4.html#1010945
If I created a Scilab model of this would anybody be interested?
The forumulas above make NO sense to most until one can adjust the parameters and see the change in the results. Then one start to build an intuitive feel for what is happening.

BTW, torque control is still servo control. I like torque/acceleration control because it provides better control just like putting accelerometers on hydraulic systems provides better control. Acceleration is a leads velocity. Velocity leads position. Using position control only is 'old news' unless one has an internal model that is computing the velocity and acceleration. However, the models are not quite as accurate as knowing the true acceleration.

I do a lot of hydraulic control. The analogy between motors and hydraulics is that the current feedback is similar to the differential force across the piston or motor. In each case the motor or actuator should accelerate in proportion to the force or torque except there is friction or obstructions that keep the load from moving. An accelerometer measures the acceleration after the effects of friction have been taken out.

There was a thread about torque limiting and using current to predict torque values. This is not a good idea. The current that goes to the motor is not DC value anymore. Using a filter is too slow. Most motion controllers or drives should have a 'modeled' and DC value of what the torque is. It is this value you would want to use.
 
Peter Nachtwey said:
Yes, it does in open loop or manual control and that is the down side of torque control. The motor will accelerate until the net torque applied on the motor is zero. As Keith pointed out there is a voltage build up ( Vemf ) that reduces the apparent voltage across the motor so that current and torque start to drop off as the motor RPM builds up. There are also resistive elements that limit the maximum current for any voltage.

The result is that torque control should not be used in manual or open loop modes. Most of my customers like to use velocity control because of this fact.

Okay, makes sense


Peter Nachtwey said:
Study this:
http://www.mathworks.com/access/helpdesk/help/toolbox/control/getstart/buildmo4.html#1010945
If I created a Scilab model of this would anybody be interested?
The forumulas above make NO sense to most until one can adjust the parameters and see the change in the results. Then one start to build an intuitive feel for what is happening.

Since you stated it, they make little sense to me either at the moment. What sense they do make is the direct result of this discussion - but they still lost me on the third one. Yes, I for one would like to see a model.

Peter Nachtwey said:
BTW, torque control is still servo control. I like torque/acceleration control because it provides better control just like putting accelerometers on hydraulic systems provides better control. Acceleration is a leads velocity. Velocity leads position. Using position control only is 'old news' unless one has an internal model that is computing the velocity and acceleration. However, the models are not quite as accurate as knowing the true acceleration.

Just how does acceleration control provide better control? In my work, I've always just shot for the fastest accel/decel without overshoot. I'm trying to change my thinking to accomodate this new information, but I'm having trouble rationalizing this one. Does it help prevent overshoot?

Peter Nachtwey said:
I do a lot of hydraulic control. The analogy between motors and hydraulics is that the current feedback is similar to the differential force across the piston or motor. In each case the motor or actuator should accelerate in proportion to the force or torque except there is friction or obstructions that keep the load from moving. An accelerometer measures the acceleration after the effects of friction have been taken out.

But why would you want to remove the effects of friction? Are they not a critical factor that you would need to take into account?

edit - wait a minute, by "taken out" do you mean "accounted for" rather than "eliminated"? In this case, controlling the torque would manipulate the entire mechanical system without respect to it's mass or any obstructions, using on the final net motion produced as it's feedback, equalizing all other factors. Yes? No? Totally off-base? - end edit

Peter Nachtwey said:
There was a thread about torque limiting and using current to predict torque values. This is not a good idea. The current that goes to the motor is not DC value anymore. Using a filter is too slow. Most motion controllers or drives should have a 'modeled' and DC value of what the torque is. It is this value you would want to use.

Could you elaborate on this a bit? Perhaps an example?

Keith, you mentioned you liked having "only one set of gains to worry about". I know that velocity positioning uses two, the velocity and the positioning (der) so how does torque control evade one of these?

Thanks for everything guys!

TM
 
Last edited:
Two topics-Acceleration and Torque. Cascaded loop or combine.

TimothyMoulder said:
Yes, I for one would like to see a model.
Ok, but that will take a few days and it may be a new thread.

TimothyMoulder said:
Just how does acceleration control provide better control?
First off, smart drives usually do velocity and acceleration control. From the outside world you provide a voltage reference of 5 volts and the drive tried to move at half speed.
It is this fact that so many of you take advantage of when you control the drive from the PLC.

A smart drive has its own PID that closes the loop around velocity. The drive probably has it down PID gains and feed forwards. The drives proportional term, Kp, is mulitplied by the error in velocity. The integrator term, Ki, is multiplied by the integral of velocity errors.

[Change topic]BTW, the integral of velocity errors is the position error. Think about that because it is important. The velocity Ki and the positon Kp do about the same thing!!! They are duplicate gains that will interfere with each other. If one is made higher the other must be made lower. This is why I like to keep the gains all in one spot where I have control. So do the drive manufacturers except they want to do the position and velocity control in the drive. [/Change topic]

Velocity Kd is multiplied by the error in ACCELERATION! Velocity Kd may not be necessary but in many cases it will make the system much stiffer and reduces oscillation in a similar way Kd helps out a position or temperature system.

TimothyMoulder said:
In my work, I've always just shot for the fastest accel/decel without overshoot. I'm trying to change my thinking to accomodate this new information, but I'm having trouble rationalizing this one. Does it help prevent overshoot?
Yes, it can because it adds damping to the velocity loop. The velocity Kd must be properly tuned.

TimothyMoulder said:
But why would you want to remove the effects of friction?
I don't. I was just pointing out that measuring torque and rotational acceleration are two different things. One can apply torque but that doesn't mean the load will rotate.

TimothyMoulder said:
Are they not a critical factor that you would need to take into account?
It depends. On big hydrualic the rod and piston friction can be ignored. For our discussion here one must always be aware that just because one applies force or torque, that doesn't mean there will be acceleration.

TimothyMoulder said:
edit - wait a minute, by "taken out" do you mean "accounted for"
Yes.

TimothyMoulder said:
Could you elaborate on this a bit? Perhaps an example?
Just because a motor applies torque to a load that doesn't mean it will start to accelerate if there is too much friction or the load is really an obstruction. Meausring torque and rotational acceleration are two different things. I sould like a broken record.

TimothyMoulder said:
Keith, you mentioned you liked having "only one set of gains to worry about". I know that velocity positioning uses two, the velocity and the positioning (der) so how does torque control evade one of these?

Have you been PMing Keith?
As I explained above there is overlap in the velocity and position loop gains.

Think about this. If the closed loop system has only one position feedback then the inner velocity loop and outter position can be combined. The gains combine as follows:


Position Velocity
Ki
Kp and Ki combine
Kd and Kp combine
Kdd and Kd combine // Kdd, double derivative?



Notice that a cascaded loop outter position loop doesn't require a Kd or Kdd is this is handled by the inner velocity loop. An outter PI control will do. The position Kp can be fixed and only the Ki realy needs to be tweaked.

A cascade loop is beneficial only if inner loop has a different feedback device from the outter loop. In our motor example a tach would be a good example. Some motion controllers implement an inner and outter loop even though there is only one feedback device. I think this just provides more gains to tune and interfere with each other with no real benefit and the loops should be combined.

The motion controller guys would really prefer the drives be dumb transconductance ( voltage to current ) amplifiers and let the motion controllers do all the 'thinking' in one spot, the motion controller. The drive guys say the same thing except that the drives should be smart and do all the 'thinking'.

Just beware the gains in the inner and outter loops do interact.
 
Timothy was referring to something I wrote in my initial reply. Peter's answer is what I was referring to. I just didn't expand on it.

Referring to Peter's point about where the intelligence resides, I'm more of a motion controller type of guy. The drive would have to be REALLY intelligent before I would see the benefit of split gain groups. If the drive can't do complex profiling, generate command side feed forwards, provide a hook directly into the torque reference, as well as close the position and velocity loops at a high rate (effectively have an on-board high performance motion controller), I would go motion controller with torque command interface.

Keith
 

Similar Topics

Hi all, I am having a problem with my servo motor and I'm absolutely stuck as to why it wont run. Without any gearbox or any load attached to...
Replies
9
Views
3,634
Hello, I am using Kinetix 300 with CompactLogix (Ethernet IP) and it works well, but happened twice along one day the following situation: I...
Replies
0
Views
1,965
Hi all, A customers rotary knife servo system is giving random cut length errors. Unfortuanetly i havent had the machine to look at what is wrong...
Replies
2
Views
2,138
Hello all, I'm currently working on a servo motor linear positioning system (ball screw). I'm all set up regarding communication between my HMI...
Replies
1
Views
86
Hi all, I am having a machine with old 802d sl siemens controller. I am trying to tune servo by Siemens starter software. Anyone experienced...
Replies
0
Views
65
Back
Top Bottom