Skip to main content

Kollmorgen Support Network

To better serve our Kollmorgen users with questions too complex to be addressed in this space, we made the painful decision to close this Community forum.

Please submit your question using the contact us form to reach our application engineering team.

For the immediate future, you can still access and read past posts.

Thank you for understanding and for participating in the community over the years.

Torque Control for Elevator/Counter Balance Application Help | 10 Jul 2017 | |

Torque Control for Elevator/Counter Balance Application Help

Hello, Im Hafiz Alsree working on final-year project about development of counterbalance mechanism for aerospace application in Nanyang Polytechnic.


I have an AKM3e servo motor to pull a load (Elevator application) and also to develop counterbalance with AKD-P00306-NBAN-0000 servo drive model.



I will be controlling the elevator system with labVIEW programming based on positioning control of the servo motor.

So, I need to develop a counterbalance between the torque of the servo motor and load pulled (1kg).

I got to know that Kollmorgen Workbench controls the servo motor's torque.

How do I set the torque of the servo motor?

Must I apply a specific amount of voltage and set the torque constant accordingly?

Must I tune the servo motor in a specific manner for counterbalance application?


Please advice and assist.


Hardware used: 

AKD3e servo motor


UMI 7772 (National Instrument)

NI 7340 (National Instrument)




Kollmorgen Workbench


Thank you.


Hafiz Alsree

Comments & Answers

jcoleman02 said ...

jcoleman02 |
Hafiz, You mentioned that you need to control the position of the motor.  So the AKD drive will be in position control mode and you will make Labview send target positions to the AKD drive, and the AKD will control the position of the motor.  The torque that the motor produces is controlled by the current output from the AKD drive.  The AKD will send the appropriate current to the motor to produce the required torque so that the position can be controlled.  The current and torque are controlled automatically within the AKD servo control loops.  You can limit current to a specified level, but you can't directly control the current while also controlling the position.

Hafiz Alsree | Tue, 07/11/2017 - 01:59

Thank very much jcoleman02 for the clear advice.
I would like to ask a few questions to have a clearer understanding.
1. If I want to control the position (elevator application) I have to use position control mode and if I want to control the torque (counterbalance with load) I have to use torque control mode? Is this true, or can I use torque control mode to control position as well because I still can control the position with torque control mode,

2. Must I tune differently for each position control mode and torque control mode?

3. So when, the motor is operating, I can control current only in torque control mode but not position control mode right?

Thank you and please advice.

jcoleman02 | Tue, 07/11/2017 - 13:15

There are three control loops available in the drive: current loop, velocity loop, and position loop. There are three operating modes: torque mode, velocity mode, and position mode.
In torque mode, you command the current that you want, which produces a certain amount of torque based on the motor's torque constant (winding characteristic). There is no control of velocity or position in the drive.
In velocity mode, you command the velocity that you want. The drive automatically controls the current to produce the torque at any given time in order to achieve the commanded velocity. There is no control of position in the drive.
In position mode, you command the position (or a position move profile with position, speed, acceleration, and deceleration). The drive automatically controls the velocity and current loops in order to move the motor with the defined motion profile.
The tuning is different for each mode, since the drive is closing different control loops.

Hafiz Alsree | Thu, 07/13/2017 - 10:11

Thank you for the explanation.

Now, I could control the position of the motor with labVIEW programming and AKD servo drive in torque mode.

If I were to control the position of a load, I need to have a certain torque to pull the load.
Could I use torque mode, then set the continuous current higher, so: continuous current (Arms) x constant torque (Nm/Arms) = torque (Nm)
Which I will have a higher torque to be able to pull the load.
So if torque is equal or less, I could not pull up the load but if torque is higher there is a resultant force upwards, hence motor could pull the load up.
^ Please verify if my understanding is correct.

So from my understanding, if i set the torque higher there will be resultant force upwards and hence I could pull the load and control the position of the load by controlling in my labVIEW programming. Is this the correct way?

Please advice and assist.

jcoleman02 | Thu, 07/13/2017 - 13:35

I don't think I will be able to teach you control theory in this forum. But to answer your question, you can have the drive in Torque mode and close velocity loop and position loop in a master controller. The control loops have some sort of PID algorithm and must have position feedback from the motor or drive. If Labview will handle these control loops then it is possible. In order to control position, you must have a closed position loop, velocity loop and current/torque loop. You can close the current loop in the drive and close the velocity and position loops in the master controller. The position loop outputs a velocity command. The velocity loop outputs a current command. The current loop commands the amplifier to output current to the motor, which produces torque in the motor and makes it move appropriately.

Hafiz Alsree | Sun, 07/16/2017 - 04:55

@jcoleman02 ,my reply is on the "Answer this question".
Please look on it.

Thank you!

Hafiz Alsree said ...

Hafiz Alsree |

Thank you and really appreciate the for an understandable explanation and guide.

I do have a position feedback (Encoder).

The control loops have PID algorithm where I will be tuning the PID loops based on a step response plot on NI MAX. Also, if I tune on NI MAX, must I tune on Kollmorgen Workbench for torque control?

I understand that the torque depends on current input to the servo motor and also you mentioned a chain that position controls velocity, velocity controls current, and current controls torque.

So how do I control the position and velocity to have a certain current command to produce the torque on the servo motor that I desired, is there a specific method to control it maybe by LabVIEW programming or controlling the current loop on Kollmorgen Workbench if possible (shown in the picture below)?

Must I input a specific current input, but seems that the values on the picture below (current command, torque constant, etc..) are already fixed or does controlling position and velocity automatically control the torque if a load is applied?

Please advise and assist.

Thank you very much!

jcoleman02 | Mon, 07/17/2017 - 14:56

The current loop is automatically "tuned" based on the motor parameter settings. So you don't need to do anything with the current loop gains.
The current command is the output of the velocity loop algorithm. If you run the drive in Analog Torque mode, then the current command is sent from the controller to the drive via the analog input signal. You need to set up the analog input scaling to match the analog output of the NI controller. If the NI is running EtherCAT communication, then the current command will be send via EtherCAT.

Hafiz Alsree | Tue, 07/18/2017 - 07:00

Thank you for your brief explanation.

To verify, velocity loop algorithm means the control of velocity, but how do I know how much velocity outputs how much current for torque?
Also, how do I set up the analog input in Kollmorgen Workbench to match the analog output of the NI controller?

I do not use EtherCAT communication, but instead I use Plug-In Motion Controller for PCI (PCI-7340).
Must I use labVIEW to program the current command to analog output to the drive?

Another thing to clarify, my servo motor, AKM32E, has a Continuous Torque (Stall) for T winding = 100 degree celsius of 2.04 Nm.

From my calculation, I require approx 0.55 Nm to pull the load.

Must I control torque to do this or I can just pull the load at any speed controlled by LabVIEW programming? (I require torque control to have a counterbalance of the servo motor and the load at later stage.)

jcoleman02 | Tue, 07/18/2017 - 13:52

When the velocity loop is closed, you don't directly command current. The velocity loop commands the appropriate current so that the motor produces the necessary torque to move at the commanded velocity. The current is automatically controlled.

Hafiz Alsree | Fri, 07/28/2017 - 09:17

So is there a way to command a specific torque? For example: I want to have counterbalance of motor and load (1kg), so how do I produce the same amount of force from the motor?
Because in the way you explained, I only can control the torque indirectly and control velocity to produce necessary torque, so again how do I control torque directly?

Also, I will have a loadcell to sense force and the motor must produce the same amount of torque from the force sensed.
How do you advice on operating this?

jcoleman02 | Fri, 07/28/2017 - 13:06

I will contact you directly about this.

About this Question

Hafiz Alsree