KUKA System Software 8.3
6.16
Torque mode
6.16.1 Overview of torque mode
Description
Restriction
The torque mode function consists of the sub-functionalities torque limita-
tion and deactivation of monitoring functions.
Torque limitation:
The torques, i.e. the motor current, can be limited for individual axes or multi-
ple axes. Torque limitation enables the following applications:
The axis can push or pull with a defined torque against a resistance.
Example:
application of a defined pressure on the workpiece by an electric motor-
driven spot welding gun.
The axis can be set to soft. It can then be moved by application of an ex-
ternal force. It can be pushed away, for example.
Examples:
The robot must grip a workpiece in a press that is then ejected by the
press. In order for the robot to be able to yield and absorb the ejector
stroke, the affected axis is set to soft.
The robot must set a workpiece down at a point from which it can be pulled
into exactly the right position by means of clamps. The robot must be com-
pliant for this.
Deactivation of monitoring functions:
The torque limitation generally results in a relatively large deviation between
the command position and the actual position. Certain monitoring functions
are triggered by this deviation, although this is undesirable with torque limita-
tion. These regular monitoring functions can thus be deactivated.
The following restriction must be taken into consideration if axes are to absorb
ejector motions:
A diagonal ejector motion cannot generally be absorbed by switching a single
axis to soft. Remedy:
In the case of slightly diagonal ejector motions, a possible remedy is to in-
stall the robot with a slight inclination.
Or contact KUKA Roboter GmbH.
Inclined installation of the robot is only permissible up to a certain an-
gle of inclination. Further information is contained in the robot operat-
ing or assembly instructions.
6.16.1.1 Using torque mode
Torque mode is only possible in program mode, not in manual mode.
204 / 477
Issued: 24.01.2014 Version: KSS 8.3 SI V2
6 Configuration
By default, the robot controller is configured so that only
limits that exceed the holding torque of the axis
($HOLDING_TORQUE) can be set. It is nonetheless possible that the axis
with limited torque is no longer able to achieve the necessary torque for brak-
ing, holding or moving the axis. This can be the case, for example, if the de-
fault configuration of the robot controller has been changed or incorrect load
data are used.
Incorrectly set values can result in unexpected behavior of the robot control-
ler, e.g. motion in a different direction or with different acceleration.
For this reason:
Only ever limit the torque in small steps, gradually approaching the re-
quired limit.
Do not limit the torque further than necessary.
Failure to take this precaution into consideration may result in death, injuries
or damage to property.
If an application requires torque limits that no longer exceed the hold-
ing torque of the axis, KUKA Roboter GmbH must be contacted.
1. Set the torque limits for the desired axis and/or deactivate the regular mon-
itoring functions.
(>>> 6.16.2 "Activating torque mode: SET_TORQUE_LIMITS()"
Page 207)
If the regular monitoring functions are deactivated, other monitoring func-
tions specially adapted to torque mode are automatically activated.
(>>> "Monitoring functions" Page 206)
If the axis is to be set to soft: move the axis so that the torque limit be-
comes active. At the end of the motion, the brakes of this axis remain
open.
Alternatively, a motion to the current position can be executed. The robot
does not move, but the brakes are released.
2.
3. Optionally: generate a signal indicating that the axis is stationary (e.g. sig-
nal to an injection molding machine).
4. Perform the desired action, e.g. move to workpiece and build up pressure
or push the axis away.
5. Optionally: wait for a signal to end torque mode.
6. Deactivate torque mode again.
(>>> 6.16.3 "Deactivating torque mode: RESET_TORQUE_LIMITS()"
Page 210)
The torque limits are canceled and the regular monitoring functions are re-
activated. Furthermore, the command position is adjusted to the actual po-
sition.
Torque mode is considered to be activated in the following case:
If the upper torque limit is less than or equal to the upper value of the
$TORQUE_AXIS_MAX interval.
(>>> 6.16.5.3 "$TORQUE_AXIS_MAX" Page 212)
And/or: If the lower torque limit is greater than or equal to the lower value
of the $TORQUE_AXIS_MAX interval.
And/or: If the regular monitoring functions are deactivated.
Torque mode is considered to be deactivated in the following case:
If no limits are set or if the limits are invalid. A limit is invalid if it is outside
the $TORQUE_AXIS_MAX interval.
Procedure
Activated/deacti-
vated
Issued: 24.01.2014 Version: KSS 8.3 SI V2
205 / 477
KUKA System Software 8.3
Automatic deacti-
vation
Monitoring
functions
And: If the regular monitoring functions are deactivated.
Torque mode is automatically deactivated in the following cases:
End of program
Program reset
Program deselection
Block selection (but no deactivation if the target of the block selection is in
an interrupt program)
RESUME (but no deactivation if the RESUME statement returns to an in-
terrupt program)
Manual mode is activated. Planning is carried out from the current actual
position and motion is resumed with full torque.
Torque mode generally results in a relatively large deviation between the com-
mand position and the actual position. Certain monitoring functions are trig-
gered by this deviation, although this is undesirable in torque mode. These
regular monitoring functions can thus be deactivated using
SET_TORQUE_LIMITS().
If the regular monitoring functions are deactivated, other monitoring functions
specially adapted to torque mode are automatically activated for the actual ve-
locity and following error. If required, user-defined values can be set for these
special monitoring functions using SET_TORQUE_LIMITS().
The following messages belong to the regular monitoring functions. They are
no longer displayed if the regular monitoring functions are deactivated.
Monitoring
Following error monitoring
Standstill monitoring
Positioning monitoring
Monitoring whether motor
blocked
Message no. / message
26024: Ackn. Max. following error
exceeded ({Drive}).
1100: Stopped {(Axis number)}
1105: Positioning monitoring {(Axis num-
ber)}
26009: Motor blocked ({Drive}).
It is also possible, however, to retain the regular monitoring functions in torque
mode. This may be useful, for example, if torque mode is used to avoid dam-
age in the case of collisions.
(>>> 6.16.6.2 "Robot program: avoiding damage in the event of collisions"
Page 214)
6.16.1.2 Robot program example: setting A1 to soft in both directions
Description
Program
This simple example illustrates the basic principle of torque mode.
In this example, A1 is to be set to soft in both directions. For this purpose,
both the positive and negative current limits are set to 0 Nm. This allows A1 to
be moved by application of an external force.
...
1 PTP {A1 10}
2 SET_TORQUE_LIMITS(1, {lower 0, upper 0, monitor #off})
3 PTP {A1 11}
...
4 RESET_TORQUE_LIMITS(1)
5 PTP {A1 -20}
...
206 / 477
Issued: 24.01.2014 Version: KSS 8.3 SI V2
Line
2
3
4
5
6 Configuration
Description
Negative and positive current limits of A1 are set to 0; the reg-
ular monitoring functions are deactivated.
(The actual velocity and the following error are now monitored
with special monitoring functions.)
A motion is executed to activate torque limitation. (Since both
current limits are set to 0, the robot will not actually move.)
A1 can now be moved by application of an external force.
Deactivate torque mode again for A1.
Torque limitation is canceled and the regular monitoring func-
tions are reactivated. Furthermore, the command position is
automatically adjusted to the actual position.
The robot moves to the next position.
(The motion from line 4 is not belatedly executed now, as the
command/actual adjustment has been carried out in line 5.)
It is only for A1 that the holding torque is 0 Nm. The limits can therefore not
generally be set to 0 for setting an axis to soft.
This documentation contains a more detailed example of setting axes to soft
that can also be applied to other axes.
(>>> 6.16.6.1 "Robot program: setting axis to soft in both directions"
Page 214)
6.16.2
Activating torque mode: SET_TORQUE_LIMITS()
Description
This function can be used to perform the following actions for a specific axis:
Limit the torques in the positive and/or negative direction.
Deactivate the regular monitoring functions that would be triggered by a
higher following error.
If the regular monitoring functions are deactivated: modify the values for
the special monitoring functions.
Function
SET_TORQUE_LIMITS (axis: in, values: in)
Description
Element
axis
values
Type: INT
Axis to which the statement applies
Type: TorqLimitParam
Values set for the axis
TorqLimitParam
STRUC TorqLimitParam REAL lower, upper, SW_ONOFF monitor,
REAL max_vel, max_lag
Element
lower
upper
Description
Lower torque limit
Unit: Nm (for linear axes: N)
Default value: -1E10 (i.e. unlimited)
Upper torque limit
Unit: Nm (for linear axes: N)
Default value: 1E10 (i.e. unlimited)
Issued: 24.01.2014 Version: KSS 8.3 SI V2
207 / 477
KUKA System Software 8.3
Element
monitor
max_vel
max_lag
Description
#ON (Default): activates the regular monitoring func-
tions.
#OFF: deactivates the regular monitoring functions. In-
stead, the monitoring functions max_vel and max_lag
are activated.
Maximum permissible actual velocity in torque mode (only
relevant if the regular monitoring functions are deactivated)
Only a positive value may be programmed.
Unit: Degrees (for linear axes: mm)
Default value (valid for all operating modes): T1 jog velocity
* internal safety factor
In T1, the maximum velocity with which jogging can be car-
ried out is the default value, even if a higher value is pro-
grammed.
Note: Only set a higher value than the default value if
absolutely necessary.
Maximum permissible following error in torque mode (only
relevant if the regular monitoring functions are deactivated)
Only a positive value may be programmed.
Unit: Degrees (for linear axes: mm)
Default value: 5 degrees (for linear axes: 100 mm)
Note: Only set a higher value than the default value if
absolutely necessary.
When must the upper torque be limited and when must the lower torque be
limited?
General: The direction in which the following error is building up must always
be limited.
Example: The robot is to be moved up against an obstacle and then stop there.
The torque that is thus built up is to be limited.
If the obstacle appears in the positive direction, upper must be set.
If the obstacle appears in the negative direction, lower must be set.
SET_TORQUE_LIMITS() can be used in robot programs and in submit
programs.
Advance run stop: In the robot program, the statement triggers an ad-
vance run stop.
Values may remain partially non-initialized. The non-initialized components
mean that the existing values are to remain unchanged.
If both limits are set, upper must be >= lower.
If one limit (or both) is already set and the other limit is then set, and if the
new limit would result in an empty interval, the new limit value becomes
the value for both limits. Example:
Already set: {lower 1, upper 2}
Newly set: {lower 3}
This results in: {lower 3, upper 3}
It is permissible to set a positive lower or a negative upper limit.
The limits set must be greater than the current holding torque
$HOLDING_TORQUE. If they are set differently, the robot controller gen-
erates an error message that must be acknowledged by the user.
lower/upper
Characteristics
208 / 477
Issued: 24.01.2014 Version: KSS 8.3 SI V2
6 Configuration
If an application requires torque limits that no longer exceed the hold-
ing torque of the axis, KUKA Roboter GmbH must be contacted.
lower must be less than or equal to the upper value of the
$TORQUE_AXIS_MAX_0 interval.
upper must be greater than or equal to the lower value of the
$TORQUE_AXIS_MAX_0 interval.
If the limits are set differently, the robot controller generates an error mes-
sage that must be acknowledged by the user.
Examples
Example 1:
For A1, the permissible torque range is limited to the interval 800
1,400 Nm.
SET_TORQUE_LIMITS(1, {lower 800, upper 1400} )
Example 2:
For A3, the upper torque limit is set to 1,200 Nm.
SET_TORQUE_LIMITS(3, {upper 1200} )
Example 3:
For A1, the regular monitoring functions are (re)activated.
SET_TORQUE_LIMITS(1, {monitor #on} )
Example 4:
For A1, the permissible torque range is limited to the interval -1,000
1,000 Nm. Furthermore, the regular monitoring functions are deactivated and
the special monitoring functions are set to user-defined values.
SET_TORQUE_LIMITS(1, {lower -1000, upper 1000, monitor #off, max_vel
10, max_lag 20} )
Example 5:
For A1, the permissible torque range is set to -1E10
1E10, i.e. the range is
unlimited. The regular monitoring functions are (re)activated.
SET_TORQUE_LIMITS(1, {lower -1E10, upper 1E10, monitor #on} )
This all corresponds to RESET_TORQUE_LIMITS(1), with the difference that
in example 5, the command position is not to adapted to the actual position.
Example 6:
For A1, the lower torque limit is set to a calculated value.
The value has been calculated with the function myCalc() and transferred with
the variable myLimits. (In the concrete application, the user must write his own
function for this.)
In order for the other components to be non-initialized, the value is pre-initial-
ized with a partially initialized aggregate.
DECL TorqLimitParam myParams
...
myParams = {lower 0}
myParams.lower = myCalc()
SET_TORQUE_LIMITS(1, myParams)
Example 7:
In this case, the limits are also set to a value that has been calculated with a
function. (In the concrete application, the user must write his own function for
this.)
Issued: 24.01.2014 Version: KSS 8.3 SI V2
209 / 477
KUKA System Software 8.3
The return value of the function is transferred directly, however.
DEFFCT TorqLimitParam myCalcLimits()
DECL TorqLimitParam myLimits
...
RETURN myLimits
ENDFCT
...
SET_TORQUE_LIMITS(1, myCalcLimits())
6.16.3
Deactivating torque mode: RESET_TORQUE_LIMITS()
Description
This function has the following effect on the selected axis:
It cancels the limitation of the torques insofar as they were limited.
It reactivates the regular monitoring functions insofar as they were deacti-
vated.
It adapts the command position to the actual position.
Function
RESET_TORQUE_LIMITS (axis: in)
Element
axis
Description
Type: INT
Axis to which the statement applies
Characteristics
Alternative
The statement can be used in robot programs and in submit programs.
Advance run stop: In the robot program, the statement triggers an ad-
vance run stop. This cannot be masked with CONTINUE!
If no command/actual value adjustment is required, torque mode can also be
deactivated with SET_TORQUE_LIMITS instead of
RESET_TORQUE_LIMITS:
SET_TORQUE_LIMITS(1, {lower -1E10, upper 1E10, monitor #on} )
Advantage: Can be used during a motion (on the fly).
Disadvantage: If the torque limitation has resulted in a relatively large fol-
lowing error, the robot accelerates very fast. This can trigger monitoring
functions and stop the program.
Deactivation by means of SET_TORQUE_LIMITS is not suitable in
most cases.
6.16.4
Interpreter specifics
Description
SET_TORQUE_LIMITS() and RESET_TORQUE_LIMITS() can be used
in robot programs and in submit programs.
The statements are interpreter-specific, i.e. they only work in the interpret-
er in which they have been used.
SET_TORQUE_LIMITS() first takes effect when the axis is moved for the
interpreter that generates the statement. Example:
a. Torque mode is activated in the robot program for an external axis.
b. The external axis is moved by a submit program. Torque mode has no
effect.
c. The external axis is moved by a robot program. Torque mode takes ef-
fect.
If torque mode is already active, SET_TORQUE_LIMITS() takes effect im-
mediately.
210 / 477
Issued: 24.01.2014 Version: KSS 8.3 SI V2
Example
6 Configuration
SET_TORQUE_LIMITS() works immediately if a motion is active. For this
reason, the torque limits can be set at any time in robot programs, both in-
side and outside an interrupt, and the monitoring functions can be activat-
ed and deactivated.
It is also possible to use torque mode inside an interrupt program only. (If
RESET_TORQUE_LIMITS() is used, it may subsequently be necessary to
return to the interrupt position with PTP $AXIS_RET.)
(>>> 6.16.6.3 "Robot program: torque mode in the interrupt" Page 216)
When a torque-driven axis changes owner, the command position is ad-
justed to the actual position.
Change of owner means: an interpreter has moved the axis in torque
mode (and thus owns it). While torque mode is active, the axis is moved
by a different interpreter.
The main application here is: jogging after a program has been interrupted
in torque mode.
The following example shows when SET_TORQUE_LIMITS() is effective, de-
pending on whether torque mode is already active or not.
Initial situation (default): the monitoring functions are activated.
1 SET_TORQUE_LIMITS(1, {monitor #off})
2 HALT
3 PTP_REL {A1 10}
4 HALT
5 SET_TORQUE_LIMITS(1, {monitor #on})
6 HALT
7 PTP_REL {A1 15}
Line
1
2
3
4
5
6
Description
The monitoring functions for A1 are deactivated.
Here the monitoring functions are still activated.
The axis is moved. From here on, the statement
SET_TORQUE_LIMITS is effective.
The monitoring functions are deactivated.
The monitoring functions are activated.
Here the monitoring functions are already activated. Because
torque limitation was already active, the statement took effect
immediately and not just after the next motion of this axis.
6.16.5
Diagnostic variables for torque mode
All these variables and constants are write-protected.
Their value is not dependent on the interpreter.
6.16.5.1 $TORQUE_AXIS_ACT
Variable
Description
$TORQUE_AXIS_ACT[axis number]
Data type: REAL
Current motor torque for axis [axis number]
Unit: Nm (for linear axes: N)
The value is only relevant if the brakes are released. If the brakes are applied,
it is virtually zero.
Advance run stop: In the robot program, the variable triggers an advance run
stop.
Issued: 24.01.2014 Version: KSS 8.3 SI V2
211 / 477