Kuka Sunriseos 117 Si en
Kuka Sunriseos 117 Si en
Issued: 18.03.2021
KUKA Sunrise.OS 1.17 SI V2
KUKA Deutschland GmbH
KUKA Sunrise.OS 1.17 KUKA Sunrise.Workbench 1.17
© Copyright 2021
KUKA Deutschland GmbH
Zugspitzstraße 140
D-86165 Augsburg
Germany
This documentation or excerpts therefrom may not be reproduced or disclosed to third parties
without the express permission of KUKA Deutschland GmbH.
Other functions not described in this documentation may be operable in the controller. The user
has no claims to these functions, however, in the case of a replacement or service work.
We have checked the content of this documentation for conformity with the hardware and soft-
ware described. Nevertheless, discrepancies cannot be precluded, for which reason we are not
able to guarantee total conformity. The information in this documentation is checked on a regu-
lar basis, however, and necessary corrections will be incorporated in the subsequent edition.
Subject to technical alterations without an effect on the function.
KIM-PS5-DOC
Translation of the original documentation
Contents
1 Introduction.............................................................................................. 19
1.1 Target group.......................................................................................................... 19
1.2 Industrial robot documentation.............................................................................. 19
1.3 Representation of warnings and notes................................................................. 19
1.4 Trademarks............................................................................................................ 20
1.5 Terms used............................................................................................................ 20
1.6 Licenses................................................................................................................. 22
2 Product description................................................................................. 23
2.1 Overview of the industrial robot............................................................................ 23
2.2 Overview of the software components................................................................. 23
2.3 Overview of KUKA Sunrise.OS............................................................................. 24
2.4 Overview of KUKA Sunrise.Workbench................................................................ 25
2.5 Intended use of the system software................................................................... 26
3 Safety......................................................................................................... 27
3.1 General.................................................................................................................. 27
3.1.1 Liability................................................................................................................... 27
3.1.2 EC declaration of conformity and declaration of incorporation............................ 27
3.1.3 Terms in the “Safety” chapter............................................................................... 28
3.2 Personnel............................................................................................................... 30
3.3 Workspace, safety zone and danger zone........................................................... 31
3.4 Triggers for safety-oriented stop reactions........................................................... 32
3.5 Safety functions..................................................................................................... 34
3.5.1 Safety-oriented functions....................................................................................... 34
3.5.1.1 EMERGENCY STOP device................................................................................. 35
3.5.1.2 Enabling device..................................................................................................... 36
3.5.1.3 “Operator safety” signal......................................................................................... 37
3.5.1.4 External EMERGENCY STOP device.................................................................. 37
3.5.1.5 External safety stop 1 (path-maintaining) ........................................................... 37
3.5.1.6 External enabling device....................................................................................... 37
3.5.1.7 External safe operational stop.............................................................................. 38
3.5.2 Non-safety-oriented functions................................................................................ 38
3.5.2.1 Mode selection...................................................................................................... 38
3.5.2.2 Velocity monitoring in T1....................................................................................... 39
3.5.2.3 Software limit switches.......................................................................................... 40
3.6 Additional protective equipment............................................................................ 40
3.6.1 Jog mode............................................................................................................... 40
3.6.2 Labeling on the industrial robot............................................................................ 40
3.6.3 External safeguards............................................................................................... 40
3.7 Safety measures.................................................................................................... 41
3.7.1 General safety measures...................................................................................... 41
3.7.2 IT security.............................................................................................................. 43
3.7.3 Transportation........................................................................................................ 43
3.7.4 Start-up and recommissioning.............................................................................. 43
3.7.5 Manual mode......................................................................................................... 46
3.7.6 Automatic mode..................................................................................................... 47
12.3 Configuring the external controller via the UDP interface................................... 236
12.4 External controller input signals............................................................................ 236
12.5 External controller output signals.......................................................................... 237
12.6 Signal diagrams..................................................................................................... 238
12.7 Configuring the external controller in the project settings................................... 239
12.7.1 Input/output parameters of the I/O interface........................................................ 241
12.7.2 Input/output parameters of the UDP interface..................................................... 241
12.8 Formatting of the UDP data packets.................................................................... 241
12.8.1 Status messages of the robot controller.............................................................. 242
12.8.2 Controller messages of the external client........................................................... 244
12.9 External control via UDP – Start-up example...................................................... 245
12.9.1 Starting up the external controller........................................................................ 245
12.9.2 Programming the external controller..................................................................... 246
12.10 Configuring the signal outputs for a project that is not externally controlled...... 248
12.10.1 Output parameters of the I/O interface................................................................ 249
12.10.2 Output parameters of the UDP interface.............................................................. 249
16 Programming............................................................................................ 397
16.1 Java Editor............................................................................................................. 397
16.1.1 Opening a robot application in the Java Editor................................................... 397
16.1.2 Structure of a robot application............................................................................ 397
16.1.3 Edit functions......................................................................................................... 398
16.1.3.1 Renaming variables............................................................................................... 398
16.1.3.2 Auto-complete........................................................................................................ 399
16.1.3.3 Templates – Fast entry of Java statements......................................................... 399
16.1.3.4 Creating user-specific templates........................................................................... 400
16.1.3.5 Extracting methods................................................................................................ 400
16.1.4 Displaying Javadoc information............................................................................ 401
16.1.4.1 Configuration of the Javadoc browser.................................................................. 403
16.2 Symbols and fonts................................................................................................. 406
16.3 Data types............................................................................................................. 406
16.3.1 Declaration............................................................................................................. 407
16.3.2 Initialization............................................................................................................ 408
16.3.2.1 Primitive data types............................................................................................... 408
16.3.2.2 Complex data types.............................................................................................. 408
16.3.3 Dependency injection............................................................................................ 409
16.3.3.1 Dependency injection for Sunrise types............................................................... 410
16.3.3.2 Dependency injection for dedicated types............................................................ 412
16.4 Requesting individual values of a vector.............................................................. 415
16.5 Network communication via UDP and TCP/IP..................................................... 416
16.6 Motion programming: PTP, LIN, CIRC................................................................. 416
16.6.1 Synchronous and asynchronous motion execution.............................................. 416
16.25.4 Labeling and graphical assignment of the user key bar...................................... 523
16.25.4.1 Assigning a text element....................................................................................... 524
16.25.4.2 Assigning an LED icon.......................................................................................... 525
16.25.5 Identifying safety-critical user keys....................................................................... 526
16.25.6 Publishing a user key bar..................................................................................... 527
16.26 Message programming.......................................................................................... 528
16.26.1 Programming user messages............................................................................... 528
16.26.2 Programming user dialogs.................................................................................... 529
16.27 Program execution control.................................................................................... 531
16.27.1 Pausing an application.......................................................................................... 531
16.27.2 Terminating an application.................................................................................... 532
16.27.3 Pausing motion execution..................................................................................... 532
16.27.4 Canceling a motion command.............................................................................. 532
16.27.5 FOR loop............................................................................................................... 534
16.27.6 WHILE loop........................................................................................................... 535
16.27.7 DO WHILE loop..................................................................................................... 536
16.27.8 IF ELSE branch..................................................................................................... 537
16.27.9 SWITCH branch.................................................................................................... 539
16.27.10 Examples of nested loops..................................................................................... 542
16.28 Continuing a paused application in Automatic mode (recovery)......................... 543
16.29 Error treatment...................................................................................................... 545
16.29.1 Handling of failed motion commands................................................................... 545
16.29.2 Handling of failed synchronous motion commands............................................. 545
16.29.3 Handling of failed asynchronous motion commands........................................... 547
16.29.4 Unhandled exceptions........................................................................................... 550
21 Diagnosis.................................................................................................. 613
21.1 Field bus diagnosis............................................................................................... 613
21.1.1 Displaying general field bus errors....................................................................... 613
21.1.2 Displaying the error state of I/Os and I/O groups............................................... 613
21.2 Displaying a log..................................................................................................... 613
21.2.1 “Log” view.............................................................................................................. 614
21.2.2 Filtering log entries................................................................................................ 616
21.3 Displaying error messages.................................................................................... 617
21.4 Displaying messages of the virus scanner........................................................... 619
21.5 Collecting diagnostic information for error analysis at KUKA.............................. 620
21.5.1 Creating a diagnosis package with the smartHMI............................................... 620
21.5.2 Creating a diagnosis package with the smartPAD............................................... 620
21.5.3 Creating a diagnosis package with Sunrise.Workbench...................................... 621
21.5.4 Loading existing diagnosis packages from the robot controller........................... 621
23 Appendix................................................................................................... 655
23.1 Compatibility and migration of projects................................................................ 655
23.1.1 Modified task functions – adapting the programming.......................................... 655
Index 659
Introduction
1 Introduction
Safety
These warnings are provided for safety purposes and must be observed.
DANGER
These warnings mean that it is certain or highly probable that death or
severe injuries will occur, if no precautions are taken.
WARNING
These warnings mean that death or severe injuries may occur, if no
precautions are taken.
CAUTION
These warnings mean that minor injuries may occur, if no precautions
are taken.
NOTICE
These warnings mean that damage to property may occur, if no precau-
tions are taken.
Notices
1.4 Trademarks
Term Description
Introduction
FSoE Fail Safe over EtherCAT
Protocol for transferring safety-relevant data via EtherCAT. An FSoE
master and an FSoE slave are used for this.
• smartPAD
• smartPAD-2
In turn, for each model there are variants, e.g. with different lengths
of connecting cables.
The designation “KUKA smartPAD” or “smartPAD” refers to both
models unless an explicit distinction is made.
1.6 Licenses
KUKA Sunrise.OS uses open-source software. The license terms are stor-
ed in the licenses folder in the installation directory of KUKA Sun-
rise.Workbench.
Further information about open-source licenses can be requested from
the following address: opensource@kuka.com
Product description
2 Product description
Description
Division of tasks
Product description
Overview
Software installation
Bus configuration/diagnosis
Bus mapping
Programming
Remote debugging
Creating frames
Teaching frames
Jog mode
Mastering
Calibration
Setting outputs
Polling inputs/outputs
Start-up
Application development
Use
The KUKA Sunrise.OS System Software is intended exclusively for the op-
eration of KUKA axes in an industrial setting in conjunction with KUKA
Sunrise Cabinet. KUKA axes include, for example, industrial robots and
mobile platforms.
Each version of the System Software may be operated exclusively in ac-
cordance with the specified system requirements.
Misuse
Safety
3 Safety
3.1 General
3.1.1 Liability
• Manipulator
• Robot controller
• Teach pendant
• Connecting cables
• Software
• Options, accessories
The industrial robot is built using state-of-the-art technology and in accord-
ance with the recognized safety rules. Nevertheless, misuse of the indus-
trial robot may constitute a risk to life and limb or cause damage to the
industrial robot and to other material property.
The industrial robot may only be used in perfect technical condition in ac-
cordance with its intended use and only by safety-conscious persons who
are fully aware of the risks involved in its operation. Use of the industrial
robot is subject to compliance with this document and with the declaration
of incorporation supplied together with the industrial robot. Any functional
disorders, especially those affecting safety, must be rectified immediately.
Safety information
EC declaration of conformity
Declaration of incorporation
Term Description
Axis range Range within which the axis may move The axis range must be de-
fined for each axis.
Workspace Area within which the robot may move. The workspace is derived
from the individual axis ranges.
Automatic (AUT) Operating mode for program execution. The manipulator moves at
the programmed velocity.
User The user of the industrial robot can be the management, employer
or delegated person responsible for use of the industrial robot.
Service life The service life of a safety-relevant component begins at the time
of delivery of the component to the customer.
The service life is not affected by whether the component is used
or not, as safety-relevant components are also subject to aging dur-
ing storage.
Danger zone The danger zone consists of the workspace and the stopping dis-
tances of the manipulator.
Safety
CRR Controlled Robot Retraction
CRR is an operating mode which can be selected when the indus-
trial robot is stopped by the safety controller for one of the following
reasons:
Safety zone The safety zone is situated outside the danger zone.
Safety stop The safety stop is triggered by the safety controller, interrupts the
work procedure and causes all robot motions to come to a stand-
still. The program data are retained in the case of a safety stop
and the program can be resumed from the point of interruption.
The safety stop can be executed as a Stop category 0, Stop cate-
gory 1 or Stop category 1 (path-maintaining).
Note: In this document, a safety stop of Stop category 0 is referred
to as safety stop 0, a safety stop of Stop category 1 as safety
stop 1 and a safety stop of Stop category 1 (path-maintaining) as
safety stop 1 (path-maintaining).
• smartPAD
• smartPAD-2
In turn, for each model there are variants, e.g. with different lengths
of connecting cables.
The designation “KUKA smartPAD” or “smartPAD” refers to both
models unless an explicit distinction is made.
Stop category 0 The drives are deactivated immediately and the brakes are applied.
Stop category 1 The manipulator is braked and does not stay on the programmed
path. The manipulator is brought to a standstill with the drives. As
soon as an axis is at a standstill, the drive is switched off and the
brake is applied.
The internal electronic drive system of the robot performs safety-ori-
ented monitoring of the braking process. Stop category 0 is execu-
ted in the event of a fault.
Note: Stop category 1 is currently only supported by the LBR iiwa.
For other manipulators, Stop category 0 is executed.
Stop category 1 (path- The manipulator is braked and stays on the programmed path. At
maintaining) standstill, the drives are deactivated and the brakes are applied.
If Stop category 1 (path-maintaining) is triggered by the safety con-
troller, the safety controller monitors the braking process. The
brakes are applied and the drives are switched off after 1 s at the
latest. Stop category 1 is executed in the event of a fault.
System integrator The system integrator is responsible for safely integrating the indus-
(plant integrator) trial robot into a complete system and commissioning it.
3.2 Personnel
The following persons or groups of persons are defined for the industrial
robot:
• User
• Personnel
All persons working with the industrial robot must have read and under-
stood the industrial robot documentation, including the safety chapter.
User
The user must observe the labor laws and regulations. This includes e.g.:
Personnel
Personnel includes:
Safety
• System integrator
• Operators, subdivided into:
‒ Start-up, maintenance and service personnel
‒ Operating personnel
‒ Cleaning personnel
System integrator
The industrial robot is safely integrated into a complete system by the sys-
tem integrator.
The system integrator is responsible for the following tasks:
Operators
The danger zone consists of the workspace and the stopping distances of
the manipulator. In the event of a stop, the manipulator is braked and
comes to a stop within the danger zone. The safety zone is the area out-
side the danger zone.
e.g. by light barriers, light curtains or safety fences. If there are no physi-
cal safeguards present, the requirements for collaborative operation in ac-
cordance with EN ISO 10218 must be met. There must be no shearing or
crushing hazards at the loading and transfer areas.
Overview
Safety
Permanently defined triggers
User-specific triggers
This default safety configuration is valid for the system software without
additionally installed option packages or catalog elements. If additional
option packages or catalog elements have been installed, the default
safety configuration may be modified.
DANGER
In the absence of the required operational safety functions and safe-
guards, the industrial robot can cause personal injury or material dam-
age. If the required safety functions or safeguards are dismantled or de-
activated, the industrial robot may not be operated.
Safety
• Operator safety (= connection for the monitoring of physical safe-
guards)
• External EMERGENCY STOP device
• External safety stop 1 (path-maintaining)
Other safety-oriented functions can also be configured, e.g.:
• External enabling device
• External safe operational stop
• Axis-specific workspace monitoring
• Cartesian workspace monitoring
• Cartesian protected space monitoring
• Velocity monitoring
• Standstill monitoring
• Axis torque monitoring
• Collision detection
WARNING
Danger to life and limb due to tools and equipment without EMER-
GENCY STOP
If tools and other equipment connected to the robot are not integrated
into the EMERGENCY STOP circuit, this can result in death, severe in-
juries or damage to property.
• Integrate tools and other equipment into the EMERGENCY STOP
circuit if they could constitute a potential hazard.
If a holder is used for the teach pendant and conceals the EMERGENCY
STOP device on the teach pendant, an external EMERGENCY STOP de-
vice must be installed that is accessible at all times.
(>>> 3.5.1.4 "External EMERGENCY STOP device" Page 37)
The enabling devices of the industrial robot are the enabling switches on
the smartPAD teach pendant by default.
• smartPAD: 3 enabling switches
• smartPAD-2: 4 enabling switches
From KUKA Sunrise.OS 2.4 onwards, the inputs of the enabling device
for the teach pendant can be configured, i.e. a different teach pendant
with enabling device can be connected and used.
WARNING
Danger to life and limb due to lack of reaction when an enabling
switch is released
Releasing one of multiple enabling switches held in the center position
does not trigger a stop reaction.
If multiple switches are held in the center position, the robot controller
cannot distinguish whether one of them was intentionally released or if it
was unintentionally released as the result of an accident.
• Create awareness for the hazard.
WARNING
Danger to life and limb due to manipulation of enabling switches
The enabling switches must not be held down by adhesive tape or other
means or tampered with in any other way. Death, severe injuries or
damage to property may result.
• Carry out a visual inspection of the enabling switches.
• Rectify tampering or remove any foreign bodies.
Safety
The “operator safety” signal is used for monitoring physical safeguards,
e.g. safety gates. In the default configuration, T2 and automatic operation
are not possible without this signal. Alternatively, the requirements for col-
laborative operation in accordance with EN ISO 10218 must be met.
Reaction of the industrial robot in the event of a loss of signal during T2
or automatic operation (default configuration):
• The manipulator stops with a safety stop 1 (path-maintaining).
By default, operator safety is not active in the modes T1 (Manual Re-
duced Velocity) and CRR, i.e. the signal is not evaluated.
WARNING
Following a loss of signal, automatic operation must not be resumed
merely by closing the safeguard; the signal for operator safety must first
be set by an additional device, e.g. by an acknowledge button. It is the
responsibility of the system integrator to ensure this. This is to prevent
automatic operation from being resumed inadvertently while there are
still persons in the danger zone, e.g. due to the safety gate closing ac-
cidentally.
• This additional device must be designed in such a way that an ac-
tual check of the danger zone can be carried out first. Devices that
do not allow this (e.g. because they are automatically triggered by
closure of the safeguard) are not permitted.
• Failure to observe this may result in death to persons, severe inju-
ries or considerable damage to property.
Every operator station that can initiate a robot motion or other potentially
hazardous situation must be equipped with an EMERGENCY STOP de-
vice. The system integrator is responsible for ensuring this.
Reaction of the industrial robot if the external EMERGENCY STOP device
is pressed (default configuration):
• The manipulator stops with a safety stop 1 (path-maintaining).
External EMERGENCY STOP devices are connected via the safety inter-
face of the robot controller. External EMERGENCY STOP devices are not
included in the scope of supply of the industrial robot.
External enabling devices are required if it is necessary for more than one
person to be in the danger zone of the industrial robot.
Multiple external enabling devices can be connected via the safety inter-
face of the robot controller. External enabling devices are not included in
the scope of supply of the industrial robot.
An external enabling device can be used for manual guidance of the ro-
Safety
bot. When enabling is active, the robot may only be moved at reduced ve-
locity.
For manual guidance, safety-oriented velocity monitoring with a maximum
permissible velocity of 250 mm/s is preconfigured. The maximum permissi-
ble velocity can be adapted.
The value for the maximum permissible velocity must be determined as
part of a risk assessment.
Operating modes
Operating
Use Velocities
mode
T1 Programming, teaching and testing of • Program verification:
programs.
Reduced programmed velocity,
maximum 250 mm/s
• Jog mode:
Jog velocity, maximum 250 mm/s
• Manual guidance:
No limitation of the velocity, but
safety-oriented velocity monitoring
in accordance with the safety con-
figuration
Note: The maximum velocity of
250 mm/s does not apply to a mobile
platform.
T2 Testing of programs • Program verification:
Programmed velocity
• Jog mode: Not possible
AUT Automatic execution of programs • Program operation:
For industrial robots with and without Programmed velocity
higher-level controllers • Jog mode: Not possible
Safety
Operating
Use Velocities
mode
CRR CRR is an operating mode which can • Program verification:
be selected when the industrial robot
Reduced programmed velocity,
is stopped by the safety controller for
maximum 250 mm/s
one of the following reasons:
• Jog mode:
• Industrial robot violates an axis- Jog velocity, maximum 250 mm/s
specific or Cartesian monitoring
• Manual guidance:
space.
No limitation of the velocity, but
• Orientation of a safety-oriented tool
safety-oriented velocity monitoring
is outside the monitored range.
in accordance with the safety con-
• Industrial robot violates a force or figuration
axis torque monitoring function.
• A position sensor is not mastered
or referenced.
• An axis torque sensor is not refer-
enced.
After changing to CRR mode, the in-
dustrial robot may once again be
moved.
The user can change the operating mode via the connection manager.
The connection manager is a view that is called by means of the mode
selector switch on the smartPAD.
The mode selector switch may be one of the following variants:
• With key
It is only possible to change operating mode if the key is inserted.
• Without key
WARNING
Danger to life and limb due to mode selector switch without
access restriction
If the smartPAD is equipped with a mode selector switch without a key,
all persons can operate the mode selector switch, irrespective of their
field of activity or qualifications. Death, severe injuries or damage to
property may result.
• An additional device must be installed to ensure that the mode se-
lector switch can only be operated by a restricted group of people.
• The device itself must not trigger motions of the industrial robot or
other hazards.
The axis ranges of all manipulator axes are limited by means of non-safe-
ty-oriented software limit switches. These software limit switches only
serve as machine protection and are preset in such a way that the manip-
ulator is stopped under servo control if the axis limit is exceeded, thereby
preventing damage to the mechanical equipment.
The access of persons to the danger zone of the industrial robot must be
prevented by means of safeguards. Alternatively, the requirements for col-
laborative operation in accordance with EN ISO 10218 must be met. It is
the responsibility of the system integrator to ensure this.
Physical safeguards must meet the following requirements:
Safety
• They prevent access of persons to the danger zone and cannot be
easily circumvented.
• They are sufficiently fastened and can withstand all forces that are
likely to occur in the course of operation, whether from inside or out-
side the enclosure.
• They do not, themselves, represent a hazard or potential hazard.
• The prescribed minimum clearance from the danger zone is main-
tained.
Safety gates (maintenance gates) must meet the following requirements:
The industrial robot may only be used in perfect technical condition in ac-
cordance with its intended use and only by safety-conscious persons. Op-
erator errors can result in personal injury and damage to property.
It is important to be prepared for possible movements of the industrial ro-
bot even after the robot controller has been switched off and locked out.
Incorrect installation (e.g. overload) or mechanical defects (e.g. brake de-
fect) can cause the manipulator to sag. If work is to be carried out on a
switched-off industrial robot, the manipulator must first be moved into a
position in which it is unable to move on its own, whether the payload is
mounted or not. If this is not possible, the manipulator must be secured
by appropriate means.
DANGER
Risk of fatal injury due to non-operational safety functions or exter-
nal safeguards
In the absence of operational safety functions or safeguards, the indus-
trial robot can cause death, severe injuries or damage to property.
• If safety functions or safeguards are dismantled or deactivated, do
not operate the industrial robot.
WARNING
Standing underneath the robot arm can cause death or serious injuries.
Especially if the industrial robot is moving objects that can become de-
tached (e.g. from a gripper). For this reason, standing underneath the
robot arm is prohibited!
HRC
smartPAD
The user must ensure that the industrial robot is only operated with the
smartPAD by authorized persons.
If more than one smartPAD is used in the overall system, it must be en-
sured that each smartPAD is unambiguously assigned to the correspond-
ing industrial robot. It must be ensured that 2 smartPADs are not inter-
changed.
As standard, the smartPAD is unpluggable.
WARNING
Risk of fatal injury due to non-operational EMERGENCY STOP de-
vice
If the smartPAD is disconnected, the system can no longer be switched
off by means of the EMERGENCY STOP device on the smartPAD.
Measures must be taken to prevent operational and non-operational
EMERGENCY STOP devices from being mixed up.
Death, injuries or damage to property may result.
• If unplugging of the smartPAD is to be allowed, connect at least one
external EMERGENCY STOP device that is accessible at all times
to the robot controller.
• Immediately remove the unplugged smartPAD from the system and
store it out of sight and reach.
Modifications
Faults
The following tasks must be carried out in the case of faults in the indus-
trial robot:
Safety
• Switch off the robot controller and secure it (e.g. with a padlock) to
prevent unauthorized persons from switching it on again.
• Indicate the fault by means of a label with a corresponding warning
(tagout).
• Keep a record of the faults.
• Eliminate the fault and carry out a function test.
3.7.2 IT security
3.7.3 Transportation
Manipulator
Robot controller
Before starting up systems and devices for the first time, a check must be
carried out to ensure that the systems and devices are complete and op-
erational, that they can be operated safely and that any damage is detec-
ted.
for this check. The correct functioning of all safety functions must also be
tested.
Prior to start-up, the passwords for the user groups must be modified by
the administrator, transferred to the robot controller in an installation pro-
cedure and activated. The passwords must only be communicated to
authorized personnel. (>>> 9.4.2 "Changing and activating the pass-
word" Page 198)
DANGER
The robot controller is preconfigured for the specific industrial robot. If
cables are interchanged, the manipulator may receive incorrect data and
can thus cause personal injury or material damage. If a system consists
of more than one manipulator, always connect the connecting cables to
the manipulators and their corresponding robot controllers.
NOTICE
Damage to property due to condensation
If the internal cabinet temperature of the robot controller differs greatly
from the ambient temperature, condensation can form. This may result
in damage to property.
• Wait until the internal cabinet temperature has adapted to the ambi-
ent temperature in order to avoid condensation.
Function test
The following tests must be carried out before start-up and recommission-
ing:
General test:
It must be ensured that:
The following tests must be performed prior to start-up and at least once
Safety
every 12 months unless otherwise determined in accordance with a work-
place risk assessment:
• Function of all connected EMERGENCY STOP devices
Press the EMERGENCY STOP device. A message must be displayed
on the teach pendant indicating that the EMERGENCY STOP has
been actuated. At the same time, no error message may be displayed
about the EMERGENCY STOP device.
• Function of the enabling switches of all connected enabling devices
Move the robot in Test mode and release the enabling switch. The ro-
bot motion must be stopped. At the same time, no error message may
be displayed on the teach pendant about the enabling device.
The test must always be carried out for all enabling switches of a con-
nected enabling device.
If the state of the enabling device is configured at an output, the test
can also be performed via the output.
• Panic function of the enabling switches of all connected enabling devi-
ces
Move the robot in test mode, press the enabling switch down and hold
in the panic position for 3 seconds. The robot motion must be stop-
ped. At the same time, no error message may be displayed on the
teach pendant about the enabling device.
The test must always be carried out for all enabling switches of a con-
nected enabling device.
If the state of the enabling device is configured at an output, the test
can also be performed via the output.
• Function of the mode selector switch on the smartPAD (if used as
teach pendant)
Turn the mode selector switch to the right and then back again. There
must be no error message displayed on the smartPAD.
• Switch-off capability of the safety-oriented outputs
Switch robot controller off and then on again. After it is switched on,
no error message relating to a safety-oriented output may be dis-
played on the teach pendant.
• The brake test must be carried out for each axis during start-up and
recommissioning of the industrial robot.
• The brake test must be performed daily during operation.
General
Manual mode is the mode for setup work. Setup work is all the tasks that
have to be carried out on the industrial robot to enable automatic opera-
tion. Setup work includes:
• Jog mode
• Teaching
• Program verification
The following must be taken into consideration in manual mode:
• New or modified programs must always be tested first in Manual Re-
duced Velocity mode (T1).
• The manipulator and its tooling must never touch or project beyond
the safety fence.
• Workpieces, tooling and other objects must not become jammed as a
result of the industrial robot motion, nor must they lead to
short-circuits or be liable to fall off.
• All setup work must be carried out, where possible, from outside the
safeguarded area.
Setup work in T1
Setup work in T2
Safety
• This mode may only be used if the application requires a test at a ve-
locity higher than that possible in T1 mode.
• Teaching is not permissible in this operating mode.
• Before commencing the test, the operator must ensure that the ena-
bling devices are operational.
• The operator must be positioned outside the danger zone.
• There must be no-one present inside the safeguarded area. It is the
responsibility of the operator to ensure this.
After maintenance and repair work, checks must be carried out to ensure
the required safety level. The valid national or regional work safety regula-
tions must be observed for this check. The correct functioning of all safety
functions must also be tested.
The purpose of maintenance and repair work is to ensure that the system
is kept operational or, in the event of a fault, to return the system to an
operational state. Repair work includes troubleshooting in addition to the
actual repair itself.
The following safety measures must be carried out when working on the
industrial robot:
• Carry out work outside the danger zone. If work inside the danger
zone is necessary, the user must define additional safety measures to
ensure the safe protection of personnel.
• Switch off the industrial robot and secure it (e.g. with a padlock) to
prevent it from being switched on again. If it is necessary to carry out
work with the robot controller switched on, the user must define addi-
tional safety measures to ensure the safe protection of personnel.
• If it is necessary to carry out work with the robot controller switched
on, this may only be done in operating mode T1.
• Label the system with a sign indicating that work is in progress. This
sign must remain in place, even during temporary interruptions to the
work.
• The EMERGENCY STOP devices must remain active. If safety func-
tions or safeguards are deactivated during maintenance or repair work,
they must be reactivated immediately after the work is completed.
DANGER
Danger to life and limb due to live parts
The robot system must be disconnected from the mains power supply
prior to work on live parts. It is not sufficient to trigger an EMERGENCY
STOP or safety stop, because parts remain live. Death or severe inju-
ries may result.
• Before commencing work on live parts, turn off the main switch and
secure it against being switched on again.
If the controller variant in question does not have a main switch
(e.g. KR C5 micro), turn off the device switch then disconnect the
power cable and secure it so it cannot be reconnected.
• Then check to ensure that the system is deenergized.
• Inform the individuals involved that the robot controller is switched
off. (e.g. by affixing a warning sign)
Robot controller
Even when the robot controller is switched off, parts connected to periph-
eral devices may still carry voltage. The external power sources must
therefore be switched off if work is to be carried out on the robot control-
ler.
The ESD regulations must be adhered to when working on components in
the robot controller.
Voltages in excess of 60 V can be present in various components for sev-
eral minutes after the robot controller has been switched off! To prevent
life-threatening injuries, no work may be carried out on the industrial robot
in this time.
Water and dust must be prevented from entering the robot controller.
Overview
Since only the system integrator knows the safe states of actuators in the
Safety
periphery of the robot controller, it is his task to set these actuators to a
safe state.
In modes T1, T2 and CRR, a robot motion can only be initiated if an ena-
bling switch is held down.
Hardware
Minimum requirements
• PC with Pentium IV processor, min. 1500 MHz
• 2 GB RAM
• 200 MB free hard disk space
• DirectX-compatible graphics card with a resolution of 1024x768 pixels
Recommended specifications
• PC with Pentium IV processor or higher and 2500 MHz
• 4 GB RAM
• 1 GB free hard disk space
• DirectX-compatible graphics card with a resolution of 1280x1024 pixels
Software
• Windows 7 or 10
Both the 32-bit version and the 64-bit version can be used.
The following software is required for bus configuration:
• WorkVisual 5.0
Preparation
Precondition
Procedure
Description
Precondition
Procedure
Alternative procedure
• Right-click on the program in the Windows Start menu and select Un-
install from the context menu.
Description
Procedure
Item Description
1 Menu bar
2 Toolbars
(>>> 5.2.4 "Toolbar of the Programming perspective" Page 56)
3 Editor area
Opened files, e.g. robot applications, can be displayed and edi-
ted in the editor area.
4 Application data view
This view displays the frames created for a project in a tree
structure.
5 Object templates view
This view displays the geometrical objects, tools and workpie-
ces created for a project in a tree structure.
6 Perspective selection
It is possible to switch between different perspectives that are
already in use by clicking on the name of the desired perspec-
tive or selecting it via the Open perspective icon.
(>>> 5.2.3 "Displaying perspectives" Page 55)
7 Package Explorer view
This view contains the projects created and their corresponding
files.
Procedure
1. Grip the view by the title bar while holding down the left mouse button
and move it to the desired position on the user interface.
The possible positions for the view are indicated here by a gray frame.
2. Release the mouse button when the desired position for the view is
selected.
Procedure
Description
Procedure
• Select the menu sequence Window > Show View and the desired
view.
Further views can be selected by clicking the menu item Other….
To reset the current perspective to the default setting:
• Select the menu sequence Window > Reset Perspective… and an-
swer the request for confirmation with Yes.
To save user-defined perspectives:
Procedure
1. Select the menu sequence File > New > Sunrise project. The wizard
for creating a new Sunrise project is opened.
2. Enter the IP address of the robot controller to be created for the Sun-
rise project in the IP address of controller: box.
It is possible to change the address again during subsequent project
configuration.
The following IP address ranges are used by default by the robot
controller for internal purposes. IP addresses from these ranges can-
not therefore be assigned.
‒ 169.254.0.0 … 169.254.255.255
‒ 172.16.0.0 … 172.16.255.255
‒ 172.17.0.0 … 172.17.255.255
‒ 192.168.0.0 … 192.168.0.255
again as required.
Press Next > to switch to the next page.
7. If the selected template contains a robot with a media flange, select
the appropriate media flange.
If the media flange “MF Inside electrical NE” is used, the entry Me-
dia flange Inside electrical must be selected.
The weight and height of the selected media flange are automatical-
ly taken into consideration by the system software.
Description
The figure shows the structure of a newly created Sunrise project, for
which no Sunrise applications have yet been created or other changes
made. The robot configured for the Sunrise project has a media flange.
Element Description
src Source folder of the project
The created Sunrise applications and Java classes are stored
in the source folder.
The Java package com.kuka.generated.ioAccess contains
the Java class MediaFlangeIOGroup.java. The class already
contains the methods required for programming in order to
access the inputs/outputs of the media flange.
(>>> 16.11 "Using inputs/outputs in the program" Page 445)
The source folder also contains various XML files in which, in
addition to the configuration data, the runtime data are saved,
e.g. the frames and tools created by the user.
The XML files can be displayed but not edited.
JRE System Library System library for Java Runtime Environment
The system library contains the Java class libraries which can
be used for standard Java programming.
Referenced libraries Referenced libraries
The referenced libraries can be used in the project. As stand-
ard, the robot-specific Java class libraries are automatically
added when a Sunrise project is created. The user has the
option of adding further libraries.
generatedFiles Folder with subfolder IODescriptions
The data for the inputs/outputs configured for the media
flange are saved in an XML file.
The XML file can be displayed but not edited.
KUKAJavaLib Folder with special libraries required for robot programming
Element Description
IOConfiguration.wvs I/O configuration for the media flange
The I/O configuration contains the complete bus structure of
the media flange, including the I/O mapping.
The I/O configuration can be opened, edited and re-exported
into the Sunrise project in WorkVisual.
Note: The I/O configuration is only carried out automatically
for the inputs/outputs on the media flange. Further EtherCAT
devices connected to the media flange must be configured
with WorkVisual.
(>>> 11 "Bus configuration" Page 223)
SafetyConfiguration.sconf Safety configuration
The file contains the safety functions preconfigured by KUKA.
The configuration can be displayed and edited.
(>>> 13 "Safety configuration" Page 251)
StationSetup.cat Station configuration
The file contains the station configuration for the station (con-
troller) selected when the project was created. The configura-
tion can be displayed and edited.
The system software can be installed on the robot controller
via the station configuration.
(>>> 10 "Station configuration and installation" Page 205)
The generatedFiles folder is used by the system and must not be used
for saving files created by the user.
Sunrise applications are Java programs. They define tasks that are to be
executed in a station. They are transferred to the robot controller with the
Sunrise project and can be selected and executed using the smartPAD.
There are 2 kinds of Sunrise applications:
• Robot applications
Only one robot application can be executed on the robot controller at
any given time.
• Background applications
Multiple background applications can run simultaneously and inde-
pendently of the running robot application.
Sunrise applications are grouped into Java packages. This makes pro-
gramming more transparent and makes it easier to use a Java package
later in other projects.
Description
Description
A robot application can be created together with the Java package into
which the application is to be inserted.
Procedure
Description
Procedure
Background applications are Java programs that are executed on the ro-
bot controller parallel to the robot application. For example, they can per-
form control tasks for peripheral devices.
The use and programming of background applications are described here:
(>>> 17 "Background tasks" Page 551)
• Start type:
‒ Automatic
The background application is automatically started after the robot
controller has booted (default).
‒ Manual
The background application must be started manually via the
smartPAD. (This function is not yet supported.)
• Execution type:
‒ Task template Cyclic background task
Template for background applications that are to be executed cycli-
cally (default)
‒ Task template Non-cyclic background task
Template for background applications that are to be executed once
Description
Procedure
Description
Procedure
Description
Procedure
Example
5.5 Workspace
The directory in which the created projects and user-defined settings for
KUKA Sunrise.Workbench are saved is called the workspace. The directo-
ry for the workspace must be defined by the user when Sunrise.Work-
bench is started for the first time. It is possible to create additional work-
spaces in KUKA Sunrise.Workbench and to switch between them.
Procedure
1. Select the menu sequence File > Switch Workspace > Other.... The
Workspace Launcher window opens.
2. In the Workspace box, manually enter the path to the new project di-
rectory.
Alternative:
• Click on Browse... to navigate to the directory where the new
workspace should be created.
• Create the new project directory by clicking on Create new folder.
Confirm with OK.
box.
3. Click on OK to confirm the new workspace. Sunrise.Workbench re-
starts and the welcome screen opens.
Precondition
Procedure
1. Select the menu sequence File > Switch Workspace > Other.... The
Workspace Launcher window opens.
2. Navigate to the desired workspace using Browse… and select it.
3. Confirm with OK. The path to the new project directory is applied in
the Workspace Launcher window.
4. Confirm the selected workspace with OK. Sunrise.Workbench restarts
and opens the selected workspace.
Precondition
Procedure
1. Select the menu sequence File > Switch Workspace. The most re-
cently used workspaces are displayed in a list (max. 4).
2. Select the desired workspace from the list. KUKA Sunrise.Workbench
restarts and opens the selected workspace.
Procedure
1. Select the menu sequence File > Export.... The file export wizard
opens.
2. In the General folder, select the Archive File option and click on Next
>.
3. All the projects in the workspace are displayed in a list in the top left-
hand area of the screen. Select the projects to be archived (set check
mark).
4. Click on Browse… to navigate to the desired file location, enter the
file name for the archive and click on Save.
5. Click on Finish. The archive file is being created.
Precondition
• An archive file (e.g. a ZIP file) with the projects to be loaded is availa-
ble.
Procedure
1. Select the menu sequence File > Import…. The file import wizard
opens.
2. In the General folder, select the Existing Projects into Workspace
option and click on Next >.
3. Activate the Select archive file radio button, click on Browse… to
navigate to the desired archive file and select it.
4. Click on Open. All the projects in the archive are displayed in a list
under Projects.
5. Select projects to be loaded to the workspace.
The following options specify the selection (set the check mark as re-
quired):
Precondition
Procedure
1. Select the menu sequence File > Import…. The file import wizard
opens.
2. In the General folder, select the Existing Projects into Workspace
option and click on Next >.
3. Activate the Select root directory radio button, click on Browse… to
navigate to the desired directory and select it.
4. Click on OK. All the projects in the selected directory are displayed in
a list under Projects.
5. Select projects to be loaded to the workspace (check mark must be
set).
6. Click on Finish. The selected projects are loaded.
Procedure
1. Select the menu sequence File > New > Project.... The project crea-
tion wizard opens.
2. In the Java folder, select the Java Project option and click on Next >.
3. Enter the name of the Java project in the Project name box.
4. In the JRE area, select the JRE version that corresponds to the JRE
version of the Sunrise project. This is generally JavaSE-1.6.
5. Click on Next > and then on Finish.
6. The first time a Java project is created in the workspace – or if the
user’s preference has not yet been specified in previous Java projects
– a query is displayed asking whether the Java perspective should be
opened.
• Select Yes or No as appropriate.
• If the query should not be displayed when the next Java project is
created in the workspace, activate the Remember my decision
option (set check mark).
Description
If a Java project is used for robot programming, the specific KUKA libra-
ries required for this purpose must be inserted into the project. As stand-
ard, these libraries are not contained in a Java project.
The KUKA libraries must be copied from a compatible Sunrise project.
Ideally, this should be a Sunrise project in which the Java project is refer-
enced or will be referenced. The precondition for compatibility of refer-
enced projects is that the RoboticsAPI versions match.
Precondition
Precondition
Procedure
Description
Procedure
Procedure
Procedure
Description
Elements created for a project can be deleted again. The elements are
permanently deleted from the workspace and cannot be restored.
It is also possible to remove some – but not all – of the default elements
of a project.
Procedure
Description
If required, the project can be reloaded from the directory into the work-
Procedure
Description
With this procedure, a project is removed from the Package Explorer and
permanently deleted from the directory for the workspace on the data stor-
age medium. The project cannot be restored.
Procedure
Description
Procedure
1. Select the menu sequence Window > User definitions. The User
definitions window is opened.
2. Select General > Workspace in the directory in the left area of the
window.
3. Activate the check box Update via native hooks or polling to acti-
vate the automatic change recognition.
Description
The release notes contain information about the versions of the system
software, e.g. new functions or system requirements. They can be dis-
played in the editor.
Procedure
The smartPAD is the hand-held control panel for the industrial robot.
The smartPAD has all the operator control and display functions required
for operation.
2 models exist:
• smartPAD
• smartPAD-2
In this documentation, the designation “KUKA smartPAD” or “smartPAD”
refers to both models unless an explicit distinction is made.
6.1.1 smartPAD
The smartPAD has a touch screen: the smartHMI can be operated with a
finger or stylus. An external mouse or external keyboard is not necessary.
Item Description
1 Button for disconnecting the smartPAD
(>>> 6.2 "Disconnecting and connecting the smartPAD" Page 77)
2 Mode selector switch. The switch may be one of the following variants:
• With key
It is only possible to change operating mode if the key is inserted.
• Without key
The mode selector switch is used to call the connection manager. The connection
manager is used to change the operating mode.
(>>> 6.9 "Changing the operating mode" Page 92)
3 EMERGENCY STOP device: stops the robot in hazardous situations. The EMERGEN-
CY STOP device locks itself in place when it is pressed.
4 6D mouse: no function
5 Jog keys: for jogging the robot
(>>> 6.15.3 "Axis-specific jogging with the jog keys" Page 102)
(>>> 6.15.4 "Cartesian jogging with the jog keys" Page 103)
6 Key for setting the override
(>>> 6.15.2 "Setting the jog override" Page 101)
(>>> 6.18.3 "Setting the manual override" Page 114)
7 Main menu key: The main menu key shows and hides the main menu on the smartH-
MI.
(>>> 6.5 "Calling the main menu" Page 87)
8 User keys: the function of the user keys is freely programmable. Uses of the user
keys include controlling peripheral devices or triggering application-specific actions.
(>>> 6.10 "Activating the user keys" Page 93)
9 Start key: the Start key is used to start a program. The Start key is also used to man-
ually address frames and to move the robot back onto the path.
(>>> 6.18 "Program execution" Page 111)
10 Start backwards key: no function
11 STOP key: the STOP key is used to stop a program that is running.
12 Keyboard key: no function
The following applies to the jog keys, the user keys and the Start, Start
backwards and STOP keys:
• The current function is displayed next to the key on the smartHMI.
• If there is no display, the key is currently without function.
Item Description
1 Enabling switches
The enabling switches have 3 positions:
• Not pressed
• Center position
• Fully pressed (panic position)
In operating modes T1, T2 and CRR, the manipulator can only be moved if one of
the enabling switches is held in the central position.
In the Automatic operating mode, the enabling switches have no function.
2 Start key (green): the Start key is used to start a program.
The Start key is also used to manually address frames and to move the robot back
onto the path.
3 Enabling switches
4 USB connection: for FAT32-formatted USB sticks
5 Enabling switches
6 Identification plate
6.1.2 smartPAD-2
The smartPAD-2 has a capacitive touch screen: the smartHMI can be op-
erated with a finger or capacitive stylus. An external mouse or external
keyboard is not necessary.
Item Description
1 2 USB 2.0 interfaces with cover: for NTFS and FAT32-formatted USB sticks
2 Button for disconnecting the smartPAD
(>>> 6.2 "Disconnecting and connecting the smartPAD" Page 77)
3 Mode selector switch. The switch may be one of the following variants:
• With key
It is only possible to change operating mode if the key is inserted.
• Without key
The mode selector switch is used to call the connection manager. The connection
manager is used to change the operating mode.
(>>> 6.9 "Changing the operating mode" Page 92)
4 EMERGENCY STOP device: stops the robot in hazardous situations. The EMERGEN-
CY STOP device locks itself in place when it is pressed.
The following applies to the jog keys, the user keys and the Start, Start
backwards and STOP keys:
• The current function is displayed next to the key on the smartHMI.
• If there is no display, the key is currently without function.
Item Description
1 Press studs for fastening the (optional) carrying strap
2 Strap, dome
3 Left-hand dome: holding the smartPAD with the right hand
4 Enabling switches
The enabling switches have 3 positions:
• Not pressed
• Center position
• Fully pressed (panic position)
In operating modes T1, T2 and CRR, the manipulator can only be moved if one of
the enabling switches is held in the central position.
In the Automatic operating mode, the enabling switches have no function.
5 Start key (green): the Start key is used to start a program.
The Start key is also used to manually address frames and to move the robot back
onto the path.
6 Enabling switches
7 Hand straps with Velcro fastener: when the hand straps are not in use, they can be
pulled in completely.
The information is applicable for both the smartPAD and the smartPAD-2.
The “smartPAD” and “smartPAD-2” models are compatible with one an-
other, i.e. if one model has been disconnected, then the other model
can then be plugged in.
Description
Precondition
Procedure
Description
WARNING
Risk of fatal injury due to non-operational EMERGENCY STOP de-
vice
If a non-operational smartPAD remains connected, there is the danger
that the user will attempt to activate a non-operational EMERGENCY
STOP. Death, injuries or damage to property may result.
• Disconnect a non-operational smartPAD and remove it from the sys-
tem immediately.
Procedure
This update mechanism is only applicable for the smartPAD model with
3 enabling switches, not for the smartPAD-2. The update of the smart-
PAD-2 software is described in the smartPAD-2 operating instructions.
Description
NOTICE
Material damage due to interruption of the software update
If the software update is interrupted, this may result in damage to the
smartPAD.
• Do not disconnect the smartPAD from the robot controller during the
update.
• Do not disconnect the robot controller from the power supply during
the update.
Procedure
Item Description
1 Navigation bar: main menu and status display
(>>> 6.4.1 "Navigation bar" Page 81)
2 Display area
Display of the level selected in the navigation bar, here the Sta-
tion level
3 Jogging options button
Displays the current coordinate system for jogging with the jog
keys. Touching the button opens the Jogging options window,
in which the reference coordinate system and further parame-
ters for jogging can be set.
(>>> 6.15.1 "“Jogging options” window" Page 99)
The navigation bar is the main menu of the user interface and is divided
into 4 levels. It is used for navigating between the different levels.
Some of the levels are divided into two parts:
• Lower selection list: opens a list for selecting an application, a robot or
an I/O group, depending on the level.
• Upper button: if a selection has been made in the list, this button can
be used to display the selected application, robot or I/O group.
Alternatively, the main menu can be called using the main menu key on
the smartPAD. The main menu contains further menus which cannot be
accessed from the navigation bar.
(>>> 6.5 "Calling the main menu" Page 87)
Overview
Item Description
1 Station level
Displays the controller name and the selected operating mode
(>>> 6.4.4 "Station level" Page 83)
2 Applications level
Displays the selected robot application
(>>> 6.18.1 "Selecting a robot application" Page 111)
All robot and background applications are listed under Applica-
tions.
3 Robot level
Displays the selected robot
(>>> 6.4.5 "Robot level" Page 85)
4 I/O groups level
Displays the selected I/O group
(>>> 6.19.5 "Displaying an I/O group and changing the value of
an output" Page 121)
6.4.3 Keypad
There is a keypad on the smartHMI for entering letters and numbers. The
smartHMI detects when the entry of letters or numbers is required and au-
tomatically displays the appropriate keypad.
Item Description
1 Process data tile
Opens the Process data view.
2 Safety tile
Indicates the safety status of the station and opens the Safety
sublevel. The sublevel contains the following tiles:
• Activation
Opens the Activation view for activating and deactivating
the safety configuration. A precondition for activation/deacti-
vation is the user group “Safety maintenance”.
• State
Opens the State view and displays error messages relating
to the safety controller.
3 Frames tile
Opens the Frames view. The view contains the frames created
for the station.
(>>> 6.17.1 "“Frames” view" Page 105)
• Boot state
Indicates the boot status of the robot controller.
• Field buses
Indicates the status of the field buses. The tile is only dis-
played if I/O groups have been created and corresponding
signals have been mapped with WorkVisual.
• Backup Manager
Opens the Backup Manager view. The tile is only displayed
if the Backup Manager has been installed.
(>>> 6.20 "Backup Manager" Page 124)
• Virus scanner
Opens the Virus scanner view. The tile is only displayed if
the virus scanner has been installed.
(>>> 21.4 "Displaying messages of the virus scanner"
Page 619)
5 HMI state tile
Displays the connection status between the smartHMI and the
robot controller.
6 Information tile
Opens the Information view and displays system information,
e.g. the IP address of the robot controller.
(>>> 6.19.6 "Displaying information about the robot and robot
controller" Page 124)
7 Log tile
Opens the Log view and displays the logged events and
changes in state of the system. The display can be filtered
based on various criteria.
(>>> 21.2 "Displaying a log" Page 613)
The Robot level gives access to information and functionalities which af-
fect the selected robot.
Item Description
1 Axis position tile
Opens the Axis position view. The axis-specific actual position
of the robot is displayed.
(>>> 6.19.2 "Displaying the axis-specific actual position"
Page 119)
2 Cartesian position tile
Opens the Cartesian position view. The Cartesian actual posi-
tion of the robot is displayed.
(>>> 6.19.3 "Displaying the Cartesian actual position"
Page 120)
3 Axis torques tile
Opens the Axis torques view. The axis torques of the robot
are displayed.
(>>> 6.19.4 "Displaying axis-specific torques" Page 121)
4 Mastering tile
Opens the Mastering view. The mastering status of the robot
axes is displayed. The axes can be mastered or unmastered in-
dividually.
(>>> 7.3 "Position mastering" Page 132)
• Base calibration
(>>> 7.4.2 "Base calibration: 3-point method " Page 146)
• Tool calibration
(>>> 7.4.1 "Tool calibration" Page 140)
Procedure
• Press the main menu key on the smartPAD. The Main menu view
opens.
Description
Item Description
1 Back button
Touch this button to return to the view which was visible before
the main menu was opened.
2 Home button
Closes all opened areas.
3 Button for closing the level
Closes the lowest opened level.
4 The views most recently opened from the main menu are dis-
played here (maximum 3).
By touching the view in question, it is possible to switch to
these views again without having to navigate the main menu.
Description
The Language selection button on the side panel of the smartHMI (bot-
tom left) can be used to select a different language. The button is labeled
with the abbreviated name of the active language.
Procedure
Description
User privileges
If the user group “Expert” is installed, the user rights of the operator are
restricted. The user rights are then assigned as follows:
Safety mainte-
Function Operator Expert
nance
Selecting/deselecting an application
Pausing an application
Teaching frames
Robot mastering/unmastering
Description
When the robot controller is rebooted, the default user group is selected.
The User group button on the side panel of the smartHMI (bottom left)
can be used to switch to a different user group. The button is labeled with
the abbreviated name of the active user group.
Procedure
3. Enter the password and confirm with Login. The Login window closes
and the selected user group is active.
Logging off a user group:
1. Touch the User group button. The Login window opens.
2. Touch the Log off button. The Login window closes and the default
user group is active again.
Description
CRR is an operating mode to which the system can be switched when the
robot is stopped by the safety controller for one of the following reasons:
• Robot violates an axis-specific or Cartesian monitoring space.
• Orientation of a safety-oriented tool is outside the monitored range.
• Robot violates a force or axis torque monitoring function.
• A position sensor is not mastered or referenced.
• An axis torque sensor is not referenced.
Once the operating mode has been switched to CRR, the robot can be
moved again.
Use
CRR mode can be used, for example, to retract the robot in the case of a
space or force monitoring violation or to master the robot with a Cartesian
velocity monitoring function active.
If the cause of the stop is no longer present and if no further stop is re-
quested for 4 seconds by one of the specified causes, the operating mode
automatically changes to T1.
Motion velocity
The motion velocity of the set working point in CRR mode corresponds to
the jog velocity in T1 mode:
• Program mode: Reduced programmed velocity, maximum 250 mm/s
• Jog mode: Jog velocity, maximum 250 mm/s
• Manual guidance: No limitation of the velocity, but safety-oriented ve-
locity monitoring functions in accordance with the safety configuration
Description
Precondition
• If the mode selector switch is the variant with a key: the key is inser-
ted in the switch.
Procedure
1. Turn the mode selector switch on the smartPAD. The connection man-
ager is displayed.
2. Select the operating mode.
(>>> 3.5.2.1 "Mode selection" Page 38)
3. Return the mode selector switch to its original position.
The selected operating mode is now active and is displayed in the
navigation bar of the smartHMI.
Description
The user keys on the smartPAD can be assigned functions. All the user
key functions of a running application are available to the operator. In or-
der to be able to use the desired functions, the operator must activate the
corresponding user key bar.
Procedure
1. Touch the User key selection button on the left side panel of the
smartHMI.
The User key selection window opens. The user key bars currently
available are displayed.
2. Select the desired user key bar by pressing the corresponding name
button.
The text or image on the smartHMI next to the user keys changes ac-
cording to the bar selected. The user keys now have the correspond-
ing functions.
3. Touch the User key selection button or an area outside the window.
The User key selection window closes.
Example
Description
Procedure
1. Select the Safety > State tile at the Station level. The State view
opens.
The cause of the error is displayed in the view. The Resume safety
controller button is not active.
2. Eliminate the error. The Resume safety controller button is now acti-
vated.
Overview
The following coordinate systems are relevant for the robot controller:
• World
• Robot base
• Base
• Flange
• Tool
Description
The tool coordinate system is offset to the tool center point during calibra-
Operating the KUKA smartPAD
tion.
(>>> 7.4.1 "Tool calibration" Page 140)
Position and orientation
In order to determine the position and orientation of an object, translation
and rotation relative to a reference coordinate system are specified. 6 co-
ordinates are used for this purpose.
Translation
Coordinate Description
Distance X Translation along the X axis of the reference system
Distance Y Translation along the Y axis of the reference system
Distance Z Translation along the Z axis of the reference system
Rotation
Coordinate Description
Angle A Rotation about the Z axis of the reference system
Angle B Rotation about the Y axis of the reference system
Angle C Rotation about the X axis of the reference system
Procedure
Description
Procedure
Description
The functionality of the Start key can be configured in the Jogging type
window.
Item Description
1 Jogging type button
The display on the button depends on the selected jogging
type.
2 Application mode jogging type
In this jogging mode an application can be started by means of
the Start key.
Note: When switching to T2 or Automatic mode, Application
mode is set automatically.
3 Changing program run mode
(>>> 6.18.2 "Setting the program run mode" Page 113)
4 Frame name display
The name of the frame is displayed if a frame has been selec-
ted in the Frames view.
5 Move PTP jogging type
A taught frame can be addressed with a PTP motion by means
of the Start key.
(>>> 6.17.5 "Manually addressing frames" Page 110)
The button for selecting the jogging type is only active if a
frame has been selected in the Frames view.
Note: In the Move PTP jogging type, the Status of the end
frame is taken into consideration. This can cause the axes to
move, even if the end point has already been reached in Carte-
sian form.
Icons
The following icons are displayed on the Jogging type button depending
on the set jogging type:
Icon Description
Application mode jogging type
Overview
• Cartesian jogging
The set TCP is jogged in the positive or negative direction along the
axes of a coordinate system or rotated about these axes.
• Axis-specific jogging
Each axis can be moved individually in the positive or negative direc-
tion.
Procedure
Description
All parameters for jogging the robot can be set in the Jog options win-
dow.
Item Description
1 Jogging options button
The icon displayed depends on the programmed jogging type.
2 Select the jogging type.
Axis-specific jogging or Cartesian jogging of the robot in differ-
ent coordinate systems is possible. The selected jogging type is
indicated in green and displayed on the Jogging options but-
ton.
Application tool
The application tool consists of all the frames located below the robot
flange during the runtime. These can be the frames of a tool or work-
piece, for example, that are connected to the robot flange with the attach-
To command. They may also include frames generated in the application
and linked directly or indirectly to the flange during the runtime.
The application tool is then only available in the jogging options when a
robot application is paused, and if a motion command was sent to the ro-
bot controller prior to pausing.
• If the application tool is set in the jogging options, all frames located
hierarchically under the flange coordinate system during the runtime
can be selected as the TCP for jogging. The origin frame of the appli-
cation tool on the robot flange is available under the name Applica-
tionTool(Root) for selection as the TCP for jogging.
• If the application tool is set in the jogging options and the application
resumed, the following occurs: the frame with which the current motion
command is executed in the application is automatically set as the
TCP.
Description
The jog override determines the velocity of the robot during jogging. The
velocity actually achieved by the robot with a jog override setting of 100%
depends on various factors, including the robot type. However, the velocity
of the set working point cannot exceed 250 mm/s.
Procedure
3. Set the desired jog override. It can be set using either the plus/minus
keys or by means of the slider.
• Plus/minus keys: The override can be set in steps to the following
values: 100%, 75%, 50%, 30%, 10%, 5%, 3%, 1%, 0%.
• Slider: The override can be adjusted in 1% steps.
4. Touch the Override button or an area outside the window to close the
window.
Alternative procedure
Alternatively, the override can be set using the plus/minus key on the right
of the smartPAD.
The value can be set in the following steps: 100%, 75%, 50%, 30%, 10%,
5%, 3%, 1%.
Description
Each robot axis can be moved individually in the positive or negative di-
rection using the jog keys.
The positive direction of rotation of the robot axes can be determined us-
ing the right-hand rule. Imagine the cable bundle which runs inside the ro-
bot from the base to the flange. Mentally close the fingers of your right
hand around the cable bundle at the axis in question. Keep your thumb
extended while doing so. Your thumb is now positioned on the cable bun-
dle so that it points in the same direction as the cable bundle runs inside
the axis on its way to the flange. The other fingers of your right hand
point in the positive direction of rotation of the robot axis.
Procedure
Description
The robot can be moved in a Cartesian sense in the world, base or tool
coordinate system using the jog keys.
Precondition
• World, Base or Tool is selected as the jogging type in the jogging op-
tions.
• In the jogging options, the tool and the desired TCP are selected.
• Only in the case of jogging type Base: the desired base is set in the
jogging options.
All frames which were designated in Sunrise.Workbench as a base
are available as a base.
(>>> 9.2.2 "Designating a frame as a base" Page 175)
Procedure
Description
carried out during Cartesian jogging. In the null space motion, the axes
are rotated in such a way that the position and orientation of the set TCP
are retained during the motion.
Properties
• The null space motion is carried out via the “elbow” of the robot arm.
• The position of the elbow is defined by the elbow angle (R).
• In Cartesian jogging with the jog keys, the position of the elbow angle
(R) can be modified.
Areas of application
• The optimal axis configuration can be set for a given position and ori-
entation of the TCP. This is especially useful in a limited working
space.
• When a software limit switch is reached, you can attempt to move the
robot out of the range of the limit switches by changing the elbow an-
gle.
Description
CAUTION
If the robot is manually guided, an EMERGENCY STOP device must be
installed. It must always be within reach of the operator.
Precondition
Procedure
1. Press and hold down the enabling switch on the hand guiding device.
2. Guide the TCP to the desired position.
3. Once the position has been reached, release the enabling switch.
Procedure
Description
The view contains the frames created for the station. Additional frames
can be created and the frames taught here. The position and orientation
of a frame in space and the associated redundancy information are recor-
ded during teaching.
• Taught frames can be addressed manually.
• Taught frames can be used as end points of motions. If an application
is run and the end frame of a motion is addressed, this is selected in
the Frames view.
(>>> 6.19.1 "Displaying the end frame of the motion currently being
executed" Page 118)
Item Description
1 Frame path
Path to the frames of the currently displayed hierarchy level:
Goes from World to the direct parent frame (here Box)
2 Frames of the current hierarchy level
A frame can be selected by touching it. The frame selected
here is marked with a hand icon. The hand icon means that
this frame can be used as the base for jogging and can be cali-
brated.
3 Properties of the selected frame
Description
If the desired TCP is moved to the position of a new frame, the frame is
taught directly on creation. In other words, when a frame is created, the
position and orientation of the TCP that is currently selected in the jogging
options are automatically applied as frame coordinates.
Precondition
• The tool with the desired TCP is set in the jogging options.
(>>> 6.15.1 "“Jogging options” window" Page 99)
The application tool is only available in the jogging options if the ro-
bot application is paused. For this reason, use of the application tool
for teaching frames is not recommended.
The tool corresponding to the current application tool (object tem-
plate of the tool) is also available for selection in the jogging op-
tions. Teaching can be carried out with this tool instead of the appli-
cation tool.
• T1 mode
Procedure
Description
Precondition
• The tool with the desired TCP is set in the jogging options.
(>>> 6.15.1 "“Jogging options” window" Page 99)
The application tool is only available in the jogging options if the ro-
bot application is paused. For this reason, use of the application tool
for teaching frames is not recommended.
The tool corresponding to the current application tool (object tem-
plate of the tool) is also available for selection in the jogging op-
tions. Teaching can be carried out with this tool instead of the appli-
cation tool.
• T1 mode
Procedure
Item Description
1 Values saved up to now
2 New values
3 Changes between the values saved until now and new values
4 Base for jogging
All coordinate values of the frame which are displayed in the di-
alog refer to the jogging base set in the jogging options. These
values generally differ from the coordinate values of the frame
with respect to its parent frame.
(>>> 6.15.1 "“Jogging options” window" Page 99)
5 Information on the robot and tool used during teaching
These frame properties are adopted by Sunrise.Workbench
when the project is synchronized.
6 Redundancy informationon on the taught point
These frame properties are adopted by Sunrise.Workbench
when the project is synchronized.
7 Cartesian distance between the current and new position of the
frame
Description
Frames can be taught using a hand guiding device. Here, the TCP is
moved by hand to the desired position.
Manual guidance is supported as standard in all operating modes except
CRR mode. In the station configuration, it is possible to configure manual
guidance as not allowed in Test mode and/or Automatic mode.
CAUTION
In manual guidance, incorrectly selected parameters (e.g. incorrect load
data, incorrect tool) or incorrect information (e.g. from defective torque
sensors) can be interpreted as external forces. This can result in unpre-
dictable motions of the robot.
CAUTION
If the robot is manually guided, an EMERGENCY STOP device must be
installed. It must always be within reach of the operator.
Precondition
Procedure
1. Press and hold down the enabling switch on the hand guiding device.
2. Guide the TCP to the desired position.
3. Once the position has been reached, release the enabling switch.
4. In the Frames view, select the frame whose position is to be taught.
5. Press Touchup to apply the current TCP coordinates to the selected
frame.
The coordinates and redundancy information of the taught point are
displayed in the Apply touchup data dialog (>>> Fig. 6-21).
6. Press Apply to save the new values.
Description
Precondition
Procedure
Procedure
• Select the desired robot application in the navigation bar under Appli-
cations.
The Applications view opens and the robot application goes into the
Selected state.
Description
Item Description
1 Current status of the robot application
The status is displayed as text and as an icon.
(>>> "Status display" Page 112)
2 Display of robot application
The name of the selected robot application is displayed, here
Motions.
3 Message window
Error messages and user messages programmed in the robot
application are displayed here.
Status display
Start key
An icon on the side panel of the smartHMI indicates the function that can
be executed using the Start key.
Icon Description
Start application.
A selected application can be started or a paused appli-
cation can be continued.
Reposition robot.
If the robot has left the path, it must be repositioned in
order to continue the application.
STOP key
An icon on the side panel of the smartHMI indicates the function that can
be executed using the STOP key.
Icon Description
Pause application.
A running application can be paused in Automatic mode.
If a robot application is paused, the robot can be jogged. The tool and
TCP currently used in the paused application are not automatically set
as the tool and TCP for Cartesian jogging.
(>>> 6.15.1 "“Jogging options” window" Page 99)
Precondition
‒ Motion paused
‒ Error
• T1 or T2 mode
Procedure
Button Description
Standard mode
The program is executed through to the end without
stopping.
Step mode
The program is executed with a stop after each motion
command. The Start key must be pressed again for each
motion command.
The program run mode can also be set and requested in the source
code of the application. (>>> 16.17 "Changing and requesting the pro-
gram run mode" Page 468)
Description
The manual override determines the velocity of the robot during program
execution.
The manual override is specified as a percentage of the programmed ve-
locity. In T1 mode, the maximum velocity is 250 mm/s, irrespective of the
override that is set.
Precondition
Procedure
3. Set the desired manual override. It can be set using either the plus/
minus keys or by means of the slider.
• Plus/minus keys: The override can be set in steps to the following
values: 100%, 75%, 50%, 30%, 10%, 5%, 3%, 1%, 0%.
• Slider: The override can be adjusted in 1% steps.
4. Touch the Override button or an area outside the window to close the
window.
Alternative procedure
Alternatively, the override can be set using the plus/minus key on the right
of the smartPAD.
The value can be set in the following steps: 100%, 75%, 50%, 30%, 10%,
5%, 3%, 1%.
Precondition
Procedure
Precondition
• Automatic mode
• The project is not controlled externally.
Procedure
Description
Precondition
Alternative procedure
Description
The following events can cause the robot to leave its planned path:
• Triggering of a non-path-maintaining stop
• Jogging during a paused application
The robot can be repositioned using the Start key. Repositioning means
that the robot is returned to the Cartesian position at which it left the path.
The application can then be resumed from there.
Characteristics of the motion which is used to return to the path:
• A PTP motion is executed.
The path used to return to the path is different than that taken when
leaving the path.
• The robot is moved at 20% of the maximum possible axis velocity and
the effective program override (effective program override = manual
override application override).
The currently set jog override is irrelevant for repositioning.
• The robot is moved with the load data which were set when the appli-
cation was interrupted.
NOTICE
Repositioning a robot under impedance control may result in
unexpected robot motions. The robot is always repositioned to the com-
mand position; this means that, in the case of a robot under impedance
control, the actual position after repositioning does not necessarily corre-
spond to the actual position at which it left the path. This can lead to
unexpectedly high forces in contact situations.
This behavior can be avoided by moving the impedance-controlled robot
manually, prior to repositioning, to a position as close as possible to the
position at which it left the path.
NOTICE
Repositioning may only be carried out if there is no risk of a collision
while it is returning to the path. If this is not assured, first move the ro-
bot into a suitable position from which it can be safely repositioned.
Procedure
1. In “T1” or “T2” mode: press and hold down the enabling switch.
2. Press Start key and hold it down. The robot returns to the path.
Precondition
Procedure
• In the navigation bar under Applications touch the button with the
background application to be stopped.
Buttons
Precondition
Procedure
• In the navigation bar under Applications touch the button with the
background application to be started.
Buttons
6.19.1 Displaying the end frame of the motion currently being executed
Description
Fig. 6-23: The arrow icon marks the current end frame
If the end frame is located hierarchically below a displayed frame, the Dis-
play child frames button is marked with an additional arrow icon (3 ar-
rowheads):
You can switch directly to the current end frame using the magnifying
glass button in the upper right-hand area of the Frames view:
Precondition
Procedure
Procedure
Description
Procedure
Description
The Cartesian actual position of the selected TCP is displayed. The val-
ues refer to the base set in the jogging options.
The display contains the following data:
• Current position (X, Y, Z)
• Current orientation (A, B, C)
• Current redundancy information: Status, Turn, redundancy angle (E1)
• Current tool, TCP and base
The actual position can also be displayed while the robot is moving.
Procedure
Description
• Current tool
The axis-specific torques can also be displayed while the robot is moving.
Precondition
To change an output:
Procedure
1. In the navigation bar, select the desired I/O group from I/O groups.
The inputs/outputs of the selected group are displayed.
2. Select the output to be changed.
3. An input box is displayed for numeric outputs. Enter the desired value.
4. Press and hold down the enabling switch. Change the value of the in-
put with the appropriate button.
Description
Buttons
The following buttons are available, depending on the type of output se-
lected:
Button Description
Sets the Boolean output to the value True (1).
Signal direction
I/O types
Icon Description
Icon for an unsigned digital signal
Procedure
Description
The information is required, for example, when requesting help from KU-
KA Customer Support.
The following information is displayed under the individual nodes:
Node Description
Station Station information
• Connection IP
• Connection state
<Robot name>/Type Robot information
plate
• Serial number: Serial number of the con-
nected robot
• Connected robot: Type of the connected
robot
• Installed robot: Robot type specified in the
station configuration of Sunrise.Workbench
• Operating time [h]
The operating hours meter is running as
long as the drives are switched on.
Overview
Once the Backup Manager has been installed on the robot controller, a
tile for the Backup Manager is available on the smartHMI.
The Backup Manager makes it possible to back up and restore robot con-
troller data manually. Automatic backup of data at a predefined interval
can also be preconfigured in the station configuration.
The following data are backed up and restored:
• Project data
• Catalogs of the installed software
• User-specific files (directory: C:\KRC\UserData)
The target directory for backups and the source directory for restorations
User privileges
Precondition
Procedure
Description
Item Description
1 Status indicator of the backup
• Backup now
(>>> 6.20.2 "Backing up data manually" Page 128)
• Restore
The button cannot be activated until the backup copy that is
to be restored has been selected using the magnifying glass
button.
(>>> 6.20.3 "Restoring data manually" Page 128)
• Configure source path
Displays the “Configure source path” area. After this the but-
ton is inactive.
• Cancel
Hides the “Configure source path” area again. The button is
inactive in the default view.
4 Information about the most recent successful backup
• Project name
• Date and time of the backup
7 Magnifying glass button
Opens a dialog in which the backup copy to be restored can be
selected. The dialog displays all backup copies contained in the
configured source directory.
8 Load data set button
Opens a dialog which can be used to select and apply ready-
made restoration configurations.
The button is only active if the file for restoration configurations
is configured in the station configuration and the file is saved
under the configured path on the robot controller.
Description
The backup copies are saved in the target directory in the following folder
structure:
• IP address_Project name\BACKUP_No.
Element Description
IP address IP address of the robot controller
Project Name of the project installed on the robot controller
name
No. Number of the backup copy
The BACKUP folder with the highest number always con-
tains the most recent backup copy.
Precondition
Procedure
• Touch the Backup now button in the Backup Manager view. The
backup is carried out.
Precondition
• No application is selected.
• Robot is not being jogged or manually guided.
• No data backup is in progress.
Procedure
Description
The IP addresses of the robot controller and the server must be located
in the same range. IP address and subnet mask of the robot controller
to be restored must be selected accordingly.
Precondition
Procedure
NOTICE
If an application is still running when the robot controller is switched off,
active motions are stopped. This can result in the robot being damaged.
For this reason, the robot controller must only be switched off when no
more applications are running and the robot is stationary.
Description
When the robot controller is switched on, the system software starts auto-
matically.
The robot controller is ready for operation when the status indicator for
the boot state of the robot controller lights up green:
• Boot state tile at the Station level under the robot controller tile.
Procedure
• Turn the main switch on the robot controller to the “I” position.
Precondition
Procedure
• Turn the main switch on the robot controller to the “0” position.
Description
If the robot controller is rebooted or the drive bus connection restored, the
system checks for every connected PDS whether the current PDS firm-
ware version matches the firmware version on the robot controller. If the
firmware version of at least one of the PDSs is older than the version on
the robot controller, a PDS firmware update must be performed.
The following error message is displayed under the Device state tile:
Firmware update is required. Select "Diagnosis" > "PDS firmware update"
in the main menu in order to update the firmware.
Procedure
Once the update has been successfully completed, the dialog is closed.
Description
Procedure
An LBR has a Hall effect mastering sensor in every axis. The mastering
position of the axis (zero position) is located in the center of a defined
series of magnets. It is automatically detected by the mastering sensor
when it passes over the series of magnets during a rotation of the axis.
1. Before the actual mastering takes place, an automatic search run is
performed in order to find a defined premastering position.
2. If the search run is successful, the axis is moved into the premaster-
ing position.
3. Starting from the premastering position, the axis is moved in such a
way that the mastering sensor passes over the series of magnets. The
motor position at the moment when the mastering position of the axis
is detected is saved as the zero position of the motor.
If the search run or the mastering fails, the process is aborted and the ro-
bot stops.
Overview
Description
The LBR is delivered in the mastered state. For this reason, no mastering
without tool is required during initial start-up.
Following an update of the system software on a robot controller that
was previously operated with a Sunrise.OS version <= 1.15, mastering
must be performed again without a tool. Otherwise, mastering with a
tool is not possible.
Precondition
Procedure
1. Select the Mastering tile at the Robot level. The Mastering view
opens.
2. Select No tool in the tool selection.
3. Press and hold down the enabling switch.
4. Press the Master button for the unmastered axis.
First of all, the premastering position is located by means of a search
run. The mastering run is then performed. Once mastering has been
carried out successfully, the axis moves to the calculated mastering
position (zero position).
5. Repeat steps 3 and 4 to master further axes.
Description
If a tool is mounted on the robot, the mastering position shifts. This tool
offset can be taught for every tool. The difference from the mastering with-
out a tool is saved on the robot.
As soon as the tool offset has been taught for all axes, the tool can be
used for mastering without the need to remove the tool.
In the case of tools that pick up heavy workpieces, the offset should be
taught not for the tool alone, but also for the tool with the workpiece
picked up. A corresponding tool must be created for this in Sun-
rise.Workbench as an object template.
The tool offsets are stored directly on the robot. The available memory
is sufficient for up to 128 different tools. If additional tool offsets are to
be taught, tool offsets that are no longer required must be deleted first.
This is done by removing the corresponding tool from the object tem-
plate in Sunrise.Workbench.
Precondition
Procedure
1. Select the Mastering tile at the Robot level. The Mastering view
opens.
2. Select the tool that is mounted on the robot.
NOTICE
Always perform mastering with the tool that is mounted on the robot.
If a tool is selected that does not correspond to the mounted tool,
the robot may move in an unexpected manner. This may result in
damage to components, the tool or the robot.
Description
If the offset for a tool has been taught, mastering can be performed in the
case of a loss of mastering without the need to remove the tool.
Precondition
1. Select the Mastering tile at the Robot level. The Mastering view
opens.
2. Select the tool that is mounted on the robot.
NOTICE
Always perform mastering with the tool that is mounted on the robot.
If a tool is selected that does not correspond to the mounted tool,
the robot may move in an unexpected manner. This may result in
damage to components, the tool or the robot.
Description
When checking a mastered axis, a mastering run is performed and the dif-
ference from the currently saved mastering is displayed on the smartHMI.
If mastering with a tool has been checked, the difference from the current-
ly saved tool offset is also displayed.
The differences found can be used to assess whether the saved master-
ing position or the taught tool offset must be updated or whether both val-
ues can be retained (Cancel).
NOTICE
In the case of an update of the mastering data of the robot, frames that
have already been taught are no longer addressed correctly. Frames
that have already been taught must therefore be taught again following
an update. Failure to observe this precaution may result in damage to
property.
Item Description
1 Display of the mastering data of the robot
2 Display of the tool offset data
The offset data are only displayed if mastering with tool has
been checked.
3 Tool offset button
The button is only displayed if mastering with tool has been
checked.
4 Previously saved values for the robot mastering or tool offset
5 Newly determined values for the robot mastering or tool offset
6 Difference between the previously saved and newly determined
values for robot mastering or tool offset
Precondition
• For checking mastering with tool: a tool for which Teach tool offset
has been carried out is mounted on the robot.
• Axes are mastered.
• Operating mode T1 or CRR
1. Select the Mastering tile at the Robot level. The Mastering view
opens.
2. In the tool selection, select No tool if checking mastering without a
tool, or select the tool that is mounted on the robot.
NOTICE
Always perform mastering with the tool that is mounted on the robot.
If a tool is selected that does not correspond to the mounted tool,
the robot may move in an unexpected manner. This may result in
damage to components, the tool or the robot.
Description
Precondition
• Operating mode T1
Procedure
1. Select the Mastering tile at the Robot level. The Mastering view
opens.
2. Press the Unmaster button for the mastered axis. The axis is unmas-
tered.
7.4 Calibration
Description
Overview
• XYZ 4-point
(>>> 7.4.1.1 "TCP calibration: XYZ 4-point method"
Page 141)
2 Define the orientation of the tool coordinate system
The following methods are available:
• ABC 2-point
(>>> 7.4.1.2 "Defining the orientation: ABC 2-point
method" Page 143)
This method is not available for safety-oriented tools.
• ABC world
(>>> 7.4.1.3 "Defining the orientation: ABC world meth-
od" Page 145)
Description
Precondition
Procedure
1. Select the Calibration> Tool calibration tile at the Robot level. The
Tool calibration view opens.
2. Select the tool to be calibrated and the corresponding TCP.
3. Select the TCP calibration(XYZ 4-point) method. The measuring
points of the method are displayed as buttons:
• Measurement point 1 ... Measurement point 4
In order to be able to record a measuring point, it must be selected
(button is orange).
4. Move the TCP to any reference point. Press Record calibration
point. The position data are applied and displayed for the selected
measuring point.
5. Move the TCP to the reference point from a different direction. Press
Record calibration point. The position data are applied and
displayed for the selected measuring point.
6. Repeat step 5 two more times.
7. Press Determine tool data. The calibration data and the calculation
error are displayed in the Apply tool data dialog.
8. If the calculation error exceeds the maximum permissible value, a
warning is displayed. Press Cancel and recalibrate the TCP.
Description
The robot controller is notified of the axes of the tool coordinate system
by addressing a point on the X axis and a point in the XY plane.
The points must maintain a defined minimum distance from one another. If
the points are too close to one another, the position data cannot be
saved. A corresponding error message is generated.
The minimum distance can be modified in Sunrise.Workbench.
(>>> 10.4.7 "Configuration parameters for calibration" Page 211)
This method is used for tools with edges and corners which can be used
for orientation purposes. Furthermore, it is used if it is necessary to define
the axis directions with particular precision.
This method is not available for safety-oriented tools.
Precondition
Procedure
Description
The user aligns the axes of the tool coordinate system parallel to the axes
of the world coordinate system. This communicates the orientation of the
tool coordinate system to the robot controller.
There are 2 variants of this method:
• 5D: The user communicates the tool direction to the robot controller.
The default tool direction is the X axis. The orientation of the other ax-
es is defined by the system and cannot be influenced by the user.
The system always defines the orientation of the other axes in the
same way. If the tool subsequently has to be calibrated again, e.g. af-
ter a crash, it is therefore sufficient to define the tool direction again.
Rotation about the tool direction need not be taken into consideration.
• 6D: The user communicates the direction of all 3 axes to the robot
controller.
This method is used for tools that do not have corners which the user can
employ for orientation, e.g rounded tools such as adhesive or welding
nozzles.
Precondition
Procedure
Description
• The TCP can be jogged along the edges of the work surface or work-
piece.
• Points can be taught relative to the base. If it is necessary to offset
the base, e.g. because the work surface has been offset, the points
move with it and do not need to be retaught.
The origin and 2 further points of a base are addressed with the 3-point
method. These 3 points define the base.
The points must maintain a defined minimum distance from the origin and
minimum angles between the straight lines (origin – X axis and origin –
XY plane). If the points are too close to one another or if the angle be-
tween the straight lines is too small, the position data cannot be saved. A
corresponding error message is generated.
The minimum distance and angles can be modified in Sunrise.Workbench.
(>>> 10.4.7 "Configuration parameters for calibration" Page 211)
Precondition
Procedure
1. Select Calibration > Base calibration at the Robot level. The Base
calibration view opens.
2. Select the base to be calibrated.
3. Select the mounted tool and the TCP of the tool with which the meas-
uring points of the base are addressed.
The measuring points of the 3-point method are displayed as buttons:
• Origin
• Positive X axis
• Positive Y value on XY plane
(button is orange).
4. Move the TCP to the origin of the base. Press Record calibration
point. The position data are applied and displayed for the selected
measuring point.
5. Move the TCP to a point on the positive X axis of the base. Press Re-
cord calibration point. The position data are applied and displayed
for the selected measuring point.
6. Move the TCP to a point in the XY plane with a positive Y value.
Press Record calibration point. The position data are applied and
displayed for the selected measuring point.
7. Press Determine base data. The calibration data are displayed in the
Apply base data dialog.
8. Press Apply to save the calibration data.
9. Synchronize the project in order to save the calibration data in Sun-
rise.Workbench.
Description
During load data determination, the robot first performs various measure-
ment runs using the wrist axes (A5, A6 and A7). The load data are then
calculated from the data recorded during the measurement runs.
The mass and the position of the center of mass of the tool mounted on
the robot flange can currently be determined. It is also possible to specify
the mass and to determine the position of the center of mass on the basis
of the mass that is already known.
• At the start of the load data determination, axis A7 is moved to the
zero position. Additionally, axis A5 is positioned in such a way that ax-
is A6 is aligned perpendicular to the weight.
• During the measurement runs, axes A6 and A7 require a certain axis
range for their motions:
‒ As standard, axis A6 moves between -95° and +95°.
If the workspace is insufficient for a motion in this axis range, e.g.
due to the dimensions of the mounted tool, the motion range can
be limited further. A check box is provided for this in the Load da-
ta view on the smartHMI.
If the motion range is limited, axis A6 moves 30°, or to be more
precise between -15° and +15° relative to its starting position. If
the distance to one of the software limit switches of the axis is
less than 15°, the difference is added to the angle in the opposite
direction.
‒ Axis A7 moves from 0° to -90°.
• Axes A1 to A4 are not moved during load data determination.
Quality
The quality of the load data determination may be influenced by the fol-
lowing constraints:
• Mass of the tool
Load data determination becomes more reliable as the mass of the
tool increases. This is because measurement uncertainties have a
greater influence on a smaller mass.
Load data determination cannot yet be used reliably for masses of
less than one kilogram.
• Supplementary loads
Supplementary loads mounted on the robot, e.g. dress packages, lead
to incorrect load data.
• Start position from which load data determination is started
A suitable start position should be determined first and meet the fol-
lowing criteria:
‒ Axes A1 to A5 are as far away as possible from singularity posi-
tions.
The criterion is relevant if the mass is to be determined during
load data determination. If load data determination is only possible
in poses for which axes A1 to A5 are close to singularity positions,
the mass can be specified. If only the center of mass is to be de-
termined on the basis of the specified mass, the criterion of axis
position is irrelevant.
‒ The suitability of the start position for load data determination in
the case of a robot for which automatic load data determination is
to be carried out must be checked before the load that is to be de-
termined is mounted on the robot.
A robot pose is suitable as a start position for load data determi-
nation if there are only very slight external torques (ideally
< 0.5 Nm) acting on the load-free robot in this position. This can
Start-up and recommissioning
WARNING
Danger to life and limb due to incorrect loads
Operating a robot with incorrect loads may result in death, severe inju-
ries or damage to property. For example, the braking procedure may
take too long with incorrect load data.
• Use only loads that are permissible for the robot.
• Use correct load data.
Safety-oriented tools
For the load data determination for safety-oriented tools, it must be ensur-
ed that the modified load data are not automatically transferred to the
safety configuration located on the robot controller. (>>> 9.3.10 "Configur-
ing a safety-oriented tool" Page 188)
The load data determined for a safety-oriented tool must first be updated
in Sunrise.Workbench by means of project synchronization. This changes
the safety configuration of the project in Sunrise.Workbench; the project
must then be re-transferred to the robot controller by synchronizing the
project again.
If a changed safety configuration is activated on the robot controller, the
safety maintenance technician must carry out safety acceptance.
(>>> 13.14 "Safety acceptance overview" Page 330)
To avoid spending unnecessary time performing verifications, it is advis-
able to mark a tool as safety-oriented only when the load data have
been correctly entered or determined and have been transferred to Sun-
rise.Workbench.
Preparation
NOTICE
If parts of the mounted tool project behind the flange plane (in the neg-
ative Z direction relative to the flange coordinate system), there is a risk
of the tool colliding with the manipulator during the measurement runs.
If the motion of the axes during load data determination is unknown to
the operator, or if a collision between the tool and manipulator cannot
be ruled out (e.g. for the initial load data determination for a tool), it is
advisable to determine the load data in T1 mode. This does not affect
the quality of the measurement results.
Procedure
1. Select the Load data tile at the Robot level. The Load data view
opens.
2. Select the mounted tool from the selection list.
3. If required, activate the check box next to Restricted motion range
for axis 6.
4. If T1 or T2 mode is set, press and hold down the enabling switch until
load data determination has been completed.
5. Press Determining the load data.
6. If the tool already has a mass, the operator will be asked if the mass
is to be redetermined.
• Select Use existing mass if the currently saved mass is to be re-
tained.
• Select Redetermine mass if the mass is to be determined again.
7. The robot starts the measurement runs and the load data are deter-
mined. A progress bar is displayed.
If the motion enable signal is withdrawn during load data determina-
tion, e.g. by an EMERGENCY STOP or by releasing the enabling
switch (T1, T2), the load data determination is aborted and must be
restarted.
Item Description
1 Tool selection list
The tools created in the object templates are available for se-
lection here.
2 Load data display
Displays the current load data of the selected tool.
3 Display of axes used
Displays the axes that are moved for load data determination.
4 Option Restricted motion range for axis 6
Brake test
8 Brake test
Description
Each robot axis has a holding brake integrated into the drive train. The
brakes have 2 functions:
• Stopping the robot when the servo control is deactivated or the robot
is de-energized.
• Switching the robot to the safe state “Standstill” in the event of a fault.
The brake test checks whether the brake holding torque applied by each
brake is high enough, i.e. whether it exceeds a specific reference holding
torque. This reference holding torque can be specified by the user or read
from the motor data.
Unless otherwise determined by a risk assessment, the brake test must
be performed regularly:
• The brake test must be carried out for each axis during start-up and
recommissioning of the industrial robot.
• The brake test must be performed daily during operation.
The user can carry out a risk assessment to determine whether the
brake test is required for the specific application and, if so, how often it
is to be performed.
Execution
A precondition for execution of the brake test is that the robot is at oper-
ating temperature.
The brake test is manually executed by means of an application. A pre-
pared brake test application for the LBR iiwa is available from Sun-
rise.Workbench.
In this brake test application, the robot is moved prior to the actual brake
test and the resulting maximum absolute torque is determined for each ax-
is. The torque determined is then communicated to the brake test as the
reference holding torque.
The determination of the maximum absolute torques is referred to in the
following as torque value determination.
It is advisable to remove the torque value determination from the appli-
cation and to test the brakes against the minimum brake holding torque.
If the brakes are tested against a torque specified by the user, a risk
assessment must be carried out before the test. It must be determined
whether there are any hazards if the brakes show a lower torque than
the minimum brake holding torque.
Procedure
When a brake is tested, the following steps are carried out as standard:
1. The axis moves at constant velocity over a small axis angle of max.
5° (on the output side). The gravitation and friction are determined
during this motion.
2. When the axis has returned to its starting position and the axis drive
is stationary, the brake is closed.
The brake test does not depend on the loads mounted on the robot, as
gravitation and friction are taken into consideration when the test is car-
ried out.
Overview
The following describes the steps for executing the brake test with the
template available in Sunrise.Workbench.
The brake test application can be adapted and expanded. The comments
contained in the template must be observed.
Brake test
NOTICE
If a brake is defective, the corresponding axis may slip during the brake
test and the robot may sag. The brake test must be executed in a posi-
tion in which no damage could result from potential sagging. The start-
ing position for the brake test must be selected accordingly.
NOTICE
If the brake test fails for an axis (brake is defective), the application
must ensure that the robot is automatically moved to a safe position. A
position is considered safe if the robot is supported in such a way that it
either cannot sag or cannot cause damage in the event of sagging.
Step Description
1 Create the brake test application from a template.
(>>> 8.2 "Creating the brake test application from the tem-
plate" Page 156)
2 In the brake test application, remove or adapt determination
of the application-specific maximum absolute torques.
At the start of the brake test application, 2 predefined axis
positions are addressed as standard. These positions are
addressed in order to determine the maximum absolute tor-
que for each axis and transfer it to the brake test as the
reference holding torque.
It is advisable to test the brakes against the minimum brake
holding torque, which is stored in the motor data. To do so,
the prepared brake test application must be adapted.
(>>> 8.2.1 "Adapting the brake test application for testing
against the minimum holding torque" Page 158)
If the brake test requires the maximum absolute torques
which occur when a user-specific robot application is execu-
ted, the user-specific robot application can be added to the
brake test application. Since the brakes are not tested
against the minimum brake holding torque in this case, a
risk assessment must be carried out before the test.
(>>> 8.2.2 "Changing the motion sequence for torque value
determination" Page 159)
3 Change the starting position for the brake test.
The default starting position is the vertical stretch position.
If required, a different starting position can be selected.
(>>> 8.2.3 "Changing the starting position for the brake
test" Page 159)
4 If necessary, make further user-specific adaptations in the
brake test application.
Examples:
Step Description
6 Execute the brake test application.
(>>> 8.4 "Performing a brake test" Page 169)
Procedure
Description
Brake test
32 getLogger().info(brakeTestResult.toString());
33 break;
34 case Warning:
35 getLogger().warn(brakeTestResult.toString());
36 break;
37 case Error:
38 getLogger().error(brakeTestResult.toString());
39 allAxesOk = false;
40 break;
41 default:
42 break;
43 }
44 catch (CommandInvalidException ex) {
45 // ...
46 allAxesOk = false;
47 }
48 }
49
50 if (allAxesOk){
51 getLogger().info("Brake test was successful for all axes.");
52 }
53 else{
54 getLogger().error("Brake test failed for at least one axis.");
55 }
56 }
Line Description
3 Address the starting position from which the robot is moved
to determine the maximum absolute torque for each axis.
The default starting position is the vertical stretch position.
5 Prepare the data evaluation.
In order to perform an axis-specific evaluation of the tor-
ques determined during a motion sequence, an instance of
the TorqueEvaluator class must be created.
7 Select the torques to be used for the data evaluation.
The measured torques are not used, but instead the tor-
ques that are calculated using the robot model during the
motion sequence. Measurements are susceptible to mal-
functions. The calculation of the torque values ensures that
no interference torques resulting from dynamic effects (e.g.
robot acceleration) are incorporated into the data evalua-
tion.
9 Start the data evaluation.
The data evaluation is started with the startEvaluation()
command of the TorqueEvaluator class.
11 … 16 Carry out the motion sequence to determine the maximum
absolute torques
2 predefined axis positions are each addressed with a PTP
motion.
18 End the data evaluation and request the data.
The stopEvaluation() command of the TorqueEvaluator
class ends the data evaluation and returns the result as a
value of type TorqueStatistic. The result is saved in the var-
iable maxTorqueData.
Line Description
20 Variable for the evaluation of the brake test
The result of the brake test is saved for later evaluation via
the variable allAxesOk. It is set to the value “false” if the
brake test of an axis fails or is aborted due to an error.
Otherwise it retains the value “true”.
22 … 54 Execute the brake test
The brakes are tested one after the other, starting with the
brake of axis A1.
8.2.1 Adapting the brake test application for testing against the minimum
holding torque
Description
The brake test checks whether the brakes apply the minimum brake hold-
ing torque. It is therefore advisable to adapt the prepared brake test appli-
cation in accordance with the following description.
If the brake test is to be executed without reference holding torques being
determined and made available to the brake test, all the command lines
relevant for torque value determination must be removed from the brake
test application. The brake test application then starts with the motion to
the starting position.
In addition, when creating the BrakeTest instance, the parameter with
which the reference torque is transferred must be removed.
Fig. 8-1: Transferring the reference torque for the brake test
Procedure
Brake test
BrakeTest brakeTest = new brakeTest(axis);
3. Save changes.
Description
The brake test application created from the template contains a prepared
motion sequence for determining the maximum absolute torques gener-
ated in each axis.
As standard, the robot is moved from the vertical stretch position. A differ-
ent starting position can be selected.
2 predefined axis positions are each addressed from the starting position
with a PTP motion. In order to determine the maximum absolute torques
that arise in a specific robot application, and to use these as reference
holding torques for the brake test, application-specific motion sequences
must be inserted into the brake test application.
Procedure
As standard, the brake test application created from the template executes
the brake test to the end position of the motion sequence in order to de-
termine the maximum absolute torque. If this position is not suitable for
the brake test, a motion to the desired starting position must be program-
med before the brake test is executed.
To determine the gravitation and friction, the axes of the LBR are
moved towards the mechanical zero position. The maximum travel is 5°
on the output side.
Description
Syntax
Brake test
Explanation of the syntax
Element Description
evaluator Type: TorqueEvaluator
Variable to which the created TorqueEvaluator instance is
assigned. The evaluation of the torques during a motion
sequence is started and ended via the variable.
isTorque Type: boolean
Measured
Input parameter of the setTorqueMeasured(…) method:
Defines whether the measured torque values or the val-
ues calculated using the static robot model are to be
used for the evaluation.
When the evaluation of the maximum absolute torque values has ended,
the result of the evaluation can be requested.
Overview
Method Description
isTorqueMeasured() Return value type: boolean
Checks whether the measured torques or the torques calculated using
the static robot model were used for evaluating the maximum abso-
lute torque.
Example
The maximum torques which occur during a joining task are to be used
as reference torques in a brake test. For this purpose, the torques which
are measured during the execution of the joining task are evaluated, and
the maximum absolute torque for each axis is determined.
Once the evaluation has been started, the motion commands of the join-
ing process are executed. When the joining process is completed, the
evaluation is ended and the result of the evaluation for axes A2 and A4
are saved in the process data. If the determined data are invalid, an out-
put is set.
testGripper.attachTo(testLBR.getFlange());
testWorkpiece.attachTo(testGripper.getFrame("/GripPoint"));
// create TorqueEvaluator
TorqueEvaluator testEvaluator = new TorqueEvaluator(testLBR);
// start evaluation
testEvaluator.startEvaluation();
// save result
getApplicationData().getProcessData("maxTrqA2").setValue(maxTrqA2);
// save result
getApplicationData().getProcessData("maxTrqA4").setValue(maxTrqA4);
Brake test
boolean areDataValid = testMaxTrqData.areDataValid();
if (areDataValid == false) {
// if data is not valid, set output signal
brakeTestIOs.setEvaluatedTorqueInvalid(true);
}
// ...
}
testLBR.move(ptp(getFrame("/StartAssembly")));
ForceCondition testForceCondition =
ForceCondition.createNormalForceCondition(
testWorkpiece.getDefaultMotionFrame(), CoordinateAxis.Z, 15.0);
testWorkpiece.move(linRel(0.0, 0.0, 100.0).breakWhen(testForceCondition));
CartesianSineImpedanceControlMode testAssemblyMode =
CartesianSineImpedanceControlMode.createLissajousPattern(
CartPlane.XY, 5.0, 10.0, 500.0);
openGripper();
testWorkpiece.detach();
Description
Syntax
Element Description
brakeTest Type: BrakeTest
Variable to which the created BrakeTest instance is as-
signed. The execution of the brake test is commanded
via the variable as a motion command.
axis Type: int
Index of the axis whose brake is to be tested.
• 0 … 6: Axes A1 … A7
Element Description
torque Type: double; unit: Nm
Reference holding torque (output side) specified by the
user, e.g. the maximum absolute torque that has been
determined beforehand for an axis-specific motion se-
quence.
If no reference holding torque is specified, the brake test
uses the lowest of the following values as the holding
torque: minimum brake holding torque or motor holding
torque.
If a reference holding torque is specified, one of the fol-
lowing values is used as the holding torque to be tested:
the specified reference holding torque (torque), the mini-
mum brake holding torque or the motor torque.
The holding torque to be tested is defined internally by
the system according to the following rules:
Description
Syntax
try {
BrakeTest brakeTest = ...;
IMotionContainer brakeTestMotionContainer =
robot.moveΙmoveAsync(brakeTest);
...
Brake test
} catch(CommandInvalidException ex {
...
}
Element Description
brakeTest Type: BrakeTest
Variable to which the created BrakeTest instance is as-
signed. The instance defines the axis for which the brake
test is to be executed and can optionally define a refer-
ence holding torque specified by the programmer.
brakeTest Type: IMotionContainer
Motion
Variable for the return value of the move(…) or moveA-
Container
sync(…) motion command used to carry out the brake
test. When the brake test has ended, the result can be
evaluated using the variable.
robot Type: Robot
Instance of the robot used in the application. The brake
test is to be performed on the axes of this robot.
ex Type: CommandInvalidException
Exception which occurs when the brake test is aborted
due to an error. It is advisable to treat the exception with-
in the catch block in such a way that an aborted brake
test for a single brake does not cancel the entire brake
test application.
Description
When the brake test has ended, the result can be evaluated. For this pur-
pose, the return value of the motion command used to carry out the brake
test must be assigned to a variable of type IMotionContainer.
In order to evaluate the brake test, the IMotionContainer instance of the
corresponding motion command is transferred to the static method evalua-
teResult(…). The method belongs to the BrakeTest class and returns an
object of type BrakeTestResult. Various information concerning the execu-
ted brake test can be requested from this object.
Syntax
IMotionContainer brakeTestMotionContainer =
robot.moveΙmoveAsync(brakeTest);
BrakeTestResult result =
BrakeTest.evaluateResult(brakeTestMotionContainer);
Element Description
brakeTest Type: IMotionContainer
Motion
Variable for the return value of the move(…) or moveA-
Container
sync(…) motion command used to carry out the brake
test.
result Type: BrakeTestResult
Variable for the return value of evaluateResult(…). The
return value contains the results of the brake test and
further information concerning the brake test which can
be requested via the variable.
Overview
The following methods of the BrakeTestResult class are available for eval-
uating the brake test:
Method Description
getAxis() Return value type: int
Returns the index of the axis whose brake has been tested. The in-
dex starts with 0 (= axis A1).
getBrakeIndex() Return value type: int
Returns the index of the tested brake of the motor (starting with 0). In
a brake test for the LBR iiwa, the value 0 is always returned.
getFriction() Return value type: double; unit: Nm
Returns the frictional torque (output side) determined during the test
motion.
getGravity() Return value type: double; unit: Nm
Returns the gravitational torque (output side) determined during the
test motion.
getMaxBrake Return value type: double; unit: Nm
HoldingTorque()
Returns the torque (output side) determined from the motor data
which the brake must not exceed. (= maximum brake holding torque)
getMeasuredBrake Return value type: double; unit: Nm
HoldingTorque()
Returns the holding torque (output side) measured during the brake
test. This value is compared with the holding torque to be tested.
getMinBrake Return value type: double; unit: Nm
HoldingTorque()
Returns the minimum brake torque (output side) that can be reached,
as determined from the motor data. (= minimum brake holding torque)
getMotor Return value type: double; unit: Nm
HoldingTorque()
Returns the motor holding torque (output side) determined from the
motor data.
getMotorIndex() Return value type: int
Returns the index of the tested motor of the drive (starting with 0). In
a brake test for the LBR iiwa, the value 0 is always returned.
getMotor Return value type: double; unit: Nm
MaximalTorque()
Returns the maximum motor torque (output side) determined from the
motor data.
Brake test
Method Description
getState() Return value type: Enum of type BrakeState
Returns the results of the brake test.
(>>> 8.3.5.1 "Requesting the result of the brake test" Page 167)
getTestedTorque() Return value type: double; unit: Nm
Returns the test holding torque with which the holding torque (output
side) applied and measured during the brake test is compared.
getTimestamp() Return value type: java.util.Date
Returns the time at which the brake test was started.
Description
Syntax
Element Description
result Type: BrakeTestResult
Variable for the return value of the static method evalua-
teResult(...) which provides the BrakeTest class for evalu-
ation of the brake test. The return value contains the re-
sults of the brake test and further information concerning
the brake test which can be requested via the variable.
state Type: Enum of type BrakeState
Variable for the return value of getState(). The return val-
ue contains the test result.
(>>> "BrakeState" Page 168)
logLevel Type: Enum of type LogLevel
Variable for the return value of getLogLevel(). The return
value contains the log level of the test result.
BrakeState
Example
A brake test is executed for axis A2. If the brake test is aborted, this is in-
dicated by a corresponding output signal. If the brake test is fully execu-
ted, a message containing the measured holding torque is generated and
the test result are requested. Depending on whether the measured holding
torque is too low, within the tolerance range or in the ideal range, a corre-
sponding output is also set in each case.
try {
int indexA2 = 1;
BrakeTest exampleBrakeTest = new BrakeTest(indexA2);
IMotionContainer exampleBrakeTestMotionContainer =
exampleLBR_iiwa.move(exampleBrakeTest);
Brake test
exampleBrakeTestMotionContainer);
double measuredTorque =
resultA2.getMeasuredBrakeHoldingTorque();
Description
If the brake test application is paused while a brake is being tested, e.g.
by pressing the Start button on the smartPAD or due to a stop request,
the brake test of the axis is aborted.
If the brake test application is resumed, the aborted brake test will be re-
peated for the axis in question. If the axis is no longer in the position in
which the aborted brake test was started, it must be repositioned by
pressing the Start key. Only then can the application be resumed.
Precondition
Procedure
WARNING
If the functional capability of a brake is not guaranteed and the drives
are switched off, the robot can sag. If, during the brake test, a brake is
identified as being defective (test result = “Failed”), the robot must be
taken out of operation immediately.
Item Description
1 Validity
Indicates whether the determined data are valid. The data are
valid if no errors occur during command processing.
2 Time indications
Start time, end time and overall duration of the evaluation.
3 Determined data
The maximum absolute torque determined from the evaluation
is displayed for each axis.
Item Description
1 Log level
Depending on the result of the brake test, the message is gen-
erated with a specific log level.
Brake test
Item Description
3 Time stamp
Time stamp at which the brake test was started for the axis.
4 Holding torque to be tested
5 Measured holding torque
6 Result of the brake test
Project management
9 Project management
A Sunrise project contains all the data which are required for the opera-
tion of a station. A Sunrise project comprises:
• Station configuration
The station configuration describes the static properties of the station.
Examples include hardware and software components.
• Sunrise applications
Sunrise applications contain the source code for executing a task for
the station. They are programmed in Java with KUKA Sunrise.Work-
bench and are executed on the robot controller. A Sunrise project can
have any number of Sunrise applications.
• Runtime data
Runtime data are all the data which are used by the Sunrise applica-
tions during the runtime. These include, for example, end points for
motions, tool data and process parameters.
• Safety configuration
The safety configuration contains the configured safety functions.
• I/O configuration (optional)
The I/O configuration contains the inputs/outputs of the used field
buses mapped in WorkVisual. The inputs/outputs can be used in the
Sunrise applications.
Sunrise projects are created and managed with KUKA Sunrise.Work-
bench.
(>>> 5.3 "Creating a Sunrise project with a template" Page 57)
There may only be 1 Sunrise project on the robot controller at any given
time. This is transferred from Sunrise.Workbench to the robot controller by
means of project synchronization.
(>>> 9.5 "Project synchronization" Page 199)
Overview
Description
Procedure
Project management
Example
Frame1, 2 and 3 are child elements of World and are located on the
same hierarchical level. P1 and P2 are child elements of Frame1 and are
located one level below it.
Description
Procedure
Example
Description
A frame can be moved in the application data and assigned to a new pa-
rent frame. The following points must be taken into consideration:
• The subordinate frames are automatically moved at the same time.
• The absolute position of the moved frames in space is retained. The
relative transformation of the frames to the new parent frame is adap-
ted.
• Frames cannot be inserted under one of their child elements.
• The names of the direct child elements of a frame must be unique.
Procedure
1. Click on the desired frame in the Application data view and hold
down the left mouse button.
2. Drag the frame to the new parent frame with the mouse.
3. When the desired new parent frame is selected, release the mouse
button.
Description
Frames created in the application data can be removed from the frame
tree again. If a frame has child elements, the following options are availa-
ble:
Project management
• Move children to parent: Only the selected frame is deleted. The
subordinate frames are retained, are moved up a level and assigned
to a new parent frame.
The absolute position of the moved frames in space is retained. The
relative transformation of the frames to the new parent frame is adap-
ted.
If a frame is moved, its path changes. If this frame is used in the
source code of an application, the path specification must be correc-
ted accordingly in the application.
• Delete parent and child frames: Deletes the selected frame and all
subordinate frames.
Procedure
Description
Procedure
1. Select the desired frame in the Application data view. The properties
of the frame are displayed in the Properties view.
2. Edit the properties as required on the tabs.
For physical variables, the values can be entered with the unit. If this is
compatible with the preset unit, the values are converted accordingly,
e.g. cm into mm or ° into rad. If no unit is entered, the preset unit is
used.
Project management
Parameter Description
X, Y, Z Translational offset of the TCP relative to the
origin frame of the tool
A, B, C Rotational offset of the TCP relative to the ori-
gin frame of the tool
Description
A frame created in the application data can be inserted as the end point
in a motion instruction.
Procedure
Example
robot.move(ptp(getApplicationData().getFrame("/P2/Target")));
Description
Tools
Properties:
• Tools are mounted on the robot flange.
• Tools can be used as movable objects in the robot application.
• The tool load data affect the robot motions.
• Tools can have any number of working points (TCPs) which are de-
fined as frames.
Workpieces
Characteristics:
• Workpieces can be a wide range of objects which are used, pro-
cessed or moved in the course of a robot application.
• Workpieces can be coupled to tools or other workpieces.
• Workpieces can be used as movable objects in the robot application.
• The workpiece load data affect the robot motions, e.g. when a gripper
grips the workpiece.
• Workpieces can have any number of frames which mark relevant
points, e.g. points on which a gripper grips a workpiece.
Every tool has an origin frame (root). As standard, the origin of the tool is
defined to match the flange center point in position and orientation when
the tool is mounted on the robot flange. The origin frame is always
present and does not have to be created separately.
A tool can have any number of working points (TCPs), which are defined
relative to the origin frame of the tool (root) or to one of its child elements.
Project management
The transformation of the frames is static. For active tools, e.g. grippers,
this means that the TCP does not adapt to the current position of jaws
or fingers.
Every workpiece has an origin frame (root). The origin frame is always
present and does not have to be created separately.
A workpiece can have any number of frames, which are defined relative
to the origin frame of the workpiece (root) or to one of its child elements.
Description
Procedure
Description
Load data are all loads mounted on or connected to the robot flange.
They form an additional mass mounted on the robot which must also be
moved together with the robot.
The load data of tools and workpieces can be specified when the corre-
sponding object templates are created. If several tools and workpieces are
connected to the robot, the resulting total load is automatically calculated
from the individual load data.
The load data are integrated into the calculation of the paths and acceler-
ations. Correct load data are an important precondition for the optimal
functioning of the servo control and help to optimize the cycle times.
WARNING
Danger to life and limb due to incorrect loads
Operating a robot with incorrect loads may result in death, severe inju-
ries or damage to property. For example, the braking procedure may
take too long with incorrect load data.
• Use only loads that are permissible for the robot.
• Use correct load data.
Sources
• Manufacturer information
• Manual calculation
• CAD programs
• The load data of tools can be determined automatically.
(>>> 7.5 "Determining tool load data" Page 148)
Procedure
Project management
9.3.5 Displaying/editing object properties
Description
Procedure
1. Select the object template in the Object templates view. The proper-
ties of the object template are displayed in the Properties view.
2. Edit the properties as required on the tabs.
For physical variables, the values can be entered with the unit. If this is
compatible with the preset unit, the values are converted accordingly,
e.g. cm into mm or ° into rad. If no unit is entered, the preset unit is
used.
The General tab contains general information about the tool or workpiece.
Parameter Description
Name Name of the tool or workpiece
The name can be edited.
Template class Runtime class of the tool or workpiece
The class of the template can be edited.
Comment Comment for the tool or workpiece (optional)
Frame Frame of the tool or workpiece that is to be
moved as standard
As standard, the origin frame of the tool or
workpiece is used as the standard frame for
motions.
Here, a different frame can be selected as the
standard frame for motions, provided that a
suitable frame has already been created for the
tool or workpiece.
(>>> 9.3.6 "Creating a frame for a tool or work-
piece" Page 184)
The load data of tools and workpieces can be entered on the Load data
tab.
Parameter Description
Mass Mass of the tool or workpiece
Center of mass Position of the center of mass relative to the
origin frame of the tool or workpiece
Parameter Description
Principal inertia axes Orientation of the principal inertia axes relative
to the origin frame of the tool or workpiece
Example
Description
Each frame created for a tool or workpiece can be programmed in the ro-
bot application as the reference point for motions.
After the project is synchronized, the frames of a tool can be selected as
the TCP for Cartesian jogging on the smartHMI.
(>>> 6.15.1 "“Jogging options” window" Page 99)
The frames of a tool (TCPs) can be calibrated with robot relative to the
flange coordinate system.
(>>> 7.4.1 "Tool calibration" Page 140)
If the data of a calibrated tool are saved in Sunrise.Workbench by means
of synchronization, the transformation data of the frame change in accord-
ance with the calibration.
The tool data of the TCP used to execute a Cartesian motion influence
the robot velocity. Incorrectly entered tool data can cause unexpectedly
high Cartesian velocities at the installed tool. The velocity of 250 mm/s
may be exceeded in T1 mode.
Procedure
Project management
3. To insert a new frame under an existing frame of the object, right-click
on this parent frame and select Insert new frame from the context
menu. The frame is created.
4. The system automatically generates a frame name. It is advisable to
change the name in the frame properties. (>>> 9.3.7 "Displaying/edit-
ing frame properties" Page 185)
A descriptive frame name makes both programming and orientation
within the program easier. The frame names must be unique within
the hierarchy level and may not be assigned more than once.
5. In the frame properties, enter the transformation data of the frame rel-
ative to its parent frame:
• Boxes X, Y, Z: offset of the frame along the axes of the parent
frame
• Boxes A, B, C: orientation of the frame relative to the parent frame
(>>> 9.3.7 "Displaying/editing frame properties" Page 185)
Description
Procedure
1. Select the desired frame in the Object templates view. The properties
of the frame are displayed in the Properties view.
2. Edit the properties as required on the tabs.
For physical variables, the values can be entered with the unit. If this is
compatible with the preset unit, the values are converted accordingly,
e.g. cm into mm or ° into rad. If no unit is entered, the preset unit is
used.
Parameter Description
X, Y, Z Translational offset of the frame relative to its
parent frame
• -10,000 mm … +10,000 mm
A, B, C Rotational offset of the frame relative to its pa-
rent frame
• Any
The Safety tab is only available for tools and frames of tools. The follow-
ing properties of safety-oriented tool frames can be configured:
Parameter Description
Radius Radius of the sphere on the safety-oriented
frame
• 25 … 10,000 mm
Provided that the check box for the property
Safety-oriented is activated and the frame be-
longs to a safety-oriented tool, the sphere on
the safety-oriented frame is active and can be
used in the AMFs for monitoring Cartesian
spaces and velocities.
Safety-oriented Activation as safety-oriented frame
Project management
Parameter Description
Is point for the tool- Use of the safety-oriented frame as a point for
related velocity com- the Tool-related velocity component AMF
ponent AMF
• Check box active: Frame is used as a point
for the AMF.
• Check box not active: Frame is not used as
a point for the AMF.
Precondition for activating the check box:
Description
Procedure
Example
Description
Procedure
Description
Monitoring functions
Safety-oriented tools are relevant for the following safety monitoring func-
tions:
Project management
• Monitoring of Cartesian spaces
The spheres can be monitored against the limits of activated Cartesian
monitoring spaces.
(>>> 13.11.9 "Monitoring spaces" Page 300)
• Monitoring of the translational Cartesian velocity
The velocity of the sphere center points is monitored.
(>>> 13.11.8 "Velocity monitoring functions" Page 293)
• Collision detection and TCP force monitoring functions
Only correctly specified load data ensure the accuracy of these moni-
toring functions. The load data of safety-oriented tools, in particular the
mass and center of mass of the tools, must be configured. In the case
of tools with comparatively high moments of inertia (> 0.1 kg m2),
these data must also be specified in order to ensure the accuracy of
these monitoring functions.
(>>> 13.11.13.2 "Collision detection" Page 314)
(>>> 13.11.13.3 "TCP force monitoring" Page 316)
(>>> 13.11.13.4 "Direction-specific monitoring of the external force on
the TCP" Page 317)
If workpieces are used that are to be taken into consideration for safety-
oriented Cartesian space or velocity monitoring, e.g. due to the dimen-
sions of the workpieces, the spheres of the safety-oriented tool must be
configured accordingly.
Precondition
Procedure
3. In the Properties view, select the Safety tab and activate the Safety-
oriented check box.
The tool icon in the Object templates view is highlighted in yellow
and marked with a sphere symbol .
4. Select the Load data tab and enter any missing tool load data.
Tools with load data outside the specified range of values cannot be
used as safety-oriented tools.
(>>> 9.3.10.1 "Tool properties – Load data tab" Page 191)
To avoid spending unnecessary time performing verifications, mark a
tool as safety-oriented only when the load data have been correctly
entered or determined and have been transferred to Sunrise.Work-
bench. (>>> 9.3.4 "Entering load data" Page 182)
5. In the Object templates view, select the tool frame that is to be safe-
ty-oriented.
6. In the Properties view, select the Transformation tab and enter any
missing transformation data of the frame with respect to its parent
frame.
Frames with transformation data outside the specified range of values
cannot be used as safety-oriented frames.
(>>> 9.3.10.2 "Frame properties – Transformation tab" Page 191)
7. Select the Safety tab and enter the radius of the monitoring sphere on
the safety-oriented frame.
(>>> 9.3.10.3 "Frame properties – Safety tab" Page 192)
8. Set the check mark at Safety-oriented.
The frame icon in the Object templates view is highlighted in yellow
.
9. If the safety-oriented frame is to be used as a point for the Tool-rela-
ted velocity component AMF, activate the check box next to Is point
for the tool-related velocity component AMF.
Safety-oriented frames that are used for tool-specific safety monitoring
functions are additionally marked with a symbol in the Object tem-
plates view.
10. Repeat steps 5 to 9 to define further safety-oriented tool frames.
11. In the safety properties of the tool, set the safety-oriented frames that
are to be used for the tool-specific safety monitoring functions if re-
quired:
a. Select the safety-oriented tool in the Object templates view.
b. In the Properties view, select the Safety tab.
c. Under Safety properties assign the desired safety-oriented frames
to the tool-specific safety monitoring functions.
(>>> 9.3.10.4 "Tool properties – Safety tab" Page 192)
Safety-oriented frames that are used for tool-specific safety monitoring
functions are additionally marked with a symbol in the Object tem-
plates view.
Alternative procedure
The properties of safety-oriented tools and frames can also be set via the
context menu:
• Right-click on the tool or frame in the Object templates view and se-
lect the desired property from the context menu.
Project management
‒ Safety-oriented
‒ Tool orientation frame
‒ Orientation for tool-related velocity
‒ Point for tool-related velocity
‒ The menu item is only available for frames.
Example
The Load data tab contains the load data of the tool.
The value ranges apply to safety-oriented tools. Tools with load data out-
side these ranges of values cannot be used as safety-oriented tools.
Parameter Description
Mass Mass of the tool
• 0 … 2,000 kg
MS X, MS Y, MS Z Position of the center of mass relative to the
origin frame of the tool
• -10,000 … +10,000 mm
MS A, MS B, MS C Orientation of the principal inertia axes relative
to the origin frame of the tool
• Any
jX, jY, jZ Mass moments of inertia of the tool
• 0 … 1,000 kg·m2
Parameter Description
X, Y, Z Translational offset of the frame relative to its
parent frame
• -10,000 mm … +10,000 mm
A, B, C Rotational offset of the frame relative to its pa-
rent frame
• Any
The Safety tab is only available for tools and frames of tools. The follow-
ing properties of safety-oriented tool frames can be configured:
Parameter Description
Radius Radius of the sphere on the safety-oriented
frame
• 25 … 10,000 mm
Provided that the check box for the property
Safety-oriented is activated and the frame be-
longs to a safety-oriented tool, the sphere on
the safety-oriented frame is active and can be
used in the AMFs for monitoring Cartesian
spaces and velocities.
Safety-oriented Activation as safety-oriented frame
Project management
Parameter Description
Safety-oriented Activation as safety-oriented tool
• DEFAULT: /
In this case, the pickup frame of the tool is used and the ve-
locity at the origin of the pickup frame is monitored.
(>>> "Pickup frame" Page 193)
Orientation for the velocity Safety-oriented frame, the orientation of which determines the
directions in which the Cartesian velocity can be monitored
using the Tool-related velocity component AMF.
If no orientation frame is defined for the tool-related velocity
component, the pickup frame of the tool is used. The orienta-
tion of the pickup frame determines the monitoring direction.
(>>> "Pickup frame" Page 193)
Pickup frame
Description
Programming
Requirements
The workpiece transferred to the safety controller must meet the following
requirements:
• The workpiece load data must be within the specified limits. If this is
not the case, the load data are invalid and cannot be transferred to
the safety controller.
(>>> 9.3.11.2 "Workpiece properties – Load data tab" Page 195)
• In order to be able to use workpieces as safety-oriented workpieces,
the mass of the heaviest workpiece that could possibly be picked up
by the robot must additionally be configured in the safety-oriented
project settings.
(>>> 9.3.11.3 "Configuring the mass of the heaviest workpiece"
Page 196)
The mass from the workpiece load data must not exceed the config-
ured mass of the heaviest workpiece. Otherwise, load-specific AMFs
are violated.
Workpiece pick-up
The way in which the load data of a workpiece influence the workpiece
load-dependent AMFs depends on how the workpiece is picked up. For a
workpiece, the safety controller requires the origin frame of the workpiece
to be identical to the standard frame for motions of the safety-oriented
tool.
Project management
Item Description
1 Safety-oriented tool
2 Standard frame for motions of the safety-oriented tool:
Frame of the safety-oriented tool on which the workpiece must
be picked up. It is not necessary for this frame to be a safety-
oriented frame.
3 Origin frame of the workpiece
Frame of the workpiece on which the safety-oriented tool must
pick up the workpiece.
4 Workpiece
5 Status after transfer of the workpiece to the safety controller
The origin frame of the workpiece is identical to the standard
frame for motions of the safety-oriented tool.
Precondition
Procedure
The workpiece load data can be entered on the Load data tab.
The value ranges apply for workpieces that are used as safety-oriented
workpieces. Workpieces with load data outside these ranges of values
cannot be used as safety-oriented workpieces.
Parameter Description
Mass Mass of the workpiece
• 0.001 … 2,000 kg
MS X, MS Y, MS Z Position of the center of mass relative to the
origin frame of the workpiece
• -10,000 … +10,000 mm
MS A, MS B, MS C Orientation of the principal inertia axes relative
to the origin frame of the workpiece
• 0° … 359°
Parameter Description
jX, jY, jZ Mass moments of inertia of the workpiece
• 0 … 1,000 kg·m2
Description
If the following load-specific AMFs are used, the mass of the heaviest
workpiece that could possibly be picked up by the robot must be config-
ured in the safety-oriented project settings:
• TCP force monitoring
• Base-related TCP force component
• Collision detection
Each of the load-specific AMFs checks whether the workpiece mass trans-
ferred to the safety controller with the load data exceeds the configured
mass of the heaviest workpiece. If the mass of the heaviest workpiece is
not configured, it is initialized with the default value (= 0.0 kg) and the
AMF is violated if the workpiece load data from the safety controller are
used.
Incorrect configuration of the mass of the heaviest workpiece can result
in loss of the safety integrity with the following AMFs:
• TCP force monitoring
• Base-related TCP force component
The configuration must therefore be verified during safety acceptance.
(>>> 13.14.7.4 "Mass of the heaviest workpiece" Page 357)
Procedure
Project management
• Safety maintenance technician
The user “Safety maintenance” is responsible for starting up the safety
equipment of the industrial robot. Only he can modify the safety con-
figuration on the robot controller.
The user group is protected by means of a password.
The default password is “argus”.
Prior to start-up, the passwords for the user groups must be modified by
the administrator, transferred to the robot controller in an installation pro-
cedure and activated. The passwords must only be communicated to
authorized personnel. (>>> 9.4.2 "Changing and activating the pass-
word" Page 198)
Description
User groups
Prior to start-up, the passwords for the user groups must be modified by
the administrator, transferred to the robot controller in an installation pro-
cedure and activated. The passwords must only be communicated to
authorized personnel. (>>> 9.4.2 "Changing and activating the pass-
word" Page 198)
Functions
Depending on the installed software, the users can execute the following
functions:
Installation of Sunrise.RolesRights restricts the user rights of the opera-
tor.
Pausing an application
Teaching frames
Robot mastering/unmastering
Description
The passwords for the user groups on the robot controller are defined in
the project settings in Sunrise.Workbench. If these passwords are
changed, they can only be activated by an installation of the system soft-
ware on the robot controller.
Project management
The Administrator merely manages the passwords in Sunrise.Work-
bench. If only the Administrator password is modified, no installation is
required. The modified Administrator password takes effect immediately
and is saved as part of the project on the robot controller.
Precondition
Procedure
Description
Precondition
Procedure
Project management
rise.Workbench and on the smartPAD. In addition, the cause of the er-
ror is displayed in Sunrise.Workbench.
Close the dialog in Sunrise.Workbench and on the smartPAD with OK.
7. Only in the case of transfer of a modified I/O configuration:
Once the transfer is completed, the robot controller automatically re-
boots.
8. Only in the case of transfer of a modified safety configuration:
Activate the new safety configuration on the robot controller.
(>>> 13.10 "Activating the safety configuration" Page 284)
Description
The procedure described here applies if the same project exists in Sun-
rise.Workbench and on the robot controller, but in different versions.
Precondition
Procedure
If modifications have been made to the project data on both sides, the
Project management
Description
A project can be loaded from the robot controller if the project is not loca-
ted in the workspace of Sunrise.Workbench.
Precondition
Procedure
1. Select the menu sequence File > New > Sunrise project. The project
creation wizard opens.
Project management
2. Enter the IP address of the robot controller from which the project is
to be loaded in the IP address of controller: box.
The IP address of the robot controller can be displayed on the
smartHMI. (>>> 6.19.6 "Displaying information about the robot and
robot controller" Page 124)
Description
Topology
The Topology tab displays the hardware components of the station. The
topology can be restructured or modified.
Software
Configuration
If additional option packages are installed and used in the project, fur-
ther parameters may be added to the Configuration tab.
Installation
The system software is installed on the robot controller via the Installa-
tion tab.
Procedure
Description
Procedure
1. Open the Network and Sharing Center via the Windows Control Panel
or Windows Explorer.
2. In the top left-hand area, click the Change adapter settings entry.
The network connections are displayed.
3. Right-click on Local Area Connection and select Properties in the
context menu. The Local Area Connection Properties window is
opened.
4. Double-click on Internet Protocol Version 4 (TCP/IPv4). The Internet
Protocol Version 4 (TCP/IPv4) Properties window is opened.
5. Carry out the desired IP address settings, e.g.:
Description
Example
Item Description
1 The catalog element Handguiding Support is not available be-
cause the catalog element Robotics API has been deselected.
Possible remedies:
Description
The KLI is the Ethernet interface of the robot controller for external com-
munication. In order for external PCs, e.g. the development computer with
KUKA Sunrise.Workbench, to be able to connect to the robot controller via
a network, the KLI must be configured accordingly.
The following IP address ranges are used internally by the robot controller.
• 192.*.*.*
• 172.16.*.*
• 172.17.*.*
If one or more KLI network devices (e.g. the robot controller, bus devices
or other network devices) use IP addresses from one of these ranges, this
IP address range must be set. Sunrise then reconfigures the internal net-
work to ensure that there are no IP address conflicts.
Parameter Description
IP address range for KUKA The following IP address ranges are available:
Line Interface
• 192.*.*.*
• 172.16.*.*
• 172.17.*.*
• Other
Default: Other
Field buses
WARNING
Risk of fatal injury due to non-operational EMERGENCY STOP de-
vice
If the smartPAD is disconnected, the system can no longer be switched
off by means of the EMERGENCY STOP device on the smartPAD.
Measures must be taken to prevent operational and non-operational
EMERGENCY STOP devices from being mixed up.
Death, injuries or damage to property may result.
• If unplugging of the smartPAD is to be allowed, connect at least one
external EMERGENCY STOP device that is accessible at all times
to the robot controller.
• Immediately remove the unplugged smartPAD from the system and
store it out of sight and reach.
• 0 … 200
Default: 8
Maximum calculation error Maximum translational calculation error during tool calibration
in mm up to which the quality of the calibration is considered suffi-
cient
• 0 … 200
Default: 5
Minimum calibration point Minimum distance which must be maintained between
distance (base) in mm 2 measuring points during base calibration
• 0 … 200
Default: 50
Minimum angle in ° Minimum angle to be maintained between the straight lines
which are defined by the 3 measuring points during base cal-
ibration (3-point method)
• 0 … 360
Default: 2.5
Description
The set media flange can be changed under the Media Flange entry of
the configured robot on the Configuration tab of the station configuration.
This is necessary, for example, if the media flange is exchanged. The
System Software must then be reinstalled on the robot controller.
If the media flange “MF Inside electrical NE” is used, the entry Media
flange Inside electrical must be selected.
• Local: The target directory for backups and the source di-
rectory for restorations is the directory D:\ProjectBackup
on the robot controller.
Note: If the backup of the projects and user data takes
up too much memory, the local memory may be full be-
fore the maximum configured number of backup copies
has been reached. In this case, no further backup is pos-
sible.
• Network: The target directory for backups and the source
directory for restorations is a network path:
‒ Network path
If during backup and/or restoration the robot controller
must access the network and an authentication is re-
quired, the user name and password for the network path
must be specified:
‒ User name for network path
‒ Password for network path
Note: Any other network path can be set on the robot
controller for restorations.
Default: Local
CSV file
IP_adress;subnetmask;BM_Username;BM_Password;BM_ProjectRestor
eDirectoryPath;Server
192.168.0.131;255.255.0.0;User41;pwd82p;\\Server\Path
\Restore;Restore3Backup857
192.168.0.239;255.255.0.0;User66;pwd24ppp;\\Server\Path
\Restore;Restore0Remote415
192.168.0.151;255.255.0.0;User38;pwd75ppp;\\Server\Path
\Lokal;Lokal1Restore705
...
The following points must be observed when creating the CSV file:
• The header data set must contain the columns specified in the exam-
ple file.
• The column names must not be modified.
• The columns can be saved in any order.
• Further columns can be added, e.g. to save additional information.
Description
Modification installation
If the station configuration or the password for a user group on the robot
controller changes, the Sunrise.OS system software must be reinstalled
on the robot controller:
• Change to the station configuration on the Topology tab
• Change to the station configuration on the Software tab
Examples:
Precondition
Procedure
11. Once all installation files have been transferred, a message is dis-
played in Sunrise.Workbench with a reboot prompt.
Confirm the reboot with OK. The robot controller is rebooted and the
installation is completed.
Description
Error message
The following error message may be generated on saving the station con-
figuration:
Not all parameters could be converted to the current version of the
safety configuration. Please check that the safety configuration is
complete and correct before installation.
This message is displayed if safety settings have been added or removed
in the new software version, e.g.:
• Allow muting via input (available from software version 1.10 or high-
er)
• Allow external position referencing (available from software version
1.11 or higher)
• Safety-oriented workpieces no longer configurable as object templates
(software version 1.12 or higher)
The message is only displayed if at least one safety-oriented work-
piece is configured in the loaded project. Instead, only the mass of the
heaviest workpiece now needs to be specified in the safety-oriented
project settings.
Precondition
Procedure
Description
Precondition
Procedure
1. Select the menu sequence Help > Install new software .... The In-
stall window is opened.
2. To the right of the Work with box, click on Add …. The Add reposi-
tory window is opened.
Alternatively: Drag the ZIP archive of the option into the window, then
continue with step 5.
3. Click on Archive …, navigate to the directory in which the ZIP archive
of the option is located and select the archive.
4. Confirm your selection with Open. The Position box now displays the
installation path. Confirm the path with OK.
5. In the Install window, the installation path is adopted in the Work with
box.
The window now also displays a check box with the name of the op-
tion. Activate the check box.
6. Leave the other settings in the Install window as they are and click on
Next >.
7. An installation details overview is displayed. Click on Next >.
8. A license agreement is displayed. In order to be able to install the
software, the agreement must be accepted. Then click on Finish. The
installation is started.
9. A safety warning concerning unsigned contents is displayed. Confirm
with OK.
10. A message indicates that Sunrise.Workbench must be restarted in or-
der to apply the changes. Click on Restart now.
11. Sunrise.Workbench restarts. This completes installation in Sun-
rise.Workbench.
12. Open the station configuration of the desired project (file StationSet-
up.cat). The new software entries are displayed on the Software tab.
13. If the check mark is set in the Install column for the new entries, the
new software has automatically been selected for installation.
If not, set the check mark for the new entries.
14. Save the station configuration. The system asks whether the modifica-
tions to the project should be accepted. Click on Save and apply.
15. Install the system software on the robot controller. Once the robot con-
troller has been rebooted, the new software is available for the station.
Description
Once the virus scanner has been installed on the robot controller, a tile
for the virus scanner is available on the smartHMI. This tile can be used,
for example, to display the version of the installed virus scanner and mes-
sages about viruses that have been found.
(>>> 21.4 "Displaying messages of the virus scanner" Page 619)
It is advisable to check what version is currently installed on the robot
controller before updating the virus scanner. Do not perform a down-
grade.
Precondition
Procedure
Description
Precondition
Procedure
Description
Precondition
Procedure
1. Select the menu sequence Help > Install new software .... The In-
stall window is opened.
2. Click on the link by What is already installed?. The Installation de-
tails for Sunrise Workbench window is opened.
3. Select the Installed software tab (if it is not already selected).
4. In the list of installed software, select the option that is no longer re-
quired.
It is possible to select several options simultaneously and uninstall
them together.
Description
In order to remove an option package from the robot controller, the sys-
tem software must be reinstalled.
Precondition
Procedure
Bus configuration
11 Bus configuration
Step Description
1 Install the Sunrise option package in WorkVisual.
The option package is available as a KOP file and is sup-
plied together with Sunrise.Workbench (file Sunrise.kop in
the directory WorkVisual AddOn).
Note: The option package supplied with Sunrise.Workbench
must always be used. If an old version of Sunrise.Work-
bench is uninstalled and a new version installed, the option
package must also be exchanged in WorkVisual.
2 Terminate WorkVisual and create a new I/O configuration in
Sunrise.Workbench or open an existing I/O configuration.
WorkVisual is started automatically and the WorkVisual
project corresponding to the I/O configuration is opened.
(>>> 11.3 "Creating a new I/O configuration" Page 224)
(>>> 11.4 "Opening an existing I/O configuration" Page 224)
3 Only necessary if devices are used for which no device de-
scription files have yet been imported:
The following field buses are supported by Sunrise and can be configured
with WorkVisual:
For configuration of a field bus, the documentation of the field bus is re-
quired.
The I/O configuration is created automatically for the media flange set in
the project. If a media flange with an EtherCAT output (e.g. media
flange IO pneumatic) is used and additional EtherCAT devices are con-
nected, these must be configured using WorkVisual.
Precondition
Procedure
Precondition
Procedure
Bus configuration
2. Right-click on the inactive robot controller on the Hardware tab in the
Project structure window.
3. Select Set as active controller from the context menu. The I/O Map-
ping window opens. The Sunrise I/Os can be edited.
Precondition
Procedure
Overview
The window for creating and editing the Sunrise I/Os and Sunrise I/O
groups consists of the following areas:
Area Description
Edit I/O group In this area, I/O groups are created and edited. It is also pos-
sible to save I/O groups as a template or to import previously
created templates.
Edit I/O signals In this area, the input/output signals of an I/O group are dis-
played.
Edit I/O In this area, the inputs/outputs of an I/O group are created
and edited.
Input boxes are displayed with a red frame if values must be entered or
if incorrect values have been entered. A help text is displayed when the
mouse pointer is moved over the box.
Signal properties
In the Edit I/O area, new signals can be created and the signal properties
defined:
Bus configuration
Property Description
I/O name Name of the input/output
Description Description for the input/output (optional)
Direction Signal direction
Property Description
Start range The smallest possible value of an analog connection without
a physical unit. This is the value to which the smallest possi-
ble number that can be generated on the bus is mapped.
Note: The start range must be lower than the end range. It is
also possible to enter decimal values.
End range The largest possible value of an analog connection without a
physical unit. This is the value to which the largest possible
number that can be generated on the bus is mapped.
Note: The end range must be greater than the start range. It
is also possible to enter decimal values.
Signed Defines whether the number generated on the bus is interpre-
ted as signed or unsigned.
Property Description
Examples:
Precondition
Procedure
4. Click on Create. The I/O group is created and displayed in the selec-
tion menu I/O group.
5. In the Edit I/O area, enter a name for the input or output of the group
and define the signal properties.
(>>> "Signal properties" Page 226)
6. In the Edit I/O group area, click on Create. The input or output signal
is created and displayed in the Edit I/O Signals area.
7. Repeat steps 5 and 6 to define further inputs/outputs in the group.
Precondition
Bus configuration
Procedure
1. Select the desired I/O group from the I/O group selection menu.
2. Click on Edit. The Rename I/O group window is opened.
3. Change the name of the I/O group and/or the corresponding descrip-
tion (optional). Confirm with Apply.
Precondition
Procedure
1. Select the desired I/O group from the I/O group selection menu.
2. Click on Delete. If signals have already been created for the I/O
group, a request for confirmation is displayed.
3. Reply to the request for confirmation with Yes. The I/O group is de-
leted.
Precondition
Procedure
1. Select the I/O group of the signal from the I/O group selection menu.
2. In the Edit I/O Signals area, click on the desired input or output.
3. In the Edit I/O area, edit the signal properties as required.
(>>> "Signal properties" Page 226)
All the changes can be discarded by clicking on the Discard button.
Precondition
Procedure
1. Select the I/O group of the signal from the I/O group selection menu.
2. In the Edit I/O Signals area, click on the desired input or output.
3. Click on Delete.
Description
I/O groups can be saved as a template. The template contains all the in-
puts/outputs belonging to the saved I/O group. This enables I/O groups,
once created, to be reused. The mapping of the inputs and outputs is not
saved, however.
After exporting the template, the templates created in WorkVisual are
available in Sunrise.Workbench in the IOTemplates folder of the project.
Precondition
Procedure
1. In the Edit I/O group area, select the I/O group that is to be exported
as a template.
2. Click on Export as template. The Save I/O group as template win-
dow is opened.
3. Enter a name for template.
If a template with the same name already exists in the Sunrise
project, it will be overwritten during the export operation.
Precondition
Procedure
1. In the Edit I/O group area, click on Import from template. The Im-
port I/O group from template window is opened.
2. In the selection list Used template, select the template to be impor-
ted.
3. Enter a name in the I/O-group name box for the I/O group to be cre-
ated.
4. Click on Import. An I/O group configured in accordance with the tem-
plate is imported and can be edited.
Bus configuration
11.6 Mapping the bus I/Os
Overview
Item Description
1 Displays the Sunrise I/O groups
The signals in the I/O group selected here are displayed in the
overviews lower down.
2 Displays the inputs/outputs of the bus modules
The signals in the module selected here are displayed in the
overviews lower down.
3 Connection overview
Displays the mapped signals. These are the signals of the I/O
group selected under Sunrise I/Os, which are mapped to the
bus module selected under Field buses.
4 Signal overview
Here the signals can be mapped.
(>>> 11.6.3 "Mapping Sunrise I/Os" Page 233)
Item Description
5 The arrow buttons allow the connection and signal overviews to
be collapsed and expanded independently of one another.
For the I/O mapping in Sunrise, only the Sunrise I/Os and Field buses
tabs are relevant.
Edit
Button Name/description
Creates signals at the provider
Opens the Create I/O signals window.
(>>> 11.5.1 "“Create I/O signals” window" Page 226)
The button is only active if an input or output module is se-
lected on the Field buses tab and a signal of the I/O group
is selected in the signal overview.
Edit signals at the provider
Opens the Edit I/O signals window.
The button is only active if an I/O group is selected on the
Sunrise I/Os tab and a signal of the I/O group is selected
in the signal overview.
Deletes signals at the provider
Deletes all the selected inputs/outputs. If all the inputs/
outputs of a group are selected, the I/O group is also de-
leted.
The button is only active if an I/O group is selected on the
Sunrise I/Os tab and a signal of the I/O group is selected
in the signal overview.
Bus configuration
Mapping
Button Name/description
Disconnect
Disconnects the selected mapped signals. It is possible to
select and disconnect a number of connections simultane-
ously.
Connect
Connects signals which are selected in the signal overview.
Description
Precondition
Procedure
1. On the Sunrise I/Os tab in the left-hand half of the window, select the
I/O group for which the I/Os are to be mapped.
The signals of the group are displayed in the bottom area of the I/O
Mapping window.
2. On the Field buses tab in the right-hand half of the window, select
the desired input or output module.
The signals of the selected field bus module are displayed in the bot-
tom area of the I/O Mapping window.
3. Drag the signal of the group onto the input or output of the module.
(Or alternatively, drag the input or output of the device onto the signal
of the group.)
The signals are now mapped. Mapped signals are indicated by green
arrows.
Alternative procedure for mapping:
• Select the signals to be mapped and click on the Connect button.
Description
Precondition
Procedure
1. Select the menu sequence File > Import / Export. The import/export
wizard for files opens.
2. Select Export the I/O configuration to the Sunrise Workbench
project..
3. Click on Next > and then on Finish. The configuration is exported to
the Sunrise project.
4. A message is displayed as to whether the export was successfully
completed. If Sunrise I/Os have not been mapped, this is also indica-
ted.
It is not essential to map all the Sunrise I/Os that have been cre-
ated.
External control
12 External control
Default application
Interfaces
External controller and robot controller can communicate via the following
interfaces:
• I/O system of the robot controller
• Network protocol UDP
The input/output signals for communication are predefined:
• The external controller can start, pause and resume the default appli-
cation via the input signals.
(>>> 12.4 "External controller input signals" Page 236)
• The output signals can be used to provide information about the
status of the default application and the station to the external control-
ler.
(>>> 12.5 "External controller output signals" Page 237)
Precondition
The following steps are required for configuring the external controller via
the I/O system:
Step Description
1 Configure and map inputs/outputs for communication with
the external controller in WorkVisual.
(>>> 12.4 "External controller input signals" Page 236)
(>>> 12.5 "External controller output signals" Page 237)
2 Export I/O configuration from WorkVisual to Sunrise.Work-
bench.
3 Create the default application for the external controller.
4 Configure the external controller in the project settings.
(>>> 12.7 "Configuring the external controller in the project
settings" Page 239)
5 Transfer the project to the robot controller by means of syn-
chronization.
The following steps are required for configuring the external controller via
the UDP network protocol:
Step Description
1 Create the default application for the external controller.
2 Configure the external controller in the project settings.
(>>> 12.7 "Configuring the external controller in the project
settings" Page 239)
3 Transfer the project to the robot controller by means of syn-
chronization.
Use of the UDP is illustrated by the following example:
(>>> 12.9 "External control via UDP – Start-up example" Page 245)
App_Start
App_Enable
Get_State
The external controller can use this signal to request application and sta-
External control
tion statuses from the robot controller. The value of the signal can be
TRUE or FALSE.
System response
The input signal App_Enable has a higher priority than the input signal
App_Start. If the input signal App_Enable is configured, the default appli-
cation can only be started if App_Enable has a HIGH level or is TRUE.
The following table describes the system behavior when the App_Enable
signal is configured.
App_Start App_Enable Application status Reaction
FALSE --> FALSE Selected None
TRUE
FALSE --> FALSE Motion paused None
TRUE
FALSE --> TRUE Selected Application is started.
TRUE
FALSE --> TRUE Motion paused Application is resumed.
TRUE If the path is left: the robot is re-
positioned. The application is
then paused.
Any TRUE --> Running Application is paused.
FALSE
Any TRUE --> Repositioning Application is paused.
FALSE
AutExt_Active
The output signal has a HIGH level or is TRUE if Automatic mode is ac-
tive and the project on the robot controller can be controlled externally via
the interface.
AutExt_AppReadyToStart
The output signal has a HIGH level or is TRUE if the default application is
ready to start.
The application is ready to start in the following states:
• Selected
• Motion paused
DefaultApp_Error
The output signal has a HIGH level or is TRUE if an error occurred when
the default application was run.
Station_Error
The output signal has a HIGH level or is TRUE if the station is in an error
state.
There is an active error state in the following cases:
• Motion enable signal is not present.
NOTICE
It is not permissible to set outputs in a robot application that signal sys-
tem states to the external controller. Failure to observe this precaution
may result in malfunctioning of the external controller and damage to
property.
External control
Fig. 12-3: Restart after external EMERGENCY STOP
Procedure
Description
Item Description
1 Directory of the project settings
2 “Default application” area
All robot applications of the project are available for selection as
the default application.
3 “Input configuration” area
The interface for the external communication is selected here:
External control
Button Description
Restoring default Resets the window to the default settings. All
values user settings will be lost.
Apply Saves the user settings. The window remains
open.
OK Saves the user settings and closes the window.
Cancel Closes the window without saving.
Parameter Description
with App_Enable suppor- Use of the input signal App_Enable
ted
• Check box not active (default): App_Enable is not evalu-
ated.
• Check box active: App_Enable is evaluated.
IP of controlling client: IP address of the client configured for external control of the
project
IPs of state receivers: List of clients to receive status information (optional)
For each client, the IP address must be specified in the follow-
ing format together with the corresponding port:
• IP_address_1:Port_1;IP_address_2:Port_2;...
Note: It is advisable to specify the IP address and port of the
controlling client in order to inform it of changes of state.
Form and length of the UDP data packets for the data exchange are pre-
defined:
• UTF-8 coding
• Data arrays are separated by a semicolon.
Description
In the case of the UDP interface, application and station statuses are
transferred from the robot controller to an external controller by means of
so-called status messages.
In the following cases, the robot controller sends status messages to the
clients that are configured as recipients of status messages in the project
settings:
• Following receipt of the control message from an external client
• Following the change in state of an output signal
The data packet sent by the robot controller consists of the following data
arrays:
Array no. Description
1 Time stamp
Type: Integer (long); unit: ms
The time stamp is the current system time of the robot controller when the sta-
tus message is sent. Corresponds to the time in milliseconds elapsed since mid-
night on 1.1.1970.
2 Data packet counter (packets sent to the client)
When the robot controller sends a new status message, the counter is incre-
mented by 1. The client can use the counter to determine the order in which the
status messages were sent.
3 Data packet counter (valid packets received by the client)
When the robot controller signals to the client that the received packet is valid,
the counter is incremented by 1. The client can use the counter to determine
the controller message to which the robot controller is responding.
The client can request the counter for restoration of a cancelled connection and
then use the requested value+1 as the counter in its next controller message.
4 Error ID
The ID signals to the client whether the received controller message was valid
or defective.
(>>> "Error codes" Page 243)
5 Current status of the output signal AutExt_Active
• TRUE: AUT mode is active and the project on the robot controller can be
controlled externally via UDP.
• FALSE: AUT mode is not active or the project on the robot controller cannot
be controlled externally via UDP.
6 Current status of the output signal AutExt_AppReadyToStart
External control
Array no. Description
8 Current status of the output signal Station_Error
• TRUE, FALSE
Status defined by the last valid controller message.
The client can request the current status of the signal for restoration of a can-
celled connection.
11 Current status of the input signal App_Enable
• TRUE, FALSE
Status defined by the last valid controller message; FALSE if no controller mes-
sage has been received in the last 100 ms.
The client can request the current status of the signal for restoration of a can-
celled connection.
Example
1449066055468;7;2;1;true;false;false;false;RUNNING;false;fals
e
Error codes
ID Description
1 No error – internally triggered change of state
The change of state of an output signal was not triggered by a
message from the controlling client, but by an internal event on
the robot controller.
0 No error – valid message received
The most recently received message is valid and is being pro-
cessed.
-1 Incorrect client IP address
The IP address of the client that sent the message does not
match the IP address of the client configured for external con-
trol.
ID Description
-2 Incorrect message structure
The message could not be decoded, e.g. because it contains
too many or too few data arrays or because the data arrays are
not separated by semicolons.
-3 Incorrect data packet counter
The data packet counter of the current message was not incre-
mented by 1 (relative to the most recently received message).
-4 Incorrect time stamp
The time stamp must be an integer.
-5 Incorrect signal name
The signal name must be App_Start, App_Enable or
Get_State.
-6 Incorrect signal value
The signal value must be TRUE or FALSE.
-7 Timeout error
After App_Enable was set to TRUE, no further valid message
was received for 100 ms. The application is paused.
If more than one fault occurs simultaneously, the fault with the highest
priority is transferred. A fault with the ID -3, for example, has a higher
priority than a fault with the ID -4.
Precondition
When a controller message is sent, the following target address and port
must always be specified:
• IP address of the robot controller (see Configuration tab in the
station configuration)
• Port 30300 (fixed port of the robot controller)
Description
With the UDP interface, input signals are set via so-called controller mes-
sages that the external controller must send to the robot controller. This
client data packet must contain the following data arrays:
Array no. Description
1 Time stamp
Type: Integer (long); unit: ms
The time stamp should be the current system time of the client when the con-
troller message is sent.
2 Data packet counter (packets sent to the robot controller)
When the client sends a new controller message, the counter must be incre-
mented by 1.
External control
Array no. Description
4 Name of the input signal
• App_Start
The default application can be started or resumed by means of a change of
state from FALSE to TRUE as long as the output signals AutExt_Active
and AutExt_AppReadyToStart are TRUE.
• App_Enable
If App_Enable is activated in the project settings, the signal must be TRUE
in order to be able to start or resume the default application.
(>>> "App_Enable" Page 245)
• Get_State
With this signal (TRUE or FALSE), the client can request a status message
from the robot controller.
5 Value of the sent input signal
• TRUE, FALSE
Example
1449066055468;1;App_Start;true
App_Enable
• If the external client sets the input signal App_Enable from TRUE to
FALSE within the 100 ms, this also pauses the application.
The example shows how a robot application can be started from a PC via
UDP and what start-up steps and programming are required for this.
The input signal App_Enable is not used in this example. This example
can thus not be used to pause an application and does not claim to be
comprehensive.
The following steps are required for starting up the external controller:
1. Connect the PC to the robot controller via the Ethernet interface KLI.
2. Assign a fixed network IP address to the PC, e.g. 192.168.0.10.
On the PC used for external control, there must be a program that can
generate and send UDP data packets.
If a firewall is used, it must be ensured that it does not block the incom-
ing and outgoing UDP data packets.
External control
Precondition
• The correct target address and port have been assigned to the data
packets that are to be sent:
‒ IP address of the robot controller (see Configuration tab in the
station configuration)
‒ Port 30300 (fixed port of the robot controller)
Description
1457449078435;1;App_Start;true
The first number in the packet is the time stamp that must be used to
document when the packet was sent. Here, and in the following code
examples, this number must always be replaced with a current time
stamp in milliseconds. (When using Java, such a number can be gener-
ated, for example, with java.lang.System.currentTimeMillis().)
If the value to be transferred for the counter is not known, a socket on the
PC must be opened that can receive UDP messages at port 30333.
Get_State can then be used to request the current counter value:
1457450539457;1;Get_State;true
1457450539459;4;1337;-3;true;true;false;false;IDLE;false;true
The received message shows that the current value of the data packet
counter is 1337. The counter value 1338 must therefore be transferred in
the next data packet.
In order to restart a robot application, the state of the signal from
App_Start must change from FALSE to TRUE. For this purpose, the fol-
lowing packets are sent:
1457450539511;1338;App_Start;false
1457450539511;1339;App_Start;true
Java program
1 import java.net.*;
2 class UdpSample
3 {
4 public static void main(String args[]) throws Exception
5 {
6 DatagramSocket mySocket = new DatagramSocket(30333);
7
8 // robot address (please adjust IP!)
9 InetSocketAddress robotAddress =
10 new InetSocketAddress("192.168.0.2", 30300);
11
12 // get robot state
13 byte[] msg = String.format("%d;1;Get_State;true",
14 System.currentTimeMillis()).getBytes("UTF-8");
15 mySocket.send(new DatagramPacket(msg, msg.length, robotAddress));
16
17 // receive answer state message
18 byte[] receiveData = new byte[508];
19 DatagramPacket receivePacket = new DatagramPacket(receiveData,
20 receiveData.length);
21 mySocket.receive(receivePacket);
22
23 // extract counter
24 String[] stateMessage = new String(receivePacket.getData()).split(";");
25 long counter = Long.parseLong(stateMessage[2]);
26
27 // start application by sending a rising edge
28 // (false->true) for App_Start
29 msg = String.format("%d;%d;App_Start;false", System.currentTimeMillis(),
30 ++counter).getBytes("UTF-8");
31 mySocket.send(new DatagramPacket(msg, msg.length, robotAddress));
32 msg = String.format("%d;%d;App_Start;true", System.currentTimeMillis(),
33 ++counter).getBytes("UTF-8");
34 mySocket.send(new DatagramPacket(msg, msg.length, robotAddress));
35 }
36 }
12.10 Configuring the signal outputs for a project that is not externally con-
trolled
Description
The predefined output signals for the external controller can also be used
to signal application and station statuses in projects that are not externally
controlled.
The application statuses always refer to the default application selected in
the project settings.
The selected default application is indicated by the following icon in the
Package Explorer view:
If the default application is renamed, the icon is no longer displayed and
the application must be selected as the default application once again.
(>>> 5.4.5 "Setting the robot application as the default application"
Page 63)
External control
Precondition
• In the case of communication via the I/O system of the robot control-
ler: The I/O configuration of the project contains the outputs configured
and mapped in WorkVisual.
(>>> 12.5 "External controller output signals" Page 237)
Procedure
If the I/O interface is used, mapped outputs of an I/O group must be as-
signed to the required output signals.
Column Description
I/O group All I/O groups of the I/O configuration of the project are availa-
ble.
Boolean output All outputs of the I/O group selected in the I/O group column
are available.
Parameter Description
IPs of state receivers: List of clients to receive status information
For each client, the IP address must be specified in the follow-
ing format together with the corresponding port:
• IP_address_1:Port_1;IP_address_2:Port_2;...
Safety configuration
13 Safety configuration
The safety configuration defines the safety-oriented functions in order to
integrate the industrial robot safely into the system. Safety-oriented func-
tions serve to protect human operators when they work with the robot.
The safety configuration is an integral feature of a Sunrise project and is
managed in tabular form. The individual safety functions are grouped in
KUKA Sunrise.Workbench on an application-specific basis. The safety
configuration is then transferred with the project to the controller and acti-
vated there.
WARNING
Serious damage and injury or death can result from incorrect safety
configuration. If a new or changed safety configuration is activated, the
safety maintenance technician must conduct tests to ensure that the
configured safety parameters have been correctly applied and that the
safety functions of the configuration are fully functional (safety accept-
ance).
The system integrator must verify that the safety configuration sufficient-
ly reduces risks during collaborative operation (HRC).
It is advisable to perform this verification in accordance with the informa-
tion and instructions for operating collaborative robots in ISO/TS 15066.
Description
The safety configuration must implement all safety functions which are re-
quired to operate the industrial robot. A safety function monitors the entire
system on the basis of specific criteria. These are described by individual
monitoring functions, so-called AMFs (Atomic Monitoring Functions). To
configure a safety function, several AMFs can be linked to form complex
AMF
Safety function
Safety configuration
are violated, the entire safety function is considered to be violated.
A suitable reaction is defined for each safety function. This reaction must
take place in the case of an error and put the system into a safe state.
The following reactions can be configured:
• Safety stop 0 is triggered.
It is advisable to only configure a safety stop 0 if it is necessary to
immediately switch off the drives and apply the brakes as a reaction.
• Brake is triggered.
The manipulator is braked on the path as long as the safety monitor-
ing is violated. The braking process is monitored by the safety control-
ler. Safety stop 1 is executed in the event of a fault.
Unlike the safety stop, the braking process does not lead to a com-
plete standstill or deactivation of the drives. The velocity reduction and
safety-oriented monitoring of the braking process are only carried out
until the safety monitoring is no longer violated.
Conditions for use of the “Brake” safety reaction:
‒ Only available with the KUKA Sunrise.EnhancedVelocityControl op-
tion
‒ Only available for safety functions of the PSM mechanism
‒ Only compatible with safety functions that contain Cartesian veloci-
ty monitoring
‒ Not compatible with safety functions that contain an extended AMF
‒ Only compatible with position-controlled spline motions
(>>> 18.1.1 "“Brake” safety reaction" Page 568)
• Safety-oriented output is set to “0” (LOW level).
Setting a safety-oriented output is a safety reaction that is only availa-
ble for safety functions of the PSM mechanism.
The reactions can be used for any number of safety functions. A reaction
is triggered once one of the safety functions using this reaction is violated.
This makes it possible, for example, to inform a higher-level controller via
a safe output when specific errors occur.
With the PSM mechanism, it is possible to trigger several different reac-
tions when a specific combination of AMFs is violated. For example, a
safety stop can be triggered as well as a safe output. To do so, 2 safety
functions must be configured with identical AMF combinations.
triggers the stronger stop reaction. In other words, it triggers the stop re-
action which causes an earlier safety-oriented disconnection of the drives.
If several safety functions use the same output signal as a reaction, this
signal is set to “0” once one of the safety functions is violated.
Safety configuration
Further information about interface X11 is contained in the assembly in-
structions of the robot controller.
Description
Categories
Safety configuration
Fig. 13-2: Safety functions of the ESM mechanism
Categories
Overview
KUKA Sunrise contains a basic package of AMFs. These include, for ex-
ample, all standard AMFs. The following safety options are also available
and can be used to install further AMFs:
• KUKA Sunrise.SafeOperation (SOP)
• KUKA Sunrise.HRC: safety option for HRC applications
Automatic mode
Test mode
High-velocity mode
Reduced-velocity mode
Input signal
Motion enable
Position referencing
Time delay
Tool orientation
Collision detection
Torque referencing
Description
Overview
Safety configuration
AMF Task
Test mode Checks whether a test operating mode is active (T1, T2,
CRR)
Automatic mode Checks whether the Automatic operating mode is active
(AUT)
Reduced-velocity mode Checks whether an operating mode with reduced velocity is
active (T1, CRR)
Note: In the case of a mobile platform, the velocity is not re-
duced in T1 and CRR mode.
High-velocity mode Checks whether an operating mode with programmed velocity
is active (T2, AUT)
(>>> 13.11.2 "Evaluating the operating mode" Page 287)
AMFs for evaluating the motion enable:
AMF Task
Motion enable Monitors the motion enable signal
Motion enable is withdrawn if a safety stop is active.
Note: The “Brake” safety reaction does not lead to withdrawal
of motion enable.
(>>> 13.11.3 "Evaluating the motion enable" Page 287)
Description
Overview
AMF Task
Position referencing Monitors the referencing status of the position sensors of the
axes of a kinematic system
(>>> 13.11.6 "Evaluating the position referencing" Page 292)
Torque referencing Monitors the referencing status of the axis torque sensors of
a kinematic system
(>>> 13.11.7 "Evaluation of axis torque referencing"
Page 293)
AMFs for velocity monitoring:
AMF Task
Axis velocity monitoring Monitors the velocity of an axis
(>>> 13.11.8.1 "Defining axis-specific velocity monitoring"
Page 294)
Cartesian velocity monitoring Monitors the Cartesian translational velocity at defined points
of a kinematic system
(>>> 13.11.8.2 "Defining Cartesian velocity monitoring"
Page 294)
Tool-related velocity compo- Monitors the Cartesian translational velocity in a specific de-
nent fined direction (up to 6 monitoring points can be configured).
(>>> 13.11.8.3 "Direction-specific monitoring of Cartesian ve-
locity" Page 297)
AMFs for space monitoring:
AMF Task
Cartesian workspace monitor- Checks whether a part of the structure of a kinematic system
ing being monitored is located outside of its permissible work-
space
(>>> 13.11.9.1 "Defining Cartesian workspaces" Page 302)
Cartesian protected space Checks whether a part of the structure of a kinematic system
monitoring being monitored is located within a non-permissible protected
space
(>>> 13.11.9.2 "Defining Cartesian protected spaces"
Page 304)
Axis range monitoring Monitors the position of one of the axes of a kinematic sys-
tem
(>>> 13.11.9.3 "Defining axis-specific monitoring spaces"
Page 307)
AMF for monitoring the tool orientation:
AMF Task
Tool orientation Checks whether the orientation of the tool of a kinematic sys-
tem is outside a permissible range
(>>> 13.11.10 "Monitoring the tool orientation" Page 308)
AMFs for monitoring forces and torques (HRC):
Safety configuration
AMF Task
Axis torque monitoring Monitors the measured torque of an axis
(>>> 13.11.13.1 "Axis torque monitoring" Page 313)
Collision detection Monitors the external axis torques of all axes of a kinematic
system
(>>> 13.11.13.2 "Collision detection" Page 314)
TCP force monitoring Monitors the external force acting on the tool or robot flange
of a kinematic system
(>>> 13.11.13.3 "TCP force monitoring" Page 316)
Base-related TCP force com- Monitors a component of the external force acting on the tool
ponent or robot flange of a kinematic system relative to a base coor-
dinate system.
(>>> 13.11.13.4 "Direction-specific monitoring of the external
force on the TCP" Page 317)
Description
Extended AMFs are not available for the safety functions of the ESM
mechanism.
Overview
AMF Task
Time delay Delays the triggering of the reaction of a safety function for a
defined time.
(>>> 13.11.12 "Activation delay for safety function" Page 312)
Description
Overview
Not all kinematic-specific AMFs are available for monitoring a KMP, as the
required sensor information is not available. If an AMF cannot be used, it
is always violated.
AMF LBR KMP
Position referencing
Torque referencing
Tool orientation
Collision detection
Safety configuration
13.7 Worst-case reaction times of the safety functions in the case of a sin-
gle fault
The reaction time describes the time between the following events:
• Time at which the event occurs that is to trigger a safety reaction, e.g.
violation of a monitored axis range or setting of an EMERGENCY
STOP input
• Time at which the safety reaction is initiated, e.g. stop reaction is initi-
ated or an output has been deactivated
The reaction time thus contains fault detection times and delays before in-
itiation of the safety reaction. The worst-case reaction time in the case of
a single fault considers the presence of an individual fault and is thus
greater than the reaction time typically expected for the safety function.
The reaction time does not include the time between initiation of a stop
reaction and the kinematic system coming to a standstill.
1 Reaction time
2 Braking time
3 Stopping time = Reaction time + Braking time
v Velocity
t Time
t0 Time at which the triggering event occurs
t1 Time at which the safety reaction is initiated
t2 Time at which the kinematic system comes to a standstill
the monitoring function with the longest reaction time determines the reac-
tion time of the safety function.
Safety configuration
Input signal media flange "Touch"
Tool orientation
Safety configuration
Base-related TCP force component
Collision detection
The reaction time depends on the input used to connect the enabling de-
vice on the hand guiding device to the robot controller. The reaction time
corresponds to the reaction time of the corresponding AMF Input signal.
The reaction time depends on the input used to connect the enabling de-
vice on the hand guiding device to the robot controller. The reaction time
corresponds to the reaction time of the corresponding AMF Input signal.
Description
Use
Deactivation of safety functions may be used, for example, for freeing per-
sons in a crushing situation.
• To cancel a safety stop triggered by one of the defined AMFs, the
configured input must be set to HIGH.
• As long as the input is HIGH, the robot can be moved for a maximum
of 5 seconds. Every further safety stop triggered by one of the defined
AMFs in this time does not become active.
• After this time, the input must be reset and set again.
Velocity monitoring
While the safety functions are deactivated, all axis-specific velocity moni-
toring functions and the Cartesian velocity monitoring function remain ac-
tive.
For all kinematic systems, safety-oriented monitoring of the Cartesian ve-
locity of 250 mm/s of the robot and tools is additionally active. This addi-
tional Cartesian velocity monitoring is active irrespective of the operating
mode.
Procedure
Safety configuration
The enabling device of the hand guiding device can be used as an
input for deactivating safety functions. In this case, it must be taken
into consideration in the risk assessment that every time the ena-
bling switch on the hand guiding device is used, a safety stop that
is active at the time of the enabling can be cancelled if it was trig-
gered by one of the defined safety functions.
Further safety functions and safe ESM states can be configured. Safety-
oriented tools can also be mapped.
After the safety configuration has been transferred to the robot controller,
it must be activated and safety acceptance must be carried out.
Step Description
1 Open the safety configuration.
(>>> 13.9.2 "Opening the safety configuration" Page 270)
2 Edit the safety functions in the Customer PSM table or cre-
ate new safety functions.
(>>> 13.9.3 "Configuring the safety functions of the PSM
mechanism" Page 273)
3 If necessary, adapt in the KUKA PSM table the parameters
of the parameterizable AMFs used, e.g. for the Cartesian
velocity monitoring during manual guidance.
(>>> 13.11.5.3 "Velocity monitoring during manual
guidance" Page 291)
4 Configure event-dependent monitoring functions if required.
To do so, create safe ESM states and corresponding safety
functions. Existing ESM states can be changed by adapting
safety functions which are already configured or by adding
new ones.
(>>> 13.9.4 "Configuring the safe states of the ESM mech-
anism" Page 276)
5 If necessary, map safety-oriented tools.
(>>> 13.9.5 "Mapping safety-oriented tools" Page 282)
6 Save safety configuration.
Step Description
7 When using the ESM mechanism
Program the necessary switch between the safe states in
the robot application and/or background applications.
(>>> 13.9.4.7 "Switching between ESM states" Page 281)
8 When using position-specific AMFs
Configure the position referencing and create an application
for the reference run.
(>>> 13.13 "Position and axis torque referencing"
Page 325)
9 When using axis torque-specific AMFs
Create an application for the axis torque referencing.
(>>> 13.13.2 "Axis torque referencing" Page 327)
10 Transfer the safety configuration to the robot controller by
means of project synchronization.
11 Activate the safety configuration on the robot controller
(>>> 13.10.1 "Activating the safety configuration" Page 284)
12 When using position-specific AMFs
Carry out position referencing.
13 When using axis torque-specific AMFs
Perform axis torque referencing.
14 Carry out safety acceptance.
(>>> 13.14 "Safety acceptance overview" Page 330)
Procedure
Description
Safety configuration
• Tables for ESM states (optional)
A table is created for each ESM state. It contains the safety functions
of the state. The standard configuration does not contain any precon-
figured ESM states.
• Tool selection table table
Safety-oriented tools can be mapped in this table. Each kinematic sys-
tem can be assigned a maximum of one fixed tool that is always ac-
tive and one or more tools that can be activated via an input.
When the safety configuration is evaluated, the Customer PSM and KUKA
PSM tables are always checked simultaneously. It is possible for the two
tables to contain identical safety functions with different reactions. If differ-
ent stop reactions are configured, a violation triggers the stronger stop re-
action. In other words, it triggers the stop reaction which causes an earlier
safety-oriented disconnection of the drives.
If the ESM mechanism is used, all safety functions of the currently active
ESM state are additionally monitored.
13.9.2.2 Overview of the graphical user interface for the safety configuration
Item Description
1 Table selected
Contains the configured safety functions of the selected PSM
table or of the selected ESM state.
2 Selection table
With respect to the cell selected in the highlighted table row,
the category, AMF or reaction of a safety function can be selec-
ted here.
3 Instance table
This area displays the instances of the AMF marked in the se-
lection table as well as the table rows in which they are used.
4 Parameter table
The parameter values of the AMF instance selected in the in-
stance table are displayed here. The values can be changed.
5 Information display
Information about the selected category, AMF or reaction
6 List of tables
In this area, the desired tables can be selected and new ESM
states can be added.
7 Computing time utilization of the safety controller
Indicates the percentage of the computing time used for the
open safety configuration, including all changes that have not
been saved.
List of tables
The list of tables in the lower area of the Editor is used to select the table
to be displayed and edited.
Item Description
1 “Tool selection table” tab
Opens the Tool selection table table. Safety-oriented tools can
be mapped.
2 “KUKA PSM” tab
Opens the KUKA PSM table. The parameters of the parameter-
izable AMFs used can be changed.
3 “Customer PSM” tab
Opens the Customer PSM table. Safety functions can be modi-
fied and created.
4 Tab for an ESM state
Opens the ESM state. The ESM state can be edited.
Safety configuration
Item Description
5 Add new ESM state button
Adds a new ESM state. The new state is automatically opened
and can be edited.
The PSM mechanism defines safety monitoring functions which are per-
manently active.
The safety functions are displayed in tabular form. Each row in the table
contains a safety function.
In the PSM table Customer PSM, new safety functions are added and ex-
isting settings are adapted. This means that the category, the Atomic Mon-
itoring Functions (AMFs) used, the parameterization of the AMF instances
and the reaction can be changed. Individual safety functions can be acti-
vated or deactivated.
Procedure
Item Description
1 Active column
Defines whether the safety function is active. Deactivated safety
functions are not monitored.
Item Description
3 Columns AMF 1, AMF 2, AMF 3
Define the individual AMFs of the safety function. Up to 3 AMFs
can be used. The safety function is violated if all of the AMFs
used are violated.
4 Reaction column
Defines the reaction of the safety function. It is triggered if the
safety function is violated.
5 Number of safety functions currently configured
A total of 100 rows are available for configuring the user-specif-
ic safety monitoring functions.
6 Buttons for editing the table
7 Selected row
The row containing the currently selected safety function is
highlighted in gray.
The following buttons are available:
Button Description
Add row
Adds a new row to the table (only possible when the
non-configured blank rows are hidden). The new row
has the standard configuration and is activated auto-
matically.
Reset row
Resets the configuration of the selected row to the
standard configuration. The safety function is deacti-
vated.
Show empty rows/Hide empty rows
All empty rows which are not configured are deactiva-
ted and preset with the standard configuration.
• Category: None
• AMF 1, AMF 2, AMF 3: None
• Reaction: Stop 1
The empty rows can be shown or hidden. The empty
rows are hidden by default.
Precondition
Procedure
Safety configuration
1. Click on Add row. A preconfigured row is added to the table. The row
is automatically activated (check mark in the Active column).
2. Set the category, the AMFs used and the reaction of the safety func-
tion in the corresponding columns.
Precondition
Procedure
1. In the table, select the row with the safety function to be deleted.
2. Click on Reset row. The safety function is deactivated and is given
the standard configuration (None, AMF, Reaction: Stop 1).
Precondition
Procedure
Using the ESM mechanism, various safety settings are defined by config-
urable safe states. Up to 10 safe states can be created. The states are
numbered sequentially from 1 to 10 and can therefore be identified unam-
biguously.
A safe state is defined in a table with up to 20 safety functions. These
safety functions define the safety settings which must be valid for the
state.
A safe state is represented in a table. Each row in the table contains a
safety function.
Use of the ESM mechanism is optional. The ESM mechanism is activated
if at least one ESM state is configured. If no ESM states are configured,
the mechanism is deactivated.
If the ESM mechanism is active, exactly one safe state is valid. The safe-
ty functions of this state are monitored in addition to the permanently ac-
tive safety functions. Depending on the situation, it is possible to switch
between the configured safe states. Switching can be carried out in the
robot application or in a background application.
(>>> 13.9.4.7 "Switching between ESM states" Page 281)
An ESM state is active until it is commanded to switch to another ESM
state.
The configured ESM state with the lowest number is automatically active
when the controller is booted.
Description
Up to 10 safe ESM states can be created for the ESM mechanism. If this
number is reached, the button for adding new states is hidden.
The ESM state is automatically opened when added and can be edited. It
has an active safety function with a standard configuration.
Precondition
Procedure
1. Select the Add new ESM state button in the list of tables of the safe-
ty configuration.
A tab for the ESM state is added to the list of tables. The new ESM
state is given the lowest state number which has not yet been as-
signed.
2. Enter a name for the ESM state and configure the safety functions as
required for the ESM state.
Safety configuration
Overview of the ESM state with standard configuration
Item Description
1 Active column
Defines whether the safety function is active. Deactivated safety
functions are not monitored.
Item Description
6 Add new ESM state button
Adds a new ESM state. The new state is automatically opened
and can be edited.
7 Tab for ESM state
Opens the ESM state. The ESM state can be edited.
8 List of tables
In this area, the desired tables can be selected and new ESM
states can be added.
9 Selected row
The row containing the currently selected safety function is
highlighted in gray.
10 Name of the ESM state (optional)
(>>> "Naming conventions" Page 278)
The name of the ESM state is shown in the safety configuration
report and, in the case of violation of the ESM state, in the cor-
responding message on the smartHMI.
Buttons
• AMF: None
• Reaction: Stop 1
The empty rows can be shown or hidden. The empty
rows are hidden by default.
Naming conventions
Safety configuration
‒ Letters A-Z and a-z as well as Ä, Ö, Ü and ä, ö, ü, ß
‒ Digits 0-9
‒ Space, hyphen, underscore
• The name must not start with a space.
Precondition
Procedure
Buttons
Button Description
Add row
Precondition
Procedure
1. In the desired table row of the ESM state, select the AMF column.
The available AMFs are displayed in the selection table.
2. Select the desired AMF from the selection table. The AMF is applied
to the safety function.
3. For multiply instanced AMFs: select the desired instance from the in-
stance table. The instance is applied to the safety function.
4. For parameterizable AMFs: in the parameter table, set the parameters
of the AMF in the Value column and apply the settings with the Enter
key.
Changing a reaction:
1. In the desired table row of the ESM state, select the Reaction column.
The available reactions are displayed in the selection table.
2. Select the desired reaction from the selection table. The reaction is
applied to the safety function.
Activating/deactivating a safety function:
• In the desired table row of the ESM state, click on the Active column.
The check mark is set / removed.
Precondition
Procedure
1. In the table of the ESM state, select the row with the safety function
that is to be deleted.
2. Click on the Reset row button.
The safety function is deactivated and is given the standard configura-
tion (None, AMF, Reaction: Stop 1).
Buttons
Button Description
Reset row
Description
Once the safety configuration is saved and closed, an ESM state is auto-
matically removed if it has the following settings:
• All rows have the standard configuration (AMF: None, Reaction:
Stop 1)
• The first row is activated and all other rows are deactivated.
Precondition
Safety configuration
Procedure
1. In the list of tables of the safety configuration, select the tab of the
ESM state that is to be deleted.
2. In the ESM state, click on the Delete state button.
3. Answer the request for confirmation with Yes. The state is deleted.
Buttons
Button Description
Delete state
Description
Procedure
Description
Syntax
robot.setESMState(state);
Element Description
robot Type: LBR
Name of the robot for which the ESM state is activated
state Type: String
Number of the ESM state which is activated
• 1 … 10
If a non-configured ESM state is specified, the robot
stops with a safety stop 1.
Example
@Inject
private LBR robot;
// ...
robot.setESMState("8");
robot.move(handGuiding());
// ...
}
Description
Procedure
Safety configuration
Overview
Item Description
1 State of the mapped tool
Button Description
Add row
Adds a new row to the table (only possible when the
non-configured blank rows are hidden). The new row
has the standard configuration and is activated auto-
matically.
Reset row
Resets the configuration of the selected row to the
standard configuration. The mapped tool is activated.
Show empty rows/Hide empty rows
All empty rows which are not configured are deactiva-
ted and preset with the standard configuration.
Precondition
Safety configuration
Procedure
1. Select the Safety > Activation tile at the Station level. The Activation
view opens.
2. Press the Activate button.
Description
Precondition
Procedure
1. Select the Safety > Activation tile at the Station level. The Activation
view opens.
2. Press the Reset button.
Description
Precondition
Procedure
1. Select the Safety > Activation tile at the Station level. The Activation
view opens.
2. Press the Deactivate button.
3. Check whether the safety configuration has been deactivated success-
fully.
Instances
Naming conventions
Safety configuration
PAD can be configured. The following standard AMFs are available for
this purpose:
AMF Description
smartPAD Emergency Stop The AMF is violated if the EMERGENCY STOP device on the
smartPAD is pressed.
smartPAD enabling switch in- The AMF is violated if no enabling signal is issued on the
active smartPAD (no enabling switch is pressed on the smartPAD or
an enabling switch is fully pressed).
smartPAD enabling switch The AMF is violated if an enabling switch on the smartPAD is
panic active fully pressed (panic position).
The set operating mode has a powerful effect on the behavior of the in-
dustrial robot and determines which safety precautions are required.
The following standard AMFs are available for configuring a safety func-
tion to evaluate the set operating mode:
AMF Description
Test mode The AMF is violated if a test operating mode is active (T1,
T2, CRR).
Automatic mode The AMF is violated if the active operating mode is an auto-
matic mode (AUT).
Reduced-velocity mode The AMF is violated if an operating mode is active whose ve-
locity is reduced to a maximum of 250 mm/s (T1, CRR).
Note: In the case of a mobile platform, the velocity is not re-
duced in T1 and CRR mode.
High-velocity mode The AMF is violated if an operating mode is active in which
the robot is moved with a programmed velocity (T2, AUT).
Description
The robot cannot be moved without the motion enable. The motion enable
can be cancelled for various reasons, e.g. if enabling is not issued in Test
mode or if the EMERGENCY STOP is pressed on the smartPAD.
The AMF for motion enable functions like a group signal for all configured
stop conditions. In particular, it can be used for switching off peripheral
devices. For safety functions which receive the evaluation of the motion
enable, a safe output should therefore be configured as the reaction. If a
safety stop is set as the reaction, the robot cannot be moved.
AMF Description
Motion enable The AMF is violated if the motion enable is not issued due to
a stop request.
Note: This AMF is only suitable for use with an output as a
reaction.
Example
Description
Parameter Description
Name Name of the AMF (optional)
Input for safety signal Safety-oriented input to be monitored
Example 1
Example 2
Safety configuration
13.11.5 Manual guidance with enabling device and velocity monitoring
Description
The Hand guiding device enabling inactive AMF serves to evaluate 3‑step
enabling devices. Up to 3 enabling switches and 3 panic switches can be
configured. 3-step enabling devices with only one output which process
the panic signal internally can also be evaluated.
The AMF fulfils the following normative requirements and measures
against predictable misuse:
• If the enabling switch has been fully pressed down, the signal will not
be issued if the switch is released to the center position.
• The signal is cancelled in case of a stop request. To issue the signal
again, the enabling switch must be released and pressed again.
• The signal is only issued 100 ms after the enabling switch has been
pressed.
The following applies if multiple 3-position enabling switches are used:
• If all 3 enabling switches of an enabling device are held simultaneous-
ly in the center position, a safety stop 1 is triggered.
• It is possible to hold 2 enabling switches of an enabling device in the
center position simultaneously for up to 15 seconds. This makes it
possible to adjust grip from one enabling switch to another one. If the
enabling switches are held simultaneously in the center position for
longer than 15 seconds, this triggers a safety stop 1.
• If the enabling switches of different enabling devices are pressed si-
multaneously, e.g. an enabling switch on the smartPAD and an ena-
bling switch on the hand guiding device, a safety stop 1 (path-main-
taining) is triggered.
WARNING
If multiple enabling switches are used on the hand guiding device, each
of the enabling switches should be connected to a safety-oriented input
for the panic position. Only then is it assured that enabling will be with-
drawn if one enabling switch is pressed down fully, irrespective of the
position of the other enabling switches.
AMF Description
Hand guiding device enabling The AMF is violated in the following cases:
inactive
• All safety-oriented inputs to which an enabling switch is
connected have the signal level LOW (state “0”)
• At least one of the safety-oriented inputs to which a panic
switch is connected has the signal level LOW (state “0”)
Parameter Description
Name Name of the AMF (optional)
Enabling switch 1 used Indicates whether the enabling switch is connected to a safe-
Enabling switch 2 used ty-oriented input
Enabling switch 3 input signal The inputs of the discrete safety interface or the inputs of the
Ethernet safety interface (if configured in WorkVisual) can be
used as safety-oriented inputs.
(>>> 13.3 "Safety interfaces" Page 254)
Panic switch 1 used Indicates whether the panic switch is connected to a safe in-
Panic switch 2 used put
Example
Safety configuration
Description
The standard AMF Hand guiding device enabling active makes it possible
to implement safety functions that activate other monitoring functions dur-
ing manual guidance with the enabling device, e.g. Cartesian velocity
monitoring.
AMF Description
Hand guiding device enabling This AMF is violated if the enabling signal for manual guid-
active ance is issued.
The AMF Hand guiding device enabling active represents the
inverse state of the AMF Hand guiding device enabling inac-
tive:
Example
Space and velocity monitoring during manual guidance with enabling de-
vice (category: Workspace monitoring, Velocity monitoring)
During manual guidance of a robot with an enabling device, the robot
must not leave a defined workspace. Furthermore, the robot is to move
with a maximum velocity during manual guidance of 600 mm/s. If the
workspace is left while enabling is active, or if the velocity limit is excee-
ded, a safety stop 1 (path-maintaining) is to be executed.
AMF1 AMF2 AMF3 Reaction
Hand guiding device Cartesian workspace - Stop 1 (path-main-
enabling active monitoring taining)
Hand guiding device Cartesian velocity - Stop 1 (path-main-
enabling active monitoring taining)
Description
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
Example
Safety configuration
13.11.7 Evaluation of axis torque referencing
Description
During axis torque referencing, the mastering of the axis torque sensors of
a kinematic system is checked.
Until the axis torque referencing has been performed successfully, the
safety integrity of the safety functions based on it is limited. This includes,
for example, axis torque and TCP force monitoring as well as collision de-
tection.
The Torque referencingAMF can be used to check whether all axis torque
sensors of a kinematic system are referenced.
AMF Description
Torque referencing The AMF is violated in the following cases:
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
Example
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
• Axis1 … Axis16
In the case of a mobile platform, the axes are assigned as
follows:
• 1 … 500 °/s
Description
Safety configuration
If the monitored kinematic system is fastened to a carrier kinematic
system (e.g. mobile platform, linear unit), it must be taken into con-
sideration that the Cartesian velocity of the monitoring spheres rela-
tive to the carrier kinematic system is monitored and not the abso-
lute velocity of the monitoring spheres in space.
AMF Description
Cartesian velocity monitoring The AMF is violated if the Cartesian translational velocity at
at least one point of the monitored kinematic system exceeds
the defined limit.
The AMF is additionally violated in the following cases:
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
• Robot and tool: The center points of the axes on the ro-
bot and the center points of the spheres used to configure
the active safety-oriented tool are monitored (default).
• Robot: The center points of the axes on the robot are
monitored.
• Tool: The center points of the spheres used to configure
the active safety-oriented tool are monitored.
Note: If no safety-oriented tool is active and the tool is selec-
ted as the structure to be monitored, the center point of the
robot flange is monitored.
(>>> "Spheres on the robot" Page 300)
Kinematic system to be monitored is a mobile platform
• 1 … 10000 mm/s
Example
Safety configuration
Description
AMF Description
Tool-related velocity compo- The AMF is violated if the configured component of the veloc-
nent ity vector in the coordinate system of the orientation frame of
the monitored kinematic system exceeds the maximum de-
fined value at one or more of the monitored points.
In the case of an LBR, the AMF is additionally violated in the
following cases:
Safety configuration
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
• 1 … 10000 mm/s
Note: When selecting the maximum velocity, it must be noted
that, particularly in the case of highly dynamic motions, low
velocities against the commanded direction of motion may oc-
cur due to overshoot. For this reason, it is recommended that
the maximum velocity should not be set too low.
Component of the velocity Monitored component of the velocity vector (direction of moni-
vector toring)
• X positive or X negative
• Y positive or Y negative
• Z positive or Z negative
Example
Item Description
1 Reference frame for the tool-related velocity component
2 Velocity vector of the translational Cartesian velocity
3 Maximum permissible velocity for the positive Z component of
the velocity vector
4 Positive Z component of the velocity vector
The velocity is below the maximum permissible velocity; the
AMF is not violated.
5 Positive Z component of the velocity vector
The velocity is above the maximum permissible velocity; the
AMF is violated.
The safety function configured with the AMF monitors the positive Z com-
ponent of the velocity vector. If the maximum velocity of 25 mm/s is ex-
ceeded by the monitored component in Automatic mode, a safety stop 1
(path-maintaining) is to be executed.
Category: Velocity monitoring
AMF1 AMF2 AMF3 Reaction
Automatic mode Tool-related velocity - Stop 1 (path-main-
component (1) taining)
First kinematic sys-
tem
Description
The robot environment can be divided into areas in which it must remain
for execution of the application, and areas which it must not enter or may
only enter under certain conditions. The system must then continuously
monitor whether the robot is within or outside of such a monitoring space.
A monitoring space can be defined as a Cartesian cuboid or by means of
individual axis ranges.
A Cartesian monitoring space can be configured as a workspace in which
the robot must remain, or as a protected space which it must not enter.
Via the link to other safety monitoring functions, it is possible to define fur-
ther conditions which must be met when a monitoring space is violated.
For example, a monitoring space can be activated by a safe input or ap-
plicable in Automatic mode only.
If the robot has violated a monitoring space and been stopped by the
safety controller, the robot can be moved out of the violated area in
CRR mode.
(>>> 6.8 "CRR mode – controlled robot retraction" Page 91)
Spheres are modeled around selected points on the robot, enclosing and
moving with the robot. These spheres are predefined and are monitored,
as standard, against the limits of activated Cartesian monitoring spaces.
The centers and radii of the monitored spheres are defined in the
machine data of the robot. A sphere is defined for each robot axis, for the
robot base and for the robot flange.
The dimensions of the monitored spheres vary according to robot type
and the media flange used:
Safety configuration
• r = sphere radius
• z, y = sphere center point relative to the robot base coordinate system
Variant 1: LBR iiwa 7 R800 with media flange Touch
Base A1 A2 A3 A4 A5 A6 A7 Flange
r [mm] 135 90 125 90 125 90 80 85 65
z [mm] 50 90 340 538 740 935 1140 1130 1240
y [mm] -30
Variant 2: LBR iiwa 7 R800 with media flange (all variants except me-
dia flange Touch)
Base A1 A2 A3 A4 A5 A6 A7 Flange
r [mm] 135 90 125 90 125 90 80 85 65
z [mm] 50 90 340 538 740 935 1140 1130 1220
y [mm] -30
Spheres on tool
Stopping distance
Further information about the stopping distances and stopping times can
be found in the assembly or operating instructions of the relevant robot.
Description
Safety configuration
workspace. The AMF is violated as soon as one of the monitored spheres
is no longer completely within the defined workspace.
The AMF is additionally violated in the following cases:
• An axis is not mastered.
• The referencing of a mastered axis has failed.
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
• -100,000 mm … +100,000 mm
A, B, C [°] Orientation of the origin of the workspace about the axes of
the world coordinate system, specified by the rotational an-
gles A, B, C
• 0° … 359°
Based on this defined origin, the size of the workspace is determined
along the coordinate axes:
Parameter Description
Length [mm] Length of the workspace (= distance along the positive X axis
of the origin)
• 0 mm … 100,000 mm
Width [mm] Width of the workspace (= distance along the positive Y axis
of the origin)
• 0 mm … 100,000 mm
Height [mm] Height of the workspace (= distance along the positive Z axis
of the origin)
• 0 mm … 100,000 mm
Example
Description
Safety configuration
space.
The AMF is additionally violated in the following cases:
• An axis is not mastered.
• The referencing of a mastered axis has failed.
If a very narrow protected space is configured, the robot may be able to
move into and out of the protected space without the space violation be-
ing detected. Possible cause: Due to a very high tool velocity, the protec-
ted space is only violated during a very short interval.
Assuming that the following minimum values are configured:
• Radius of tool sphere: 25 mm
• Thickness of protected space: 0 mm
In this case, tool velocities of over 4 m/s are required for the robot to
pass through the protected space without detection.
The following measures are recommended in order to prevent robots from
passing through protected spaces undetected:
• Configure Cartesian velocity monitoring (do not allow a value greater
than 4 m/s).
• OR: When configuring the protected space, select sufficient values for
the length, width and height of the protected space.
• OR: When configuring the tool spheres, select sufficient values for the
radius.
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
One corner of the cuboid is defined relative to the world coordinate sys-
Safety configuration
tem. This is the origin of the protected space and is defined by the follow-
ing parameters:
Parameter Description
X, Y, Z [mm] Offset of the origin of the protected space along the X, Y and
Z axes of the world coordinate system
• -100,000 mm … +100,000 mm
A, B, C [°] Orientation of the origin of the protected space about the ax-
es of the world coordinate system, specified by the rotational
angles A, B, C
• 0° … 359°
Based on this defined origin, the size of the protected space is
determined along the coordinate axes:
Parameter Description
Length [mm] Length of the protected space (= distance along the positive
X axis of the origin)
• 0 mm … 100,000 mm
Width [mm] Width of the protected space (= distance along the positive Y
axis of the origin)
• 0 mm … 100,000 mm
Height [mm] Height of the protected space (= distance along the positive Z
axis of the origin)
• 0 mm … 100,000 mm
Example
Safety configuration
1 Origin of the protected space
Description
The axis limits can be defined individually and safely monitored for each
axis. The axis angle must lie within the defined axis range.
The AMF Axis range monitoring is used to define an axis-specific monitor-
ing space. The AMF is violated if an axis is not inside the defined axis
range.
The AMF is additionally violated in the following cases:
• An axis is not mastered.
• The referencing of a mastered axis has failed.
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
• Axis1 … Axis16
Note: Axis1 … Axis7 are used for an LBR.
Lower limit [°] Lower limit of the allowed axis range in which the monitored
axis may move
• -180° … +180°
Upper limit [°] Upper limit of the allowed axis range in which the monitored
axis may move
• -180° … +180°
For personnel protection, only the position of the axis is relevant. For
this reason, the positions are converted to the axis range -180° …
+180°, even for axes which can rotate more than 360°.
Example
Axes A1, A2 and A4 are to be monitored so that the robot may only be
moved in a limited space. The monitoring is activated by a safe input. The
permitted range of each axis is defined by an upper and lower limit, and
is shown in green in the corresponding chart in the PSM table.
As soon as one of the monitored axis ranges is violated, a safety stop 1
(path-maintaining) is triggered. For this purpose, an individual table row
must be used for each axis.
The Tool orientation AMF can be used to monitor the orientation of a safe-
ty-oriented tool. It checks whether a specific axis of the tool orientation
frame is within a permissible direction range.
This function can for example be used to prevent dangerous parts of the
mounted tool, e.g. sharp edges, from pointing towards humans in HRC
applications.
The following tool orientations are monitored, depending on the tool con-
figuration:
Safety configuration
• As standard, the orientation of the Z axis of the tool orientation frame
of the last active safety-oriented tool of the kinematic chain is moni-
tored.
(>>> 9.3.10 "Configuring a safety-oriented tool" Page 188)
• If no tool orientation frame is defined, the Z axis of the pickup frame
of the last active safety-oriented tool of the kinematic chain is moni-
tored.
‒ If a fixed safety-oriented tool is active, this corresponds to the Z
axis of the flange coordinate system.
‒ If a safety-oriented tool is active and coupled to the fixed tool, this
corresponds to the Z axis of the pickup frame of the fixed tool.
• If no safety-oriented tool is active, the Z axis of the flange coordinate
system is monitored.
The permissible range for the orientation angle is defined by a reference
vector with a fixed orientation relative to the world coordinate system and
a permissible deviation angle from this reference vector.
The reference vector is defined by the rotation of the unit vector of the Z
axis of the world coordinate system about the 3 Euler angles A, B and C
relative to the world coordinate system. A monitoring cone is extended
around the reference vector. The opening of the cone is defined by a con-
figurable deviation angle. The deviation angle defines the permissible an-
gle between the tool orientation and reference vector. The values of the
angle of the reference vector and the deviation angle are defined in the
parameterization of the AMF.
The monitoring sphere defines the permissible range for the tool orienta-
tion.
Item Description
1 Axes of the world coordinate system
2 Reference vector
The reference vector defines a fixed orientation relative to the
world coordinate system.
3 Monitoring cone
Defines the permissible range for the tool orientation.
4 Deviation angle
The deviation angle determines the opening of the monitoring
cone.
AMF Description
Tool orientation The AMF is violated if the angle between the reference vector
and Z axis of the tool orientation frame is greater than the
configured deviation angle.
The AMF is additionally violated in the following cases:
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
• 0° … 359°
B [°] Rotation of the reference vector about the Y axis of the world
coordinate system
• 0° … 359°
C [°] Rotation of the reference vector about the X axis of the world
coordinate system
• 0° … 359°
Operating angle [°] Workspace of the tool orientation
Defines the maximum permissible deviation angle between
the reference vector and the Z axis of the tool orientation
frame.
• 1° … 179°
Safety configuration
Fig. 13-21: Tool orientation (not violated and violated)
Item Description
1 Robot is not violating the Tool orientation AMF.
The Z axis of the tool orientation frame is within the range de-
fined by the monitoring cone.
2 Origin of the tool orientation frame
3 Monitoring cone
4 Z axis of the tool orientation frame
5 Robot is violating the Tool orientation AMF.
The Z axis of the tool orientation frame is outside of the range
defined by the monitoring cone.
Description
If, under certain conditions, the robot must not move but must remain un-
der servo-control, the standstill of all axes must be safely monitored. The
AMF Standstill monitoring of all axes is used for this purpose.
This AMF is an extended AMF, meaning that the monitoring only begins
when all other AMFs of the safety function are violated.
Extended AMFs are not available for the safety functions of the ESM
mechanism.
AMF Description
Standstill monitoring of all ax- The AMF is violated as soon as the joint value of an axis is
es outside of a tolerance range of +/- 0.1° of the value saved
when standstill monitoring was activated, or if one of the axes
moves at an absolute value of more than 1 °/s.
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
Example
Description
The AMF Time delay can be used to delay the triggering of the reaction
of a safety function for a defined time.
This AMF is an extended AMF, meaning that the delay time only starts
running when all other AMFs of the safety function are violated.
Extended AMFs are not available for the safety functions of the ESM
mechanism.
AMF Description
Time delay This AMF is violated if the set time has expired.
If the same instance of the AMF is used for several safety functions, the
delay time begins running from the first activation.
Safety configuration
Parameter Description
Name Name of the AMF (optional)
Delay time Amount of time by which the triggering of the reaction of a
safety function is delayed.
• 12 ms … 24 h
The time can be entered in milliseconds (ms), seconds (s),
minutes (min) and hours (h). Each delay is a multiple of
12 ms, meaning that it is rounded up to the next multiple of
12.
Example
Forces and axis torques can only be monitored on robots that are equip-
ped with position and axis torque sensors. These sensors can be used to
measure and monitor external forces acting on the robot and also axis tor-
ques.
If the permissible forces or torques are exceeded continuously due to
jamming, it is possible to move the robot free by changing to CRR
mode.
Axis torque monitoring can limit and monitor the torques of individual ax-
es.
The following points must be observed when using axis torque monitoring:
• Successful axis torque referencing is a precondition.
AMF Description
Axis torque monitoring The AMF is violated if the torque of the monitored axis ex-
ceeds or falls below the configured torque limit.
If the AMF is violated and a safety stop triggered, the interaction forces
may continue to increase due to the stopping distances of the robot. For
this reason, the AMF may only be used in collaborative operation at re-
duced velocity. For this, the AMF can be combined with the AMF Carte-
sian velocity monitoring, Axis velocity monitoring or Tool-related velocity
component.
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
• Axis1 … Axis16
Minimum torque [Nm] Minimum permissible torque for the given axis
• -500 … 500 Nm
Maximum torque [Nm] Maximum permissible torque for the given axis
• -500 … 500 Nm
Description
The AMF Collision detection does not automatically take into considera-
tion possible errors in the workpiece load data.
When configuring the collision detection, it is therefore necessary to set
the lowest possible values for the maximum permissible external torque.
In this way, significant deviations in the load data are interpreted as a
collision and cause a violation of the AMF.
Safety configuration
Workpieces that have been picked up must not come loose unintention-
ally and fall down while the monitoring is active. The user must ensure
this when using the AMF.
AMF Description
Collision detection This AMF is violated if the external torque of at least one axis
exceeds the configured limit value.
If the AMF is violated and a safety stop triggered, the interaction forces
may continue to increase due to the stopping distances of the robot. For
this reason, the AMF may only be used in collaborative operation at re-
duced velocity. For this, the AMF can be combined with the AMF Carte-
sian velocity monitoring, Axis velocity monitoring or Tool-related velocity
component.
External forces on the robot or tool with short distances to the robot ax-
es can only cause slight external torques in the robot axes under
certain circumstances. If the AMFs are used, this can pose a safety
risk, particularly in potential crushing situations during collaborative oper-
ation. Critical crushing situations can arise on the robot itself, between
the robot and the surroundings or between the tool and the surround-
ings.
It is therefore advisable to avoid potentially critical incidents of crushing
by using suitable equipment for the robot cell and/or by using one of the
following AMFs: Cartesian workspace monitoring, Cartesian protected
space monitoring, Axis range monitoring or Tool orientation.
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
Description
In TCP force monitoring, the external force acting on the tool or robot
flange is monitored against a definable limit value.
The external force on the TCP is not measured directly but is rather cal-
culated using the dynamic robot model. The accuracy of the calculated ex-
ternal force depends on the dynamics of the robot motion and of the ac-
tual force, among other things.
The following points must be observed when using TCP force monitoring:
• Successful position and axis torque referencing are preconditions.
• The load data of safety-oriented tools are taken into consideration (if
active).
• If a safety-oriented fixed tool is configured, it must also be mounted
on the robot flange.
• The load data of workpieces that are picked up are only taken into
consideration if the current workpiece is communicated to the safety
controller.
(>>> 16.10.5 "Transferring workpiece load data to the safety controller"
Page 443)
• The weight of the heaviest workpiece whose mass is configured in the
safety-oriented project settings is taken into consideration.
(>>> 9.3.11.3 "Configuring the mass of the heaviest workpiece"
Page 196)
Workpieces that have been picked up must not come loose unintention-
ally and fall down while the monitoring is active. The user must ensure
this when using the AMF.
AMF Description
TCP force monitoring This AMF is violated if the external force acting on the tool or
robot flange exceeds the configured limit value.
Safety configuration
If the AMF is violated and a safety stop triggered, the interaction forces
may continue to increase due to the stopping distances of the robot. For
this reason, the AMF may only be used in collaborative operation at re-
duced velocity. For this, the AMF can be combined with the AMF Carte-
sian velocity monitoring, Axis velocity monitoring or Tool-related velocity
component.
External forces on the robot with short distances to the robot axes can
only cause slight external torques in the robot axes under certain cir-
cumstances. If the AMFs are used, this can pose a safety risk, particu-
larly in potential crushing situations during collaborative operation. Criti-
cal crushing situations can arise on the robot itself or between the robot
and the surroundings.
It is therefore advisable to avoid potentially critical incidents of crushing
by using suitable equipment for the robot cell and/or by using one of the
following AMFs: Cartesian workspace monitoring, Cartesian protected
space monitoring, Axis range monitoring or Tool orientation.
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
• 50 … 1,000 N
It is not possible to guarantee that the safety controller will always auto-
matically detect external forces acting on the robot. The user must en-
sure that the external forces act exclusively on the TCP in order to as-
sure the safety integrity of the AMF TCP force monitoring.
Description
The Base-related TCP force component AMF is used to monitor the exter-
nal force acting in a specific direction on the tool or on the robot flange
relative to a base coordinate system against a definable limit value.
system. No other base coordinate system can currently be defined for this
monitoring function.
The AMF monitors the force along the component of a reference coordi-
nate system. The orientation of the reference coordinate system corre-
sponds as standard to the orientation of the base coordinate system. The
orientation of the reference coordinate system relative to the base coordi-
nate system can be modified in the AMF.
Safety configuration
• The weight of the heaviest workpiece whose mass is configured in the
safety-oriented project settings is taken into consideration.
(>>> 9.3.11.3 "Configuring the mass of the heaviest workpiece"
Page 196)
The AMF Base-related TCP force component may only be used if the
direction in which hazardous forces can arise is known. At the same
time, it must be ensured that no hazardous forces can arise in the non-
monitored directions. If this is not the case, either the AMF TCP force
monitoring must be used, or the other directions must also be monitored
using the AMF Base-related TCP force component.
Workpieces that have been picked up must not come loose unintention-
ally and fall down while the monitoring is active. The user must ensure
this when using the AMF.
AMF Description
Base-related TCP force com- The AMF is violated if the external force acting along the
ponent monitored component of the TCP force vector exceeds the
configured limit value.
If the AMF is violated and a safety stop triggered, the interaction forces
may continue to increase due to the stopping distances of the robot. For
this reason, the AMF may only be used in collaborative operation at re-
duced velocity. For this, the AMF can be combined with the AMF Carte-
sian velocity monitoring, Axis velocity monitoring or Tool-related velocity
component.
External forces on the robot with short distances to the robot axes can
only cause slight external torques in the robot axes under certain cir-
cumstances. If the AMFs are used, this can pose a safety risk, particu-
larly in potential crushing situations during collaborative operation. Criti-
cal crushing situations can arise on the robot itself or between the robot
and the surroundings.
It is therefore advisable to avoid potentially critical incidents of crushing
by using suitable equipment for the robot cell and/or by using one of the
following AMFs: Cartesian workspace monitoring, Cartesian protected
space monitoring, Axis range monitoring or Tool orientation.
Parameter Description
Name Name of the AMF (optional)
Monitored kinematic system Kinematic system to be monitored
• 50 … 1,000 N
A [°] Rotation of the TCP force vector about the Z axis of the base
coordinate system
• 0° … 359°
B [°] Rotation of the TCP force vector about the Y axis of the base
coordinate system
• 0° … 359°
C [°] Rotation of the TCP force vector about the X axis of the base
coordinate system
• 0° … 359°
Component of the TCP force Component of the TCP force vector that is monitored (direc-
vector tion of monitoring)
• X positive or X negative
• Y positive or Y negative
• Z positive or Z negative
Safety configuration
sponding error message.
Non-permissible poses are those in which it is possible for TCP forces
to have a short distance to all robot axes. This applies to singularity
poses and poses near singularities.
(>>> 15.11 "Singularities" Page 392)
Depending on the direction of the monitored force component, the
AMF Base-related TCP force component can be used closer to singu-
larities than the AMF TCP force monitoring. This can result in a larger
workspace.
• External forces on the robot reduce the accuracy of TCP force detec-
tion. In many cases, the safety controller can automatically detect the
external forces acting on the robot. The AMF Base-related TCP force
component is violated in this case.
It is not possible to guarantee that the safety controller will always auto-
matically detect external forces acting on the robot. The user must en-
sure that the external forces act exclusively on the TCP in order to as-
sure the safety integrity of the AMF Base-related TCP force component.
Example
13.12.1 Task
13.12.2 Requirements
The following safety functions are required as part of the risk assessment
for the above-described process:
1. It must be possible to stop the robot by pressing an external EMER-
GENCY STOP switch within reach of the operator.
2. The robot must not leave a defined workspace. The collaboration
space is part of the workspace.
3. A transfer motion between the start position and pre-position can
cause unintentional collisions with the operator. However, the space is
designed in such a way that humans cannot be crushed. To reduce
the risk of a collision, the maximum robot velocity for this space must
be limited to 500 mm/s.
4. Collisions must be safely detected during the transfer motion and must
cause the robot to come to a standstill. This is the case if, due to the
collision, a torque of 15 Nm is exceeded in at least one axis.
5. During the motion between the pre-position and the workpiece pick-up
position, there is a risk of the hand and arm of the operator being
crushed. In order to ensure that the operator can respond appropriate-
ly and that the braking distances are sufficiently short, the robot veloc-
ity must not exceed 100 mm/s for this motion.
6. Furthermore, the robot must be brought to a standstill during the mo-
tion between the pre-position and the workpiece pick-up position if
forces of more than 50 N arise. Force values of 20 N or more cause
the lowering motion in the process to be aborted and are thus suffi-
ciently below the latter limit.
Safety configuration
13.12.3 Suggested solution for the task
Description
Row Description
1 External EMERGENCY STOP
Implements requirement 1
An external EMERGENCY STOP is connected to a safe in-
put. If the operator actuates the EMERGENCY STOP, a
safety stop 1 (path-maintaining ) is executed.
2 Cartesian workspace monitoring
Implements requirement 2
The workspace is represented by a safely monitored Carte-
sian workspace. If the robot leaves the configured space, a
safety stop 1 (path-maintaining) is executed.
An ESM state is defined for the transfer motion through the collaboration
space between the start and pre-position. This is activated in the applica-
tion before the transfer motion begins.
Velocity monitoring and collision detection must be active during the trans-
fer motion in order to sufficiently reduce the hazard in the event of a colli-
sion between human and robot.
hand or arm of the operator being crushed. This brings the robot to a
standstill as soon as the distance between the robot or tool and the work-
piece pick-up position becomes less than 15 cm.
Row Description
1 Cartesian velocity monitoring
Implements requirement 3
If a Cartesian velocity exceeds 500 mm/s, a safety stop 1
(path-maintaining) is executed.
2 Collision detection
Implements requirement 4
If a collision causes an external torque of more than 15 Nm
in at least one robot axis, a safety stop 1 (path-maintaining)
is executed.
3 Protected space monitoring
Implements the safety of the state regardless of the time
and place of activation
The safely monitored protected space encompasses the
space above the workpiece pick-up position. As soon as
the robot or the safely monitored tool enters this space, a
safety stop 1 (path-maintaining) is executed.
A specific ESM state is defined for the motions between the pre-position
and the workpiece pick-up position. This is activated in the application be-
fore the lowering motion begins.
Velocity monitoring and force monitoring must be active during the motion
in order to sufficiently reduce the hazard to the operator due to crushing
of the operator’s hand or lower arm.
The state must ensure a sufficient degree of safety, regardless of the time
or place of activation. The low permissible velocity and the active force
monitoring mean that no further measures are necessary.
Safety configuration
Fig. 13-26: ESM state for workpiece pick-up position
Row Description
1 Cartesian velocity monitoring
Implements requirement 5
If a Cartesian velocity exceeds 100 mm/s, a safety stop 1
(path-maintaining) is executed.
2 Force monitoring
Implements requirement 6
If a contact situation causes a force of more than 50 N to
be exerted at the TCP, a stop 0 is executed.
Overview
During position and axis torque referencing, the mastering of the corre-
sponding sensors is checked. The safety integrity of the following AMFs is
only guaranteed if position and/or axis torque referencing has been carried
out successfully:
Position refer- Axis torque ref-
AMF
encing erencing
Standstill monitoring of all axes
Tool orientation
Collision detection
Request
After the following events, the referencing and thus the safety integrity of
the aforementioned AMFs is no longer given and the position and/or axis
torque referencing must be carried out again:
• Robot controller is rebooted.
• Safety configuration is modified.
• Position referencing of an axis fails.
• Axis torque referencing of an axis fails.
• Maximum torque of an axis torque sensor is exceeded.
• Only position referencing: Axis is remastered.
These events lead to cancellation of the referencing but not to a violation
of the AMFs. The kinematic system can be moved, but the safety integrity
of the AMFs is no longer given. The AMFs are only violated after these
events if the referencing of an axis fails.
The Position referencing AMF and the Torque referencing AMF can be
used to evaluate the referencing status and to initiate the safe state in the
absence of position and/or axis torque referencing.
(>>> 13.11.6 "Evaluating the position referencing" Page 292)
(>>> 13.11.7 "Evaluation of axis torque referencing" Page 293)
During axis torque referencing, the mastering of the axis torque sensors of
a kinematic system is checked. The system checks whether the expected
torque of an axis corresponds to the actual torque of the axis.
Description
This procedure can only be used for kinematic systems with internal axis
mastering sensors, e.g. for robots of type LBR. It does not require an ex-
ternal device for verifying the mastering.
The mastering is automatically checked when an axis passes over the in-
ternal axis mastering mark at a low enough velocity. Referencing is suc-
cessful when the mastering sensor detects the mastering mark in a nar-
row range around the saved mastering position of the motor.
Referencing fails in the following cases:
• The mastering sensor does not detect a mastering mark in the range
around the saved mastering position of the motor.
Safety configuration
• The mastering sensor detects the mastering mark of the axis at an un-
expected motor position.
Precondition
The position of an axis is referenced when the axis is moved over the
mastering position and the detected position of the mastering mark devi-
ates by no more than +/- 0.5° from the expected position.
Preconditions for this:
• The velocity at which the axis is moved over the mastering position
must be < 30 °/s.
• At the very least, a defined axis-specific range before and after the
mastering position must be passed through. The motion direction is
not relevant.
The axis-specific range of motion is robot-specific:
Robot A1 A2 A3 A4 A5 A6 A7
LBR iiwa 7 R800 ±10.5° ±10.5° ±10.5° ±10.5° ±10.5° ±14° ±14°
LBR iiwa 14 R820 ±9.5° ±9.5° ±10.5° ±10.5° ±10.5° ±14° ±14°
Execution
Template
Description
During axis torque referencing, the mastering of the axis torque sensors is
checked. For this, the external axis torque is determined at a number of
different measurement poses. The external axis torque is the difference
between the expected and measured torque of an axis. It is calculated for
each axis using the robot model and the specified load data.
Referencing application
For axis torque referencing, a total of 10 measured axis torque values per
axis must be available. These are acquired at 5 different measurement
poses, which are each addressed with positive and negative directions of
axis rotation.
The safety controller evaluates the external torque for all 10 measured
Safety configuration
values and determines the mean value of the external torque for each ax-
is. Referencing is successful if this mean value lies within a defined toler-
ance.
The following must be taken into consideration when providing a referenc-
ing application:
• The robot must be at standstill during the measurement.
• A wait time of at least 2.5 seconds in which the robot does not move
is required between the moment the measurement pose is reached
and the measurement itself. Wait times which are too short can
reduce the referencing accuracy due to oscillations on the robot.
• The measurement is started with the sendSafetyCommand() method.
• There may be a maximum of 15 seconds between 2 consecutive
measurements.
• Each of the measurement poses must be addressed in sequence with
positive and negative directions of axis rotation before the next meas-
urement pose is addressed in order to check the hysteresis in the axis
torque detection. The safety integrity of the referencing of the axis tor-
que sensors is otherwise not given.
Template
Execution
Before performing the axis torque referencing, the user must ensure the
following points:
• The load data of the fixed tool mounted on the robot flange must
match the load data with which the fixed safety-oriented tool is con-
figured.
• The load data of the tool that is coupled to the fixed tool (if present)
must match the load data of the activated safety-oriented tool.
• The load data of the workpiece that is picked up (if present) must
match the load data of the activated workpiece.
• There must be no supplementary loads mounted on the robot, e.g.
dress packages.
If one of these points is not met, the safety integrity of the referencing
of the axis torque sensors is not given.
Safety configuration
If the monitored kinematic system is fastened to a carrier kinematic sys-
tem (e.g. mobile platform, linear unit), the user must ensure the follow-
ing points:
• The carrier kinematic system may not be moved during axis torque
referencing.
• The mounting direction of the kinematic system to be referenced
may not differ from the configured mounting direction (e.g. due to
tilting of the mobile platform).
If one of these points is not met, the safety integrity of the referencing
of the axis torque sensors is not given.
Description
Precondition
• Robot with internal axis mastering sensors and axis torque sensors
Procedure
Description
The user has the possibility of implementing his own test method or an
external system for position referencing, e.g. a tracker, a navigation sys-
tem or an absolute encoder. Confirmation that the external position refer-
encing has been successfully carried out must be communicated to the ro-
bot controller via a safety-oriented input.
The input for external position referencing can be configured in the safety-
oriented project settings. If the external signal at this input changes from
LOW to HIGH and back to LOW within 2 seconds, the position
referencing has been successfully confirmed.
Description
Procedure
The system must not be put into operation until the safety acceptance
procedure has been completed successfully. For successful safety accept-
ance, the points in the checklists must be completed fully and confirmed
in writing by the safety maintenance technician.
The completed checklists, confirmed in writing, must be kept as docu-
mentary evidence.
the robot controller, the safety functions must be tested for correct func-
Safety configuration
tioning.
If a test requires persons to be present in the danger zone, the test
must be conducted in T1 mode.
Checklist
Safety configuration
No. Activity Yes Not relevant
23 Collision detection: has it been configured in such a way
that velocity monitoring is also always active when TCP
force monitoring or monitoring of a base-related TCP force
component is active?
24 Collision detection: when using the Base-related TCP force
component AMF:
Has it been ensured that no hazardous forces can arise in
the non-monitored directions?
25 Collision detection: is a safety stop 0 configured for all
safety monitoring functions in order to detect crushing situa-
tions?
26 When using axis torque-specific AMFs: is the limited safety
integrity of the axis torque-specific AMFs taken into consider-
ation in the absence of position referencing and/or axis tor-
que referencing?
(>>> 13.13 "Position and axis torque referencing" Page 325)
Note: Initiation of the safe state in the absence of position
and/or axis torque referencing can be configured by using
the Position referencing AMF and/or the Torque referencing
AMF.
27 In the configuration of all rows in the PSM table and all
ESM states, has it been taken into account that the safe
state of the AMFs is the “violated” state (state “0”)?
Note: In the event of an error, an AMF goes into the safe
state.
28 PSM configuration: in the configuration of output signals, has
it been taken into account for the safety reaction that an out-
put is LOW (state “0”) in the safe state?
29 PSM configuration: Was a check carried out during configu-
ration of the “Brake” safety reaction to see whether there
could be an increased risk due to rapid switching to and
from the violation state of the AMFs with which the Cartesi-
an velocity monitoring is linked?
Note: In the case of rapid switching between the states, it is
possible that the “Brake” safety reaction could lead to no re-
duction in velocity.
30 ESM configuration: are all ESM states consistent, i.e. does
each individual ESM state sufficiently reduce all dangers?
31 Have axis torque referencing and position referencing been
carried out successfully?
32 If the monitored kinematic system is fastened to a carrier
kinematic system (e.g. mobile platform, linear unit):
Has the fact been taken into consideration that, with the
AMF Cartesian workspace monitoring / Cartesian protected
space monitoring, the monitoring space is defined relative to
the base of the monitored kinematic system and moves with
the carrier kinematic system?
By signing, the signatory confirms the correct and complete performance of the safety accept-
ance test.
___________________________________________ ___________________________________________
___________________________________________ ___________________________________________
___________________________________________ ___________________________________________
Description
If one of the following AMFs is used in the safety configuration, the map-
ped safety-oriented tools must be checked:
• Cartesian velocity monitoring
Only if the monitoring spheres on the tool are configured as a struc-
ture to be monitored.
Safety configuration
• Tool-related velocity component
• Cartesian workspace monitoring / Cartesian protected space monitor-
ing
Only if the monitoring spheres on the tool are configured as a struc-
ture to be monitored.
• Tool orientation
• Collision detection
• TCP force monitoring
• Base-related TCP force component
• Torque referencing
For each activated row of the tool selection table, it is necessary to check
whether the selected tool has been correctly assigned to the kinematic
system. This can be done, for example, using a suitable test for verifica-
tion of the tool parameters. A test is suitable if it checks a tool parameter,
the value of which differs considerably from that of the other safety-orien-
ted tools:
• In the case of considerably different geometric dimensions, it is advis-
able to check whether the geometric tool data have been specified
correctly.
(>>> 13.14.3.5 "Geometry data of the tool" Page 339)
• In the case of considerably different load data, it is advisable to check
whether the load data of the tool have been specified correctly.
(>>> 13.14.3.6 "Load data of the tool" Page 340)
• In the case of considerably different parameters when using the Tool
orientation AMF, it is advisable to check whether the tool orientation
that is to be monitored has been configured correctly.
(>>> 13.14.3.3 "Tool orientation" Page 338)
• In the case of considerably different parameters when using the Tool-
related velocity component AMF, it is advisable to check whether the
velocity component that is to be monitored has been configured cor-
rectly.
(>>> 13.14.3.4 "Points and orientation for tool-related velocity compo-
nent" Page 339)
For each row in the tool selection table, the points in the checklist must
be executed and separately documented.
Precondition
Checklist
Description
If the fixed tool of a kinematic system can pick up activatable tools, and if
one of the following AMFs is used simultaneously in the safety configura-
tion, the position and orientation of the pickup frame of the fixed tool (=
default frame for motions of the fixed tool) must be checked:
• Cartesian velocity monitoring
Only if the monitoring spheres on the tool are configured as a struc-
ture to be monitored.
• Tool-related velocity component
• Cartesian workspace monitoring / Cartesian protected space monitor-
ing
Only if the monitoring spheres on the tool are configured as a struc-
ture to be monitored.
• Tool orientation
• Collision detection
• TCP force monitoring
• Base-related TCP force component
• Torque referencing
If the fixed tool of a kinematic system can pick up workpieces, and if one
of the following AMFs is used simultaneously in the safety configuration,
the position and orientation of the pickup frame of the fixed tool must
again be checked:
• Collision detection
• TCP force monitoring
• Base-related TCP force component
• Torque referencing
If the fixed tool is used for picking up workpieces (no activatable tool can
be coupled), the pickup frame of the fixed tool must be verified. For this
purpose, check whether the load data of the tool have been specified cor-
rectly. The test must be carried out with as heavy a workpiece as possi-
ble.
(>>> 13.14.3.6 "Load data of the tool" Page 340)
If the fixed tool is used for picking up an activatable tool (e.g. in the case
of a tool changer), the pickup frame of the fixed tool must be verified by
means of a suitable test with the activatable tool coupled to the fixed tool.
A test is suitable if the parameters of the pickup frame have a major influ-
ence on the test result:
• In the case of large values for the position of the pickup frame and/or
a protruding coupled tool, it is advisable to check whether the geomet-
ric tool data have been specified correctly.
(>>> 13.14.3.5 "Geometry data of the tool" Page 339)
If the tool is relevant for the monitoring of a tool-related velocity com-
ponent, it is advisable to check whether the velocity component to be
monitored has been configured correctly.
(>>> 13.14.3.4 "Points and orientation for tool-related velocity compo-
nent" Page 339)
Safety configuration
• In the case of large values for the position of the pickup frame and a
heavy coupled tool, it is advisable to check whether the load data of
the tool have been specified correctly.
(>>> 13.14.3.6 "Load data of the tool" Page 340)
• If only the tool orientation is monitored for a kinematic system, the ori-
entation of the pickup frame can be verified. The test is only suitable if
none of the other AMFs mentioned above is used in the safety config-
uration for this kinematic system.
(>>> 13.14.3.3 "Tool orientation" Page 338)
For each configured fixed tool in the tool selection table, the points in
the checklist must be executed and separately documented if the follow-
ing preconditions are met:
• The tool can pick up workpieces or activatable tools.
• AND: One of the AMFs listed here is used in the safety configura-
tion for the kinematic system to which the tool is assigned.
Precondition
Checklist
Description
For each configured activatable tool in the tool selection table, the
points in the checklist must be executed and separately documented if
the following preconditions are met:
• The tool can pick up workpieces.
• AND: One of the AMFs listed here is used in the safety configura-
tion for the kinematic system to which the tool is assigned.
Precondition
Checklist
Description
Precondition
Checklist
Safety configuration
Description
Precondition
Checklist
Description
Precondition
Checklist
Description
Safety configuration
Precondition
• Position and axis torque referencing have been carried out successful-
ly.
• The correct safety-oriented tool is active.
• If the load data of a fixed tool are being checked: No activatable tool
is coupled.
• If a workpiece is picked up by the tool to check the load data: In the
application, the correct workpiece has been transferred to the safety
controller.
Checklist
Description
Each row in the Customer PSM table must be tested to verify that the ex-
pected reaction is triggered. If the reaction is to switch off an output, the
test must also ensure that the output is correctly connected.
The “Brake” reaction can be checked by moving the robot at a velocity
that exceeds the limit value of the Cartesian velocity monitoring. As soon
as all other AMFs of the PSM row are violated, the velocity must be re-
duced to a value below the limit value. There must be no stop to a com-
plete standstill.
A PSM row in the table can be tested by violating 2 of its AMFs at a time.
It is then possible to test the remaining AMF separately in a targeted
manner. If fewer than 3 AMFs are used in a row, the unassigned columns
are regarded as violated AMFs.
(>>> 13.14.6 "AMFs used in PSM tables and ESM states" Page 343)
For each row in the table Customer PSM, the points in the checklist
must be executed and separately documented.
Checklist
Description
Each row in the ESM state must be tested to verify that the expected re-
action is triggered when the configured AMF is violated.
(>>> 13.14.6 "AMFs used in PSM tables and ESM states" Page 343)
For each ESM state, the points in the checklist must be executed and
separately documented.
Checklist
Safety configuration
No. Activity Yes Not relevant
13 AMF row 13 was tested successfully.
AMF row 13: _________________________________
14 AMF row 14 was tested successfully.
AMF row 14: _________________________________
15 AMF row 15 was tested successfully.
AMF row 15: _________________________________
16 AMF row 16 was tested successfully.
AMF row 16: _________________________________
17 AMF row 17 was tested successfully.
AMF row 17: _________________________________
18 AMF row 18 was tested successfully.
AMF row 18: _________________________________
19 AMF row 19 was tested successfully.
AMF row 19: _________________________________
20 AMF row 20 was tested successfully.
AMF row 20: _________________________________
Description
All ESM states which are not used must be tested as to whether a safety
stop is triggered when the ESM state is selected.
Checklist
An AMF which is used in more than one row in the PSM table must be
separately tested in each row.
(>>> 13.14.4 "Rows used in Customer PSM table" Page 341)
Checklist
Checklist
Checklist
Description
All enabling and panic switches configured for the hand guiding device
must be tested.
Checklist
Safety configuration
No. Activity Yes Not relevant
4 The configured reaction is triggered by pressing fully down
on enabling switch 2 (panic position).
5 The configured reaction is triggered by releasing enabling
switch 3.
6 The configured reaction is triggered by pressing fully down
on enabling switch 3 (panic position).
Description
All enabling switches configured for the hand guiding device must be tes-
ted.
Checklist
Checklist
Checklist
Checklist
Checklist
Checklist
Checklist
Precondition
Checklist
Safety configuration
No. Activity Yes
1 The configured reaction is triggered if one axis of the monitored kinemat-
ic system is moved.
Description
The AMF can be tested by displaying the current measured axis torques
on the smartPAD and then subjecting the monitored axis to gravitational
force or manual loading.
Precondition
Checklist
Description
The AMF can be tested by moving the monitored axis at a velocity of ap-
prox. 10% over the configured velocity limit.
Checklist
Checklist
Checklist
Precondition
Checklist
Description
In order to test the configured velocity limit of the AMF, the monitored kin-
ematic system must be moved in such a way that the monitored point that
moves fastest is moved at a velocity of approx. 10% above the configured
limit value.
It is also necessary to check whether the structure to be monitored (robot
and/or tool) is correctly configured:
Safety configuration
• If both structures are monitored, the velocity monitoring must be viola-
ted both by the monitoring points on the robot and by the monitoring
points on the tool.
• If only one of the two structures is monitored, the velocity monitoring
must be violated by either the monitoring points on the robot or the
monitoring points on the tool.
Precondition
Checklist
Description
The first step is to test whether the orientation of the monitoring space is
correctly configured. This involves violating 2 adjoining space surfaces at
a minimum of 3 different points in each case.
The second step is to test whether the size of the monitoring space is
correctly configured. This involves violating the other space surfaces at
1 point in each case. In total, at least 10 points must be addressed.
The third step is to test whether the structure to be monitored is correctly
configured. This involves violating the space monitoring, both with the
monitoring spheres on the robot and on the tool (if both structures are to
be monitored), or just with the monitoring spheres on the robot or on the
tool.
Precondition
Checklist
‒ X: ____________________ mm
‒ Y: ____________________ mm
‒ Z: ____________________ mm
• Orientation of the origin of the monitoring space:
‒ A: ____________________ °
‒ B: ____________________ °
‒ C: ____________________ °
• Length of the monitoring space: ____________________ mm
• Width of the monitoring space: ____________________ mm
Description
The AMF can be tested by displaying the current measured external axis
torques on the smartPAD and then loading the individual axes.
Precondition
Checklist
Description
means that the response may be triggered before the permissible external
Safety configuration
TCP force has been reached.
Premature triggering of the response can be prevented by performing the
test as follows:
• Tool has picked up no workpiece.
• In the application, transfer no workpiece to the safety controller.
• Apply the TCP force in the direction of gravitational acceleration (verti-
cally downwards) or perpendicular to gravitational acceleration.
Precondition
Checklist
Description
Precondition
Checklist
Checklist
Description
In order to test the AMF, the permissible orientation cone must be violated
at 3 straight lines offset by approx. 120° to one another. This ensures that
the permissible orientation angle, the orientation of the reference vector
and the tool orientation are correctly configured.
Safety configuration
Fig. 13-27: Position of the straight lines on the monitoring cone
The orientation angles of the Z axis of the tool orientation frame are de-
fined using 3 straight lines situated on the edge of the monitoring cone
and offset at 120° to one another. These orientation angles must be set in
order to test the AMF Tool orientation. The AMF must be violated when all
3 orientation angles are exceeded.
Precondition
Procedure
The test must be carried out for every instance of the AMF and for ev-
ery tool that is mapped in the tool selection table to a kinematic system
for which the Tool orientation AMF is configured.
(>>> 13.14.3.3 "Tool orientation" Page 338)
If a fixed tool is configured that can pick up activatable tools, the fixed
tool must be checked in addition to the activatable tools without an acti-
vatable tool being coupled.
Example: 4 instances of the AMF are configured, with 5 different tools
that can be selected for fastening to the fixed tool. At least 6 tests are
necessary to verify all AMF instances and tool orientations. If, on the
other hand, only 2 different tools are available for selection for fastening
to the fixed tool, 4 tests are sufficient.
Checklist
Description
A motion must be programmed for every point that has been defined as a
point for the tool-related velocity component in the configuration parame-
ters of the currently mounted tool.
During this test motion, it must be ensured that the tested tool point has a
higher velocity along the monitored direction than the other tool point for
the tool-related velocity component. This can be achieved by including a
suitable reorientation of the tool in the test motion.
The test motion must be performed twice:
• Once at a velocity slightly above the maximum permissible velocity
• Once at a velocity slightly below the maximum permissible velocity
This is to ensure that the velocity limit is violated only by the tested point.
The test must be repeated for every tool point that has been defined as a
point for the tool-related velocity component.
Precondition
Safety configuration
Checklist
The test must be performed for all instances of the AMF and for all pos-
sible safety-oriented tools.
(>>> 13.14.3.4 "Points and orientation for tool-related velocity compo-
nent" Page 339)
If a fixed tool is configured that can pick up activatable tools, the fixed
tool must be checked in addition to the activatable tools. When checking
the fixed tool, no activatable tool may be coupled.
Example: 4 instances of the AMF are configured. At the same time, 5
different tools are available for selection for mounting on the fixed tool.
At least 6 tests are necessary to verify all AMF instances and tool-rela-
ted velocity components. If, on the other hand, only 2 different tools are
available for selection for fastening to the fixed tool, 4 tests are suffi-
cient.
Description
Checklist
Description
Checklist
Description
Safety configuration
Checklist
Description
Checklist
Description
Checklists
The report provides the following checklists matching the safety configura-
tion:
• Checklist for checking the rows used in the Customer PSM table
• Checklists for checking the ESM states which have been used and not
used
• Checklists for checking the AMFs used
• Checklists for checking the safety-oriented project settings
The checklists provided by the safety configuration report are not suffi-
cient for a complete safety acceptance procedure. The following addi-
tional checklists must be used for complete safety acceptance:
• Checklist for basic test of the safety configuration
• Checklists for checking the safety-oriented tool
• Checklist for checking the tool selection table
Warnings
The safety configuration is checked. There are warnings for the following
situations:
• One row in the Customer PSM table is deactivated.
• One row in an ESM state is deactivated.
• Unplugging of the smartPAD is allowed, but no external EMERGENCY
STOP is used.
• The input for deactivating safety functions is used in the tool selection
table.
• Warning of the possible need to perform the brake test if a position-
based or axis torque-based monitoring function is configured.
• The “Brake” safety reaction is configured.
A check must be carried out to ensure that there is no increased risk
due to rapid switching to and from the violation state of the AMFs with
which the Cartesian velocity monitoring is linked.
The safety maintenance technician must give reasons why a warning may
be ignored.
Procedure
KUKA Sunrise.SafetyVisualization
14 KUKA Sunrise.SafetyVisualization
Description
Supported robots
14.1.1 3D visualization
Description
1 Menu
2 GENERAL submenu
3 SAFETY SPHERE FILTER submenu
4 SAFETY SPACE FILTER submenu
5 PROTECTED SPACES submenu
6 WORKSPACES submenu
7 Orientation of the world coordinate system
KUKA Sunrise.SafetyVisualization
Item Description
1 Menu
The menu contains various displays and submenus.
• Red = +XWORLD
• Green = +YWORLD
• Blue = +ZWORLD
Buttons
Button Description
Close Controls Closes the menu.
Open Controls Opens the menu.
Expands a submenu.
Collapses a submenu.
Description
Wireframe
KUKA Sunrise.SafetyVisualization
Fig. 14-3: Visualization as a wireframe model
Transparent
Transparent visualization
Solid
Non-transparent visualization
Description
The safety spheres and monitoring spaces of the safety configuration that
are to be shown in 3D visualization can be set using various filters.
KUKA Sunrise.SafetyVisualization
Fig. 14-6: Filter settings
• Monitoring Type
Monitoring spaces of the Customer PSM table and/or ESM table(s) of
the safety configuration
‒ All: all tables
‒ Customer PSM: only Customer PSM table
‒ Or only a specific ESM table (selection by name of the ESM table)
• Row
Row(s) within the selected Customer PSM table and/or ESM table(s)
Only those rows are displayed in which at least one monitoring space
is configured.
PROTECTED SPACES
WORKSPACES
Certain AMFs that are configured in a row with a monitoring space, and
also the configured reaction, are indicated by icons. All table rows in
which the monitoring space is used are taken into account.
Icons for configured AMFs:
Icon Description
Monitoring of a safety-oriented input
KUKA Sunrise.SafetyVisualization
Example
Fig. 14-7: Visualization of additional information using the example of a protected space
Description
The surfaces and edges of the non-violated monitoring spaces are dis-
played in the following colors depending on the type of space and the
configured reaction:
Surfaces:
• Workspace: green
• Protected space: blue
Edges:
The safety spheres and the surfaces of violated monitoring spaces are
displayed in the following colors:
Safety spheres:
• There has been a space violation but this has not caused a stop: yel-
low
This applies in the following cases, for example:
‒ An output is configured as the reaction.
‒ A stop is configured as the reaction but the table row in which the
space is configured has not yet been violated. For example, be-
cause the space monitoring is combined with an input signal and
this input has not been switched.
• Space violation has caused a stop: red
KUKA Sunrise.SafetyVisualization
A “stop at boundaries” will only be correctly visualized if the stop reac-
tion is defined in a table row with the monitoring space in the safety
configuration.
If the stop reaction is cascaded, in other words if an output is switched
in the event of a space violation and this output triggers a stop reaction
in another table row, this will not be detected. The surface of the moni-
toring space remains yellow although the space violation caused a stop.
Fig. 14-9: Safety spheres and surfaces in the event of a space viola-
tion
Description
Procedure
• In the menu, position the mouse pointer on the name of the monitor-
ing space to be highlighted.
Example
Description
Procedure
To orbit:
1. Click into the 3D visualization and hold down the left mouse button.
2. Move the mouse in the desired direction. The 3D visualization and the
world coordinate system are orbited as the mouse moves.
To zoom:
• Click into the 3D visualization and scroll with the mouse wheel.
‒ Scroll up: zoom is increased.
‒ Scroll down: zoom is decreased.
To pan:
KUKA Sunrise.SafetyVisualization
1. Click into the 3D visualization and hold down the right mouse button.
2. Move the mouse in the desired direction. The 3D visualization moves
with the mouse.
The start point of a motion is always the end point of the previous mo-
tion.
The robot guides the TCP along the fastest path to the end point. The
fastest path is generally not the shortest path in space and is thus not a
straight line. As the motions of the robot axes are simultaneous and rota-
tional, curved paths can be executed faster than straight paths.
PTP is a fast positioning motion. The exact path of the motion is not pre-
dictable, but is always the same, as long as the general conditions are
not changed.
The robot guides the TCP at the defined velocity along a straight path in
space to the end point.
In a LIN motion, the robot configuration of the end pose is not taken into
account.
The robot guides the TCP at the defined velocity along a circular path to
the end point. The circular path is defined by a start point, auxiliary point
and end point.
In a CIRC motion, the robot configuration of the end pose is not taken in-
to account.
The motion type SPL enables the generation of curved paths. SPL mo-
tions are always grouped together in spline blocks. The resulting paths
run smoothly through the end points of the SPL motion.
In an SPL motion, the robot configuration of the end pose is not taken in-
to account.
Curved lines are achieved by grouping together 2 or more SPL seg-
ments. If a single SPL segment is executed, the result is the same as
for a LIN command.
• The path is defined by means of points that are located on the path.
These points are the end points of the individual spline segments.
‒ All points are passed through without exact positioning.
Exception: The velocity is reduced to 0.
(>>> 15.6.1 "Velocity profile for spline motions" Page 376)
‒ If all points are situated in a plane, then the path is also situated
in this plane.
‒ If all points are situated on a straight line, then the path is also a
straight line.
• There are a few cases in which the velocity is reduced.
(>>> 15.6.1 "Velocity profile for spline motions" Page 376)
• The path always remains the same, irrespective of the override set-
ting, velocity or acceleration.
• Circles and tight radii are executed with great precision.
The robot controller already takes the physical limits of the robot into con-
sideration during planning. The robot moves as fast as possible within the
constraints of the programmed velocity, i.e. as fast as its physical limits
will allow.
The path always remains the same, irrespective of the override setting,
velocity or acceleration.
Only dynamic effects, such as those caused by high tool loads or the in-
stallation angle of the robot, may result in slight path deviations.
Reduction of the velocity
With spline motions, the velocity falls below the programmed velocity in
the following cases:
Exceptions:
Description
Example 1
Original path:
Example 2
Original path:
spl(getApplicationData().getFrame("/P4")),
spl(getApplicationData().getFrame("/P5")),
);
// ...
robot.move(mySpline);
Remedy:
The path remains inside the smaller angle if the following conditions are
met:
Description
The robot can be guided using a hand guiding device. The hand guiding
device is a device equipped with an enabling device and which is required
for the manual guidance of the robot.
Manual guidance mode can be switched on in the application using the
motion command handGuiding(). Manual guidance begins at the actual
position which was reached before the mode was switched on.
(>>> 16.9 "Programming manual guidance" Page 427)
In manual guidance mode, the robot reacts compliantly to external forces
and can be manually guided to any point in the Cartesian space. The im-
pedance parameters are automatically set when the robot is switched to
Manual guidance mode. The impedance parameters for manual guidance
cannot be modified.
A manual guidance motion command can only be executed by an applica-
tion in Automatic mode. If the application is paused in Manual guidance
mode, e.g. because of a safety stop triggered by an EMERGENCY STOP,
the manual guidance motion is terminated. When the application is re-
sumed, the next motion command is executed directly.
Precondition
Approximate positioning means that the motion does not stop exactly at
the end point of the programmed motion, allowing continuous robot mo-
tion. During motion programming, different parameters can influence the
approximate positioning.
The point at which the original path is left and the approximate positioning
arc begins is referred to as the approximate positioning point.
To approximate motions without exact positioning, they must be execu-
ted asynchronously or grouped in a MotionBatch.
(>>> 16.6.1 "Synchronous and asynchronous motion execution"
Page 416)
(>>> 16.6.6 "MotionBatch" Page 420)
PTP motion
The TCP leaves the path that would lead directly to the end point and
moves, instead, along a path that allows it to pass the end point without
exact positioning. The path thus goes past the point and no longer passes
LIN motion
The TCP leaves the path that would lead directly to the end point and
moves along a shorter path. During programming of the motion, the maxi-
mum distance from the end point at which the TCP may deviate from its
original path is defined.
CIRC motion
The TCP leaves the path that would lead directly to the end point and
moves along a shorter path. During programming of the motion, the maxi-
mum distance from the end point at which the TCP may deviate from its
original path is defined.
The auxiliary point may fall within the approximate positioning range and
not be passed through exactly. This is dependent on the position of the
auxiliary point and the programmed approximation parameters.
All spline blocks and all individual motions can be approximated with one
Basic principles of motion programming
Description
The orientation of the TCP can be different at the start point and end
point of a motion. During motion programming, it is possible to define how
to deal with the different orientations.
Orientation control is set as a motion parameter by the setOrientation-
Type(…) method. Orientation control is a value of type Enum SplineOrien-
tationType.
CIRC motion
Ignore
robot.move(P0);
Spline path6 = new Spline(
spl(P1),
spl(P2),
spl(P3).setOrientationType(SplineOrientationType.Ignore),
spl(P4).setOrientationType(SplineOrientationType.Ignore),
spl(P5),
spl(P6)
);
// ...
robot.move(path6);
Description
Example
robot.move(circ(P6, P7)
.setOrientationReferenceSystem(
OrientationReferenceSystem.Path)
.setOrientationType(SplineOrientationType.Constant));
Limitation
For a given axis position of a robot, the resulting point in Cartesian space
at which the TCP is located is unambiguously defined. Conversely, howev-
er, the axis position of the robot cannot be unambiguously determined
from the Cartesian position X, Y, Z and orientation A, B, C of the TCP. A
Cartesian point can be reached with multiple axis configurations. In order
to determine an unambiguous configuration, the Status parameter must be
specified.
Robots with 6 axes already have ambiguous axis positions for a given
Cartesian point. With its additional 7th axis, an LBR is able to reach a giv-
en position and orientation with a theoretically unlimited number of axis
poses. To unambiguously determine the axis pose for an LBR, the redun-
dancy angle must be specified in addition to the Status.
The Turn parameter is required for axes which can exceed the angle
Basic principles of motion programming
Programming
The Status of a frame is only taken into account in PTP motions to this
frame. With CP motions, the Status given by the axis configuration at the
start of the motion is used.
In order to avoid an unpredictable motion at the start of an application
and to define an unambiguous axis configuration, it is advisable to pro-
gram the first motion in an application with one of the following instruc-
tions: The axis configuration should not be in the vicinity of a singular axis
position.
• PTP motion to a specified axis configuration with specification of all
axis values:
ptp(double a1, double a2, double a3, double a4, dou-
ble a5, double a6, double a7)
• PTP motion to a specified axis configuration:
ptp(JointPosition joints)
• PTP motion to a taught frame (AbstractFrame type):
ptp(getApplicationData().getFrame(String frameName));
With its 7th axis, an LBR is able to reach a point in space with a theoret-
ically unlimited number of different axis configurations. An unambiguous
pose is defined via the redundancy angle.
In an LBR, the redundancy angle has the value of the 3rd axis.
The following applies for all motions:
• The redundancy angle of the end frame is taken into account when
the robot that was used when teaching the frame also executes the
motion command. In particular, the robot name defined in the station
configuration must match the device specified in the frame properties.
• If the robots do not match or if calculated frames are used, the redun-
dancy angle given at the start of motion by the axis configuration is
retained.
15.10.2 Status
Bit 0
Specifies the position of the wrist root point (intersection of axes A5, A6,
A7) with reference to the X axis of the coordinate system of axis A1. The
alignment of the A1 coordinate system is identical to the robot base coor-
dinate system if axis A1 is at 0°. It moves with axis A1.
Bit 1
Bit 2
15.10.3 Turn
15.11 Singularities
Due to the axis position, Cartesian motions of the robot may be limited.
Due to the combination of axis positions of the entire robot, no motions
can be transferred from the drives to the flange (or to an object on the
flange, e.g. a tool) in at least one Cartesian direction. In this case, or if
very slight Cartesian changes require very large changes to the axis an-
gles, one speaks of singularity positions.
It is advisable to move the robot as slowly as possible near singularities.
A4 singularity
A4/A6 singularity
A2/A3 singularity
A5/A6 singularity
Description
The redundant configuration of the LBR with its 7th axis allows the robot
arm to move without the flange moving. In this null space motion, all axes
move except A4, the “elbow axis”. In addition to the normal redundancy, it
is possible, under certain circumstances, that only subchains of the robot
can move and not all axes.
All of the robot positions in this category have in common that slight Car-
tesian changes result in very large changes to the axis angles. They are
very similar to the singularities in 6-axis robots since, in the LBR too, a di-
vision is made into the position part and orientation part of the wrist root
point.
Wrist axis singularity means the axis position A6 = 0°. The position of ax-
es A5 and A7 can thus no longer be resolved. There are an infinite num-
ber of ways to position these two axes to generate the same position on
the flange.
A1 singularity
If the wrist root point is directly over A1, no reference value can be speci-
fied for the redundancy circle according to the definition above. The rea-
son for this is that any A1 value is permissible here for A3 = 0°.
Every axis position of A1 can be compensated for with a combination of
A5, A6 and A7 so that the flange position remains unchanged.
A2 singularity
Programming
16 Programming
Description
The Java Editor allows more than one file to be open simultaneously. If
required, they can be displayed side by side or one above the other. This
provides a convenient way of comparing contents, for example.
Precondition
Procedure
Alternative procedure
• Right-click on the Java file and select Open or Open With > Java Ed-
itor from the context menu.
Item Description
1 This line contains the name of the package in which the robot
application is located.
2 The import section contains the imported classes which are re-
quired for programming the robot application.
Note: Clicking on the “+” icon opens the section, displaying the
imported classes.
3 Header of the robot application (contains the class name of the
robot application)
(>>> "Header" Page 398)
Item Description
4 Declaration section
The data arrays of the classes required in the robot application
are declared here.
When the robot application is created, instances of the necessa-
ry classes are automatically integrated by means of dependency
injection. As standard, this is the instance of the robot used,
here an LBR.
(>>> 16.3.3 "Dependency injection" Page 409)
5 initialize() method
In this method, initial values are assigned to data arrays that
have been created in the declaration section and are not inte-
grated using dependency injection.
6 run() method
The programming of the robot application begins in this method.
When the robot application is created, a motion instruction
which moves the robot to the HOME position is automatically in-
serted.
(>>> 16.15 "HOME position" Page 459)
Header
Element Description
public The keyword public designates a class which is publicly
visible. Public classes can be used across all packages.
class The keyword class designates a Java class. The name
of the class is derived from the name of the application.
extends The application is subordinate to the RoboticsAPIAppli-
cation class.
Description
Procedure
16.1.3.2 Auto-complete
Programming
Description
Procedure
2. Press CTRL + space bar. The “Auto-complete” list containing the avail-
able entries is displayed.
If the list contains only one matching entry, this can automatically be
inserted into the program code by pressing CTRL + space bar.
3. Select the appropriate entry from the list and press the Enter key. The
entry is inserted in the program code.
If an entry is selected, the Javadoc information on this entry is dis-
played automatically.
(>>> 16.1.4 "Displaying Javadoc information" Page 401)
4. Complete the syntax if necessary.
There are various ways to navigate to the “Auto-complete” list and to filter
the available entries:
• Use the arrow keys on the keyboard to move from one entry to the
next (up or down)
• Scrolling
• Complete the entered code with additional characters. The list is fil-
tered and only the entries which correspond to the characters are dis-
played.
• Press CTRL + space bar. Only the available template suggestions are
displayed.
Description
Templates for fast entry are available for common Java statements, e.g.
FOR loops.
Procedure
Alternative procedure
Description
Procedure
Description
Parts of the program code can be extracted from the robot application and
made available as a separate method. This makes particular sense for fre-
quently recurring tasks, as it increases clarity within the robot application.
Procedure
Programming
The Extract method window opens.
4. Enter a unique method name and select the desired Access modifier.
Confirm with OK.
The method is generated and the selected program code is inserted
into this method. At all other points within the class where the extrac-
ted code excerpt additionally occurs, it is likewise replaced with the
method call.
Access modifier
This option defines which classes can call the extracted method.
Option Description
private This method can only be called by the corre-
sponding class itself.
default The following classes can call the method:
Description
Procedure
2. In order to pin the window in the editor area, press the tab key or
click inside the window.
Pinning the window makes it possible to navigate to the Javadoc de-
scription, e.g. by scrolling.
Displaying Javadoc information using the mouse pointer:
• Move the mouse pointer to the desired element name in the program
code. The associated Javadoc information is automatically displayed in
a window in the editor area.
The following elements react to the mouse pointer:
‒ Methods
‒ Classes (data types, not user-defined data arrays)
‒ Interfaces
‒ ENUM arrays
Programming
Navigation
Item Description
1 Linked class
Left-clicking on the linked class displays the complete Javadoc
information relating to this class in the Javadoc browser.
Note: If the corresponding link in the Javadoc view is selected,
the complete Javadoc information is displayed in the view itself.
2 Show in Javadoc View button
The window in the editor section closes and the Javadoc infor-
mation is displayed in the Javadoc view.
3 Open Attached Javadoc Browser button
The window in the editor section closes and the complete Java-
doc information relating to the corresponding class is displayed
in the Javadoc browser.
The configuration of the Javadoc browser is described briefly using the ex-
ample of the LBR class.
Programming
Item Description
1 Navigation
2 Class hierarchy
(>>> Fig. 16-6)
The inheritance relationships of the class are displayed here.
3 Description of the class
The task of the class and its functionality is described here.
Special aspects of using the class are normally indicated in this
area. It may also contain short examples for using the class.
The earliest library version in which the class is available is nor-
mally specified at the end of the description. The description
may additionally contain a list of references to further classes or
methods which may be of interest.
4 Overviews
• Field Summary
Overview of the data fields which belong to the class
The data fields inherited from a parent class are listed here.
• Constructor Summary
Overview of the constructors which belong to the class
• Method Summary
Overview of the methods which belong to the class
The methods inherited from a parent class are listed here.
The overviews contain short descriptions of the data fields, con-
structors and methods of the class, provided that these were
specified during the creation of Javadoc. Inherited data fields
and methods are only listed.
Detailed descriptions on the data fields, constructors and meth-
ods can be found in the Details area. Click on the respective
name to directly access the detailed description.
5 Details
• Field Detail
Detailed description of the data fields which belong to the
class
• Constructor Detail
Detailed description of the constructors which belong to the
class
• Method Detail
Detailed description of the methods which belong to the
class
The detailed description may, for example, contain a list and de-
scription of the transferred parameters and return value. Provi-
ded there are any, the exceptions which may occur when exe-
cuting a method or constructor are also named here.
Item Description
1 Name of the package to which the class belongs
2 Name of the class
3 Class hierarchy (parentage of the class)
4 List of interfaces implemented by the class
5 List of subclasses derived from the class
The following symbols and fonts are used in the syntax descriptions:
Syntax element Appearance
Java code • Courier font
• Upper/lower-case letters
Examples: private; new; linRel; Tool
Elements that must be re- • Italics
placed by program-specific
• Upper/lower-case letters
entries
Examples: endpoint; name; mode
Optional elements • In angle brackets
Example: <.setVelocity(value)>
Elements that are mutually • Separated by the “|” symbol
exclusive
Example: ++ |--
Programming
• Complex data types
Complex data types are defined in Java by classes.
Data types that are frequently required for robot programming are pre-
defined in the KUKA RoboticsAPI.
Overview of important data types:
Data type Description
int Integer
• -2³¹ … +2³¹-1
Examples: -1; 32; 8000
double Double-precision floating-point number
• -1.7E+308 … +1.7E+308
Examples: 1.25; -98.76; 123.456
boolean Logic state
• true
• false
char Character (1 character)
• ASCII character
Examples: ‘A’; ‘1’; ‘q’
String Character string
• ASCII character
Examples: “KUKA”; “tool”
The names of the primitive data types are displayed in violet in the Java
Editor.
16.3.1 Declaration
Description
Syntax
Element Description
Data type Data type of the variable
Name Name of the variable
Examples
int counter;
double value;
Controller kuka_Sunrise_Cabinet;
ForceCondition contactForceReached;
16.3.2 Initialization
Description
In the case of primitive data types, the assignment is done by the opera-
tor “=” followed by the desired value.
Primitive data types can be created and used in the run() method of an
application, for example.
Example
@Override
public void run() {
// ...
int a = 3;
int b = 5;
// ...
int c = a + b;
// ...
}
Description
Example
Programming
@Override
public void initialize() {
softInToolX = new CartesianImpedanceControlMode();
softInToolX.setDampingToDefaultValue();
// ...
contactForceReached =
ForceCondition.createSpatialForceCondition(…);
}
@Override
public void run() {
// ...
robot.move(ptp(getFrame("/P20"))
.breakWhen(contactForceReached));
}
}
Description
Syntax
@Inject
<Modifier> Data type Name;
Element Description
@Inject Annotation for initializing the array of type Data type with
dependency injection.
Modifier If required, valid modifiers can be used here for the array
declaration, e.g.:
Example
@Inject
private InjectableClass myField;
Description
Other classes and interfaces in addition to those described here can al-
so be integrated using dependency injection. A list of these objects can
be found in the Javadoc of UseRoboticsAPIContext.
Procedure
Examples
Programming
public class ExampleApplication extends
RoboticsAPIApplication {
@Inject
private ITaskLogger logger;
@Inject
private IApplicationData data;
@Inject
private LBR robot;
@Inject
@Named("Gripper")
private Tool gripper;
@Override
public void initialize() {
// initialize your application here
gripper.attachTo(robot.getFlange());
logger.info("Application initialized!");
}
@Override
public void run() {
// your application execution starts here
robot.move(ptpHome());
robot.move(ptp(data.getFrame("/Start")));
// ...
logger.info("Move gripper");
gripper.move(linRel().setXOffset(25.0));
// ...
}
}
The signals of an I/O group are to be used in both the robot application
and a background application.
Use in robot application:
@Override
public void initialize() {
// initialize your application here
}
@Override
public void run() {
// your application execution starts here
// ...
appLEDs.setBlueLight(true);
robot.move(handGuiding());
appLEDs.setBlueLight(false);
// ...
}
}
@Override
public void initialize() {
// initialize your task here
initializeCyclic(0, 500, TimeUnit.MILLISECONDS,
CycleBehavior.BestEffort);
}
@Override
public void runCyclic() {
// ...
if (appRunning) {
// If application is running,
// LED changes its state continuously
bgtLEDs.setYellowLight(!bgtLEDs.getYellowLight());
}
else {
// If application is not running, LED remains off
bgtLEDs.setYellowLight(false);
}
// ...
}
}
Description
A class can be used via dependency injection if it meets one of the fol-
lowing conditions:
• The class has a public constructor without parameters. An @Inject an-
notation on the constructor is not absolutely essential in this case.
• The class has a public constructor with an @Inject annotation which
either contains no parameters or for which all parameters can be ob-
tained via dependency injection.
All classes that are present in an application and meet the specified con-
ditions can be integrated in all constituent parts of the application using
@Inject. A new instance of the class is generated as standard for each in-
tegration using @Inject.
Singletons
State variables, e.g. of tool and workpiece classes, can be used by vari-
ous program sections through this mechanism.
(>>> 16.10.4 "Integrating dedicated object classes with dependency injec-
tion" Page 440)
Programming
This procedure represents an alternative to the process data, though
the state variables are not automatically saved.
Example
The classes Vehicle, Motor and Wheel are used in a project. The
classes Motor and Wheel are to be available in the Vehicle class via
dependency injection. As a vehicle usually only has one motor (or
engine), the Motor class is to be defined as a singleton.
2 objects of each of the classes Motor and Wheel are integrated in the
Vehicle class. Comparison of the objects is then intended to show that
the objects of the Motor class refer to the same instance whereas the
objects of the Wheel class refer to different instances.
The Vehicle class is likewise integrated in a robot application using de-
pendency injection. An object of the ITaskLogger class is integrated in
both the robot application and the Vehicle class by means of dependen-
cy injection. Integrating the ITaskLogger interface via dependency injection
also enables information from the Vehicle class to be displayed on the
smartHMI.
Wheel class:
Motor class:
@Singleton
public class Motor
{
@Inject
public Motor() {}
// ...
}
Vehicle class:
additionalMotor.setName("AdditionalMotor");
// ...
}
@Override
public void initialize() {
myNewCar.setName("Isolde")
// ...
}
@Override
public void run() {
logger.info("Name of vehicle:" + myNewCar.getName());
myNewCar.setCarStatus();
myNewCar.printCarStatus();
}
}
The screenshot (>>> Fig. 16-7) shows the information displayed on the
smartHMI when the robot application is executed. Besides the displays re-
lating to the robot application it also contains information from the Vehi-
cle class. This was made possible through integration of the ITaskLogger
interface by means of dependency injection.
Programming
Fig. 16-7: CarApplication – Display on smartHMI
• Instances of Wheel
The compared objects are not identical. The result of the ELSE
branch was displayed on the smartHMI and the names of the 2 ob-
jects are different.
• Instances of Motor
The result of the IF branch was displayed on the smartHMI. As both
objects refer to the same instance due to the @Singleton annotation,
the name is changed twice and corresponds to the one last set (here
“AdditionalMotor”).
Overview
Certain ports are enabled on the robot controller for communication with
external devices via UDP or TCP/IP.
The following port numbers (client or server socket) can be used in a ro-
bot application:
• 30,000 to 30,010
Description
CAUTION
If asynchronous motions are approximated, the robot may perform an
approximate positioning motion at an unexpected point.
Such unexpected approximate positioning motions can be avoided by
grouping together approximated individual motions in a MotionBatch.
(>>> 16.6.6 "MotionBatch" Page 420)
The way in which the different motion types are programmed is shown by
way of example for the object “robot”.
Motion programming for tools and workpieces is described here:
(>>> 16.10.3 "Moving tools and workpieces" Page 439)
During programming, it is possible to specify values with a higher accu-
racy than the robot can achieve. For example, it is possible to specify
position data in the nanometer range, but it is not possible to achieve
this accuracy.
Syntax
Programming
Explanation of the syntax
Element Description
Object Object of the station which is being moved
The variable name of the object declared and initialized
in the application is specified here.
Motion Motion which is being executed
The motion to be executed is defined by the following el-
ements:
16.6.2 PTP
Description
• Specify the angles of axes A1 … A7. All axis values must always be
specified.
Syntax
Element Description
End point Path of the frame in the frame tree or variable name of
the frame (if created in the program)
A1 … A7 Axis angles of axes A1 … A7 (type: double; unit: rad)
Motion pa- Further motion parameters, e.g. velocity or acceleration
rameters
Examples
robot.move(ptp(getApplicationData().getFrame("/StartPos")));
robot.move(ptp(getApplicationData().getFrame("/StartPos"))
.setJointVelocityRel(0.25));
16.6.3 LIN
Description
Executes a linear motion to the end point. The coordinates of the end
point are Cartesian and absolute.
The end point can be programmed in the following ways:
• Insert a frame from the application data in a motion instruction.
• Create a frame in the program and use it in the motion instruction.
Syntax
Element Description
End point Path of the frame in the frame tree or variable name of
the frame (if created in the program)
The redundancy information for the end point – Status
and Turn – are ignored in the case of LIN (and CIRC)
motions. Only the redundancy angle is taken into ac-
count.
Motion pa- Further motion parameters, e.g. velocity or acceleration
rameters
Examples
robot.move(lin(getApplicationData().getFrame("/Table/P1")));
robot.move(lin(getApplicationData().getFrame("/Table/P1"))
.setCartVelocity(150.0));
16.6.4 CIRC
Description
Programming
Syntax
Element Description
Auxiliary Path of the frame in the frame tree or variable name of
point the frame (if created in the program)
The redundancy information for the end point – Status,
Turn and redundancy angle – are ignored.
End point Path of the frame in the frame tree or variable name of
the frame (if created in the program)
The redundancy information for the end point – Status
and Turn – are ignored in the case of CIRC (and LIN)
motions. Only the redundancy angle is taken into ac-
count.
Motion pa- Further motion parameters, e.g. velocity or acceleration
rameters
Examples
CIRC motion to the end frame “/Table/P4” via the auxiliary frame “/Table/
P3”:
robot.move(circ(getApplicationData().getFrame("/Table/P3"),
getApplicationData().getFrame("/Table/P4")));
robot.move(circ(getApplicationData().getFrame("/Table/P3"),
getApplicationData().getFrame("/Table/
P4")).setCartAcceleration(25));
Description
Executes a linear motion to the end point. The coordinates of the end
point are relative to the end position of the previous motion, unless this
previous motion is terminated by a break condition. In this case, the coor-
dinates of the end point are relative to the position at which the motion
was interrupted.
In a relative motion, the end point is offset as standard in the coordinate
system of the moved frame. Another reference coordinate system in which
to execute the relative motion can optionally be specified. The coordinates
of the end point then refer to this reference coordinate system. This can
for example be a frame created in the application data or a calibrated
base.
The end point can be programmed in the following ways:
• Enter the Cartesian offset values individually.
• Use a frame transformation of type Transformation. The frame trans-
formation has the advantage that the rotation can also be specified in
degrees.
Syntax
Element Description
x, y, z Offset in the X, Y and Z directions (type: double, unit:
mm)
a, b, c Rotation about the Z, Y and X axes (type: double)
The unit depends on the method used:
Examples
The moving frame is the TCP of a gripper. This TCP moves 100 mm in
the X direction and 200 mm in the negative Z direction in the tool coordi-
nate system from the current position. The orientation of the TCP does
not change.
gripper.getFrame("/TCP2").move(linRel(100, 0, -200));
The robot moves 10 mm from the current position in the coordinate sys-
tem of the P1 frame. The robot additionally rotates 30° about the Z and Y
axes of the coordinate system of the P1 frame.
16.6.6 MotionBatch
Description
Both variants can appear together, e.g. to assign another parameter value
to an individual motion than to the batch.
Programming
The motion parameter specified for a single block overwrites the motion
parameter specified for the entire batch. This also applies if a lower pa-
rameter value is specified for the batch than for the individual block.
Syntax
Object.move(batch(
Motion,
Motion,
…
Motion,
Motion
)<.Motion parameter>);
Element Description
Object Object of the station which is being moved
The variable name of the object declared and initialized
in the application is specified here.
Motion Motion with or without motion parameters
2. Test the path. At points where the accuracy is still insufficient, add
more SPL points.
• Avoid successive LIN and/or CIRC segments, as this often reduces
the velocity to 0. To avoid this:
‒ Program SPL segments between LIN and CIRC segments. The
length of the SPL segments must be at least > 0.5 mm. Depend-
ing on the actual path, significantly larger SPL segments may be
required.
‒ Replace a LIN segment with several SPL segments in a straight
line. In this way, the path becomes a straight line.
• Avoid successive points with identical Cartesian coordinates, as this
reduces the velocity to 0.
• If the robot executes points which lie on a work surface, a collision
with the work surface is possible when approaching the first point.
• Avoid using SPL segments if the robot moves near the workspace lim-
it. It is possible to exceed the workspace limit with SPL, even though
the robot can reach the end frame in another motion type or by
means of jogging.
Description
A CP spline block can be used to group together several SPL, LIN and/or
CIRC segments to an overall motion.
A spline block must not include any other instructions, e.g. variable as-
signments or logic statements.
The motion parameters, e.g. velocity, acceleration, orientation control, etc.
can be programmed for the entire spline block or per segment. Both var-
iants can appear together, e.g. to assign a different parameter value to an
individual segment than to the block.
Programming
The motion parameter specified for a single spline segment overwrites
the motion parameter specified for the entire spline block. This also ap-
plies if a lower parameter value is specified for the spline block than for
the spline segment.
Syntax
Element Description
Name Name of the spline block
Segment Motion with or without motion parameters
Example
Description
Syntax
Segment,
Programming
Segment,
…
Segment,
Segment
)<.Motion parameter>;
Element Description
Name Name of the spline block
Segment PTP motion with or without motion parameters
Motion pa- Motion parameters which are programmed at the end of
rameters the spline block apply to the entire spline block.
Example
Description
Syntax
Object.move(spline block);
Element Description
Object Object of the station which is being moved
The variable name of the object declared and initialized
in the application is specified here.
Spline block Name of the spline block
Example
robot.move(mySpline);
The required motion parameters can be added in any order to the motion
instruction. Dot operators and “set” methods are used for this purpose.
Programming
Method Description
setCartVelocity(…) Absolute Cartesian velocity (type: double, unit: mm/s)
• > 0.0
This value specifies the maximum Cartesian velocity at which the ro-
bot may move during the motion. Due to limitations in path planning,
the maximum velocity may not be reached and the actual velocity
may be lower.
If no velocity is specified, the motion is executed with the fastest pos-
sible velocity.
Note: This parameter cannot be set for PTP motions.
setJointVelocity Axis-specific relative velocity (type: double, unit: %)
Rel(…)
• 0.0 … 1.0
Refers to the maximum value of the axis velocity in the machine data.
(>>> 16.8.1 "Programming axis-specific motion parameters"
Page 426)
setCart Absolute Cartesian velocity (type: double, unit: mm/s2)
Acceleration(…)
• > 0.0
If no acceleration is specified, the motion is executed with the fastest
possible acceleration.
Note: This parameter cannot be set for PTP motions.
setJointAcceleration Axis-specific relative acceleration (type: double, unit: %)
Rel(…)
• 0.0 … 1.0
Refers to the maximum value of the axis acceleration in the machine
data.
(>>> 16.8.1 "Programming axis-specific motion parameters"
Page 426)
setCartJerk(…) Absolute Cartesian jerk (type: double, unit: mm/s3)
• > 0.0
If no jerk is specified, the motion is executed with the fastest possible
change in acceleration.
Note: This parameter cannot be set for PTP motions.
setJointJerkRel(…) Axis-specific relative jerk (type: double, unit: %)
• 0.0 … 1.0
Refers to the maximum value of the axis-specific change in accelera-
tion in the machine data.
(>>> 16.8.1 "Programming axis-specific motion parameters"
Page 426)
Method Description
setBlendingRel(…) Relative approximation distance (type: double)
• 0.0 … 1.0
The relative approximation distance is the furthest distance before the
end point at which approximate positioning can begin. If “0.0” is set,
the approximation parameter does not have any effect.
The maximum distance (= 1.0) is always the length of the individual
motion or the length of the last segment in the case of splines. For
motions which are not commanded within a spline, only the range be-
tween 0% and 50% is available for approximate positioning. In this
case, if a value greater than 50% is parameterized, approximate posi-
tioning nevertheless begins at 50% of the block length.
setBlendingCart(…) Absolute approximation distance (type: double, unit: mm)
• ≥ 0.0
The absolute approximation distance is the furthest distance before
the end point at which approximate positioning can begin. If “0.0” is
set, the approximation parameter does not have any effect.
setBlendingOri(…) Orientation parameter for approximate positioning (type: double, unit:
rad)
• ≥ 0.0
Approximation starts, at the earliest, when the absolute difference of
the dominant orientation angle for the end orientation falls below the
value set here. If “0.0” is set, the approximation parameter does not
have any effect.
setOrientation Orientation control (type: Enum)
Type(…)
• Constant
• Ignore
• OriJoint
• VariableOrientation (default)
(>>> 15.9 "Orientation control with LIN, CIRC, SPL" Page 384)
setOrientation Only relevant for CIRC motions: Reference system of orientation con-
ReferenceSystem(…) trol (type: Enum)
• Base
• Path
(>>> 15.9.1 "Orientation control reference system for CIRC"
Page 387)
Description
By way of example, these possibilities are described using the relative ve-
Programming
locity:
• setJointVelocityRel(Value)
If a value of type double is transferred, the relative velocity applies to
all axes.
• setJointVelocityRel(Array_variable)
In order to assign each axis its own relative velocity, a double array is
transferred with the corresponding axis values. In an array, the axis
values of up to 12 axes can be defined, beginning with axis A1.
• setJointVelocityRel(Axis, Value)
To specify the relative velocity of an individual axis, this axis is trans-
ferred as JointEnum.
Examples
robot.move(ptp(getApplicationData().getFrame("/P1"))
.setJointVelocityRel(0.5));
Axis A5 moves at 50%, all other axes move at 20% of maximum velocity:
Axis A4 moves at 50% of maximum velocity, all other axes move at maxi-
mum velocity:
robot.move(ptp(getApplicationData().getFrame("/P1"))
.setJointVelocityRel(JointEnum.J4, 0.5));
Description
The robot can be guided using a hand guiding device. Manual guidance
mode can be switched on in the application using the motion command
handGuiding(). Manual guidance begins at the actual position which was
reached before the mode was switched on.
If Manual guidance mode is used in the application, at least 2 ESM states
must be configured:
• ESM state for manual guidance motion
The ESM state contains the AMF Hand guiding device enabling inac-
tive, which checks whether the enabling signal has not been issued on
the hand guiding device.
(>>> 13.11.5 "Manual guidance with enabling device and velocity mon-
itoring" Page 289)
It is advisable to configure a safety stop 1 (path-maintaining) as the
stop reaction for the AMF Hand guiding device enabling inactive. Fol-
lowing a path-maintaining stop, the application can be resumed
directly by pressing the Start key.
If a non-path-maintaining stop reaction is configured for the AMF Hand
guiding device enabling inactive, the robot must first be repositioned
following manual guidance before the application can be resumed.
CAUTION
If, when switching to Manual guidance mode, the application is in an
ESM state which does not contain a Hand guiding device enabling inac-
tive AMF, the robot can nevertheless be manually guided in one situa-
tion: the enabling switch on the hand guiding device is pressed and a
Hand guiding device enabling inactive AMF is configured in any other
ESM state or in the PSM table.
This combination must be avoided under all circumstances: in a situa-
tion like this, the application is not paused when manual guidance is ter-
minated and the enabling switch on the hand guiding device is released.
Instead, the application is resumed without any further operator actions.
If further motions follow manual guidance, these are executed directly
while the operator’s hand is still on the hand guiding device and thus
within the robot’s motion range.
Programming
Preparation
Syntax
Object.move(handGuiding());
Element Description
Object Object of the station which is being moved
The variable name of the object declared and initialized
in the application is specified here.
Example
1 robot.setESMState("1");
2 robot.move(ptp(getApplicationData().getFrame("/P1")));
3 robot.setESMState("2");
4 robot.move(handGuiding());
5 robot.setESMState("1");
6 robot.move(ptp(getApplicationData().getFrame("/P2")));
Line Description
1 ESM state 1 is activated for the robot. In this example,
ESM state 1 monitors the operator safety.
2 Frame "/P1" is addressed with a PTP motion.
3 ESM state 2 is activated for the robot. ESM state 2 moni-
tors the enabling switch on the hand guiding device.
If a signal has not yet been issued via the switch, the con-
figured stop reaction is triggered and the application is
paused.
4 Manual guidance mode is activated.
The robot can be guided manually as soon as the enabling
switch on the hand guiding device is pressed and held in
the center position.
When the signal for manual guidance has been cancelled,
e.g. by releasing the enabling switch, Manual guidance
mode has ended. The stop reaction configured for ESM
state 2 is triggered and motion execution is paused.
5 ESM state 1 is activated for the robot. In this example,
ESM state 1 monitors the operator safety.
Motion execution remains paused. The Start key must be
pressed in order to resume the application.
6 Frame "/P2" is addressed with a PTP motion.
For manual guidance, axis limits and velocity limits can be programmed.
The required motion parameters can be added in any order to the motion
command handGuiding(). Dot operators and “set” methods are used for
this purpose.
Axis limits:
Method Description
setJointLimits Activation of the axis limits for manual guidance (type: boolean[])
Enabled(…)
• true: Axis limit active
• false: Axis limit not active
Note: This method refers to the limits that the user can set using the
methods setJointLimitsMax(…) and setJointLimitsMin(…). The outer-
most axis limits of the robot (software limit switches) are always moni-
tored.
setJointLimitsMax(…) Upper axis limits (type: double[]; unit: rad)
setJointLimitsMin(…) Lower axis limits (type: double[]; unit: rad)
Note: The lower axis limit must always be lower than the correspond-
ing upper axis limit.
setJointLimitViolation Response if an axis limit is reached (type: boolean)
FreezesAll(…)
• true: If an axis limit is reached, all axes involved in the motion
work against a further motion towards the limit switch.
• false: If an axis limit is reached, only the affected axis works
against a further motion towards the limit switch.
Default: true
If this value is not set, the default value is automatically applied.
setPermanentPullOn Response if an axis limit is already exceeded at the start of manual
ViolationAtStart(…) guidance (type: boolean)
• true: When the enabling signal for manual guidance is issued, the
axis is moved automatically out of the non-permissible range.
When the permissible range is reached, the motion is stopped au-
tomatically.
• false: When the enabling signal for manual guidance is issued,
the axis does not move. It must be moved out of the non-permis-
sible range manually.
Default: false
If this value is not set, the default value is automatically applied.
Velocity limits:
Programming
Method Description
setCartVelocity Cartesian velocity limit (type: double, unit: mm/s)
Limit(…)
• > 0.0
Default: 500.0
If the velocity limit is exceeded, increasing torques act against the
motion and cushion it.
setJointVelocity Velocity limitation for all axes (type: double; unit: rad/s)
Limit(…)
• > 0.0
Default: 1.0
If the velocity limit is exceeded, increasing torques act against the
motion and cushion it.
Description
any further motion towards the limit switch, with the resistance becoming
Programming
• If an axis limit is reached, all axes involved in the motion work against
a further motion towards the limit switch.
With setJointLimitViolationFreezesAll(false), it is possible
to define that only the axis that has reached the limit works against a
further motion towards the limit switch.
• If an axis limit is already exceeded at the start of manual guidance,
the affected axis must be moved manually out of the non-permissible
range.
With setPermanentPullOnViolationAtStart(true), it is possi-
ble to define that the axis is to move automatically out of the non-per-
missible range.
Example
@Inject
private LBR robot;
private HandGuidingMotion motion;
// ...
motion = handGuiding()
.setJointLimitsMax(+1.407, +0.872, +0.087, -0.785, +0.087,
+1.571, +0.087)
.setJointLimitsMin(-1.407, +0.175, -0.087, -1.571, -0.087,
-1.571, -0.087)
.setJointLimitsEnabled(false, true, false, true, false,
true, false)
.setJointLimitViolationFreezesAll(false)
.setPermanentPullOnViolationAtStart(true);
robot.move(motion);
Description
In addition to the axis limitation, velocity limits that may not be exceeded
can be programmed for manual guidance:
• setCartVelocityLimit(…)
Defines the maximum permissible Cartesian velocity. It is monitored
both at the robot flange and at the TCP.
• setJointVelocityLimit(…)
Defines the maximum permissible axis velocity for all axes.
As soon as the operator exceeds one of these maximum velocity limits
axis in manual guidance, increasing torques act against the motion and
cushion it.
Axis velocity reduction before axis limitation:
If the programmed maximum permissible axis velocity is exceeded near
the axis limits during manual guidance, the axis velocity is continuously re-
duced to a minimum axis velocity specified by KUKA. This ensures that
the manual guidance motion is automatically decelerated before the axis
limits and the operator can only approach the axis limits at reduced veloc-
ity.
Programming
the velocity of the affected axis is reduced, or the velocity of all axes in-
volved in the motion.
Example
@Inject
private LBR robot;
private HandGuidingMotion motion;
// ...
motion = handGuiding()
.setJointLimitsMax(+1.407, +0.872, +0.087, -0.785, +0.087,
+1.571, +0.087)
.setJointLimitsMin(-1.407, +0.175, -0.087, -1.571, -0.087,
-1.571, -0.087)
.setJointLimitsEnabled(false, true, false, true, false,
true, false)
.setJointVelocityLimit(0.5)
.setCartVelocityLimit(500.0)
.setJointLimitViolationFreezesAll(false)
.setPermanentPullOnViolationAtStart(true);
robot.move(motion);
Data types
The data types for the objects in a station are predefined in the Robotic-
sAPI, e.g.:
Data type Object
Controller Robot controller
LBR Lightweight robot
Tool Tool
Workpiece Workpiece
Description
Tools and workpieces created in the object templates can be integrated in-
to robot and background applications using dependency injection. The
name of the template is specified by means of an additional annotation.
Syntax
@Inject
@Named("Template name")
private Data type Object name;
Element Description
@Inject Annotation for integrating resources by means of depend-
ency injection
@Named Annotation for specifying the object template to be used
Template Name of the object template as specified in the Object
name templates view
private The keyword designates locally valid variables. Locally
valid means that the data array can only be used by the
corresponding class.
Data type Class of the resource (Tool or Workpiece) that is to be
integrated
Object name Name of the identifier, as it is to be used in the applica-
tion
The annotation @Named may be omitted for tools if there is only one
single object template for a tool. The annotation is always required for
other objects.
Example
Programming
Fig. 16-12: Object templates
@Inject
@Named("GuidingTool")
private Tool guidingTool;
@Inject
@Named("Pen")
private Workpiece pen;
@Override
public void initialize() {
// initialize your application here
}
@Override
public void run() {
// your application execution starts here
}
}
Description
Via the method attachTo(…), the origin frame of a tool is attached to the
flange of a robot used in the application. The robot flange is accessed via
the method getFlange().
Syntax
Tool.attachTo(Robot.getFlange());
Element Description
Tool Name of the tool variable
Robot Name of the robot variable
Example
@Inject
private LBR robot;
@Inject
private Tool guidingTool;
// ...
@Override
public void initialize() {
// ...
guidingTool.attachTo(robot.getFlange());
// ...
}
Description
Programming
In order to use a frame in the program, the object frame is requested with
the method getFrame(…). As an input parameter, this contains the path of
the frame as a string.
Syntax
Element Description
Workpiece Name of the workpiece variable
Reference Reference frame of the workpiece which is used for the
frame attachment to the other object
End frame Frame of the object to which the reference frame of the
workpiece is attached
After the attach, the reference frame of the workpiece and the end
frame of the object attached to it match.
Example 1
@Inject
private LBR robot;
@Inject
private Tool gripper;
@Inject
@Named("Pen")
private Workpiece pen;
// ...
@Override
public void run() {
// ...
pen.attachTo(gripper.getFrame("/TCP1"));
// ...
Example 2
@Inject
private LBR robot;
@Inject
private Tool gripper;
@Inject
@Named("Pen")
private Workpiece pen;
// ...
@Override
public void run() {
// ...
pen.getFrame("/Grip").attachTo(gripper.getFrame("/TCP2"));
// ...
}
Description
Syntax
Object.detach();
Element Description
Object Name of the object variable
Programming
Example
guidingTool.detach();
Description
Every movable object in a station can be moved with move(…) and move-
Async(…). The reference point of the motion is dependent on the object
type:
• If a robot is moved, the reference point is always the robot flange cen-
ter point.
• If a tool or workpiece is moved, the standard reference point is the de-
fault motion frame which was defined for this object in the Object
templates view.
(>>> 9.3.8 "Defining a default motion frame" Page 187)
In this case, the tool or workpiece is linked directly to the motion com-
mand via the variable name declared in the application.
• However, any other frame created for a tool or workpiece can also be
programmed as a reference point of the motion.
In this case, using the method getFrame(…), the path to the frame of
the object used for the motion must be specified (on the basis of the
origin frame of the object).
Syntax
Element Description
Object Object of the station which is being moved
The variable name of the object declared and initialized
in the application is specified here.
Moved Path to the frame of the object which is used for the mo-
frame tion
Motion Motion which is being executed
Examples
The PTP motion to point P1 is executed with the default frame of the grip-
per.
gripper.attachTo(robot.getFlange());
gripper.move(ptp(getApplicationData().getFrame("/P1")));
The PTP motion to point P1 is executed with a different frame than the
default frame of the gripper, here TCP1:
gripper.attachTo(robot.getFlange());
gripper.getFrame("/
TCP1").move(ptp(getApplicationData().getFrame("/P1")));
A pen is gripped. The next motion is a PTP motion to point P20. This
point is executed with the default frame of the workpiece “pen”.
gripper.attachTo(robot.getFlange());
// ...
pen.attachTo(gripper.getFrame("/TCP1"));
pen.move(ptp(getApplicationData().getFrame("/P20"));
Description
Tools and workpieces created in the object templates are based on the
classes Tool and Workpiece. Specific properties or functions that tools and
workpieces generally have are not considered by these basic classes. For
a gripper, examples might include functions for opening and closing.
Such specific object properties and functions can be defined in separate
object classes. The following steps are required in order to be able to use
the user-defined object classes in the same way as the basic classes in
applications:
Step Description
1 Derive a new object class from a suitable basic class:
Programming
Dependency injection can also be used in dedicated classes. For exam-
ple, the ITaskLogger can be integrated in order to display output infor-
mation on the smartHMI.
Singletons
Object classes that are derived from Tool and used in a Sunrise project
as described here are always integrated as singletons. This means that
each object annotated with the type of the object class refers to the same
instance.
As standard, object classes that are derived from Workpiece are not sin-
gletons. When annotating, a new instance is therefore created every time.
Workpieces can be made singletons by placing the annotation @Singleton
before the header of the class.
Procedure
Example
Step 1:
For a gripper, the object class Gripper is created using the procedure de-
scribed above. The class Gripper is derived from the basic class Tool and
expands the basic class to include the functions for opening and closing
the gripper.
1 package tools;
2 import com.kuka.roboticsAPI.geometricModel.Tool;
3 public class Gripper extends Tool {
4 @Inject
5 private ITaskLogger logger;
6
7 public Gripper(String name) {
8 super(name);
9 }
10
11 /**
12 * Opens the gripper
13 */
14 public void openGripper(){
15 // ...
16 logger.info("Gripper is open.");
17 }
18
19 /**
20 * Closes the gripper
21 */
22 public void closeGripper(){
23 // ...
24 logger.info("Gripper is closed.");
25 }
26 }
Line Description
1 Name of the Java package that contains the class Gripper
4 … 5 Integration of the ITaskLogger interface by means of de-
pendency injection
7 … 9 Standard constructor of the class Gripper (adopted from
Tool)
14 … 17 Method openGripper() for opening the gripper
22 … 25 Method closeGripper() for closing the gripper
16, 24 Information displayed on smartHMI with the aid of the ITas-
kLogger interface
Step 2:
An object template with the name “ExampleGripper” is created for the
gripper. The object class Gripper is assigned to the object template:
• Entry under Template class in the Properties view: tools.Gripper
The name of the Java package (here “tools”) that contains the class
Gripper must be specified.
Step 3:
The object class Gripper and the corresponding functions can be used in
the robot application.
Programming
23 }
24 }
Line Description
4 … 5 A tool of type Gripper is integrated.
The tool has the functions defined in the object class Grip-
per.
11 The tool is attached to the robot flange.
19 … 21 The functions defined in the object class Gripper are used
to program a gripping process:
Description
Syntax
robot.setSafetyWorkpiece(Workpiece);
Element Description
robot Type: LBR
Name of the robot
Workpiece Type: PhysicalObject
Workpiece whose load data are to be transferred to the
safety controller
If no workpiece is to be taken into consideration any lon-
ger, null must be transferred.
Example
@Inject
@Named("ComponentA")
private Workpiece componentA;
@Inject
@Named("ComponentB")
private Workpiece componentB;
@Override
public void initialize() {
// ...
// attach gripper to robot flange
gripper.attachTo(robot.getFlange());
}
Programming
@Override
public void run() {
// ...
// after pick-up, attach workpiece to set load data for
// motion control
componentA.attachTo(gripper.getDefaultMotionFrame());
// set load data for safety controller
robot.setSafetyWorkpiece(componentA);
// ...
// after putting it down, detach workpiece to no longer
// consider its load for motion control
componentA.detach();
To use the inputs/outputs of an I/O group in the application, the user must
integrate the I/O group by means of dependency injection.
Item Description
1 com.kuka.generated.ioAccess Java package
The class created for an I/O group and the methods of this
class are saved in the package.
The Java class NameIOGroup.java (here: LampSwitch-
IOGroup.java) contains the following elements:
• IODescriptions folder
The data in an I/O group are saved in an XML file. The
XML file can be displayed but not edited.
3 IOTemplates folder
The data of an I/O group saved as a template are saved in an
XML file. The XML file can be displayed but not edited.
A template can be copied into another Sunrise project in order
to be used there. The template can then be imported into Work-
Visual, edited there and re-exported.
(>>> 11.5.8 "Importing an I/O group from a template" Page 230)
(>>> 11.5.7 "Exporting an I/O group as a template" Page 230)
The generatedFiles folder is used by the system and must not be used
for saving files created by the user.
Programming
16.11.1 Integrating an I/O group
Description
Syntax
@Inject
private Data type Group name;
Element Description
@Inject Annotation for integrating resources by means of depend-
ency injection
private The keyword designates locally valid variables. Locally
valid means that the data array can only be used by the
corresponding class.
Data type Class of the resource (I/O group) that is to be integrated
Class name of the I/O group:
• NameIOGroup
Name = Name of the I/O group, as defined in WorkVisual
Group name Name of the identifier, as it is to be used in the applica-
tion
Example
@Override
public void initialize() {
// ...
}
@Override
public void run() {
// ...
}
}
Description
The “get” method of an input/output is used to request the state of the in-
put/output.
Syntax
Group name.getInput|Output();
Element Description
Group name Name of the identifier of the I/O group
Input Name of the input (as defined in WorkVisual)
Output Name of the output (as defined in WorkVisual)
Example
The state of the switch at input “Switch1” and of the lamp at output
“Lamp1” is requested.
WARNING
Outputs are switched in certain situations although a safety-oriented
stop request is present (e.g. in the case of a pressed EMERGENCY
STOP or violated space monitoring). This can cause unexpected mo-
tions of the connected periphery (e.g opening of a gripper).
The following situations can now occur:
• Background application switches output.
• Function called via user key switches output.
• Robot applications continue running to the next synchronous motion
command after a stop request. The code executed up to that point
switches the output.
The behavior described can also be desirable; however, there must nev-
er be any danger to human and machine. This must be ensured by the
system integrator, e.g. by means of de-energizing outputs with hazard
potential.
NOTICE
It is not permissible to set outputs in a robot application that signal sys-
tem states to the external controller. Failure to observe this precaution
may result in malfunctioning of the external controller and damage to
property.
Description
The “set” method of an output is used to change the value of the output.
No “set” methods are available for inputs. They can only be read.
Syntax
Group name.setOutput(Value);
Programming
Explanation of the syntax
Element Description
Group name Name of the identifier of the I/O group
Output Name of the output (as defined in WorkVisual)
Value Value of the output
The data type of the value to be transferred depends on
the output type.
Example
The lamp at output “Lamp1” is switched on and then switched off after
2000 ms.
Description
Measuring the torques acting on an axis of sensitive robots that have axis
torque sensors.
The ITorqueSensitiveRobot interface provides the methods required for re-
questing the sensor data:
• getMeasuredTorque()
The measured torque values can be requested and evaluated in the
application via the method getMeasuredTorque().
• getExternalTorque()
Frequently, it is not the pure measured values which are of interest
but rather only the externally acting torques, without the component re-
sulting from the weight of the robot and mass inertias during motion.
These values are referred to as external torques. These external tor-
ques be accessed via the getExternalTorque() method.
In order to be able to display external torques correctly, the load
mounted on the robot must be configured correctly and communica-
ted to the system.
• getSingleTorqueValue(…), getTorqueValues()
The methods getMeasuredTorque() and getTorqueValues() return an
object of the type TorqueSensorData containing the torque sensor data
of all axes. From this object, it is then possible to request either all
values as an array with getTorqueValues(…) or a single axis value
with getSingleTorqueValue(…).
The data requested from the axis torque sensors via Java are not avail-
able in real time. This means that the data supplied by the system in
the program were already created several milliseconds earlier.
Syntax
Element Description
measured Type: TorqueSensorData
Data
Variable for the return value of getMeasuredTorque(). The
return value contains all measured torques requested
from the robot.
externalData Type: TorqueSensorData
Variable for the return value of getExternalTorque(). The
return value contains all external torques requested from
the robot.
robot Type: LBR
Name of the robot from which the torques are requested
allValues Type: double[]; unit: Nm
Array variable for the return value of getTorqueValues().
The return value contains all torque values of all axes.
singleValue Type: double; unit: Nm
Variable for the return value of getSingleTorqueVal-
ue(joint). The return value contains the torque value of a
single axis.
joint Type: JointEnum
Axis whose torque value is requested
Example
For a specific process step, the measured and externally acting torques
are requested in all axes and saved in an array to be evaluated later. The
measured torque in axis A2 is read and displayed on the smartHMI. For
output purposes, a logger object has been integrated with dependency in-
jection.
double torqueA2 =
measuredData.getSingleTorqueValue(JointEnum.J2);
logger.info("Currently measured torque for joint 2 [Nm]:" +
torqueA2);
Programming
16.13 Reading Cartesian forces and torques
Sensitive robots that have axis torque sensors measure the torques acting
on the axes. The robot controller calculates the Cartesian forces and tor-
ques on the basis of these measured values.
The external Cartesian forces and torques acting on the robot flange, the
TCP of a tool or any point of a gripped object can be requested from the
robot. The IForceSensitiveRobot interface provides the methods for this.
The following points must be taken into consideration:
• The Cartesian forces and torques are estimated based on the meas-
ured values of the axis torque sensors.
A force application point must be specified for the calculation. The ex-
ternal Cartesian forces and torques calculated for the force application
point are only meaningful in terms of the physics involved if there are
no external forces acting on any other points on the robot.
• The reliability of the calculated values can decrease considerably in
extreme poses, e.g. extended positions or singularities.
• The quality and validity of the calculated values can be checked.
• When changing the load data, e.g. with the attachTo command, the re-
quest can only be executed after the motion command has been sent
to the robot controller. For this purpose, a null space motion or the
motion command positionHold(…) is sufficient.
Description
Syntax
Element Description
data Type: ForceSensorData
Variable for the return value of getExternalForceTor-
que(…). The return value contains the calculated Cartesi-
an forces and torques.
robot Type: LBR
Name of the robot
measure Type: AbstractFrame
Frame
Reference frame for calculation of the Cartesian forces
and torques.
orientation Type: AbstractFrame
Frame
Optional: Orientation of the frame in which the forces and
torques are represented.
Examples
Requesting the external forces and torques acting on the robot flange:
ForceSensorData data =
robot.getExternalForceTorque(robot.getFlange());
Requesting the external forces and torques acting on the robot flange with
the orientation of the world coordinate system:
ForceSensorData data =
robot.getExternalForceTorque(robot.getFlange(),
World.Current.getRootFrame());
Description
Syntax
Programming
Explanation of the syntax
Element Description
force Type: vector (com.kuka.roboticsAPI.geometricModel.math)
Vector with the Cartesian forces which act in the X, Y
and Z directions (unit: N)
torque Type: vector (com.kuka.roboticsAPI.geometricModel.math)
Vector with the Cartesian torques which act about the X,
Y and Z axes (unit: Nm)
data Type: ForceSensorData
Variable for the return value of getExternalForceTor-
que(…). The return value contains the calculated Cartesi-
an forces and torques.
Example
ForceSensorData data =
robot.getExternalForceTorque(robot.getFlange());
Description
Syntax
Element Description
force Type: vector (com.kuka.roboticsAPI.geometricModel.math)
Vector with the values for the inaccuracy with which the
Cartesian forces acting in the X, Y and Z directions are
calculated (unit: N)
torque Type: vector (com.kuka.roboticsAPI.geometricModel.math)
Vector with the values for the inaccuracy with which the
Cartesian torques acting about the X, Y and Z axes are
calculated (unit: Nm)
data Type: ForceSensorData
Variable for the return value of getExternalForceTor-
que(…). The return value contains the calculated Cartesi-
an forces and torques.
tolerance Type: double; unit: N or Nm
Limit value for the maximum permissible inaccuracy up to
which the calculated Cartesian forces and torques are
still valid
valid Type: boolean
Variable for the return value of isForceValid(…) or isTor-
queValid(…)
Example
ForceSensorData data =
robot.getExternalForceTorque(robot.getFlange());
if (data.isForceValid(20)){
//do something
}
Programming
16.14 Requesting the robot position
The axis-specific and Cartesian robot position can be requested in the ap-
plication. It is possible to request the actual and the setpoint position for
each.
Overview
Description
For requesting the axis-specific actual or setpoint position of the robot, the
position of the robot axes is first saved in a variable of type JointPosition.
From this variable, the positions of individual axes can then be requested.
The axis whose position is to be requested can be specified using either
its index or the Enum JointEnum.
Syntax
Element Description
position Type: JointPosition
Variable for the return value. The return value contains
the requested axis positions.
robot Type: Robot
Name of the robot from which the axis positions are re-
quested
value Type: double; unit: rad
Position of the requested axis
axis Type: int or JointEnum
Index or JointEnum of the axis whose position is reques-
ted
Example
First the axis-specific actual position of the robot and then the position of
axis A3 are requested via the index of the axis. The angle for axis A3 is
displayed in degrees on the smartHMI. For output purposes, a logger ob-
ject has been integrated with dependency injection.
Description
Syntax
Programming
frameOnFlange<, referenceFrame>);
Element Description
position Type: Frame
Variable for the return value. The return value contains
the requested Cartesian position.
robot Type: Robot
Name of the robot from which the Cartesian position is
requested
frameOn Type: ObjectFrame
Flange
Robot flange or a frame subordinated to the flange
whose Cartesian position is requested
reference Type: AbstractFrame
Frame
Reference coordinate system relative to which the Carte-
sian position is requested. If no reference coordinate sys-
tem is specified, the Cartesian position refers to the
world coordinate system.
Examples
Cartesian actual position of the robot flange with reference to the world
coordinate system:
Frame cmdPos =
robot.getCurrentCartesianPosition(robot.getFlange());
tool.attachTo(robot.getFlange());
// ...
Frame cmdPos =
robot.getCurrentCartesianPosition(tool.getFrame("/TCP"),
getApplicationData().getFrame("/Base"));
Description
Syntax
Element Description
info Type: PositionInformation
Variable for the return value. The return value contains
the requested position information.
robot Type: Robot
Name of the robot from which the position information is
requested
frameOn Type: ObjectFrame
Flange
Robot flange or a frame subordinated to the flange
whose position information is being requested
reference Type: AbstractFrame
Frame
Reference coordinate system relative to which the posi-
tion information is requested. If no reference coordinate
system is specified, the position information refers to the
world coordinate system.
translatory- Type: vector (com.kuka.roboticsAPI.geometricModel.math)
Diff
Translational setpoint/actual value difference in the X, Y,
Z directions (type: double, unit: mm)
The offset values for each degree of freedom can be re-
quested individually with the “get” methods of the Vector
class.
(>>> 16.4 "Requesting individual values of a vector"
Page 415)
rotatoryDiff Type: rotation (com.kuka.roboticsAPI.geometricMo-
del.math)
Setpoint/actual value difference of the axis angles A, B,
C (type: double, unit: rad)
The offset values for each degree of freedom can be re-
quested individually with the “get” methods of the Rota-
tion class - getAlphaRad(), getBetaRad, getGammaRad().
Example
tool.attachTo(robot.getFlange());
// ...
PositionInformation posInf =
robot.getPositionInformation(tool.getFrame("/TCP"),
getApplicationData().getFrame("/Base"));
Programming
double rotOffsetofC = rotDiff.getGammaRad();
Description
Syntax
robot.setHomePosition(home);
Element Description
robot Type: Robot
Name of the robot to which the new HOME position re-
fers
home Type: JointPosition; unit: rad
1st option: transfer the axis position of the robot in the
new HOME position.
Type: AbstractFrame
2nd option: transfer a frame as the new HOME position.
Note: The frame must contain all redundancy information
so that the axis positions of the robot in the HOME posi-
tion are unambiguous. This is the case with a taught
frame, for example.
Examples
@Inject
private LBR robot;
// ...
JointPosition newHome = new JointPosition(0.0, 0.0, 0.0,
Math.toRadians(90), 0.0, 0.0, 0.0);
robot.setHomePosition(newHome);
To transfer the taught frame as the HOME position and move to it with
ptpHome():
@Inject
private LBR robot;
// ...
ObjectFrame newHome = getApplicationData().getFrame("/
Homepos");
robot.setHomePosition(newHome);
robot.moveAsync(ptpHome());
Different system states can be requested from the robot and processed in
the application. The requesting of system states is primarily required when
using a higher-level controller so that the controller can react to changes
in state.
Description
The following methods of the Robot class are available for requesting the
HOME position:
• getHomePosition()
Requests the HOME position currently defined for the robot
• isInHome()
Checks whether the robot is currently in the HOME position
Syntax
Element Description
homePos Type: JointPosition
Variable for the return value of getHomePosition(). The
return value contains axis angles of the requested HOME
position.
robot Type: robot
Name of the robot from which the HOME position is re-
quested
result Type: boolean
Variable for the return value of isInHome(). The return
value is true when the robot is in the HOME position.
Programming
Example
As long as the robot is not yet in the HOME position, a certain statement
block is to be executed.
@Inject
private LBR robot;
// ...
while (! robot.isInHome()) {
//do something
}
Description
Syntax
Element Description
robot Type: Robot
Name of the robot whose mastering state is requested
result Type: Boolean
Variable for the return value
Description
If the check returns the value “true”, this does not necessarily mean that
the brakes are open and that the robot is under active servo control.
Syntax
Element Description
robot Type: Robot
Name of the robot which is checked as to whether it is
ready for motion
result Type: boolean
Variable for the return value
Description
Syntax
kuka_Sunrise_Cabinet.addControllerListener(new
IControllerStateListener() {
...
@Override
public void onIsReadyToMoveChanged(Device device,
boolean isReadyToMove) {
// Reaction to change
}
...
});
Element Description
kuka_Sun- Type: Controller
rise_Cabinet
Controller attribute of the robot application (= name of
the robot controller in the application)
Description
Programming
the robot is active. The method belongs to the Robot class.
The request does not provide any information as to whether the robot is
currently in motion:
• If the request returns the value “false” (no motion command active),
this does not necessarily mean that the robot is stationary. For exam-
ple, robot activity may be checked directly after a synchronous motion
command with a break condition. If the break condition occurs, the
check supplies the value “false” if the robot is braked and moving.
• If the request returns the value “true” (motion command active), this
does not necessarily mean that the robot is moving. For example, the
request returns the value “true” if a robot executes the motion com-
mand positionHold(…) and is stationary.
Syntax
Element Description
robot Type: Robot
Identifier for the robot whose activity is checked
result Type: boolean
Variable for the return value
Description
The state of the following safety signals can be requested and evaluated
in an application:
• Active operating mode
• Enabling
• Local EMERGENCY STOP
• External EMERGENCY STOP
• “Operator safety” signal
• Stop request (safety stop)
• Referencing state of position and axis torque sensors
The state of the different safety signals is first requested via the method
getSafetyState() and grouped in an object of type ISafetyState.
From this object, the states of individual safety signals can then be re-
quested. The interface ISafetyState contains the methods required for this.
Syntax
Element Description
currentState Type: ISafetyState
Variable for the return value. The return value contains
the state of the safety signals at the time of requesting
with getSafetyState().
Note: This does not apply to the referencing states. Ref-
erencing states are not requested until the corresponding
methods of the ISafetyState object are called.
kinematics Type: MovableDevice
Kinematic system for which the state of the safety
signals is requested
Precondition
The EMERGENCY STOP signal and the “Operator Safety” signal can only
be evaluated if the following conditions are met in the safety configuration:
• The selected category matches the safety function:
‒ Category Local EMERGENCY STOP for local EMERGENCY
STOP
‒ Category External EMERGENCY STOP for external EMERGENCY
STOP
‒ Category Operator safety for operator safety
• The configured reaction is a safety stop (no output).
Overview
Programming
Method Description
getEnablingDeviceState() Return value type: Enum of type EnablingDeviceState
Checks whether an enabling switch is pressed.
Example
The system checks whether a safety stop is activated. If this is the case,
the operator safety is then checked. If this is violated, a message is dis-
played on the smartHMI. For output purposes, a logger object has been
integrated with dependency injection.
if (safetyStop != SafetyStopType.NOSTOP) {
OperatorSafety operatorSafety = safetyState.getOperatorSafetyState();
if (operatorSafety == OperatorSafety.OPERATOR_SAFETY_OPEN) {
logger.warn("The safety gate is open!");
}
}
Description
Sensitive robots have referenceable position and axis torque sensors. The
referencing state of these sensors can be requested, e.g. to check wheth-
er referencing needs to be carried out again. If a robot has no reference-
able sensors, the request returns the value “false”.
Method Description
isAxisGMSReferenced(…) Return value type: boolean
Checks whether the axis torque sensor of a specific robot ax-
is is referenced. The axis to be checked is transferred as a
parameter (type: JointEnum).
Example
boolean isReferencedJ1 =
robot.getSafetyState().isAxisPositionReferenced(JointEnum.J1)
;
Programming
Description
Syntax
kuka_Sunrise_Cabinet.addControllerListener(new
ISunriseControllerStateListener() {
// ...
@Override
public void onSafetyStateChanged(Device device,
SunriseSafetyState safetyState) {
// Reaction to change in state
}
});
Element Description
kuka_Sun- Type: Controller
rise_Cabinet
Controller attribute of the robot application (= name of
the robot controller in the application)
Example
If the state of a safety signal changes, the operator safety is checked via
the method onSafetyStateChanged()(…). If this is violated, a message is
displayed on the smartHMI. For output purposes, a logger object has
been integrated with dependency injection.
kuka_Sunrise_Cabinet.addControllerListener(new
ISunriseControllerStateListener() {
// ...
@Override
public void onSafetyStateChanged(Device device, SunriseSafetyState
safetyState) {
OperatorSafety operatorSafety = safetyState.getOperatorSafetyState();
if (operatorSafety == OperatorSafety.OPERATOR_SAFETY_OPEN) {
logger.warn("The saftey gate is open!");
}
}
});
Description
The program run mode can be changed and requested via the methods
setExecutionMode(…) and getExecutionMode() of the SunriseExecution-
Service. The SunriseExecutionService itself is requested by the Controller.
Preparation
Syntax
Element Description
service: Type: SunriseExecutionService
Variable for the return value (contains the SunriseExecu-
tionService reequested by the Controller)
newMode Type: Enum of type ExecutionMode
New program run mode
Example
@Inject
private Controller controller;
private SunriseExecutionService serv;
// ...
@Override
public void initialize() {
// ...
serv = (SunriseExecutionService)controller
.getExecutionService();
// ...
}
The system first switches to Step mode and then back to standard mode.
Programming
@Override
public void run() {
// ...
serv.setExecutionMode(ExecutionMode.Step);
// ...
serv.setExecutionMode(ExecutionMode.Continuous);
// ...
}
@Override
public void run() {
// ...
ExecutionMode currentMode;
currentMode = serv.getExecutionMode();
// ...
}
Overview
Method Description
setApplicationOverride(…) Sets the application override to the specified value (type: dou-
ble)
• 0 … 1
clipApplicationOverride(…) Reduces the application override to the specified value (type:
double)
• 0 … 1
If a value is specified that is higher than the value currently
programmed for the application override, the statement cli-
pApplicationOverride(…) is ignored.
clipManualOverride(…) Reduces the manual override to the specified value (type:
double)
• 0 … 1
If a value is specified that is higher than the currently pro-
grammed manual override, the statement clipManualOverr-
ide(…) is ignored.
Example
getApplicationControl().setApplicationOverride(0.5);
// ...
double actualOverride =
getApplicationControl().getEffectiveOverride();
Description
Syntax
Defining a listener:
IApplicationOverrideListener overrideListener =
new IApplicationOverrideListener(){
@Override
public void onOverrideChanged(double effectiveOverride,
double manualOverride, double applicationOverride) {
// Reaction to override change
};
};
Registering a listener:
getApplicationControl().
addOverrideListener(overrideListener);
Removing a listener:
getApplicationControl().
removeOverrideListener(overrideListener);
Programming
Explanation of the syntax
Element Description
override Type: IApplicationOverrideListener
Listener
Name of the listener
Categories
The various condition types can be subdivided into the following catego-
ries:
• Sensor-related conditions
• Path-related conditions
• Distance-related conditions
• I/O-related conditions
Sensor-related conditions:
Data type Description
JointTorqueCondition The axis torque condition is met if the torque measured in an
axis lies outside of a defined range of values.
(>>> 16.19.2 "Axis torque condition" Page 474)
ForceCondition The force condition is met if the Cartesian force exerted on a
frame below the robot flange (e.g. at the TCP) exceeds a de-
fined magnitude.
(>>> 16.19.3 "Force condition" Page 475)
ForceComponentCondition The force component condition is met if the Cartesian force
exerted along an axis of a frame below the robot flange (e.g.
along an axis of the TCP) exceeds a defined range.
(>>> 16.19.4 "Force component condition" Page 481)
Areas of application
• Abortion of motions
A motion is terminated as soon as a specific event occurs. The event
occurs if the condition already has the state TRUE before the start of
the motion or if it switches to the state TRUE during the motion.
(>>> 16.20 "Break conditions for motion commands" Page 495)
Programming
• Path-related switching actions (trigger)
An action is triggered as soon as a specific event occurs. The event
occurs if the condition already has the state TRUE before the start of
the motion or if it switches to the state TRUE during the motion.
(>>> 16.21 "Path-related switching actions (trigger)" Page 499)
• Monitoring of processes
The state of a condition is checked cyclically using a listener. If the
state of the condition changes, it is possible to react.
(>>> 16.22 "Monitoring of processes" Page 503)
• Blocking wait for condition
An application is stopped until a certain condition is met or a certain
wait time has expired.
(>>> 16.23 "Blocking wait for condition" Page 508)
Operators
Operator Description/syntax
NOT Inversion of the calling ICondition object
ICondition invert();
XOR EITHER/OR operation linking the calling ICondition object
with a further condition
ICondition xor(ICondition other);
other: further condition
AND AND operation linking the calling ICondition object with
one or more additional conditions
ICondition and(ICondition other1, ICondition
other2, …);
other1, other2, …: further conditions
OR OR operation linking the calling ICondition object with
one or more additional conditions
ICondition or(ICondition other1, ICondition
other2, …);
other1, other2, …: further conditions
Example
JointTorqueCondition condA = …;
JointTorqueCondition condB = …;
JointTorqueCondition condC = …;
JointTorqueCondition condD = …;
// NOT A
combi1 = condA.invert();
// A AND B AND C
combi2 = condA.and(condB, condC);
// (A OR B) AND C
combi3 = condA.or(condB).and(condC);
// (A OR B) AND (C OR D)
combi4 = condA.or(condB).and(condC.or(condD));
Description
The axis torque condition is used to check whether the external torque de-
termined in an axis lies outside of a defined range of values.
(>>> 16.12 "Requesting axis torques" Page 449)
The load data must be specified correctly during programming. Only
then is the condition usefully applicable.
Constructor syntax
Element Description
joint Axis whose torque value is to be checked
minTorque Lower limit value for the axis torque (unit: Nm)
The condition is met if the torque is less than or equal to
minTorque.
maxTorque Upper limit value for the axis torque (unit: Nm)
The condition is met if the torque is greater than or equal
to minTorque.
The following must apply when determining the upper and lower limit val-
ues for the torque: minTorque ≤ maxTorque.
Example
JointTorqueCondition torqueCondJ3 =
new JointTorqueCondition(JointEnum.J3, -2.5, 4.0);
Programming
16.19.3 Force condition
Description
The force condition can be used to check whether a Cartesian force exer-
ted on a frame below the robot flange exceeds a defined limit value.
For example, it is possible to react to the force generated when the robot
presses on a surface using a tool mounted on the flange. For the force
condition, the projections of the force vector exerted on a frame below the
flange are considered. The position of this frame is defined by the point of
application of the force (here the tool tip). The orientation of the frame
should correspond to the orientation of the surface.
• Normal force N:
The normal force is the projection of the force exerted on the surface
normal (= vector which is perpendicular to the surface). This results in
the part of the force exerted vertically on the surface. For example,
pressure is exerted via the normal force in order to fit a component.
• Shear force S:
The shear force is the projection of the force exerted on the surface.
This results in the part of the force exerted parallel to the surface. The
shear force is generated by friction.
Methods
Description
Syntax
ForceCondition.createSpatialForceCondition(
AbstractFrame measureFrame<, AbstractFrame
orientationFrame>, double threshold<, double tolerance>)
Element Description
measure Frame below the robot flange relative to which the exer-
Frame ted force is determined.
The position of the point of application of the force is de-
fined using this parameter.
orientation Optional. The orientation of the reference system is de-
Frame fined using this parameter.
If the orientationFrame parameter is not specified, meas-
ureFrame defines the orientation of the reference system.
Programming
Element Description
threshold Maximum magnitude of force which may act on the refer-
ence system (unit: N).
• ≥ 0.0
The condition is met if the magnitude of force exerted on
the reference system from any direction exceeds the val-
ue specified here.
tolerance Optional. Maximum permissible inaccuracy of the calcula-
ted values (unit: N).
• > 0.0
Default: 10.0
The condition is met if the inaccuracy of the force calcu-
lation is greater than or equal to the value specified here.
If the parameter is not specified, the default value is au-
tomatically used.
Example
The condition is met as soon as the magnitude of the force acting from
any direction on the TCP of a tool exceeds 30 N.
@Override
public void initialize() {
// ...
gripper.attachTo(robot.getFlange());
// ...
}
@Override
public void run() {
// ...
ForceCondition spatialForce_tcp = ForceCondition
.createSpatialForceCondition(
gripper.getFrame("/TCP"),
30.0);
// ...
}
}
Description
A condition for the normal force can be defined via the static method cre-
ateNormalForceCondition(…). The component of the force exerted along a
definable axis of a frame below the flange (e.g. along an axis of the TCP)
is considered here. This axis is generally defined so that it is perpendicu-
lar to the surface on which the force is exerted (surface normal).
Syntax
ForceCondition.createNormalForceCondition(AbstractFrame
measureFrame<, AbstractFrame orientationFrame>,
CoordinateAxis direction, double threshold<,
double tolerance>)
Element Description
measure Frame below the robot flange relative to which the exer-
Frame ted force is determined.
The position of the point of application of the force is de-
fined using this parameter.
orientation Optional. The orientation of the reference system is de-
Frame fined using this parameter.
If the orientationFrame parameter is not specified, meas-
ureFrame defines the orientation of the reference system.
direction Coordinate axis of the reference system.
The force component acting on the axis specified here is
checked with the condition.
• CoordinateAxis.X
• CoordinateAxis.Y
• CoordinateAxis.Z
threshold Maximum magnitude of force which may act along the
axis of the reference system (unit: N).
• ≥ 0.0
The condition is met if the magnitude of force exceeds
the value specified here.
tolerance Optional. Maximum permissible inaccuracy of the calcula-
ted values (unit: N).
• > 0.0
Default: 10.0
The condition is met if the inaccuracy of the force calcu-
lation is greater than or equal to the value specified here.
If the parameter is not specified, the default value is au-
tomatically used.
Example
Programming
private Tool gripper;
// ...
@Override
public void initialize() {
// ...
gripper.attachTo(robot.getFlange());
// ...
}
@Override
public void run() {
// ...
ForceCondition normalForce_z = ForceCondition
.createNormalForceCondition(
gripper.getFrame("/TCP"),
getFrame("/Table/Edge/Tabletop"),
CoordinateAxis.Z,
45.0,
8.0);
// ...
}
}
Description
A condition for the shear force can be defined via the static method crea-
teShearForceCondition(…). The component of the force acting parallel to
a plane is considered here. The position of the plane is determined by
specifying the axis which is vertical to the plane.
Syntax
ForceCondition.createShearForceCondition(AbstractFrame
measureFrame<, AbstractFrame orientationFrame>,
CoordinateAxis normalDirection, double threshold<,
double tolerance>)
Element Description
measure Frame below the robot flange relative to which the exer-
Frame ted force is determined.
The position of the point of application of the force is de-
fined using this parameter.
orientation Optional. The orientation of the reference system is de-
Frame fined using this parameter.
If the orientationFrame parameter is not specified, meas-
ureFrame defines the orientation of the reference system.
Element Description
normal Coordinate axis of the reference system.
Direction
The axis specified here defines the surface normal of a
plane. The force component acting parallel to this plane
is checked.
• CoordinateAxis.X
• CoordinateAxis.Y
• CoordinateAxis.Z
threshold Maximum magnitude of force which may be exerted par-
allel to the reference system plane defined by its surface
normal (unit: N).
• ≥ 0.0
The condition is met if the magnitude of force exceeds
the value specified here.
tolerance Optional. Maximum permissible inaccuracy of the calcula-
ted values (unit: N).
• > 0.0
Default: 10.0
The condition is met if the inaccuracy of the force calcu-
lation is greater than or equal to the value specified here.
If the parameter is not specified, the default value is au-
tomatically used.
Example
@Override
public void initialize() {
// ...
gripper.attachTo(robot.getFlange());
// ...
}
@Override
public void run() {
// ...
Programming
ForceCondition shearForce_xyPlane = ForceCondition
.createShearForceCondition(
gripper.getFrame("/TCP"),
getFrame("/Table/Edge/Tabletop"),
CoordinateAxis.Z,
25.0,
5.0);
// ...
}
}
Description
The force component condition can be used to check whether the Cartesi-
an force exerted on a frame below the robot flange (e.g. at the TCP) in
the X, Y or Z direction exceeds a defined range.
The load data must be specified correctly during programming. Only
then is the condition usefully applicable.
Constructor syntax
Element Description
measure Frame below the robot flange relative to which the exer-
Frame ted force is determined.
The position of the point of application of the force is de-
fined using this parameter.
orientation Optional: The orientation of the reference system is de-
Frame fined using this parameter.
If the orientationFrame parameter is not specified, meas-
ureFrame defines the orientation of the reference system.
coordinate Coordinate axis of the frame relative to which the exerted
Axis force is determined. Defines the direction from which the
acting force is checked.
• CoordinateAxis.X
• CoordinateAxis.Y
• CoordinateAxis.Z
min Lower limit of the range of values for the force exerted
along the coordinate axis of the reference system (unit:
N).
The force component condition is met if the force falls
below the value specified here.
max Upper limit of the range of values for the force exerted
along the coordinate axis of the reference system (unit:
N).
The force component condition is met if the force ex-
ceeds the value specified here.
Note: The upper limit value must be greater than the
lower limit value: max > min.
tolerance Optional: Maximum permissible inaccuracy of the calcula-
ted values.
• > 0.0
Default: 10.0
The force component condition is met if the inaccuracy of
the force calculation is greater than or equal to the value
specified here.
If the parameter is not specified, the default value is au-
tomatically used.
Example
Programming
@Inject
private Tool gripper;
@Inject
@Named("Bolt")
private Workpiece bolt;
// ...
@Override
public void run() {
// ...
bolt.attachTo(gripper.getFrame("/Root"));
ForceComponentCondition assemblyForce_inverted =
new ForceComponentCondition(
bolt.getFrame("/Assembly"),
CoordinateAxis.Z,
20.0,
25.0);
ICondition assemblyForce =
assemblyForce_inverted.invert();
// ...
}
}
Description
1 Power wrench
2 Screw
3 Reference frame, here the tip of the power wrench
The condition for the Cartesian torque can be used to check different pro-
jections of the torque vector acting on the axes of the reference frame:
• Torque MTurn
The torque exerted about an axis arises from the projection of the tor-
que vector on this axis.
• Tilting torque MTilt
The tilting torque arises from the projection of the torque vector on a
plane.
The torque is applied about the longitudinal axis of the power wrench dur-
ing a screw fastening process in order to screw in the screw. If the condi-
tion for the torque is used, it is possible to ensure that the maximum per-
missible values are not exceeded when fastening screws.
The tilting torque arises during a screw fastening process as a result of
undesired tilting of the power wrench about the longitudinal axis, forwards
or to the side. If the condition for the tilting torque is configured, it is pos-
sible to check whether the tilting torque is within an acceptable range of
values.
The load data must be specified correctly during programming. Only
then is the condition usefully applicable.
Methods
Programming
Description
Syntax
CartesianTorqueCondition.createSpatialTorqueCondition(
AbstractFrame measureFrame<, AbstractFrame
orientationFrame>, double threshold<, double tolerance>)
Element Description
measure Frame below the robot flange at which the exerted
Frame torque is determined.
The position of the point of application of the torque is
defined using this parameter.
orientation Optional: The orientation of the reference system is de-
Frame fined using this parameter.
If the orientationFrame parameter is not specified, meas-
ureFrame defines the orientation of the reference system.
threshold Maximum magnitude of the torque which may act on the
reference system (unit: Nm).
• ≥ 0.0
The condition is met if the magnitude of the torque exer-
ted on the reference system from any direction exceeds
the value specified here.
tolerance Optional: Maximum permissible inaccuracy of the calcula-
ted values (unit: Nm).
• > 0.0
Default: 10.0
The condition is met if the inaccuracy of the torque cal-
culation is greater than or equal to the value specified
here.
If the parameter is not specified, the default value is au-
tomatically used.
Description
A condition for the torque can be defined via the static method createTur-
ningTorqueCondition(…). The component of the overall torque applied
about a definable axis of a frame below the flange (e.g. about an axis of
the TCP) is considered here.
Syntax
CartesianTorqueCondition.createTurningTorqueCondition(
AbstractFrame measureFrame<, AbstractFrame
Element Description
measure Frame below the robot flange at which the exerted
Frame torque is determined.
The position of the point of application of the torque is
defined using this parameter.
orientation Optional: This parameter defines the orientation of the
Frame frame relative to which the torque is determined.
If the orientationFrame parameter is not specified, meas-
ureFrame defines the orientation of the reference system.
direction Coordinate axis of the reference system
The component of the overall torque acting on the axis
specified here of the reference system is checked using
this condition.
• CoordinateAxis.X
• CoordinateAxis.Y
• CoordinateAxis.Z
threshold Maximum magnitude of the torque that may be applied to
the axis of the reference system (unit: Nm).
• ≥ 0.0
The condition is met if the magnitude of the torque ex-
ceeds the value specified here.
tolerance Optional: Maximum permissible inaccuracy of the calcula-
ted values (unit: Nm).
• > 0.0
Default: 10.0
The condition is met if the inaccuracy of the torque cal-
culation is greater than or equal to the value specified
here.
If the parameter is not specified, the default value is au-
tomatically used.
Description
A condition for the tilting torque can be defined via the static method cre-
ateTiltingTorqueCondition(…). The component of the overall torque applied
to a plane of the reference system is considered here. The position of the
plane is determined by specifying the axis which is vertical to the plane
(surface normal).
Syntax
CartesianTorqueCondition.createTiltingTorqueCondition(
AbstractFrame measureFrame<, AbstractFrame
orientationFrame>, CoordinateAxis normalDirection,
double threshold<, double tolerance>)
Programming
Explanation of the syntax
Element Description
measure Frame below the robot flange at which the exerted
Frame torque is determined.
The position of the point of application of the torque is
defined using this parameter.
orientation Optional: This parameter defines the orientation of the
Frame frame relative to which the torque is determined.
If the orientationFrame parameter is not specified, meas-
ureFrame defines the orientation of the reference system.
normal Coordinate axis of the reference system
Direction
The axis specified here defines the surface normal of a
plane. The component of the overall torque applied to
the plane is checked.
• CoordinateAxis.X
• CoordinateAxis.Y
• CoordinateAxis.Z
threshold Maximum magnitude of the tilting torque that may be ap-
plied to the plane of the reference system defined by its
surface normal (unit: Nm).
• ≥ 0.0
The condition is met if the magnitude of the torque ex-
ceeds the value specified here.
tolerance Optional: Maximum permissible inaccuracy of the calcula-
ted values (unit: Nm).
• > 0.0
Default: 10.0
The condition is met if the inaccuracy of the torque cal-
culation is greater than or equal to the value specified
here.
If the parameter is not specified, the default value is au-
tomatically used.
Description
The torque component condition can be used to check whether the Carte-
sian torque exerted about the X, Y or Z axis of a frame below the robot
flange (e.g. about an axis of the TCP) is outside a defined range. It is
used for monitoring the Cartesian torque in a specific direction, e.g. for
monitoring screw fastening processes.
The load data must be specified correctly during programming. Only
then is the condition usefully applicable.
Constructor syntax
Element Description
measure Frame below the robot flange relative to which the exer-
Frame ted torque is determined.
The position of the point of application of the torque is
defined using this parameter.
orientation Optional: This parameter defines the orientation of the
Frame frame relative to which the torque is determined.
If the orientationFrame parameter is not specified, meas-
ureFrame defines the orientation of the reference system.
coordinate Coordinate axis of the frame relative to which the exerted
Axis torque is determined. Defines the direction in which the
acting torque is checked.
• CoordinateAxis.X
• CoordinateAxis.Y
• CoordinateAxis.Z
min Lower limit of the range of values for the torque exerted
about the coordinate axis of the reference system (unit:
Nm).
The torque component condition is met if the torque falls
below the value specified here.
Programming
Element Description
max Upper limit of the range of values for the torque exerted
about the coordinate axis of the reference system (unit:
Nm).
The torque component condition is met if the torque ex-
ceeds the value specified here.
Note: The upper limit value must be greater than the
lower limit value: max > min.
tolerance Optional: Maximum permissible inaccuracy of the calcula-
ted values (unit: Nm).
• > 0.0
Default: 10.0
The condition is met if the inaccuracy of the torque cal-
culation is greater than or equal to the value specified
here.
If the parameter is not specified, the default value is au-
tomatically used.
Description
The switching point can be defined by a shift in space and/or time. The
shift can optionally refer to the start or end point of a motion.
If a time offset is defined, a change to the override influences the
switching point. The action linked to a path-related condition is therefore
only triggered with an effective program override of 100% and at the de-
fined switching point in T2 or Automatic modes.
Constructor syntax
Static methods
MotionPathCondition.createFromDistance(
ReferenceType reference, double distance)
Element Description
reference Reference point of the condition (type: Enum Reference-
Type)
Maximum offset
The switching point can only be offset within certain limits. The limits ap-
ply to the entire offset, comprising the shift in space and time.
• Negative offset, at most to the start point of the motion
• Positive offset, at most to the end point of the motion
The following parameterizations may not be used, as they will inevitably
lead to an offset beyond the permissible limits and thus to a runtime error:
Value combination Effect
reference = ReferenceType.START The switching point is before the
start of the motion.
distance < 0
reference = ReferenceType.START
distance = 0
delay < 0
Programming
Value combination Effect
reference = ReferenceType.DEST The switching point is after the
end of the motion.
distance > 0
reference = ReferenceType.DEST
distance = 0
delay > 0
Even if a valid value combination has been used, the switching point can
nevertheless be offset beyond the permissible limits. In these cases, the
response is as follows:
• A condition which is met before the start of the motion triggers the
motion at the start point.
• A condition which is met after the end of the motion is never a trigger.
Example
Description
The distance condition can be used to check whether the Cartesian dis-
tance between 2 frames is less than a defined distance.
• One of the frames must be a movable frame that is located beneath
the robot flange, e.g. a TCP on the tool or the frame of a gripped
workpiece.
• The other frame must be a static frame.
• The movable frame must be linked to the robot flange if the condition
is to be used in a motion command or monitored with a listener.
1 Movable frame
2 Static frame
Constructor syntax
FrameDistanceCondition(AbstractFrame frameA,
AbstractFrame frameB, double distanceThreshold)
Element Description
frameA One of the frames whose distance from another frame is
being checked
frameB One of the frames whose distance from another frame is
being checked
distance Minimum distance between the 2 frames (unit: mm)
Threshold
• > 0.0
The distance condition is met if the distance between the
2 frames is less than the specified minimum distance.
Description
Constructor syntax
FrameDistanceComponentCondition(AbstractFrame frameA,
AbstractFrame frameB, double distanceThreshold,
AbstractFrame orientationFrame,
EnumSet<CoordinateAxis> coordinateAxes)
Element Description
frameA One of the frames whose distance from another frame is
being checked
frameB One of the frames whose distance from another frame is
being checked
Programming
Element Description
distance Minimum distance between the 2 frames (unit: mm)
• > 0.0
The distance component condition is met if the distance
between the 2 frames is less than the specified minimum
distance.
orientation- Frame which specifies the orientation of the distance vec-
Frame tor
Note: The frame must be a static frame and must not be
connected to the robot flange.
coordinate Coordinate axes of the orientation frame to be consid-
Axes ered
• CoordinateAxis.X
• CoordinateAxis.Y
• CoordinateAxis.Z
At least one coordinate axis must be specified.
Description
The Boolean signal condition can be used to check Boolean digital inputs
or outputs. The condition is met if a Boolean input or output has a specific
state.
Boolean signal conditions are of data type BooleanIOCondition.
Constructor syntax
BooleanIOCondition(AbstractIO booleanSignal,
boolean booleanIOValue)
Element Description
boolean Boolean input/output signal that is checked
Signal
boolean State of the input/output signal with which the condition
IOValue is met
• true, false
Example
@Override
public void run() {
// ...
AbstractIO switch1 = switches.getInput("Switch1");
BooleanIOCondition switch1_active =
new BooleanIOCondition(switch1, true);
}
}
Description
The value of a digital or analog input or output can be checked with the
condition for the range of values of a signal. The condition is met if the
value of the signal lies within a defined range.
Conditions for ranges of values are of data type ForceComponentCondi-
tion.
Constructor syntax
Element Description
signal Analog or digital input/output signal that is checked
minValue Lower limit of the range of values in which the condition
is met
The value returned by the signal must be greater than or
equal to minValue.
maxValue Upper limit of the range of values in which the condition
is met
The value returned by the signal must be less than or
equal to maxValue.
Example
A temperature sensor returns an analog input signal whose value can lie
in the range between 0 °C and 2000 °C. As soon as a threshold of 35 °C
is exceeded, a condition for monitoring the sensor signal should be met.
@Override
public void run() {
// ...
AbstractIO temperatureSensor =
sensors.getInput("TemperatureSensor2");
IORangeCondition tempHigher35 =
new IORangeCondition(temperatureSensor, 35.0, 2000.0);
}
Programming
}
For certain processes a planned motion must not be fully executed but
rather terminated when definable events occur. For example, in joining
processes, the robot must stop if a force threshold is reached.
Description
Syntax
Element Description
motion Type: Motion
Motion for which a break condition is to be defined
Example:
• ptp(getApplicationData().getFrame("/P1"))
condition Type: ICondition
Parameterized ICondition object which describes a break
condition
Example
JointTorqueCondition cond_1 =
new JointTorqueCondition(JointEnum.J3, -12.0, 0.0);
robot.move(lin(getApplicationData().getFrame("/P10"))
.breakWhen(cond_1));
Description
Syntax
Element Description
motion Motion instruction
Example:
• lbr.move(ptp(getApplicationData().getFrame("/P1"))
motionCmd Type: IMotionContainer
Temporary memory for the motion command
firedCondIn- Type: IFiredConditionInfo
fo
Information about termination of the motion
Overview
Programming
Method Description
getFiredCondition() Return value type: ICondition
Requests the condition which caused a motion to be termina-
ted
getPositionInfo() Return value type: PositionInformation
Requests for robot position valid at the time when the break
condition was triggered.
getStoppedMotion() Return value type: IMotion
Requests the segment of a spline block or the motion of a
MotionBatch which was terminated
Description
Syntax
Element Description
firedCondition Type: ICondition
Variable for the return value. The variable contains
the condition which caused the motion to be termina-
ted.
firedCondInfo Type: IFiredConditionInfo
Information about termination of the motion
Example
ICondition cond1;
ICondition cond2;
cond1 = new ...;
cond2 = new ...;
The break conditions “cond1” and “cond2” are transferred to a LIN motion
with breakWhen(…). The “motionCmd” variable of type IMotionContainer
can be used to evaluate the motion command.
IMotionContainer motionCmd =
robot.move(lin(getApplicationData().getFrame("P10"))
.breakWhen(cond1)
.breakWhen(cond2));
has been terminated. The system only requests the triggered break condi-
Programming
IFiredConditionInfo firedInfo =
motionCmd.getFiredConditionInfo();
if (firedInfo != null) {
ICondition firedCond = firedInfo.getFiredCondition();
if (firedCond.equals(cond1)) {
// ...
}
// ...
}
Description
The robot position at the time when the break condition was triggered can
be requested via the method getPositionInfo().
The following position information can be accessed via the return value of
type PositionInformation.
• Axis-specific actual position
• Cartesian actual position
• Axis-specific setpoint position
• Cartesian setpoint position
• Setpoint/actual value difference (translational)
• Setpoint/actual value difference (rotational)
Syntax
PositionInformation firedPosInfo =
firedCondInfo.getPositionInfo();
Element Description
firedPosInfo Type: PositionInformation
Variable for the return value. The return value contains
the position information at the time when the break con-
dition was triggered.
firedCondIn- Type: IFiredConditionInfo
fo
Information about termination of the motion
Example
The Cartesian actual position of the robot at the time when the break con-
dition was triggered is requested via the method getCurrentCartesianPosi-
tion().
PositionInformation firedPosInfo =
firedInfo.getPositionInfo();
Frame firedCurrPos =
firedPosInfo.getCurrentCartesianPosition();
Programming
Description
Syntax
Element Description
stoppedMotion Type: IMotion
Variable for the return value. The variable contains
the terminated motion.
firedCondInfo Type: IFiredConditionInfo
Information about termination of the motion
Example
IFiredConditionInfo firedInfoSpline =
splineCont.getFiredConditionInfo();
if (firedInfoSpline != null) {
IMotion stoppedMotion = firedInfoSpline.getStoppedMotion();
// ...
}
Description
Syntax
motion.triggerWhen(condition, action);
Element Description
motion Type: Motion
Motion for which a trigger must be defined
Example:
• ptp(getApplicationData().getFrame("/P1"))
condition Type: ICondition
Parameterized ICondition object which describes the con-
dition for the trigger
action Type: ITriggerAction
ITriggerAction object which describes the action to be
executed
(>>> 16.21.2 "Programming a path-related switching ac-
tion" Page 500)
Description
Programming
used for programming actions. The interface has the method onTrigger-
Fired(…). The action to be carried out when the trigger is activated can
be programmed in the body of the method onTriggerFired(…).
An ICallbackAction object can be used in any number of triggers.
The onTriggerFired(…) method is not called in real time. It is therefore
not possible to guarantee specific time behavior. This can lead to de-
layed execution of the action.
Syntax
Element Description
action Type: ICallbackAction
ICallbackAction object which describes the action trans-
ferred with triggerWhen(…)
onTrigger Method whose execution is fired by the trigger
Fired(…)
trigger Type: IFiredTriggerInfo
Informa-
Contains information about the firing trigger
tion
(>>> 16.21.3 "Evaluating trigger information" Page 502)
Example
During motion to point “P1”, output “DO1” is always switched at the mo-
ment when input “DI1” is TRUE.
Overview
Programming
Method Description
getCurrentJointPosition() Return value type: JointPosition
Requests the axis-specific actual position at triggering time
Example 1
When the trigger is fired, the triggering time and condition are displayed
on the smartHMI. For output purposes, a logger object has been integra-
ted with dependency injection.
robot.move(ptp(getApplicationData().getFrame("/P1"))
.triggerWhen(in1, ica));
Example 2
The axis-specific and Cartesian robot position at triggering time are re-
quested.
robot.move(ptp(getApplicationData().getFrame("/P1"))
.triggerWhen(in1, ica));
ther events occur. Once the handling routine has been completed, these
events are only transferred to the listener and handled if the appropriate
notification type has been defined.
• onRisingEdge(…)
IFallingEdgeListener Notification when the monitored condition is no longer met (falling
edge):
• onFallingEdge(…)
IAnyEdgeListener Notification for every change in state of the condition (rising or falling
edge):
• onAnyEdge(…)
Overview
Programming
16.22.2 Creating a listener object to monitor the condition
Description
The syntax of a listener object is described here using the listener IA-
nyEdgeListener as an example. The listener method onAnyEdge(…) is au-
tomatically declared when the object is created. The method has input pa-
rameters containing information about the event that triggered execution of
the method. This information can be requested and evaluated.
The listener objects of the other listener types are created in the same
way and are structured analogously.
Syntax
Element Description
condListener Type: IAnyEdgeListener
Name of the listener object
condition Type: ConditionObserver
Observer
Object notified by the listener
time Type: Date
Date and time the listener was notified
missed Type: int
Events
Number of changes in state which have occurred but not
been handled.
Possible causes of non-handled events:
Description
Syntax
ConditionObserver myObserver =
getObserverManager().createAndEnableConditionObserver
(condition, notificationType, listener)
Element Description
myObserver Type: ConditionObserver
Object which monitors the defined condition
condition Type: ICondition
Condition which is monitored
notification Type: Enum of type NotificationType
Type
Notification type
Defines the events at which the listener is to be notified
in order to execute the desired handling routine.
(>>> "NotificationType" Page 506)
listener Type: IRisingEdgeListener, IFallingEdgeListener or IA-
nyEdgeListener
Listener object which is registered
NotificationType
Programming
Value Description
EdgesOnly The listener is only notified in the event of an edge
change (according to the listener type used).
OnEnable The listener is notified in the event of an edge
change (according to the listener type used).
In addition, the state of the monitored condition is
checked upon activation of the listener. Depending on
the listener type, the listener is notified when the fol-
lowing events occur:
Description
Syntax
Element Description
myObserver Type: ConditionObserver
Object which monitors the defined condition
collisionObserver.enable();
Description
Syntax
Programming
Explanation of the syntax
Element Description
condition Type: ICondition
Condition which is waited for
If the condition is already met when waitFor(…) is called,
the application is immediately resumed.
timeout Type: long
Maximum wait time
If the condition of the defined wait time does not occur,
the application is also resumed without the occurrence of
the condition.
timeUnit Type: Enum of type TimeUnit
Unit of the specified wait time
The Enum TimeUnit is an integral part of the standard
Java library.
result Type: boolean
Variable for the return value of waitFor(…). The return
value is true if the condition occurs within the specified
wait time.
Note: If no wait time is defined, waitFor(…) does not
supply a return value.
Example
A wait for a boolean input signal is required in the application. The appli-
cation is to be blocked for a maximum of 30 seconds. If the input signal is
not supplied within this time, a defined handling routine is then to be exe-
cuted.
@Override
public void run() {
// ...
Input input = inputs.getInput ("Input");
BooleanIOCondition inputCondition =
new BooleanIOCondition(input, true);
if (!result) {
//do something
}
else {
//continue program
}
}
Description
Constructor syntax
Element Description
fileName File name (with extension) under which the recorded
data are saved
Example: "Recording_1.log"
timeout Recording duration
Programming
Element Description
timeUnit Time unit for the recording duration
Example: TimeUnit.SECONDS
The Enum TimeUnit is an integral part of the standard
Java library.
sampleRate Recording rate (unit: ms)
• ≥ 1
Default: 1
Example 1
Example 2
Using dot operators and the corresponding “add” method, the data to be
recorded are added to the DataRecorder object created for this purpose.
The simultaneous recording of various data is possible.
Overview
Method Description
addCartesianForce(…) Return value type: DataRecorder
Recording of the Cartesian forces along the X, Y and Z axes
of the frame which is transferred as a parameter (unit: N).
A second frame can be transferred as a parameter in order to
define the orientation for the force measurement. If no sepa-
rate frame is specified for the orientation, null must be
transferred.
addCartesianTorque(…) Return value type: DataRecorder
Recording of the Cartesian torques along the X, Y and Z ax-
es of the frame transferred as a parameter (unit: Nm).
A second frame can be transferred as a parameter in order to
define the orientation for the torque measurement. If no sepa-
rate frame is specified for the orientation, null must be
transferred.
Parameters:
• AbstractFrame measureFrame
Frame attached to the robot flange, e.g. the TCP of a
tool. Defines the position of the measurement point.
• AbstractFrame orientationFrame
Defines the orientation of the measurement point.
Note: Both parameters must always be transferred together.
The orientation may be null.
addCommandedJointPosi- Return value type: DataRecorder
tion(…)
Recording of the axis-specific setpoint position of the robot
which is transferred as a parameter (type: robot). As a sec-
ond parameter, the unit in which the axis angles are recorded
must be transferred (Enum of type: AngleUnit).
addCurrentJointPosition(…) Return value type: DataRecorder
Recording of the axis-specific actual position of the robot
which is transferred as a parameter (type: Robot). As a sec-
ond parameter, the unit in which the axis angles are recorded
must be transferred (Enum of type: AngleUnit).
Parameters:
• Robot robot
• AngleUnit angleUnit
‒ AngleUnit.Degree: Axis angle in degrees
‒ AngleUnit.Radian: Axis angle in rad
addCommandedCartesianPo- Return value type: DataRecorder
sitionXYZ(…)
Recording of the Cartesian setpoint position (translational sec-
tion)
The measurement point and reference coordinate system rel-
ative to which the position is recorded are transferred as pa-
rameters.
Programming
Method Description
addCurrentCartesianPosition- Return value type: DataRecorder
XYZ(…)
Recording of the Cartesian actual position (translational sec-
tion)
The measurement point and reference coordinate system rel-
ative to which the position is recorded are transferred as pa-
rameters.
Parameters:
• AbstractFrame measureFrame
Frame attached to the robot flange, e.g. the TCP of a
tool. Defines the position of the measurement point.
• AbstractFrame referenceFrame
Defines the reference coordinate system.
Note: Both parameters must always be transferred together.
None of the parameters may be null.
Example
@Override
public void run() {
// ...
gripper.attachTo(robot.getFlange());
// ...
DataRecorder rec = new DataRecorder();
rec.addInternalJointTorque(robot);
rec.addCartesianForce(gripper.getFrame("TCP"),
getApplicationData().getFrame("/Base"));
// ...
}
}
Example 1
Data recording is to start when the robot has carried out the approach
motion to a pre-position. The DataRecorder object is activated before the
pre-position is addressed so as to reduce the delay when starting the re-
cording.
@Override
public void run() {
// ...
DataRecorder rec = new DataRecorder();
// ...
rec.enable();
// ...
robot.move(lin(getApplicationData()
.getFrame("/PrePosition")));
rec.startRecording();
// ...
}
}
Example 2
Programming
private LBR robot;
// ...
@Override
public void run() {
// ...
DataRecorder rec = new DataRecorder();
// ...
StartRecordingAction startAct =
new StartRecordingAction(rec);
MotionPathCondition startCond = new MotionPathCondition(
ReferenceType.START, 0.0, 2000);
robot.move(lin(getApplicationData()
.getFrame("/Destination"))
.triggerWhen(startCond, startAct));
// ...
}
}
Overview
Method Description
isEnabled() Return value type: Boolean
The system checks whether the DataRecorder object is activated (=
true).
isRecording() Return value type: Boolean
The system checks whether data recording is running (= true).
isFileAvailable() Return value type: Boolean
The system checks whether the file with the recorded data is already
saved on the robot controller and whether it is available for evaluation
(= true).
awaitFileAvailable(…) Return value type: Boolean
Blocks the calling application until the defined blocking duration has
expired or until the file with the recorded data is saved on the robot
controller and is available for evaluation (= true).
The blocking statement returns the value “false” if the file is not avail-
able within the maximum blocking duration.
Syntax:
@Override
public void run() {
// ...
gripper.attachTo(robot.getFlange());
// ...
DataRecorder rec = new DataRecorder();
rec.setFileName("Recording.log");
rec.setSampleRate(10);
Programming
rec.addExternalJointTorque(robot);
rec.addCartesianForce(gripper.getFrame("/TCP"), null);
StartRecordingAction startAction =
new StartRecordingAction(rec);
ForceCondition startCondition = ForceCondition
.createSpatialForceCondition(
gripper.getFrame("/TCP"), 20.0);
robot.move(ptp(getApplicationData()
.getFrame("/StartPosition")));
robot.move(lin(getApplicationData()
.getFrame("/MountingPosition"))
.triggerWhen(startCondition, startAction));
robot.move(lin(getApplicationData()
.getFrame("/DonePosition")));
rec.stopRecording();
if (rec.awaitFileEnable(5, TimeUnit.SECONDS)){
// Evaluation of the file if available
}
// ...
}
}
Description
Functions can be freely assigned to the 4 user keys on the smartPAD. For
this purpose, various user key bars can be defined in the source code of
the robot or background applications.
The user keys are assigned functions using the user key bar. One user
key on the bar must be assigned a function, but it is not necessary for all
of the keys to be assigned. In addition, graphical or text elements illustrat-
ing the function of each user key are located on the side panel of the
smartHMI screen next to the user keys.
user key bar can be used for controlling a gripper, and in another bar the
Programming
Overview
The following steps are required in order to program a user key bar:
Step Description
1 Create a user key bar.
(>>> 16.25.1 "Creating a user key bar" Page 518)
2 Add user keys to the bar (at least one).
(>>> 16.25.2 "Adding user keys to the bar" Page 519)
3 Define the function which is to be executed if the user key
is actuated.
(>>> 16.25.3 "Defining the function of a user key"
Page 521)
4 Assign at least one graphical or text element to the area
along the left side panel of the smartHMI next to the user
key.
(>>> 16.25.4 "Labeling and graphical assignment of the
user key bar" Page 523)
5 For user keys which trigger functions associated with a risk:
Define the warning message to be displayed when the user
key is actuated. The message appears before the function
can be triggered.
(>>> 16.25.5 "Identifying safety-critical user keys"
Page 526)
6 Publish a user key bar.
(>>> 16.25.6 "Publishing a user key bar" Page 527)
Description
The following methods are required in order to create a user key bar:
• getApplicationUI()
This method is used to access the interface to the smartHMI graphical
user interface from a robot application or a background application.
Return value type: ITaskUI
• createUserKeyBar(…)
This method is used to create the user key bar. It is part of the ITas-
kUI interface.
Syntax
IUserKeyBar keybar =
getApplicationUI().createUserKeyBar("name");
Programming
Explanation of the syntax
Element Description
keybar Type: IUserKeyBar
Name of the user key bar created with createUserKey-
Bar(…)
name Type: String
Name under which the user key bar is displayed on the
smartHMI (>>> Fig. 6-14)
The number of characters which can be displayed is limi-
ted.
Example
IUserKeyBar gripperBar =
getApplicationUI().createUserKeyBar("Gripper");
Description
A newly created user key bar does not have any user keys to start with.
The user keys to be used must be added to the bar.
The IUserKeyBar interface provides the following methods for this pur-
pose:
• addUserKey(…)
Adds a single user key to the bar.
• addDoubleUserKey(…)
Combines 2 neighboring user keys to a double key and adds this to
the bar. The corresponding areas on the side panel of the smartHMI
screen are also combined into a larger area.
When adding a user key to a bar, the user defines the function to be exe-
cuted when the user key is actuated (e.g. opening a gripper, changing a
parameter, etc.). Depending on the programming, both pressing and re-
leasing the user key can be interpreted as actuation and linked to a func-
tion.
A user key bar must have at least one user key. Each user key is as-
signed a unique number. This number is transferred when a user key is
added.
Syntax
Element Description
keybar Type: IUserKeyBar
Name of the user key bar to which a user key is added
key Type: IUserKey
Name of the single key added to the bar
doubleKey Type: IUserKey
Name of the double key added to the bar
slot Type: int
Number of the user key which is added.
Single keys:
• 0 … 3
Double keys:
• 0, 2
listener Type: IUserKeyListener
Name of the listener used to define the function to be
executed when the user key is actuated
(>>> 16.25.3 "Defining the function of a user key"
Page 521)
Programming
Element Description
ignore Type: Boolean
Events
Defines whether there is a reaction if the user key is re-
actuated while the key function is being executed
Example
The user keys are assigned the following functions for controlling a grip-
per:
• The top user key is to be used to open the gripper, and the key below
it is to close the gripper.
• The two lower user keys are combined in a double key. This is to be
used to increase and decrease the velocity of the gripper.
• The functions for opening and closing the gripper are not to be called
again until the respective function has ended.
IUserKeyBar gripperBar =
getApplicationUI().createUserKeyBar("Gripper");
Description
Syntax
@Override
Programming
Element Description
listener Type: IUserKeyListener
Name of the listener object
Input parameters of the listener method onKeyEvent(…):
key Type: IUserKey
User key which has been actuated
The parameter can be used to directly access the user
key, for example to change the corresponding labelling or
graphical assignment. In addition, it is possible to deter-
mine which user key has been actuated, especially when
the same reaction is used for different user keys.
event Type: Enum of type UserKeyEvent
Event called by the listener method onKeyEvent(…)
Enum values for single keys:
Example
The user key bar for controlling a gripper is expanded by a method which
can be used to adapt the velocity of the gripper. The two lower user keys
combined in a double key are used for this purpose.
The attribute velocity is declared for setting the velocity. The attribute
specifies the current velocity as a proportion of the maximum velocity
(range of values: 0.1 … 1.0). Pressing the upper user key increases the
value by 0.1 and pressing the lower user key decreases it by 0.1.
Programming
velocity = velocity + 0.1;
}
else if (event == UserKeyEvent.SecondKeyDown && velocity >= 0.2) {
velocity = velocity – 0.1;
}
}
};
// ...
IUserKey velocityKey = gripperBar.addDoubleUserKey(2, gripperVelocityListener,
false);
Description
At least one graphical or text element must be assigned to the area along
the left side panel of the smartHMI next to the user key. LED icons of var-
ious colors and sizes are available as graphical elements. These elements
can be adapted during the runtime of the robot application or the back-
ground task.
In order to clearly position the individual elements, the area next to the
user key is divided into a grid with 3x3 spaces. This also applies for user
keys that have been grouped together as a double key. In the case of
double keys, the grid stretches over both fields.
UserKey alignment
Grid space
Value
no.
1 UserKeyAlignment.TopLeft
2 UserKeyAlignment.TopMiddle
3 UserKeyAlignment.TopRight
4 UserKeyAlignment.MiddleLeft
5 UserKeyAlignment.Middle
6 UserKeyAlignment.MiddleRight
7 UserKeyAlignment.BottomLeft
8 UserKeyAlignment.BottomMiddle
Grid space
Value
no.
9 UserKeyAlignment.BottomRight
Description
Each grid space can be assigned a text element. The setText(…) method
is used for this purpose. The method belongs to the IUserKey interface.
Syntax
key.setText(position, "text");
Element Description
key Type: IUserKey
User key to which a text element is assigned
position Type: Enum of type UserKeyAlignment
Position of the element (grid space)
(>>> "UserKey alignment" Page 523)
text Type: String
Text to be displayed
Often, a text length of 2 or more characters will exceed
the size of the grid space. The text display area is then
expanded. However, it is only practical to use a limited
number of characters. The possible number of characters
depends on the text elements of the neighboring grid
spaces and the characters used.
Example
The user key bar for controlling a gripper is to be expanded. A suitable la-
bel should be displayed continuously next to each of the user keys.
• Label for the user keys for opening and closing the gripper: OPEN
and CLOSE
• Label for the user keys for increasing and decreasing the gripper ve-
locity: plus sign and minus sign
In addition, the current velocity is to be displayed and automatically
updated each time a change is made.
Programming
}
// The following line formats the velocity display
// The first three characters are displayed
String value = String.valueOf(velocity).substring(0, 3);
key.setText(UserKeyAlignment.Middle, value);
}
}
};
Description
Each grid space can be assigned an LED icon. The setLED(…) method is
used for this purpose. The method belongs to the IUserKey interface.
Syntax
Element Description
key Type: IUserKey
User key to which a graphical element is assigned
position Type: Enum of type UserKeyAlignment
Position of the element (grid space)
(>>> "UserKey alignment" Page 523)
led Type: Enum of type UserKeyLED
Color of the LED icon
• UserKeyLED.Grey: gray
• UserKeyLED.Green: green
• UserKeyLED.Yellow: yellow
• UserKeyLED.Red: red
size Type: Enum of type UserKeyLEDSize
Size of the LED icon
• UserKeyLEDSize.Small: small
• UserKeyLEDSize.Normal: large
Example
The user key bar for controlling a gripper is to be expanded. The user
keys for opening and closing the gripper should each be assigned a small
LED icon.
As long as the gripper is opening or closing, the LED icons should be dis-
played in green. If the gripper is stationary, the LED icons should be dis-
played in gray.
Description
User keys can trigger functions that are associated with a risk. In order to
prevent damage caused by the unintentional actuation of such user keys,
a warning message can be added identifying them as safety-critical. The
setCriticalText(…) method is used for this purpose. The method belongs to
the IUserKey interface.
If the operator actuates a user key designated as safety-critical, the mes-
sage defined with setCriticalText(…) is displayed on the smartHMI in a
window with the name Critical operation. The user key is then deactiva-
Programming
ted for approx. 5 s. Once this time has elapsed, the operator can trigger
the desired function by actuating the user key again within 5 s.
If the user key is not actuated within this time or if an area outside of the
Critical operation window is touched, the window is closed and the user
key is reset to its previous state.
Syntax
key.setCriticalText("text");
Element Description
key Type: IUserKey
User key which is provided with a warning message
text Type: String
Message text displayed when the user key is actuated
Example
The user key bar for controlling a gripper is to be expanded. If the user
key for opening the gripper is actuated, a warning message should ap-
pear. The operator is requested to ensure that no damage can result from
workpieces falling out when the gripper is opened.
Description
Once a user key bar has been equipped with all the necessary user keys
and functionalities, it must be published with the publish() method. Only
then can the operator access it on the smartPAD.
Once a user key bar has been published, further user keys may not be
added later in the program sequence. In other words, it is not possible to
add an unassigned user key and assign a function to it at a later time. It
is, however, possible to change the labeling or graphical element dis-
played next to the user key on the smartHMI at a later time.
Syntax
keybar.publish();
Element Description
keybar Type: IUserKeyBar
Name of the user key bar created with createUserKey-
Bar(…).
Example
Description
Syntax
Programming
Explanation of the syntax
Element Description
logger Type: ITaskLogger
Name of the logger object, as it is to be used in the ap-
plication
Message Type: String
Message which is to be displayed on the smartHMI
and/or written to the LOG file
Example
@Override
public void initialize() {
// initialize your application here
collision = ForceCondition
.createSpatialForceCondition(robot.getFlange(), 15.0);
}
@Override
public void run() {
// ...
IMotionContainer motion = robot.move(lin(getFrame("/P20"))
.breakWhen(collision));
if (motion.getFiredBreakConditionInfo() == null){
logger.info("End point reached.");
}
else {
logger.warn("Motion canceled after collision!");
}
// ...
}
}
Description
Syntax
Element Description
Dialog type Type: Enum of type ApplicationDialogType
Example
Programming
Fig. 16-24: Example of a user dialog
switch (direction) {
case 0:
robot.move(ptp(getApplicationData().getFrame("/Left")));
break;
case 1:
robot.move(ptp(getApplicationData().getFrame("/Right")));
break;
case 2:
robot.move(ptpHome());
break;
}
Description
Syntax
getApplicationControl().halt();
Description
Syntax
getTaskManager().getTask(RobotApplication.class).stopAllIn-
stances();
Element Description
RobotAppli- Name of the robot application
cation
Description
Syntax
getApplicationControl().pause();
Description
Example
Programming
IMotionContainer m1 =
robot.moveAsync(lin(getApplicationData().getFrame("/P1")));
IMotionContainer m2 =
robot.moveAsync(lin(getApplicationData().getFrame("/P2"))
.setBlendingCart(20));
IMotionContainer m3 =
robot.moveAsync(lin(getApplicationData().getFrame("/P3"))
.setBlendingCart(20));
IMotionContainer m4 =
robot.moveAsync(lin(getApplicationData().getFrame("/P4")));
IMotionContainer m1 =
robot.moveAsync(lin(getApplicationData().getFrame("/P1")));
IMotionContainer m2 =
robot.moveAsync(lin(getApplicationData().getFrame("/P2"))
.setBlendingCart(20));
IMotionContainer m3 =
robot.moveAsync(lin(getApplicationData().getFrame("/P3"))
.setBlendingCart(20));
IMotionContainer m4 =
robot.moveAsync(lin(getApplicationData().getFrame("/P4")));
m2.await();
ThreadUtil.milliSleep(500);
m3.cancel();
m4.await();
Description
The FOR loop, also called counting loop, repeats a statement block as
long as a defined condition is met.
A counter is defined, which is increased or decreased by a constant value
with each execution of the loop. At the beginning of a loop execution, the
system checks if a defined condition is met. This condition is generally for-
mulated by comparing the counter with a limit value. If the condition is no
longer met, the loop is no longer executed and the program is continued
after the loop.
The FOR loop is generally used if it is known how often a loop must be
executed.
FOR loops can be nested.
(>>> 16.27.10 "Examples of nested loops" Page 542)
Syntax
Element Description
Counter Counter for the number of loops executed
The counter is assigned a start value. With each execu-
tion of the loop, the counter is increased or decreased by
a constant value.
Start value Start value of the counter
Condition Condition for the loop execution
The counter is generally compared with a limit value. The
result of the comparison is always of type Boolean. The
loop is ended as soon as the comparison returns FALSE,
meaning that the condition is no longer met.
Programming
Element Description
Counting The counting statement determines the amount by which
statement the counter is changed with each execution of the loop.
The increment and counting direction can be specified in
different ways.
Examples:
Example
Description
The WHILE loop repeats a statement block for as long as a certain condi-
tion is fulfilled. It is also called a rejecting loop because the condition is
checked before every loop execution.
If the condition is no longer met, the statement block of the loop is no lon-
ger executed and the program is resumed after the loop. If the condition
is not already fulfilled before the first execution, the statement block is not
executed at all.
The WHILE loop is generally used if it is unknown how often a loop must
be executed, e.g. because the repetition condition is calculated or is a
specific signal.
WHILE loops can be nested.
(>>> 16.27.10 "Examples of nested loops" Page 542)
Syntax
Element Description
Repetition Type: Boolean
condition
Possible:
Example 1
Before the loop is executed the system checks whether an input signal is
set. As long as this is the case, the loop will be executed again and again
and the smartHMI will display the input as TRUE. If the input signal has
been reset, the loop will not be executed (any longer) and the input will
be displayed as FALSE. For output purposes, a logger object has been in-
tegrated with dependency injection.
Example 2
int w = 0;
Random num = new Random();
while (w <= 21) {
w = w + (num.nextInt(6) + 1);
}
Description
Syntax
do {
Statement_1;
<...
Programming
Statement_n;
} while (Break condition);
Element Description
Break condi- Type: Boolean
tion
Possible:
Example
int num;
do {
num = (int) (Math.random() * 6 + 1);
} while (num != 6);
Random numbers between 1 and 6 are generated until the “dice” shows a
6. The dice must be thrown at least once.
Description
Syntax
if (Condition_1){
Statement_1;
<...
Statement_n;
}
<else if (Condition_2){
Statement_1;
<...
Statement_n;
}>
<else {
Statement_1;
<...
Programming
Statement_n;
}>
Element Description
Condition Type: Boolean
Possible:
Example 1
int a;
int b;
if (a == 17) {
b = 1;
}
Example 2
The loop is executed 5 times. If variable a has the value 3, the value of a
is increased by 5 once only.
The values 1, 2, 8, 9 and 10 are displayed on the smartHMI. For output
purposes, a logger object has been integrated with dependency injection.
Example 3
// ...
In a program, a test run for a vehicle is to be carried out. This test run is
Programming
only meaningful at a specific command velocity.
The IF statement checks whether the actual velocity velAct is lower than
the command velocity velDesired. If this is the case, the vehicle accel-
erates. If this is not the case, it continues with else if.
The IF ELSE statement checks whether the actual velocity velAct is
higher than the command velocity velDesired. If this is the case, the
vehicle is braked. If this is not the case, the ELSE block is executed with
the test run.
Description
Syntax
switch (expression){
case Constant_1:
Statement_1;
<...
Statement_n;>
< break;>
<...
case Constant_n:
Statement_1;>
<...
Statement_n;>
< break;>
< default:
Statement_1;>
<...
Statement_n;>
< break;>
}
Element Description
Expression Type: int, byte, short, char, enum
Constant Type: int, byte, short, char, enum
The data type of the constant must match the data type
of the expression.
Note: Constants of type char must be specified with ' ,
e.g. case 'a'
Example 1
int a, b;
// ...
switch (a) {
case 1:
b = 10;
break;
case 2:
b = 20;
break;
case 3:
b = 30;
break;
default:
b = 40;
break;
}
// next command
If variable a has the value 1, the program jumps to the label case 1.
The variable b is assigned the value 10. The BREAK instruction causes
the SWITCH block to be left. Program execution is resumed with the next
command after the closing bracket of the SWITCH block.
If variable a has the value 2 at the start, variable b is assigned the value
20. If a has the value 3 at the start, b is assigned the value 30.
The DEFAULT statement is optional. It is nonetheless advisable for it al-
ways to be set. If variable a has a value at the start that is not covered
by a CASE statement (e.g. 0 or 5), the instructions in the DEFAULT block
are executed. In this example, this means that variable b is assigned the
value 40.
Example 2
Programming
int a, b;
// ...
switch (a) {
case 1:
// fall-through
case 2:
// fall-through
case 3:
b = 20;
break;
case 4:
b = 30;
break;
default:
b = 40;
break;
}
// next command
int a, b, c;
// ...
switch (a) {
case 1:
b = 10;
// fall-through
case 2:
c = 20;
break;
case 3:
b = 30;
break;
case 4:
c = 30;
break;
default:
b = 40;
c = 40;
break;
}
// next command
The outer loop is first executed until the inner loop is reached. The inner
loop is then executed completely. The outer loop is then executed until
the end, and the system checks whether the outer loop must be executed
again. If this is the case, the inner loop must also be executed again.
There is no limit on the nesting depth of loops. The inner loops are al-
ways executed as often as the outer loop.
The outer loop determines that the inner loop is executed 3 times. The
counter of the outer loop starts with the value i = 1.
Once the smartHMI has displayed the start of the 1st cycle, the counter of
the inner loop starts with the value k = 10. The value of variable k is
decreased by 1 with every cycle. The current value of k is displayed on
the smartHMI with every cycle. If variable k has the value 1, the inner
loop will be executed for the last time.
Then the outer loop is ended and the value of variable i is increased by
1. The 2nd cycle begins. For output purposes, a logger object has been
integrated with dependency injection.
int sum = 0;
int round = 1;
int diceRoll = 0;
Random num = new Random();
Programming
16.28 Continuing a paused application in Automatic mode (recovery)
Description
Overview
PTPRecovery
Strategy
External controller
The robot controller must inform the higher-level controller whether the ro-
bot must be repositioned. The higher-level controller may only allow the
return strategy to be carried out if this can be done without risk. Other-
wise, the robot may only be manually repositioned.
The following system signals are available:
• Output AutExt_AppReadyToStart
With this output, the robot controller communicates to the higher-level
controller whether or not the application may be resumed.
‒ If isRecoveryRequired(…) supplies the value false (= no reposi-
tioning required), the output can be set to TRUE.
‒ If getRecoveryStrategy(…) supplies null (= no return strategy
available), the output must be set to FALSE.
‒ If the evaluation of the return strategy shows that it can be execu-
ted in Automatic mode, the output can be set to TRUE.
If this is not the case, the output must be set to FALSE.
• Input App_Start
The higher-level controller informs the robot controller via a rising
edge that the application should resume. (Precondition: AutExt_Ap-
pReadyToStart is TRUE)
The higher-level controller must send the start signal App_Start twice:
1. Start signal for repositioning
2. Start signal for resuming the application
Programming
16.29 Error treatment
Motion commands that are communicated to the robot controller can fail
for various reasons, e.g.:
• End point lies outside of a workspace
• End point cannot be reached with the given axis configuration
• The frame used is not present in the application data
As standard, a failed motion command results in termination of the appli-
cation. Handling routines can be defined in order to prevent the applica-
tion from terminating in case of error.
The following handling options are available depending on the error:
• Failed synchronous motion commands are handled using a try-catch
block
• Failed asynchronous motion commands are handled using an event
handler
Description
Syntax
try {
// Code in which a runtime error can occur when executed
}
catch (Exception e) {
// Code for treating the runtime error
}
< finally {
// Final treatment (optional)
}>
Element Description
try {…} The try block contains a code which can result in a run-
time error.
If an error occurs, the execution of the try block is termi-
nated and the catch block is executed.
catch (…) The catch block contains the code for treating the run-
{…} time error.
The catch block will only be executed if an error occurs
in the try block.
Exception The error data type (here: Exception) can be used to de-
e fine the error type to be handled in the catch block. The
error type Exception is the superclass of most error da-
ta types.
However, it is also possible to focus on more specific er-
rors. Information about errors which have occurred can
be requested using the parameter e.
In particular, the error data type CommandInvalidExcep-
tion (package: com.kuka.roboticsAPI.executionModel) is
important for handling failed motion commands. It occurs,
for example, when the end point of the motion cannot be
reached.
finally The finally block is optional.
{…}
Here it is possible to specify a final treatment to be exe-
cuted in all cases, irrespective of whether or not an error
occurs in the try block.
Example
A robot executes a motion under impedance control with very low stiff-
ness. For this reason, it is not guaranteed to reach the end position. It is
then to move relatively by 50 cm in the positive Z direction of the flange
coordinate system. If the robot is in an unfavorable position following the
motion under impedance control, the linear motion cannot be executed
and a runtime error will occur. In order to prevent the application from
aborting in this case, the critical linear motion is programmed in a try-
catch block. If the motion planning fails, the robot should be moved to an
auxiliary point before the application is resumed.
@Override
public void run() {
// ...
CartesianImpedanceControlMode softMode =
new CartesianImpedanceControlMode();
softMode.parametrize(CartDOF.ALL).setStiffness(10.0);
robot.move(ptp(getFrame("/Start"))
.setMode(softMode).setJointVelocityRel(0.3));
Programming
try {
logger.info("1: Try to execute linear motion");
robot.move(linRel(0.0, 0.0, 500.0)
.setJointVelocityRel(0.5));
}
catch (CommandInvalidException e) {
logger.info("2: Motion not executable");
robot.move(ptp(getFrame("/AuxiliaryPoint"))
.setJointVelocityRel(0.5));
}
finally {
logger.info("3: Commands in finally block are executed");
}
Description
Syntax
return ErrorHandlingAction.reaction;
}
};
Registering the event handler:
getApplicationControl().registerMoveAsyncErrorHandler(er-
rorHandler);
Element Description
errorHandler Type: IErrorHandler
Name of the event handler responsible for handling failed
asynchronous motion commands
Input parameters of the handleError(…) method:
device Type: device
The parameter can be used to access the robot for
which the failed motion command is commanded.
failed Type: IMotionContainer
Container
The parameter can be used to access the failed motion
command.
canceled Type: List<IMotionContainer>
Contain-
The parameter can be used to access a list of all deleted
ers
motion commands. It contains all motion commands
which have already been sent to the real-time controller
when the method handleError(…) is called.
reaction Type: Enum of type ErrorHandlingAction
Return value of the handleError(…) method by means of
which the final reaction to the error is defined:
• ErrorHandlingAction.EndApplication:
The application is terminated with an error.
• ErrorHandlingAction.PauseMotion:
The motion execution is paused until the user re-
sumes the application via the smartPAD.
• ErrorHandlingAction.Ignore:
The error is ignored and the application is resumed.
Example
Programming
@Inject
private LBR robot;
@Override
public void initialize() {
errorHandler = new IErrorHandler() {
@Override
public ErrorHandlingAction handleError(Device device,
IMotionContainer failedContainer,
List<IMotionContainer> canceledContainers) {
logger.warn("Excecution of the following motion
failed: " + failedContainer.getCommand().toString());
logger.info("The following motions will not be
executed:");
for (int i = 0; i < canceledContainers.size(); i++) {
logger.info(canceledContainers.get(i)
.getCommand().toString());
}
return ErrorHandlingAction.Ignore;
};
};
getApplicationControl()
.registerMoveAsyncErrorHandler(errorHandler);
}
@Override
public void run(){
robot.move(ptpHome());
robot.move(ptp(getFrame("/PrePos")));
// ...
robot.moveAsync(ptp(getFrame("/P1")));
robot.moveAsync(ptp(getFrame("/P2")));
robot.moveAsync(lin(getFrame("/P3")));
robot.moveAsync(ptp(getFrame("/P4")));
robot.moveAsync(ptp(getFrame("/P5")));
robot.moveAsync(ptp(getFrame("/P6")));
robot.moveAsync(ptp(getFrame("/P7")));
robot.moveAsync(ptp(getFrame("/P8")));
robot.moveAsync(ptp(getFrame("/P9")));
// ...
robot.move(ptpHome());
}
}
from being sent to the real-time controller. In this case, the application will
be stopped before the motion command to P7. If the handleError(…)
method is ended with the return of the value ErrorHandlingAc-
tion.Ignore, the application is resumed. The robot then moves directly
from its current position P2 to P7.
Background tasks
17 Background tasks
Activities
WARNING
Background tasks must not be used for moving the robot or influencing
parameters that might affect motions. This is the task of the robot appli-
cation. Calling motion commands or modifying motion-specific parame-
ters in a background task can result in unspecified behavior of the robot
and thus cause personal injury and damage to property.
Properties
• Manual
The task must be started manually via the smartPAD. (This function is
not yet supported.)
• Automatic
The task is automatically started when the robot controller is booted
and stopped when it is shut down.
In background tasks many objects of the application can be accessed by
means of dependency injection.
(>>> 16.3.3 "Dependency injection" Page 409)
If a background task requires access to information from the running robot
application or other background tasks that are not accessible via depend-
ency injection, a separate interface is available for data exchange.
(>>> 17.4 "Data exchange between tasks" Page 556)
Synchronization behavior
Runtime behavior
Background tasks
17.2 Cyclic background task
Structure
Item Description
1 This line contains the name of the package in which the task is
located.
2 Import section
The section contains the imported classes which are required
for programming the task
3 Header of the task
The cyclic background task is a subclass of RoboticsAPICyclic-
BackgroundTask.
4 Declaration section
The data arrays of the task that are required for its execution
are declared here.
As an example, the controller is automatically integrated via de-
pendency injection when the task is created.
5 initialize() method
Initial values are assigned here to data arrays that are not inte-
grated using dependency injection.
The initializeCyclic(…) method is available as standard. This
method is used to define the cyclical behavior of the task.
(>>> "Initialization" Page 553)
Note: The method must not be deleted or renamed.
6 runCyclic() method
The code that is to be executed cyclically is programmed here.
Note: The method must not be deleted or renamed.
Initialization
• CycleBehavior.BestEffort
runCyclic() is executed completely and then called
again.
• CycleBehavior.Strict
Execution of the background task is canceled with an
error of type CycleExceededException.
Example
Background tasks
@Inject
private ProcessParametersLEDsIOGroup LED_IOs;
/**
* Query the applied force
*/
Vector forceVector = robot.getExternalForceTorque(
robot.getFlange()).getForce();
/**
* Check if absolute force (length of vector)
* exceeds 150 N
*/
if (forceVector.length() > 150.0) {
/**
* If the force limit is exceeded, the appropriate LED
* changes its state with every execution of runCyclic()
*/
LED_IOs.setLED_ForceExceeded(!LED_IOs
.getLED_ForceExceeded());
} else {
LED_IOs.setLED_ForceExceeded(false);
}
}
}
Structure
Item Description
1 This line contains the name of the package in which the task is
located.
2 Import section
The section contains the imported classes which are required
for programming the task
3 Header of the task
The non-cyclic background task is a subclass of RoboticsAPI-
BackgroundTask.
4 Declaration section
The data arrays of the task that are required for its execution
are declared here.
As an example, the controller is automatically integrated via de-
pendency injection when the task is created.
5 initialize() method
Initial values are assigned here to data arrays that are not inte-
grated using dependency injection.
Note: The method must not be deleted or renamed.
6 run() method
The code that is to be executed once is programmed here. The
runtime is not limited.
Note: The method must not be deleted or renamed.
Description
Background tasks
application in a background task.
It is not relevant for programming whether data are exchanged between a
background task and a robot application or between 2 background tasks.
The providing task may be either a robot application or a background
task. For this reason, background tasks and robot applications are grou-
ped together as tasks.
Overview
The following steps are required in order for the providing task and the re-
questing task to be able to communicate with one another:
Step Description
1 Create an interface and declare the desired task functions.
(>>> 17.4.1 "Declaring task functions" Page 558)
2 Implement the interface in which the task functions are de-
clared.
The interface can be implemented directly by the providing
task or by a specially created class. The declared task
functions must be programmed in the implementing class.
(>>> 17.4.2 "Implementing task functions" Page 558)
3 Create the providing task.
The providing task must contain a parameterless public
method with the annotation @TaskFunctionProvider which
returns the implementation of the interface.
(>>> 17.4.3 "Creating the providing task" Page 560)
4 In the requesting task, use the getTaskFunction(…) method
to request the interface in which the task functions are de-
clared. The method is available in all task classes.
The ITaskFunctionMonitor interface can be used to check
whether the task functions are available.
(>>> 17.4.4 "Using task functions" Page 562)
Example
The data exchange between tasks is described step by step in the sec-
tions below, using the following example:
An assembly process is to be implemented using the robot application
“AssemblyApplication”. An LED is to flash during the assembly process. If
the robot leaves the path during the application and has to be reposi-
tioned, a further LED is to flash.
The LEDs are activated by the background task “LEDTask”. In this exam-
ple, the background task is the requesting task.
The robot application is the providing task. It must enable access to your
Recovery interface, which is used to check whether repositioning of the
robot is required. Furthermore, it must also signal the start and end of the
assembly process.
Description
Example
Line Description
1 … 16 Interface IApplicationInformationFunction
7 Method isAssemblyRunning()
Called by the requesting task to check whether the assem-
bly process is currently running.
14 Method isManualRepositioningRequired()
Called by the requesting task to check whether reposition-
ing of the robot is required.
Description
Background tasks
Example
Line Description
1 … 37 Class ApplicationInformation
The task functions are programmed in the class.
4, 5 Declaration of the data arrays
Description
A task can provide task functions of various interfaces. For each interface
whose task functions are provided by the task, a parameterless public
method with the annotation @TaskFunctionProvider must be inserted
which returns the implementation of the interface.
Syntax
@TaskFunctionProvider
public Interface Method name()
return Interface instance;
}
Element Description
Interface Interface whose task functions the task provides
Method Name of the method that returns the implementation of
name the interface (the name can be freely selected)
Interface in- Instance of the implementing class
stance
If the providing task does not, itself, implement the interface derived
from ITaskFunction, it requires an instance of the implementing class. It
is advisable to create this instance as an array.
Background tasks
If the providing task implements the interface itself, transfer the instance
of the task for the Interface instance parameter:
return this;
Each interface may only be provided once. This means that there must
not be 2 tasks that return the same interface in their @TaskFunctionPro-
vider annotation.
Example
@Override
public void initialize() {
@Override
public void run() {
/**
* Implements the assembly process
*/
private void assembly() {
// ...
}
/**
* TaskFunctionProvider method that has to be
* implemented by the task
*/
@TaskFunctionProvider
Enabling access
The following steps are required in order to enable access to the task
functions of an interface in the requesting task:
1. Create a data array of the type of the interface.
private Interface Interface instance;
2. Request the interface with the getTaskFunction(…) method. The task
functions of the interface are saved in the data array just created.
Interface instance = getTaskFunction(Interface.class);
Explanation of the syntax:
Checking availability
The task functions of the providing task are only available when the pro-
viding task is being executed or is paused.
If a task function is not available when it is called, a runtime error may
occur in the requesting task (InstanceNotRunningException). If this error
is not handled, execution of the task is aborted.
Background tasks
2. Use the TaskFunctionMonitor.create(…) method to initialize the monitor
for the task functions to be monitored. The instance of the interface in
which the task functions are declared is transferred to the method as
a parameter.
monitor = TaskFunctionMonitor.create(Interface instance);
Explanation of the syntax:
/**
* Create ITaskFunctionMonitor for
* IApplicationInformationFunction
*/
appInfoMonitor = TaskFunctionMonitor.create(
appInfoFunction);
Overall example
The requesting task “LED Task” is executed cyclically every 500 ms. It
first checks whether the required task functions of the robot application
are available. If they are available, a check is carried out to ascertain
whether the assembly process is running and the corresponding LED is
activated. The system then checks whether repositioning of the robot is
required. If this is the case, a further LED is activated.
/**
* Create ITaskFunctionMonitor for
* IApplicationInformationFunction
*/
appInfoMonitor = TaskFunctionMonitor
.create(appInfoFunction);
}
Background tasks
LED_IOs.setLED_Assembly(!currentStateAssemblyLED);
} else {
LED_IOs.setLED_Assembly(false);
}
/**
* Use task function to check whether the application
* requires repositioning
*/
boolean recoveryRequired =
appInfoFunction.isManualRepositioningRequired();
if (recoveryRequired) {
/**
*If recovery is required,
*the appropriate LED changes
* its state with every execution of runCyclic()
*/
boolean currentStateRecoveryLED = LED_IOs
.getLED_RecoveryRequired();
LED_IOs.setLED_ForceExceeded(
!currentStateRecoveryLED);
} else {
LED_IOs.setLED_RecoveryRequired(false);
}
} else {
// If application is not running, LEDs remain off
LED_IOs.setLED_Assembly(false);
LED_IOs.setLED_RecoveryRequired(false);
}
}
}
KUKA Sunrise.EnhancedVelocityControl
18 KUKA Sunrise.EnhancedVelocityControl
Description
Motion types
Functional principle
Description
With EVC, the “Brake” safety reaction is available for safety functions of
the PSM mechanism used for monitoring the Cartesian velocity.
Brake can only be used as a reaction if the safety function (PSM row)
contains the Cartesian velocity monitoring AMF. The PSM row can contain
further AMFs. An exception is extended AMFs, such as the Time delay
AMF. Extended AMFs cannot be used in conjunction with the “Brake” re-
action.
Benefits
The “Brake” safety reaction can be used to prevent the robot being stop-
ped with a safety stop if its velocity is higher than the configured limit
when the velocity monitoring is activated.
With very high accelerations, it is possible, in rare cases, that the veloc-
ity limitation does not act quickly enough. This can result in the robot
stopping with a safety stop 1. Possible remedy: Reduce the acceleration
for the motions in which this occurs.
Example 1
KUKA Sunrise.EnhancedVelocityControl
Example 2
1 Monitoring time
v Velocity
t Time
t1 Moment in time at which the “Brake” reaction is triggered (PSM
row is violated)
t2 Moment in time at which the “Brake” reaction is stopped (Cartesian
velocity monitoring AMF is no longer violated)
vR Robot velocity (blue curve)
vS Velocity limit of the Cartesian velocity monitoring AMF
v0 Velocity at time t1 at which the “Brake” reaction is triggered
EVC can limit the Cartesian robot velocity via the application. Once set,
this device-specific Cartesian velocity limitation can be deactivated again
via the application. Additionally, information about all Cartesian velocity
limitations carried out by EVC can be requested by the robot.
Description
The robot class contains the methods that can be used to set device-spe-
cific Cartesian velocity monitoring in the application and then deactivate it
again.
Syntax
Element Description
robot Type: Robot
Instance of the robot used in the application
limit Type: int
Value > 0 that is set as the Cartesian velocity limit for
the robot (unit: mm/s)
Example
@Override
public void initialize() {
// initialize your application here
}
@Override
public void run() {
// your application execution starts here
int integerValue = 69; //in mm/s
robot.move(ptpHome());
KUKA Sunrise.EnhancedVelocityControl
//Deactivates the device limit
robot.deactivateDeviceCartesianVelocityLimit();
}
}
Description
Syntax
CartesianVelocityLimitInfo infoObject =
robot.getCartesianVelocityLimitInfo();
Element Description
infoObject Type: CartesianVelocityLimitInfo
Variable for the information requested from the robot us-
ing getCartesianVelocityLimitInfo()
robot Type: Robot
Instance of the robot used in the application
Overview
The information stored in the containers can be read using the following
methods:
Method Description
getDeviceVelocityLimit() Return value type: Integer
Returns the device-specific Cartesian velocity limitation that is
currently set by an application (unit: mm/s).
The return value -1 means that the device-specific Cartesian
velocity limitation is deactivated.
getOperationModeVelocity Return value type: Integer
Limit()
Returns the mode-specific Cartesian velocity limitation (unit:
mm/s).
The return value -1 means that the Cartesian velocity is not
currently limited by an operating mode.
Method Description
getSafetyVelocityLimit() Return value type: Integer
Returns the Cartesian velocity limit that is active on the safety
controller (unit: mm/s).
The return value -1 means that there is currently no Cartesian
velocity limit active on the safety controller.
getAggregatedVelocityLimit() Return value type: Integer
Returns the minimum of all currently active and valid Cartesi-
an velocity limitations (unit: mm/s). This aggregated velocity
value is the actual limitation that regulates the robot velocity.
The return value -1 means that the Cartesian velocity is not
currently limited. In other words, it is not currently limited by
either the operating mode or the application and there is no
active Cartesian velocity limit on the safety controller.
getVelocityLimitSources() Return value type: Set<CartVelocityLimitSourceType>
Returns an Enum data set with the sources from which the
value for the aggregated Cartesian velocity limitation was
formed.
The Enum CartVelocityLimitSourceType contains the following
values:
• DEVICE
Array for device-specific Cartesian velocity limitation
• OPERATIONMODE
Array for mode-specific Cartesian velocity limitation
• SAFETY
Array for Cartesian velocity limit that is active on the safe-
ty controller
Example
@Override
public void initialize() {
// initialize your application here
}
@Override
public void run() {
// your application execution starts here
int integerValue = 69; //in mm/s
robot.move(ptpHome());
KUKA Sunrise.EnhancedVelocityControl
CartesianVelocityLimitInfo infoObject = robot
.getCartesianVelocityLimitInfo();
deviceVelocityLimit = infoObject.getDeviceVelocityLimit();
safetyVelocityLimit = infoObject.getSafetyVelocityLimit();
operationModeVelocityLimit = infoObject
.getOperationModeVelocityLimit();
aggregatedVelocityLimit = infoObject
.getAggregatedVelocityLimit();
velocityLimitSources = infoObject
.getVelocityLimitSources();
KUKA Sunrise.StatusController
19 KUKA Sunrise.StatusController
Description
Functional principle
Some statuses are automatically set by the station monitoring, e.g. wheth-
er a safety stop is active. Additionally, user-defined statuses can be set
via the status monitor of a task. A status listener can then be used to re-
spond to status changes, e.g. switching on of a red lamp in the case of
an error state.
Installation
Procedure
Interfaces
Classes
KUKA Sunrise.StatusController
Status group Description
SAFETY_STOP A safety stop has been triggered, e.g. by pressing an EMER-
GENCY STOP.
Status groups whose statuses are set automatically (can also be
used by the user):
Status group Description
ERROR_GENERAL A general, non-safety-oriented error is active, e.g. application
has been terminated with an error.
WARNING_NON_CRITICAL There is a non-critical warning which does not affect operabil-
ity of the station.
Status groups whose statuses are only set by the user:
Status group Description
WARNING_CRITICAL There is a critical warning which affects operability of the sta-
tion.
INTERACTION_ Manual intervention on the robot is required to be able to
REQUIRED_HAPTIC continue the program, e.g. jogging to a specific position.
INTERACTION_ Manual intervention on the smartHMI is required (e.g. ac-
REQUIRED_HMI knowledging a dialog) to be able to continue the program.
HRC_ACTIVE The robot is in HRC mode.
Description
Constructor syntax
New status:
Status(StatusGroup statusGroup<, String description>)
Element Description
statusGroup Status group for which the new status is being created
description Description of the new status (optional)
The description can be used in status listeners.
Constructor syntax
Element Description
id ID of the new status group
If several status groups exist with the same ID, these are
treated as one status group.
Examples
StatusGroup myStatusGroup =
new StatusGroup("myStatusGroup");
Status myStatus = new Status(
myStatusGroup, "myStatus description");
Description
Overview
KUKA Sunrise.StatusController
Method Description
addStatusListener( Return value type: void
IStatusListener, StatusGroup)
Registers the transferred status listener so that it is notified of
status changes.
Any number of status groups can be transferred after the pa-
rameter IStatusListener. The listener is then only informed of
changes in the transferred status groups. If no status groups
are transferred, the listener is informed of all status changes.
removeStatusListener( Return value type: void
IStatusListener)
Unregisters the transferred status listener so that it is no lon-
ger notified of status changes.
19.1.4 Setting and deleting the status via the status monitor
Description
Overview
The interface IStatusMonitor provides the methods for setting and deleting
a status:
Method Description
clear(Status) Return value type: void
Deletes the transferred status.
The following exceptions can occur:
To compare status objects, the status controller internally uses their ob-
ject identity. If 2 new status objects are generated with identical status
groups and description, the status controller handles them as different
statuses.
Example
@Override
public void run() {
//...
//set status if a lack of parts was detected
statusMonitor.set(lackOfParts);
//...
//wait for new parts to be available
statusMonitor.clear(lackOfParts);
//...
}
Description
KUKA Sunrise.StatusController
groups are transferred, the listener is informed of all status changes.
If a status of a subscribed status group is set or deleted, the onStatus-
Set(StatusEvent) or onStatusCleared(StatusEvent) method of the status
listener is called. The procedure for implementing these methods is illus-
trated in the example.
Syntax
Element Description
statusCon- Type: IStatusController
troller
Status controller on which the listener is registered
statusListen- Type: IStatusListener
er
Listener that is registered
status- Type: StatusGroup
Group1 …
Status groups to which the listener is to respond
status-
Group1+n If no status groups are specified, the listener responds to
status changes in all groups.
Overview
Example
Line Description
3 The BackgroundTask class implements the IStatusListener
interface with implements IStatusListener.
5, 6 A status controller of type IStatusController is integrated in-
to the task by means of dependency injection.
7, 8 A logger object of type ITaskLogger is integrated into the
task by means of dependency injection.
The logger object can be used to display status information
on the smartHMI.
16 … 19 In the initialize() method, the status listener is registered on
the status controller.
The keyword this is used to add the BackgroundTask
class to itself as a status listener.
The status groups SAFETY_STOP and ERROR_GENERAL
are transferred during registration. In this way, the listener
is only informed of status changes in these status groups.
27 … 32 The onStatusSet method is called if a status is set with one
of the subscribed status groups. The status group and the
description of the set status are then logged.
KUKA Sunrise.StatusController
Line Description
34 … 39 The onStatusCleared method is called if a status is cleared
with one of the subscribed status groups. The status group
and the description of the cleared status are then logged.
41 … 45 In the dispose() method, the status listener is unregistered.
Sensitive robots can be operated with different controllers. For each con-
trol type, a separate class is provided by the RoboticsAPI in the package
com.kuka.roboticsAPI.motionModel.controlModeModel. The shared super-
class is AbstractMotionControlMode.
Controller Description
Position controller Data type: PositionControlMode
The aim of position control is to execute the specified path
with the maximum possible positional accuracy and without
path deviation. As standard, external influences such as ob-
stacles or process forces are not taken into account.
Cartesian impedance control- Data type: CartesianImpedanceControlMode
ler
The Cartesian impedance controller is modeled on a virtual
spring damper system with configurable values for stiffness
and damping. This spring is extended between the setpoint
and actual positions of the TCP. This allows the robot to react
in a compliant manner to external influences.
Cartesian impedance control- Data type: CartesianSineImpedanceControlMode
ler with overlaid force oscilla-
Special form of the Cartesian impedance controller. In addi-
tion
tion to the compliant behavior, constant force setpoints and si-
nusoidal force oscillations can be overlaid. This controller can
be used, for example, to implement force-dependent search
runs and vibration motions for joining processes.
Axis-specific impedance con- Data type: JointImpedanceControlMode
troller
The axis-specific impedance controller is modeled on a virtual
spring damper. The values for stiffness and damping can be
configured for each axis.
Description
Procedure
Description
Syntax
ControlMode controlMode;
controlMode = new ControlMode();
Element Description
ControlMode Data type of the controller (subclass of AbstractMotion-
ControlMode)
controlMode Name of controller object
Example
CartesianImpedanceControlMode cartImpCtrlMode;
cartImpCtrlMode = new CartesianImpedanceControlMode();
The parameters that can be set depend on the type of the controller used.
The individual controller classes in the KUKA RoboticsAPI provide specific
“set” and “get” methods for each parameter.
(>>> 20.5.2 "Parameterization of the Cartesian impedance controller"
Page 590)
(>>> 20.6.3 "Parameterization of the impedance controller with overlaid
force oscillation" Page 598)
(>>> 20.8 "Axis-specific impedance controller" Page 608)
Description
Syntax
object.move(motion.setMode(controlMode));
Element Description
motion Type: Motion
Motion to be executed
controlMode Type: Subclass of AbstractMotionControlMode
Name of controller object
With position control, the motors are controlled in such a way that the cur-
rent position of the robot always matches the setpoint position specified
by the controller with just a minimal difference. The position controller is
particularly suitable in cases where precise positioning is required.
The position controller is represented by the class PositionControlMode.
The data type has no configurable parameters for adapting the robot.
If the controller mode of a motion is not explicitly specified, then the posi-
tion controller is used.
• robot.move(…);
The impedance controller refers to the flange coordinate system of the
robot.
• gripper.move(…);
The impedance controller refers to the standard frame defined for grip-
per motions.
• gripper.getFrame("/TipCenter").move(...);
The impedance controller refers to the tool coordinate system that ex-
tends from the “TipCenter” frame on the gripper.
Examples
The force exerted at the contact point depends on the difference between
the setpoint position and the actual position and the set stiffness.
As shown in the figure (>>> Fig. 20-2), a large position difference and low
stiffness can result in the same force as a smaller position difference and
greater stiffness. If the force is increased by a motion in a contact situa-
tion, the time required to reach this force differs if the Cartesian velocity is
identical.
If higher stiffness values are used, a desired force can be reached earlier,
as only a small position difference is required. Since the setpoint position
is reached quickly, a jerk can be produced in this way.
Fig. 20-3: Force over time (high stiffness, small position difference)
In the case of a large position difference and low stiffness, the force is
built up more slowly. This can be used, for example, if the robot moves to
the contact point and the impact loads are to be reduced.
Fig. 20-4: Force over time (low stiffness, large position difference)
Under impedance control, the robot behaves like a spring. The character-
istics of this spring are defined by different parameters. This results in the
behavior of the robot.
With a Cartesian impedance controller, forces can be overlaid for all Car-
tesian degrees of freedom. Forces acting about an axis generate a torque.
For this reason, the overlaid torque and not the overlaid force is specified
for the rotational degrees of freedom. For the sake of simplification, the
terms “force” and “force oscillation” are taken to include the terms “torque”
and “torque oscillation” for the rotational degrees of freedom in the follow-
ing text.
CAUTION
In impedance control, inaccurate sensor information or incorrectly selec-
ted parameters (e.g. incorrect load data, incorrect tool) can be interpre-
ted as external forces, resulting in unpredictable motions of the robot.
Description
Syntax
controlMode.parametrize(CartDOF.degreeOfFreedom_1
<, CartDOF.degreeOfFreedom_2,…>).setParameter(value);
Element Description
controlMode Type: CartesianImpedanceControlMode
Name of controller object
degreeOf- Type: CartDOF
Freedom_1,
List of degrees of freedom to be described
degreeOf-
Freedom_2,
…
setParame- Method for setting a controller parameter
ter(value)
A separate method is available for each settable parame-
ter (value = value of the parameter).
Example
cartImpCtrlMode.parametrize(CartDOF.X,
CartDOF.Y).setStiffness(3000.0);
cartImpCtrlMode.parametrize(CartDOF.Z).setStiffness(1.0);
cartImpCtrlMode.parametrize(CartDOF.ROT).setStiffness(300.0);
cartImpCtrlMode.parametrize(CartDOF.ALL).setDamping(0.7);
robot.move(lin(getApplicationData().getFrame("/
P1")).setCartVelocity(800).setMode(cartImpCtrlMode));
Overview
The following methods are available for the parameters of the Cartesian
impedance controller that are specific to the degrees of freedom:
Method Description
setStiffness(…) Spring stiffness (type: double)
The spring stiffness determines the extent to which the robot yields to
an external force and deviates from its planned path.
Translational degrees of freedom (unit: N/m):
• 0.0 … 5000.0
Default: 2000.0
Rotational degrees of freedom (unit: Nm/rad):
• 0.0 … 300.0
Default: 200.0
Note: If no spring stiffness is specified for a degree of freedom, the
default value is used for this degree of freedom.
setDamping(…) Spring damping (type: double)
The spring damping determines the extent to which the virtual springs
oscillate after deflection.
For all degrees of freedom (without unit: Lehr’s damping ratio):
• 0.1 … 1.0
Default: 0.7
Note: If no spring damping is specified for a degree of freedom, the
default value is used for this degree of freedom.
Overview
The following methods are available for the parameters of the Cartesian
impedance controller that are independent of the degrees of freedom:
Method Description
setNullSpace Spring stiffness of the redundancy degree of freedom (type: double,
Stiffness(…) unit: Nm/rad)
The spring stiffness determines the extent to which the robot yields to
an external force and deviates from its planned path.
• ≥ 0.0
Note: If no spring stiffness is specified for the redundancy degree of
freedom, a default value is used for this degree of freedom.
setNullSpace Spring damping of the redundancy degree of freedom (type: double)
Damping(…)
The spring damping determines the extent to which the virtual springs
oscillate after deflection.
• 0.3 … 1.0
Note: If no spring stiffness is specified for the redundancy degree of
freedom, a default value is used for this degree of freedom.
Method Description
setMaxControl Limitation of the maximum force on the TCP
Force(…)
The maximum force applied to the TCP by the virtual springs is limi-
ted. The maximum force required to deflect the virtual spring is thus
also defined. Whether or not the motion is to be aborted if the maxi-
mum force at the TCP is exceeded is also defined.
Syntax:
• setMaxCartesianVelocity(maxVelocityX, maxVelocityY,
maxVelocityZ, maxVelocityA, maxVelocityB, maxVelocityC)
Explanation of the syntax:
Example 1
CartesianImpedanceControlMode mode =
new CartesianImpedanceControlMode();
mode.setNullSpaceStiffness(10.0);
mode.setNullSpaceDamping(0.7);
Example 2
CartesianImpedanceControlMode mode =
new CartesianImpedanceControlMode();
mode.parametrize(CartDOF.Z).setStiffness(3000.0);
mode.parametrize(CartDOF.Z).setAdditionalControlForce(20.0);
mode.setMaxControlForce(100.0, 100.0, 50.0, 20.0, 20.0,
20.0, true);
mode.parametrize(CartDOF.X, CartDOF.Y).setStiffness(10.0);
mode.setMaxPathDeviation(10.0, 10.0, 50.0, 2.0, 2.0, 2.0);
In this form of impedance control, the overlaid force causes the robot to
leave the planned path in a targeted way. The new path is thus deter-
mined by a wide range of different parameters.
In addition to stiffness and damping, further parameters can be defined,
e.g. frequency and amplitude. The programmed velocity of the robot also
plays a significant role for the actual path.
Overlaying additional forces has a strong influence on the robot motion
and the forces exerted by the robot. For example, low stiffness and high
overlaid forces can cause the robot to accelerate suddenly.
Parameterization must therefore be carried out with caution if working
with force activations. For example, begin by overlaying low forces and
approach the appropriate force values step by step. In addition, the mo-
tion resulting from the overlaid force must always be tested in T1 mode
first.
Example
The robot executes a relative motion in the Y direction of the tool coordi-
nate system in the TCP. A sinusoidal force oscillation in the X direction is
overlaid. The result is a wave-like path in the XY plane of the coordinate
system.
Application
Example
phase offset between the two oscillations plays a significant role in the
path.
Overview
The following methods are available for the parameters of the Cartesian
impedance controller with overlaid force oscillation that are specific to the
degrees of freedom:
Method Description
setAmplitude(…) Amplitude of the force oscillation (type: double)
Amplitude and stiffness determine the position amplitude.
Translational degrees of freedom (unit: N):
• ≥ 0.0
Default: 0.0
Rotational degrees of freedom (unit: Nm):
• ≥ 0.0
Default: 0.0
Note: If no amplitude is specified for a degree of freedom, the default
value is used for this degree of freedom.
setFrequency(…) Frequency of the force oscillation (type: double; unit: Hz)
Frequency and Cartesian velocity determine the wavelength of the
force oscillation.
• 0.0 … 15.0
Default: 0.0
Note: If no frequency is specified for a degree of freedom, the default
value is used for this degree of freedom.
Method Description
setPhaseDeg(…) Phase offset of the force oscillation at the start of the force overlay
(type: double; unit: °)
• ≥ 0.0
Default: 0.0
Note: If no phase offset is specified for a degree of freedom, the de-
fault value is used for this degree of freedom.
setBias(…) Constant force overlaid (type: double)
Using setBias(…), a constant force can be overlaid in addition to the
overlaid force oscillation. This force adds to the force resulting from
the spring stiffness and defined force oscillation.
If a constant force is overlaid without an additional force oscillation,
this results in a force characteristic which rises as a function of the
rise time defined with setRiseTime(…) and then remains constant. se-
tRiseTime(…) belongs to the controller parameters that are independ-
ent of the degrees of freedom.
(>>> 20.6.3.2 "Controller parameters independent of the degrees of
freedom" Page 601)
If a constant force is overlaid in addition to a force oscillation, the
force oscillation is offset in the defined direction.
Translational degrees of freedom (unit: N):
• ≥ 0.0
Default: Not limited
Rotational degrees of freedom (unit: Nm):
• ≥ 0.0
Default: Not limited
Note: If no force limit is specified for a degree of freedom, the default
value is used for this degree of freedom.
• ≥ 0.0
Default: Not limited
Rotational degrees of freedom (unit: rad):
• ≥ 0.0
Default: Not limited
Note: If no maximum deflection is specified for a degree of freedom,
the default value is used for this degree of freedom.
Example
During a joining process, an oscillation about the Z axis of the tool coordi-
nate system in the TCP is to be generated. The Cartesian impedance
controller with overlaid force oscillation is used for this. With a stiffness of
10 Nm/rad and an amplitude of 15 Nm, the position amplitude is approx.
1.5 rad. The frequency is set to 5 Hz. In order to exert an additional
pressing force in the direction of motion, a constant force of 5 N is gener-
ated in the Z direction and superposed on the overlaid force oscillation
about the Z axis.
CartesianSineImpedanceControlMode sineMode =
new CartesianSineImpedanceControlMode();
sineMode.parametrize(CartDOF.Z).setStiffness(4000.0);
sineMode.parametrize(CartDOF.Z).setBias(5.0);
sineMode.parametrize(CartDOF.A).setStiffness(10.0);
sineMode.parametrize(CartDOF.A).setAmplitude(15.0);
sineMode.parametrize(CartDOF.A).setFrequency(5.0);
Overview
The following methods are available for the parameters of the Cartesian
impedance controller with overlaid force oscillation that are independent of
the degrees of freedom:
Method Description
setTotalTime(…) Overall duration of the force oscillation (type: double; unit: s)
(>>> "Overall duration of the force oscillation" Page 602)
• ≥ 0.0
Default: Unlimited
setRiseTime(…) Rise time of the force oscillation (type: double; unit: s)
• ≥ 0.0
Default: 0.0
Note: If no rise time is specified for a degree of freedom, the default
value is used. This means that the amplitude rises abruptly to the de-
fined value without a transition. If the force to be overlaid is too great,
this can result in overloading of the robot and cancelation of the pro-
gram.
setHoldTime(…) Hold time of the force oscillation (type: double; unit: s)
• ≥ 0.0
Default: Unlimited
Note: If no hold time is specified for a degree of freedom, the default
value is used. This means that the overlaid force oscillation ends with
the corresponding motion.
setFallTime(…) Fall time of the force oscillation (type: double; unit: s)
• ≥ 0.0
Default: 0.0
Note: If no fall time is specified for a degree of freedom, the default
value is used. This means that the amplitude falls abruptly to zero
without a transition. If the drop in force is too great, this can result in
overloading of the robot and cancelation of the program.
setStayActiveUntil Response if the motion duration is exceeded (type: boolean)
PatternFinished(…)
If the force oscillation lasts longer than the motion, it is possible to
define whether the oscillation is terminated or continued after the end
of the motion.
The overall duration is the sum of the rise time, hold time and fall time of
the force oscillation:
• Rise time
Time in which the amplitude of the force oscillation is built up.
• Hold time
Time in which the force oscillation is executed with the defined ampli-
tude.
• Fall time
Time in which the amplitude of the force oscillation is reduced back to
zero.
Rise time, hold time and fall time of the force oscillation can be defined
20.7 Static methods for impedance controller with superposed force oscilla-
tion
Overview
The Cartesian impedance controller with overlaid force oscillation can also
be configured via static methods of the class CartesianSineImpedance-
ControlMode. This simplifies the programming, in particular of Lissajous
curves, as the user only has to specify a few parameters. The remaining
parameters which are important for the implementation are calculated and
set automatically. Default values are used for all other parameters. Addi-
tional settings are made as described using the parametrize(…) function
and the set methods of CartesianSineImpedanceControlMode.
• createDesiredForce(…): Static method for constant force
• createSinePattern(…): Static method for simple force oscillations
• createLissajousPattern(…): Static method for Lissajous curves
• createSpiralPattern(…): Static method for spirals
Description
Syntax
controlMode = CartesianSineImpedanceControlMode
.createDesiredForce(CartDOF.degreeOfFreedom, force, stiff-
ness);
Element Description
controlMode Type: CartesianSineImpedanceControlMode
Name of controller object
degreeOf Type: CartDOF
Freedom
Degree of freedom for which the constant force is to be
overlaid.
force Type: double
Value of the overlaid constant force. Corresponds to the
call of setBias(…) for the specified degree of freedom.
Translational degrees of freedom (unit: N):
• ≥ 0.0
Rotational degrees of freedom (unit: Nm):
• ≥ 0.0
stiffness Type: double
Stiffness value for the specified degree of freedom
Translational degrees of freedom (unit: N/m):
• 0.0 … 5000.0
Rotational degrees of freedom (unit: Nm/rad):
• 0.0 … 300.0
Description
Syntax
controlMode = CartesianSineImpedanceControlMode.createSi-
nePattern(CartDOF.degreeOfFreedom, frequency, amplitude, stiff-
ness);
Element Description
controlMode Type: CartesianSineImpedanceControlMode
Name of controller object
degreeOf- Type: CartDOF
Freedom
Degree of freedom for which the force oscillation is to be
overlaid.
frequency Type: double
Frequency of the oscillation (unit: Hz)
• 0.0 … 15.0
amplitude Type: double
Amplitude of the oscillation which is overlaid in the direc-
tion of the specified degree of freedom
Translational degrees of freedom (unit: N):
• ≥ 0.0
Rotational degrees of freedom (unit: Nm):
• ≥ 0.0
stiffness Type: double
Stiffness value for the specified degree of freedom
Translational degrees of freedom (unit: N/m):
• 0.0 … 5000.0
Rotational degrees of freedom (unit: Nm/rad):
• 0.0 … 300.0
Example
CartesianSineImpedanceControlMode sineMode;
sineMode =
CartesianSineImpedanceControlMode.createSinePattern(CartDOF.X
, 2.0, 50.0, 500.0);
robot.move(linRel(0.0, 150.0,
0.0).setCartVelocity(100).setMode(sineMode));
Description
The parameters of the second degree of freedom of the plane are calcu-
Programming with a compliant robot
Syntax
controlMode = CartesianSineImpedanceControlMode.createLis-
sajousPattern(CartPlane.plane, frequency, amplitude, stiff-
ness);
Element Description
controlMode Type: CartesianSineImpedanceControlMode
Name of controller object
plane Type: Enum of type CartPlane
Plane in which the Lissajous oscillation is to be overlaid
frequency Type: double
Frequency of the oscillation for the first degree of free-
dom of the specified plane (unit: Hz)
• 0.0 … 15.0
The frequency for the second degree of freedom is cal-
culated as follows:
• frequency · 0.4
amplitude Type: double
Amplitude of the oscillation for both degrees of freedom
of the specified plane (unit: N)
• ≥ 0.0
stiffness Type: double
Stiffness values for both degrees of freedom of the speci-
fied plane (unit: N/m)
• 0.0 … 5000.0
Example
CartesianSineImpedanceControlMode lissajousMode;
lissajousMode =
CartesianSineImpedanceControlMode.createLissajousPattern(Cart
Plane.XY, 10.0, 50.0, 500.0);
robot.move(linRel(0.0, 150.0,
0.0).setCartVelocity(100).setMode(lissajousMode));
Description
Syntax
controlMode = CartesianSineImpedanceControlMode.createS-
piralPattern(CartPlane.plane, frequency, amplitude, stiffness,
totalTime);
Element Description
controlMode Type: CartesianSineImpedanceControlMode
Name of controller object
plane Type: Enum of type CartPlane
Plane in which the spiral-shaped oscillation is to be over-
laid
frequency Type: double
Frequency of the oscillation for both degrees of freedom
of the specified plane (unit: N)
• 0.0 … 15.0
amplitude Type: double
Amplitude of the oscillation for both degrees of freedom
of the specified plane (unit: N)
• ≥ 0.0
stiffness Type: double
Stiffness values for both degrees of freedom of the speci-
fied plane (unit: N/m)
• 0.0 … 5000.0
Element Description
totalTime Type: double
Total time for the spiral-shaped oscillation. The time is
divided evenly between the upward and downward mo-
tion of the oscillation (unit: s).
• ≥ 0.0
Example
CartesianSineImpedanceControlMode spiralMode;
spiralMode =
CartesianSineImpedanceControlMode.createSpiralPattern(CartPla
ne.XY, 1.0, 100, 500, 10);
robot.move(positionHold(spiralMode, 10, TimeUnit.SECONDS));
The number of turns is a function of the total time for a turn (tperiod). The
time for a turn corresponds to the duration of an oscillation period, e.g.:
• Frequency of the force oscillation: f = 1.0 Hz
• Total time: t = 10 s
The number of turns is calculated as follows:
NumberTurns = Total time / tPeriod = 10 s / 1 s = 10
tPeriod = 1 / f = 1 / 1.0 Hz = 1 s
The maximum deflection results from Hooke’s law:
Δx = F / C = 100 N / (500 N/m) = 0.2 m = 20 cm
CAUTION
In impedance control, inaccurate sensor information or incorrectly selec-
ted parameters (e.g. incorrect load data, incorrect tool) can be interpre-
ted as external forces, resulting in unpredictable motions of the robot.
The following controller properties can be defined individually for each ax-
is:
• Stiffness
• Damping
Overview
The following set methods are available for the axis-specific impedance
controller:
Method Description
setStiffness(…) Spring stiffness (Type: double[]; unit: Nm/rad)
The axis-specific spring stiffness determines the degree of compliance
of an axis when force is applied.
• ≥ 0.0
Default: 1000
Note: The spring stiffness must be specified for every axis.
setDamping(…) Spring damping (type: double[]; without unit: Lehr’s damping ratio)
The axis-specific spring damping determines the extent to which the
virtual springs oscillate after deflection.
• 0.0 … 1.0
Default: 0.7
Note: The spring damping must be specified for every axis.
setStiffness Spring stiffness (type: double, unit: Nm/rad)
ForAllJoints(…)
A value determines the degree of compliance of all axes when force
is applied.
• ≥ 0.0
setDamping Spring damping (type: double; without unit: Lehr’s damping ratio)
ForAllJoints(…)
A value determines the extent to which the virtual springs in all axes
oscillate after deflection.
• 0.0 … 1.0
Constructor syntax
JointImpedanceControlMode jointImp =
new JointImpedanceControlMode(stiffnessJ1 ... stiffnessJ7);
Element Description
jointImp Type: JointImpedanceControlMode
Name of controller object
stiffnessJ1 Type: double; unit: Nm/rad
…
Axis-specific spring stiffnesses
stiffnessJ7
The number of values is dependent on the axis selection
(here: 7 axes).
Example 1
JointImpedanceControlMode jointImp =
new JointImpedanceControlMode(2000.0, 2000.0, 2000.0,
2000.0, 100.0, 100.0, 100.0);
//...
jointImp.setStiffness(2000.0, 2000.0, 2000.0, 1500.0,
100.0, 100.0, 100.0);
jointImp.setDampingForAllJoints(0.5);
Example 2
JointImpedanceControlMode jointImp =
new JointImpedanceControlMode(2000.0, 2000.0, 2000.0,
2000.0, 100.0, 100.0, 100.0);
//...
jointImp.setStiffnessForAllJoints(100);
jointImp.setDampingForAllJoints(0.5);
Description
Using the motion command positionHold(…), the robot can hold its Carte-
sian setpoint position over a set period of time and remain under servo
control.
If the robot is operated in compliance control, it can remove itself from its
setpoint position. Whether, how far and in which direction the robot moves
from the current Cartesian setpoint position (= position at the start of the
command positionHold(…)) depends on the set controller parameters and
the resulting forces. In addition, the compliant robot under servo control
can be forced off its setpoint position by external forces.
Syntax
Element Description
controlMode Type: subclass of AbstractMotionControlMode
Name of controller object
time Type: long
Indicates how long the specified controlMode is to be
held. The value must be >= 0. A value of < 0 indicates
infinite.
The time unit is defined with unit.
unit Type: enum of type TimeUnit
Unit of the specified time
The Enum TimeUnit is an integral part of the standard
Java library.
Example
The robot is to be held in its current position for 10 seconds. During this
time, the robot is switched to “soft” mode in the Cartesian X direction.
controlMode.parametrize(CartDOF.X).setStiffness(1000.0);
controlMode.parametrize(CartDOF.ALL).setDamping(0.7);
Diagnosis
21 Diagnosis
Description
The general error state of the connected field buses can be displayed on
the smartHMI.
Procedure
Description
The status indicator in the I/O groups area of the navigation bar of the
smartHMI displays the state of the configured I/O groups.
• The lower indicator shows the collective state of all configured I/O
groups.
• The upper indicator shows the state of the selected I/O group.
Procedure
• In the navigation bar, select the desired I/O group from I/O groups.
The detail view of the I/O group opens. Any faulty inputs/outputs are
indicated.
Description
A log of the events and changes in state of the system can be displayed
on the smartHMI.
Procedure
Overview
Item Description
1 Refresh button
Refreshes the displayed log entries. As standard, the most re-
cent entry is shown at the top of the list after refreshing. If a
time filter is active, the oldest entry is shown at the top of the
list.
2 List of log entries
(>>> "Log event" Page 615)
Diagnosis
Item Description
3 Filter settings button
Opens the Filter settings window in which the log entries can
be filtered according to various criteria.
4 Filter settings display
The currently active filters are displayed here.
Log event
The log entries contain various information pertaining to each log event.
Item Description
1 Log level of the event
(>>> "Log level" Page 615)
2 Date and time of the log event (system time of the robot con-
troller)
3 Source of the log event (robot or station)
4 Button to maximize/minimize the detail view
The button is only available if more than 2 symptoms are
present.
5 Symptoms of the log event (detail view)
As standard, up to 2 symptoms are displayed per event.
6 Category or brief description of the log event
Log level
Precondition
Procedure
1. Touch the Filter settings button. The Filter settings window opens.
2. Select the desired filters with the appropriate buttons.
3. Touch the Filter settings button or an area outside the window.
The Filter settings window is closed and the selected filters are acti-
vated.
The filters are reset when the Log view is closed. When the view is re-
opened, the default settings are reactivated.
Description
Item Description
1 Filter Source(s)
The log entries can be filtered according to the sources that
caused the log event.
• Station: All log entries are displayed which affect the station
and the inputs/outputs of field buses.
• Robot: Only those log entries are displayed which affect the
robot selected in the navigation bar.
Default for log at Station level: All sources are selected.
Default for log at Robot level: The source is the robot selected
in the navigation bar.
2 Filter Timespan
A time filter can be activated to display only the log entries of a
specific timespan.
Default: All (no time filter active)
Diagnosis
Item Description
3 Filter Level
The log entries can be filtered according to their log level.
Default: Info, warning, error (no filter active for log level)
Item Description
1 Time stamp
Time at which the error occurred
2 Level
Log level of the message
Errors have the log level Error.
3 Error message
4 Information when application is terminated, e.g. following a real-
time error
Item Description
5 Error type
Errors are defined as Java classes. The name of the class and
the corresponding package are displayed. The error message
follows (see item 3).
6 Stack trace
The method calls which led to the error are displayed in as-
cending order. The methods are specified with their full identifi-
ers. In addition, the number of the program line in which the er-
ror occurred is displayed.
The stack trace can be used to determine the program position
at which the method which ultimately caused the error was
called.
Example, read from the bottom to the top:
Diagnosis
Item Description
1 Consequential error
The last element in the error chain is displayed here. In the ex-
ample, this is an error of type RuntimeException which occurred
during execution of the run() method in line 38 of the applica-
tion EmbeddedExceptionApplication.java.
2 Causative error
The display of the causative error is always initiated as follows:
Description
If the robot can no longer be moved due to a virus infection, the follow-
ing options are available:
• Reinstall the System Software on the robot controller.
• If the robot can still not be moved, create the diagnosis package
KRCDiag and contact KUKA Service.
Precondition
Procedure
• Select the robot controller tile at the Station level and then the Virus
scanner tile. The Virus scanner view opens.
Messages from the virus scanner can also be displayed using the Log
tile.
For error analysis, KUKA Customer Support requires diagnostic data from
the robot controller.
For this purpose, a ZIP file called KRCDiag is created, which can be ar-
chived on the robot controller under D:\DiagnosisPackages or on a USB
stick connected to the robot controller. The diagnosis package KRCDiag
contains the data which KUKA Customer Support requires to analyze an
error. These include information about the system resources, machine da-
ta and much more.
Sunrise.Workbench can also be used to access the diagnostic information.
For this purpose, either an existing diagnosis package is loaded from the
robot controller or a new package is created.
Projects and applications are not included in the diagnosis package. It is
advisable to transfer these data separately, as they can contain impor-
tant information for troubleshooting.
Description
With this procedure, the diagnosis package KRCDiag can be created and
archived on the robot controller under D:\DiagnosisPackages or on a USB
stick.
Procedure
1. For archiving to a USB stick: Plug the USB stick into the robot control-
ler and wait until the LED on the USB stick remains permanently lit.
2. In the main menu, select Diagnosis > Create diagnosis package
and select the desired file location.
• Hard drive
• USB stick
The diagnostic information is compiled. Progress is displayed in a win-
dow. Once the operation has been completed, this is also indicated in
the window. The window is then automatically hidden again.
Description
This procedure uses keys on the smartPAD instead of menu items. It can
thus also be used if the smartHMI is not available.
The KRCDiag diagnosis package is created and archived on the robot
controller under D:\DiagnosisPackages.
The key sequence described in the procedure must be executed within
2 seconds.
Diagnosis
Procedure
Precondition
Procedure
Precondition
Procedure
5. To navigate to the folder into which the diagnosis packages were cop-
ied, e.g. to send them directly by e-mail, click on Open target folder
in Windows Explorer.
6. Click on Finish. The wizard is closed.
Remote debugging
22 Remote debugging
Precondition
Target group
Description
Step Description
1 Starting a debugging session
When starting a debugging session, a remote connection is
established between Sunrise.Workbench and the robot con-
troller. The project in the workspace of Sunrise.Workbench
and the active project on the robot controller are automati-
cally checked for consistency and synchronization is re-
quested if required.
(>>> 22.1.2 "Starting the debugging session" Page 625)
2 Performing remote debugging of the task
The programmer uses break points to define the positions
in the program code at which execution of the task is to be
interrupted during remote debugging.
If remote debugging is to be carried out for an application
that has not yet been started, the application must be star-
ted manually via the smartPAD once the remote connection
has been established.
Once task execution has been stopped at a break point,
further program execution can be controlled by Sun-
rise.Workbench by executing the source code of the task
step by step. On completion of a step, task execution is au-
tomatically stopped.
(>>> 22.3.2 "Break points" Page 631)
3 Using debugging functions
While task execution is interrupted, debugger functions,
such as the observation and modification of variable values,
can be used. Adaptation of the source code is also possi-
ble.
(>>> 22.3.6 "Variables view" Page 646)
(>>> 22.3.7 "Monitoring processes" Page 650)
(>>> 22.3.8 "Modifying source code" Page 653)
4 Ending a debugging session
When ending a debugging session, the remote connection
to the controller is disconnected. Execution of the running
task can now no longer be influenced by Sunrise.Work-
bench. If modifications have been made to the code, project
synchronization is offered.
If, when the remote debugging connection is terminated,
the task is currently paused at a break point, the program
is automatically resumed after this termination.
(>>> 22.1.3 "Ending the debugging session" Page 626)
Description
Tools that support this process are called debuggers. The remote debug-
Remote debugging
ger integrated into Sunrise.Workbench is based on the standard Java and
Eclipse debugger.
Eclipse enables the debugging of applications that are executed in a dif-
ferent Java runtime environment or on different physical machines. In the
case of remote debugging of tasks, the Sunrise.Workbench debugger is
used; the task itself is executed on the controller.
During remote debugging, a connection is established between Sun-
rise.Workbench and the robot controller. A debugging session is started in
this way. During remote debugging, the execution of tasks running on the
controller can be monitored via Sunrise.Workbench and it is possible to in-
fluence program execution. Errors can be diagnosed and the source code
can be optimized.
The Debugging perspective contains the most important views for remote
debugging.
While a debugging session is running, the smartPAD is used for starting
applications and issuing the motion enable signal.
All safety functions configured for the project are also active during re-
mote debugging.
Overview
Description
Precondition
Procedure
4. Click on Execute.
5. The system signals that the remote connection to the robot controller
has been established successfully. The remote connection is establish-
ed with OK and the debugging session is started.
6. When the first active break point is reached, the corresponding task is
paused.
If the Debugging perspective is not active, the dialog Confirm
change of perspective is displayed in Sunrise.Workbench. It is rec-
ommended that the dialog is ended with Yes to switch to the Debug-
ging perspective of Sunrise.Workbench.
In the case of a change of perspective, the decision in the dialog
box can be saved with Remember my decision.
Description
Precondition
Procedure
Remote debugging
• Synchronize project is used to synchronize the project and trans-
fer the changes to the controller.
• With Cancel, the changes are only saved permanently for the
project in the workspace of Sunrise.Workbench. On the controller,
the changes are deleted after switching off and back on.
NOTICE
It is advisable to use the Synchronize project option, as the system re-
sponse may otherwise be different after a reboot. If the reboot is not
carried out immediately, these changes in behavior may be unexpected
and could result in damage to the machine.
NOTICE
If execution of a task is paused when the connection is disconnected,
task execution is resumed automatically immediately after disconnection.
This also applies to the running application. In Automatic mode, and in
the Test modes if the enabling switch and Start button are pressed, the
robot may move. It is thus advisable to disconnect the remote connec-
tion only if the application has been terminated, or to pause motion exe-
cution first by pressing the Start button on the smartPAD.
Remote debugging influences the time response of tasks. The time re-
sponse may therefore deviate from the real time response during
normal execution of the task.
NOTICE
Irrespective of the mode, the system response may change. Debugging
of a task in Automatic mode must be carried out with particular care.
Interventions that result in a change of state must be tested in Manual
Reduced Velocity mode (T1).
Interventions and commands that cause a change of state include:
• Modification of program execution
• Execution of additional commands
• Motion commands
• Modification of variables
• Modification of the source code during debugging
• Setting inputs/outputs
• Changes of values, e.g. by calling set methods
This can lead to deviations from the program execution of the task. The
deviations may have an effect beyond the duration of the debugging
session. Unexpected robot motions are also possible.
Overview
Debugging can be performed for all tasks running on the controller. In or-
der to debug an application, it may be necessary to start the application
via the smartPAD.
As soon as the first active break point is reached after the remote connec-
tion has been established, execution of the corresponding task can be
controlled via Sunrise.Workbench. Various functions are available for this.
The selected function determines the command line up to which the task
is continued.
If task execution is paused during debugging, additional functions are
available and changes can be made to the source code:
• Available functions:
(>>> 22.3.5 "Overview of the toolbar in the “Debugging” view"
Page 640)
• Additional functions of the debugger:
(>>> 22.3.6 "Variables view" Page 646)
(>>> 22.3.7 "Monitoring processes" Page 650)
• Information about modification of the source code during debugging:
(>>> 22.3.8 "Modifying source code" Page 653)
Description
If the application for which debugging is being carried out does not con-
tain any active break points, it is executed completely without stopping
and then terminated.
Precondition
Procedure
Remote debugging
cordance with the operating mode:
• T1, T2:
‒ Press and hold down the enabling switch.
‒ Press and hold down the Start key.
• AUT:
In AUT mode, no additional operator action is required. The
motion is executed immediately.
5. Once the program section has been executed, the application is stop-
ped.
Exception: With Resume, the application is continued until the next
break point or the end of the application is reached.
6. Debugging functions, such as the observation of variables or the
changing of values, can be used between the individual steps.
Description
Precondition
Procedure
Item Description
1 Debug view
Displays threads of the virtual machine connected for debug-
ging.
2 Debugging toolbar
Program execution during remote debugging is controlled by
means of the buttons. The toolbar can be displayed using the
drop-down arrows or the “Show Debug Toolbar” button.
3 Variables view
The variables are displayed and managed here. The variables
refer to the currently selected context (line/method) in the “De-
bug” view (item 1). Modification of values is possible.
4 Breakpoints view
Break points are displayed and managed here.
Remote debugging
Item Description
5 Editor area
During remote debugging, the source code currently being exe-
cuted can be displayed here. If task execution is paused, the
current command line is highlighted. Modifications to the source
code are generally possible and are applied in the running task.
An exception is changes to the schema that cannot be applied
in the running task.
Overview
Description
Item Description
1 Editor bar
Break points are displayed next to the corresponding command
line in the bar with a gray background at the left-hand edge of
the editor. Break points can be added to the editor bar, deleted,
activated or deactivated.
2 Monitoring point (in this case for the array “robot”)
Procedure
Remote debugging
Break points can also be added and removed by right-clicking on the
corresponding point of the editor bar. Select the entry Break point
on/off in the context menu that appears.
Description
Procedure
Description
The properties of a break point define the conditions for stopping a task
when the break point is reached. The settings are dependent on the type
of break point.
Procedure
The view contains a list of the break points of all classes in the work-
space of Sunrise.Workbench. The view offers the following functions:
• Display of all break points
• Activation, deactivation and deletion of break points
• Modification of break point properties
• Addition of exception break points
Overview
Item Description
1 Activation of the break point
Check box active: Break point is activated.
Check box not active: Break point is not activated.
2 Designation of the break point
The designation is composed of special properties of the break
point in order to enable unambiguous identification.
3 Break point list
List of the break points of all classes in the workspace
4 Break point properties
The properties of the break point selected in the list can be dis-
played and edited in this area.
The functionalities offered by the buttons in the toolbar include the follow-
ing:
Button Description
Remove selected break points
Deletes the break points selected in the break point list.
Remove all break points
Deletes all break points in the list.
Go to file for break point
The class containing the break point selected in the list is
opened in the editor area in the foreground and the corre-
sponding command line is selected.
Remote debugging
Button Description
Skip all break points
If this button is active, all break points are deactivated and
do not cause the execution of the corresponding task to be
stopped.
Add break point for Java exception condition
Opens the dialog for adding an exception break point.
Description
Overview
Item Description
1 Check box for activation of the condition
• input == FALSE
• counter <= 510
Complex Java instructions can also be formulated. The com-
mands are then executed every time the break point is reached.
A Boolean value must be returned at the end of the sequence
of instructions in order to enable evaluation of the condition.
Correct syntax must be observed.
Variables and commands that are also available at the position
of the break point in the source code of the task or class can
be used when formulating the conditions.
Evaluation of the conditions results in a significant change in
the time response. It is advisable to limit the number and dura-
tion of the commands used to an absolute minimum, as the
conditions are evaluated every time the break point is reached.
Example
Remote debugging
Fig. 22-5: Conditional break point
Description
Item Description
1 Position of the command pointer (blue arrow)
The command pointer indicates the next command to be execu-
ted. The current position of the command pointer in the source
code is indicated by a blue arrow.
2 Next command line to be executed
In the paused thread, the currently selected row in the stack
trace.
Description
The Debug view contains the toolbar and a list of all Java threads
running on the controller. The task for which debugging is carried out is
one of the threads running on the controller.
In the Debug view, the corresponding stack trace is displayed beneath a
thread. The stack trace contains the current method calls of a thread and
is used for tracking program execution.
Item Description
1 Toolbar
Program execution during remote debugging is controlled by
means of the buttons.
2 Task thread
Task-relevant part of stack trace of the application thread. The
designation contains the name of the executed tasks (here ap-
plication.ExampleApplication). The corresponding stack trace is
located beneath the thread.
Remote debugging
Item Description
3 Stack trace
The stack trace of the task thread contains the methods that
are relevant for execution of the task. The called methods are
specified with their identifiers. In this way, the user can identify
the relevant methods.
The methods are specified in the order in which they are called.
Example
If the run() method is selected in the stack trace of the task thread, the
current position of the command pointer in the run() method is displayed:
The filled white arrow icon indicates the call of assembly(), and thus the
progress of the task in the run() method.
Remote debugging
Button Name/description
Step back
Key: F7
The method currently being executed is executed through
to the end as long as there are no breakpoints present be-
fore the end of the method. Task execution then stops in
the calling method.
(>>> 22.3.5.4 "Terminating the executed method (Step
back)" Page 643)
Back to frame
No key assigned
This function can be used to jump to a point in the source
code that has already been executed.
(>>> 22.3.5.5 "Executing code sections again (Back to
frame)" Page 644)
Pause
No key assigned
Pauses execution.
(>>> 22.3.5.7 "Debugging: pausing threads (Pause)"
Page 646)
--- Execution to line (only available as a keyboard shortcut)
Key combination: Ctrl+R
Task execution is resumed until the command pointer rea-
ches a command line defined by the user.
(>>> 22.3.5.6 "Defining the code section to be executed
(Execution to line)" Page 645)
The Resume button is used to continue execution of a task until the next
break point or the end of the task is reached.
Description
If the current command line contains a method call, the command pointer
jumps to the start of the called method when Step in is used.
The source code of the called method is only displayed if the source
code of this method is available. If the source code is not available, the
warning Source not found is displayed.
• Execution can be resumed.
• The user has no way of viewing the command currently being exe-
cuted.
• In this case, Step back takes the user back to source code that can
be displayed.
(>>> 22.3.5.4 "Terminating the executed method (Step back)"
Page 643)
• Use of Step over is recommended for jumping into a motion com-
mand (robot.move(…)).
(>>> 22.3.5.3 "Executing a method completely (Step over)"
Page 642)
If the current command line contains not a method call, but an individual
instruction, the command line is executed and the command pointer jumps
to the next command line.
Example
Description
Step over executes the current command line and the command pointer
jumps to the next program line.
If the command line contains a method call, the method is executed com-
pletely as long as it does not contain a break point.
Formatting
Since the source code is executed step by step during remote debugging,
the formatting of the source text influences the number of steps required
for complete execution of the commands when using Step over.
Formatting example: Object of type CartesianImpedanceControlMode
With the following formatting, 3 steps are required when using Step over:
Remote debugging
CartesianImpedanceControlMode mode =
new CartesianImpedanceControlMode();
mode.parametrize(CartDOF.Z).setStiffness(500);
If the code is divided by further line breaks, the code section is completely
executed after a total of 4 steps with the following formatting when using
Step over:
CartesianImpedanceControlMode mode =
new CartesianImpedanceControlMode();
mode.parametrize(CartDOF.Z)
.setStiffness(500);
Example
Description
Step back causes the method in which the command pointer is currently
located to be executed completely (as long as there are no further break
points present). The command pointer returns to the calling method and
jumps to the following command line. Program execution is paused.
If, when Step back is used, program execution is interrupted before the
end of the method has been reached and resumed with Resume, the
pause requested by Step back is invalidated. In this case, execution of
the task is not interrupted at the end of the method.
Example
NOTICE
Back to frame changes the normal program execution. If state-chang-
ing interventions are carried out in the current method or its subme-
thods, this can result in unexpected system behavior and unexpected
robot motions.
Interventions and commands that cause a change of state include:
• Motion commands
• Modification of variables
• Modification of the source code
• Setting inputs/outputs
• Changes of values, e.g. by calling set methods
Description
Back to frame can be used to run program sections that have already
been executed again. As standard, the command pointer jumps to the
start of the method that is currently being executed. Program execution is
then paused.
In the Debugging view, it is possible to return to each call level of the
task using the stack trace. To do so, the desired method is selected in the
stack trace. Back to frame causes the command pointer to jump to the
start of this method.
Once the command pointer has been placed at a previously executed po-
sition in the code by means of Back to frame, the following code can be
executed (again).
When Back to frame is used, modifications to arrays or external data
that were not carried out in the affected code section are not undone.
Example
Remote debugging
Fig. 22-14: Back to frame (jump to start of current method)
If the run() method is first selected in the stack trace of the task, Back to
frame causes the command pointer to jump to the start of the run() meth-
od:
Description
With Execution to line, the program is resumed until the command point-
er reaches a command line defined by the user. Execution to line is not
available in the Debugging view.
Procedure
1. Left-click into the line to which the task is to be executed. The line is
highlighted with a blue background.
2. Task execution is resumed as far as the selected line or a preceding
break point by means of the keyboard shortcut Ctrl+R.
Alternatively, the function can be selected from the context menu Execu-
Remote debugging
When pausing, as when reaching a break point, the current command line
is displayed in the editor area. If the corresponding source code is not
available when using Pause, the warning Source not found is displayed
in the editor area.
The Start/Pause key on the smartPAD is only used to pause motion
commands. Pausing via the smartPAD only affects execution of the ap-
plication if a synchronous motion command is due to be executed, as
the command pointer only jumps to the next motion line after the motion
command has been completed.
Remote debugging
Fig. 22-16: Variables view
Item Description
1 Table of available variables
The table contains the currently available arrays and local varia-
bles and their values. Only those variables that are available at
the position of the command pointer in the selected method in
the stack trace of the Debugging view are displayed.
The Name column contains the variable name. Variables with a
complex type are displayed hierarchically. Variables with com-
plex data types can be expanded and their arrays displayed us-
ing the icon to the left of the name.
The current value of the variable is displayed in the Value col-
umn. In the case of variables with complex data types, the re-
sult of the call of the toString() method is displayed as
standard. The values of primitive data types and string values
can be modified directly in the table.
2 Detailed information
This area contains detailed information about the variable selec-
ted in the table. The variable value is displayed for primitive da-
ta types and strings. In the case of complex data types, the re-
sult of the call of the toString() method is displayed as standard.
Description
Item Description
1 Instance
The variable this refers to the instance of the class whose
method has been selected in the stack trace and in whose
source code the command pointer is currently displayed. During
remote debugging of a task, the robot that is being used can be
accessed, e.g. via the instance of the class. Here, this is the
application for which remote debugging is being carried out.
2 Representation of complex data types
Variables with a complex data type (here the class CartesianSi-
neImpedanceControlMode) are displayed in a hierarchical struc-
ture. Expanding the structure displays the arrays of the refer-
enced object. Arrays of primitive data types and strings are at
the bottom level.
3 Changes of values
The values of primitive data types and string values can be
modified directly in the table. Once a value has been modified,
the variable is highlighted in yellow in the table.
Precondition
Remote debugging
Procedure
As standard, only those variables that are available at the position of the
command pointer in the selected method in the stack trace of the Debug-
ging view are displayed:
1. In order to display variables that are available in a different method,
select the method in the stack trace of the Debugging view.
2. In order to modify variables of primitive data types, left-click on the
value of the variable displayed in the Value column.
3. Enter the new value and confirm with the Enter key.
If incorrect values are entered, a message is displayed and the old val-
ue is retained. However, only incorrect entries that are recognized as
such by the autocorrect function of the Java editor are prevented.
New values can be assigned to variables with complex data types in the
dialog Change object value:
1. Right-click on the desired variable in the table and select Change val-
ue... from the context menu. The Change object value dialog opens.
2. Enter the corresponding instructions in the editor box.
If task execution is paused during remote debugging, the Java editor has
advanced context help for variables. The advanced context help is then
available for all variables that are available at the position of the
command pointer in the selected method in the stack trace.
To display the context help, the mouse pointer is moved over the desired
variable in the source code. A window opens, displaying information about
the variables (data type, name, current value).
Complex data types are displayed in a hierarchical structure, like in the
Variables view. Expanding the structure displays the arrays of the refer-
enced object. Elementary data types and strings are located at the bottom
hierarchy level.
Item Description
1 Variable (source code)
Variable in the source code for which the advanced context
help is displayed.
2 Variable (context help)
Advanced context help for the variable. The designation and
value are displayed. In the case of complex data types, the da-
ta type is also specified.
Variables with a complex type are displayed hierarchically in a
tree structure.
3 Details
Details of the selected component are displayed here. In the
case of variables with primitive data types and strings, the cor-
responding value is displayed; in the case of variables with a
complex data type, the result of the call of toString() is dis-
played as standard.
Description
During remote debugging, data can also be monitored that are not availa-
ble as variables. These include, for example, the current position of the
robot.
Monitoring expressions can be formulated in Sunrise.Workbench. The
monitoring expressions are managed in the Expressions view and evalu-
ated each time task execution is stopped during a debugging session.
Both individual expressions and more complex instruction sequences can
be entered. Correct syntax must be observed.
Configured monitoring expressions are not deleted after the end of the de-
bugging session and are thus also taken into consideration in subsequent
debugging sessions.
NOTICE
It is recommended that monitoring expressions are only used for re-
questing states and that no state-changing commands are used in the
expressions.
Interventions and commands that cause a change of state include:
• Motion commands
• Modification of variables
• Modification of the source code
• Setting inputs/outputs
• Changes of values, e.g. by calling “set” methods
Procedure
Remote debugging
Overview
Item Description
1 Table of created monitoring expressions
The Name column contains the source code of the monitoring
expression. If available, the return value of the expression is
specified under Value.
2 Line for new expression
New expressions can be entered in the first unoccupied line of
the table.
3 Details
Detailed information about the selected expression is displayed
in this area. As standard, complex data types are the result of
the call of toString() on the return value of the monitoring ex-
pression. For variables of primitive data types and strings, the
corresponding value is displayed.
4 Evaluation error
If an expression cannot be evaluated, an error message is dis-
played in the Value column.
Precondition
Procedure
1. Left-click into the first blank line (indicated by a green + symbol) in the
Name column.
2. Enter the monitoring expression in the Name column and confirm with
the Enter key. The monitoring expression is added.
If a debugging session is active and task execution has been stopped,
the expression is evaluated immediately.
NOTICE
Monitoring expressions are not automatically deleted after the end of
the debugging session and are thus also active in subsequent debug-
ging sessions. The use of monitoring expressions may modify program
execution. It is recommended not to use state-changing commands in
monitoring expressions. Unexpected behavior may otherwise result.
Precondition
Procedure
Description
Procedure
Example
Remote debugging
robot.getCurrentCartesianPosition(gripper.getDefaultMotionFra
me());
NOTICE
The jump by the command pointer to the start of a method on saving
modifies the normal program sequence. This can result in unexpected
system behavior and unexpected robot motions.
Appendix
23 Appendix
From Version 1.8 onwards, KUKA Sunrise.OS contains new features that
affect the upward compatibility of projects created using an earlier soft-
ware version (< 1.8).
• Task functions in the RoboticsAPI
Some task functions have been renamed or are now used differently.
The migration of projects that use these task functions can thus lead
to compiler errors. The programming must be adapted.
(>>> 23.1.1 "Modified task functions – adapting the programming"
Page 655)
• I/O configuration
The current version of WorkVisual generates a changed folder struc-
ture when exporting the I/O configuration in Sunrise.Workbench (the
folder generatedFiles now contains the folder IOConfiguration).
If a project is synchronized that still has the old folder structure, the
I/O configuration is not transferred and no I/Os are available on the ro-
bot controller.
In order to generate the new folder, the I/O configuration of the project
must be opened in WorkVisual and exported again in Sunrise.Work-
bench. Precondition: The option package supplied with the new soft-
ware (KOP file Sunrise) is installed in WorkVisual. Only then is the
new folder generated on exporting.
If, following the export, the folder generatedFiles contains the folder
IOConfiguration, the project can be synchronized on the robot con-
troller.
The modified task functions and the adaptations required in the tasks are
described here in order to be able to continue using tasks created with a
software version < 1.8.
ITaskLogger
ITaskFunction
If the providing task implements the interface itself, transfer the in-
stance of the task for the parameter Interface instance:
return this;
KUKA Service
24 KUKA Service
Introduction
Information
A
ABC 2-point method.....................................143
B
ABC world method....................................... 145 Background application, new......................... 61
Accessories.............................................. 23, 27 Background application, starting.......... 117, 118
Activating, safety configuration.................... 284 Background application, stopping................ 117
Activation delay, for safety function.............312 Background task, cyclic................................553
Actual position, axis-specific........................ 119 Background tasks......................................... 551
Actual position, Cartesian............................ 120 Backup Manager.................................. 124, 217
addCartesianForce(…)................................. 512 Backup Manager, configuration................... 212
addCartesianTorque(…)................................512 Base-related TCP force component
addCommandedCartesianPositionXYZ(…).. 512 (AMF)...................................258, 261, 319, 351
addCommandedJointPosition(…)................. 512 Base calibration............................................ 146
addControllerListener(…)..................... 462, 467 Base coordinate system........................ 95, 146
Base for jogging........................................... 175
addCurrentCartesianPositionXYZ(…)...........513
Blocking wait.................................................508
addCurrentJointPosition(…)..........................512
BooleanIOCondition......................................472
addDoubleUserKey(…).................................519
Brake defect................................................... 41
addExternalJointTorque(…).......................... 511
Brake ramp monitoring, Brake.....................569
addInternalJointTorque(…)............................511
Brake test..................................................... 153
addUserKey(…)............................................ 519
Brake test application, template.................. 156
Administrator........................................ 196, 197
Brake test, evaluation...................................165
Allow muting via input..................................356
Brake test, performing..................................169
AMF................................................................ 20
Brake test, programming interface.............. 160
API.................................................................. 20
Brake test, requesting result........................167
App_Enable.......................................... 236, 245
Brake test, result (display)........................... 170
App_Start..............................................236, 544
Brake test, starting execution...................... 164
Appendix....................................................... 655
Brake test, starting position......................... 159
Application data (view)................................... 54
Brake, defective............................................155
Application mode............................................ 98
BrakeState (enum)....................................... 168
Application override............... 97, 115, 116, 469
BrakeTest (class)..................................160, 163
Application tool............................................. 101
BrakeTestResult (class)................................166
Application, pausing..................................... 531
Braking distance............................................. 28
Approximate positioning............................... 382
Break conditions for motions....................... 495
Approximate positioning point...................... 382
Break conditions, evaluating........................ 496
areAllAxesGMSReferenced()........................466
Break point, conditional................................635
areAllAxesPositionReferenced()................... 466
Break point, view..........................................633
areDataValid()............................................... 161
Break points..................................................631
Asynchronous motion execution.................. 416
breakWhen()................................................. 495
attachTo(…).......................................... 435, 436
breakWhen(…)..............................................497
AUT (operating mode)....................................28
Bus I/Os, mapping........................................231
AutExt_Active................................................237
AutExt_AppReadyToStart.....................237, 544
Auto-complete...............................................399
Automatic (operating mode)...........................28 C
Automatic mode..............................................47 Calibration.....................................................140
Automatic mode (AMF)............... 257, 259, 287 Calibration, base...........................................146
Auxiliary point.......................................374, 418 Calibration, tool.............................................140
awaitFileAvailable(…)................................... 516 cancel()......................................................... 532
Axis-specific impedance controller...... 585, 608 Cartesian impedance controller.. 585, 587, 596
Axis-specific monitoring spaces, defining....307 Cartesian position, requesting..................... 456
Axis-specific robot position, requesting....... 455 Cartesian protected space monitoring
Axis limit....................................................... 307 (AMF)........................................... 258, 260, 304
Axis range.............................................. 28, 307 Cartesian protected spaces, defining.......... 304
Axis range monitoring (AMF)...... 257, 260, 307
M O
Machinery Directive........................................ 28 Object management..................................... 180
Main menu key........................................ 72, 75 Object properties, displaying/editing............ 183
Main menu, calling......................................... 87 Object template, copying..............................188
Maintenance................................................... 47 Object templates (view)..................................54
Manipulator..................................23, 27, 29, 32 ObserverManager.................................506, 508
Manual guidance mode................................427 Offset, teaching............................................ 134
Manual guidance, axis limitation..................431 Old project, loading...................................... 216
Manual guidance, motion type.....................381 onIsReadyToMoveChanged(…)....................462
Manual guidance, programming.................. 427 onKeyEvent(…), IUserKeyListener...............521
Manual guidance, velocity limitation............ 432 onSafetyStateChanged(…)...........................467
Manual mode..................................................46 onTriggerFired(…).........................................501
Manual override..................... 97, 114, 116, 469 Open-source................................................... 22
Mapping, inputs/outputs............................... 233 Operating hours meter................................. 124
Mass of the heaviest workpiece.................. 357 Operating mode, changing.............................92
Mastering...................................................... 132 Operating time.............................................. 124
Mastering state, requesting..........................461 Operation, KUKA smartPAD.......................... 71
Mastering, checking......................................137 Operation, KUKA Sunrise.Workbench........... 53
Mastering, deleting....................................... 139 Operator......................................... 90, 196, 197
Mastering, with tool...................................... 136 Operator safety........................................ 35, 37
Mastering, without tool................................. 133 Operators................................................31, 473
Media flange................................................. 211 Option package, installing............................ 217
Media flange Touch............................. 288, 290 Option package, removing from robot
Menu bar........................................................ 54 controller....................................................... 221
Message programming.................................528 Option package, uninstalling........................ 220
P R
Package Explorer (view)................................ 54 RAM................................................................ 51
Panic position................................................. 36 Reaction distance........................................... 28
Password, changing..................................... 198 Ready for motion signal, reacting to
Path-related condition...................................489 changes........................................................ 462
Path-related switching actions.............473, 499 Recommissioning................................... 43, 131
Pausing, robot application....................115, 116 Reduced-velocity mode (AMF)....257, 259, 287
PDS firmware update................................... 131 Redundancy angle........................................390
Performance Level......................................... 34 Redundancy information...................... 178, 389
Permanent Safety Monitoring.......................255 Reference, canceling......................................67
Personal protective equipment...................... 30 Referencing application, creating.................329
Personnel........................................................30 Referencing state, requesting...................... 466
Perspective, selection.....................................54 Rejecting loop...............................................535
Perspectives, displaying................................. 55 Release notes, displaying.............................. 69
Plant integrator............................................... 30 Remote debugging...............................209, 623
PLC................................................................. 22 Renaming variables......................................398
Point-to-point.................................................373 Repair............................................................. 47
Point-to-point motion.................................... 417 Requesting, robot position........................... 455
Position and axis torque referencing...........325 Reset (button)............................................... 116
Position controller.................................585, 587 Resetting, robot application..........................116
Position referencing Retraction, robot............................................. 91
With internal mastering sensors in Robot activity, checking................................462
kinematic system.....................................326 Robot application, pausing...................115, 116
Position referencing (AMF)......... 258, 260, 292 Robot application, resetting..........................116
positionHold(…)............................................ 610 Robot application, selecting..........................111
Post-test loop................................................536 Robot application, starting automatically..... 115
Preventive maintenance work........................ 48 Robot application, starting manually............ 115
Primitive data types......................................408 Robot base coordinate system...................... 95
Processor........................................................51 Robot controller........................................23, 27
Product description.........................................23 Robot controller, switching off......................131
PROFINET......................................................21 Robot controller, switching on......................131
PROFIsafe...................................................... 21 Robot controller, switching on/off.................131
Program execution........................................ 111 Robot level......................................................85
Program execution control........................... 531 Robot position, requesting........................... 455
Program run mode, changing and Robot, repositioning......................................116
requesting..................................................... 468 RoboticsAPI.................................................... 21
Program run mode, setting.......................... 113 run()...................................................... 398, 556
Program run modes......................................114 runCyclic().....................................................553
Programming................................................ 397
Programming (perspective)............................ 55
Programming, compliant robot..................... 585 S
Project management.................................... 173 Safe operational stop................................... 311
Project synchronization................................ 199 Safe operational stop, external............... 35, 38
Project, loading from the robot controller....202 Safeguards, external...................................... 40
V
Variables, renaming......................................398
Velocity..........................................................101
Velocity monitoring functions........................293
Velocity monitoring, T1...................................39
Version, System Software............................ 124
View, Backup Manager................................ 125
View, frames................................................. 105
View, log....................................................... 614
Views, repositioning........................................55
Virus scanner................................................217
Virus scanner, displaying messages............619
Virus scanner, installing............................... 219
W
waitFor(…).................................................... 508
Warnings......................................................... 19
WHILE loop.................................................. 535
Workpiece frame, creating........................... 184
Workpiece load data, entering..................... 195
Workpiece, creating......................................181
Workpiece, integrating..................................434
Workpieces, safety-oriented use..................193
Workspace................28, 31, 32, 300, 302, 307
Workspace, new............................................. 63
Workspace, Sunrise.Workbench.................... 63
Workspace, switching.....................................64
Workspaces, switching................................... 64
World coordinate system................................95
X
XYZ 4-point method..................................... 141