0% found this document useful (0 votes)
136 views92 pages

KeMotion KAIRO LanguageReference en

The document is the Programming Manual V2.62 for the KAIRO Language, detailing how to write robot programs for the KeMotion r-series. It includes information on language structure, instructions, data types, and safety warnings, targeting users with technical backgrounds in robotics and programming. The manual emphasizes that the software is not designed for safety-critical applications and must be used only for its intended purpose.

Uploaded by

Han Kim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
136 views92 pages

KeMotion KAIRO LanguageReference en

The document is the Programming Manual V2.62 for the KAIRO Language, detailing how to write robot programs for the KeMotion r-series. It includes information on language structure, instructions, data types, and safety warnings, targeting users with technical backgrounds in robotics and programming. The manual emphasizes that the software is not designed for safety-critical applications and must be used only for its intended purpose.

Uploaded by

Han Kim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 92

Kemro K2

KeMotion
KAIRO LanguageReference
Programming manual V2.62

Translation of the original manual


Document : V2.62 / article no.: 1000960
Filename : KeMotion_KAIRO_LanguageReference_en.pdf
Pages : 92
.
© KEBA 2014
Specifications are subject to change due to further technical developments. Details presented may be subject to correction.
All rights reserved.

KEBA AG Headquarters: Gewerbepark Urfahr, 4041 Linz, Austria, Phone: +43 732 7090-0, Fax: +43 732 7309-10,
[email protected]

For information about our subsidiaries please look at www.keba.com.


KeMotion Record of Revision

Record of Revision
Version Date Change in chapter Description changed by
2.20 01.05.2010 adopted for KeMotion 2.20 nmr
2.30 21.10.2010 added chapter 'Extending KAIRO instruction set' nmr
2.40 22.09.2011 Kemro_Automation 2.40 nmr
2.50 10.04.2012 Kemro_Automation 2.50 pend
2.55 23.01.2013 KeMotion 2.55 nmr
2.60 06.06.2013 KeMotion 2.60 nmr
2.62 14.04.2014 KeMotion 2.62 nmr

Programming manual V2.62 3


© KEBA 2014
KeMotion Table of Contents

Table of Contents

1 Introduction....................................................................................................................... 9
1.1 Purpose of the document........................................................................................ 9
1.2 Target group, pre-requirements.............................................................................. 9
1.3 Intended use........................................................................................................... 9
1.4 Notes on this document........................................................................................ 10
1.4.1 Contents of document............................................................................ 10
1.4.2 Not contained in this document.............................................................. 10
2 Sicherheitshinweise....................................................................................................... 11
2.1 Representation...................................................................................................... 11
3 Language definition........................................................................................................ 12
3.1 Introduction........................................................................................................... 12
3.2 File structure......................................................................................................... 12
3.2.1 Projects.................................................................................................. 12
3.2.2 End-user programs................................................................................. 12
3.2.3 End-user data files................................................................................. 12
3.3 Table of instructions.............................................................................................. 13
3.4 Language structure............................................................................................... 16
3.4.1 File format.............................................................................................. 16
3.4.2 Designators............................................................................................ 16
3.4.3 Constant numbers.................................................................................. 17
3.4.4 Strings.................................................................................................... 17
3.4.5 Operators and delimiters........................................................................ 17
3.4.6 Comments.............................................................................................. 18
3.5 Declaration of variables......................................................................................... 18
3.5.1 Explicit initialization................................................................................ 19
3.6 Arithmetic expressions.......................................................................................... 20
3.6.1 Evaluation order..................................................................................... 21
3.7 Mapping................................................................................................................ 21
3.8 Blocks.................................................................................................................... 22
3.9 Attributes............................................................................................................... 23
3.9.1 CONST................................................................................................... 23
3.9.2 READONLY............................................................................................ 24
3.10 Conventions and limits.......................................................................................... 24
4 Program structure.......................................................................................................... 25
4.1 Macro call.............................................................................................................. 25
4.2 Disable-comment.................................................................................................. 26
5 Instructions..................................................................................................................... 27
5.1 Robot movements................................................................................................. 27
5.1.1 General notes......................................................................................... 27
5.1.2 PTP........................................................................................................ 28
5.1.3 Lin........................................................................................................... 28

Programming manual V2.62 5


© KEBA 2014
Table of Contents KeMotion

5.1.4 Circ......................................................................................................... 29
5.1.5 PTPRel................................................................................................... 30
5.1.6 LinRel..................................................................................................... 30
5.1.7 StopRobot.............................................................................................. 31
5.1.8 WaitIsFinished........................................................................................ 31
5.1.9 WaitJustInTime....................................................................................... 31
5.1.10 RefRobotAxis......................................................................................... 32
5.1.11 RefRobotAxisAsync................................................................................ 32
5.1.12 WaitRefFinished..................................................................................... 33
5.1.13 Example program................................................................................... 33
5.2 Settings................................................................................................................. 35
5.2.1 Programming dynamics and overlapping............................................... 35
5.2.2 Relative and absolute dynamics............................................................. 36
5.2.3 Effect of dynamics commands............................................................... 36
5.2.4 Dyn......................................................................................................... 37
5.2.5 DynOvr................................................................................................... 37
5.2.6 Ovl.......................................................................................................... 38
5.2.7 Ramp...................................................................................................... 39
5.2.8 RefSys.................................................................................................... 40
5.2.9 Tool........................................................................................................ 40
5.2.10 OriMode.................................................................................................. 40
5.2.11 Example program................................................................................... 42
5.3 System Functions.................................................................................................. 43
5.3.1 … := … (Assignment)............................................................................. 44
5.3.2 // … (Comment)...................................................................................... 45
5.3.3 WaitTime................................................................................................ 45
5.3.4 Stop........................................................................................................ 45
5.3.5 Info......................................................................................................... 46
5.3.6 Warning.................................................................................................. 47
5.3.7 Error....................................................................................................... 47
5.3.8 Random.................................................................................................. 48
5.3.9 Time Measurement................................................................................ 49
5.3.10 Mathematical Functions......................................................................... 50
5.3.11 Bitwise Operations & Conversions......................................................... 51
5.4 Flow Control.......................................................................................................... 54
5.4.1 CALL ….................................................................................................. 54
5.4.2 WAIT ….................................................................................................. 55
5.4.3 SYNC.Sync............................................................................................ 55
5.4.4 IF … THEN … END_IF.......................................................................... 55
5.4.5 ELSE...................................................................................................... 56
5.4.6 ELSIF … THEN...................................................................................... 56
5.4.7 WHILE … DO … END_WHILE.............................................................. 56
5.4.8 LOOP … DO … END_LOOP................................................................. 57
5.4.9 RUN …................................................................................................... 57
5.4.10 KILL …................................................................................................... 57
5.4.11 RETURN................................................................................................ 58
5.4.12 LABEL …................................................................................................ 58
5.4.13 GOTO …................................................................................................ 58
5.4.14 IF … GOTO …....................................................................................... 58

6 Programming manual V2.62


© KEBA 2014
KeMotion Table of Contents

5.5 I/O-Devices........................................................................................................... 58
5.5.1 Digital I/Os.............................................................................................. 59
5.5.2 Analog I/Os............................................................................................. 59
5.6 Technology Options.............................................................................................. 59
5.6.1 Triggers.................................................................................................. 60
6 Data types........................................................................................................................ 67
6.1 KAIRO Basic types................................................................................................ 67
6.1.1 BOOL..................................................................................................... 68
6.1.2 DINT, REAL, DWORD............................................................................ 68
6.1.3 STRING.................................................................................................. 68
6.1.4 ANY........................................................................................................ 68
6.2 Positions................................................................................................................ 68
6.2.1 POSITION_............................................................................................ 68
6.2.2 AXISPOS................................................................................................ 69
6.2.3 CARTPOS.............................................................................................. 69
6.2.4 AXISPOSREF........................................................................................ 69
6.2.5 CARTPOSREF....................................................................................... 70
6.2.6 AXISPOSEXT......................................................................................... 70
6.2.7 CARTPOSEXT....................................................................................... 70
6.2.8 ROBAXISPOS........................................................................................ 70
6.2.9 AUXAXISPOS........................................................................................ 71
6.2.10 ROBCARTPOS...................................................................................... 71
6.2.11 DISTANCE_........................................................................................... 71
6.2.12 AXISDIST............................................................................................... 72
6.2.13 CARTDIST............................................................................................. 72
6.3 Reference system and tool................................................................................... 72
6.3.1 REFSYS_............................................................................................... 72
6.3.2 WORLDREFSYS.................................................................................... 73
6.3.3 CARTREFSYS_..................................................................................... 73
6.3.4 CARTREFSYS....................................................................................... 73
6.3.5 CARTREFSYSEXT................................................................................ 73
6.3.6 CARTREFSYSAXIS............................................................................... 74
6.3.7 TOOL_.................................................................................................... 74
6.3.8 TOOL...................................................................................................... 74
6.3.9 TOOLSTATIC......................................................................................... 75
6.4 Dynamics and overlapping.................................................................................... 75
6.4.1 OVERLAP_............................................................................................ 75
6.4.2 OVLREL................................................................................................. 75
6.4.3 OVLABS................................................................................................. 75
6.4.4 DYNAMIC_............................................................................................. 76
6.4.5 DYNAMIC............................................................................................... 77
6.4.6 PERCENT.............................................................................................. 78
6.4.7 PERC200............................................................................................... 78
6.5 I/O-Devices........................................................................................................... 78
6.5.1 Hardware connection of I/O-blocks........................................................ 78
6.5.2 Runtime behaviour of I/O-blocks............................................................ 78
6.5.3 Optional parameter timeMs.................................................................... 78
6.5.4 Digital input block DIN............................................................................ 78
6.5.5 Digital output block DOUT...................................................................... 79

Programming manual V2.62 7


© KEBA 2014
Table of Contents KeMotion

6.5.6 Digital input word DINW......................................................................... 81


6.5.7 Digital output word DOUTW................................................................... 82
6.5.8 Analog input AIN.................................................................................... 83
6.5.9 Analog Output AOUT............................................................................. 85
6.6 System and Extensions......................................................................................... 85
6.6.1 Unit ROBOTDATA.................................................................................. 85
6.6.2 CLOCK................................................................................................... 86
6.6.3 TIMER.................................................................................................... 87
6.6.4 Synchronization point SYNC.................................................................. 88
7 Global variables.............................................................................................................. 90
8 Extending KAIRO instruction set.................................................................................. 92

8 Programming manual V2.62


© KEBA 2014
KeMotion Introduction

1 Introduction

1.1 Purpose of the document


This document describes how robot programs for KeMotion r-series can be
written by the end-user. We assume an up-and-running controller (see: „User
Manual Robot Controller“) as well as some knowledge of the basics of robotics
(see: „Basics of Robotics“).

1.2 Target group, pre-requirements


This document is made for the following persons with adequate skill prereq-
uirements:
Target group Assumed knowledge
Robot Operator
Project Engineer
● Technical education (Technical college, engineer or corresponding
experience).
● Knowledge of
Programmer ● the working principles of a PLC
● health and safety regulations
● how to program a PLC (IEC61131)
● object-oriented programming (Java)
Service technician

1.3 Intended use


This software has been developed to control industrial robots and electrical
servo drives. It must not be used for applications other than those described
in this document, and it must exclusively be used for recommended or ap-
proved target systems.

WARNING!
● Kemro K2 KeMotion rSeries has not been designed for safety-relevant con-
trol applications such as stopping in the case of emergency or safely
reduced speed.
● Kemro K2 KeMotion rSeries complies only with safety category B PL a ac-
cording to EN ISO 13849-1. It is therefore inadequate for implementation of
safety functions to protect humans.
● For safety-relevant control applications or personnel protection addi-tional
external protection measures must be taken, ensuring a safe operation
condition also in case of failures.

Programming manual V2.62 9


© KEBA 2014
Introduction KeMotion

1.4 Notes on this document


This manual is part of the product. It must be retained over the whole lifetime
and if necessary referred to subsequent owners or users of the product.

1.4.1 Contents of document


● KAIRO Language structure
● KAIRO-Reference of functions, variables, types, and units

1.4.2 Not contained in this document


● Configuration and commissioning of the KeMotion system
● Hardware components of the KeMotion system
● Programming of the integrated PLC
● Interface definitions to extend the KAIRO instruction set
● Special technology units
● System diagnosis

10 Programming manual V2.62


© KEBA 2014
KeMotion Sicherheitshinweise

2 Sicherheitshinweise

2.1 Representation
At various points in this manual you will see notes and precautionary warnings
regarding possible hazards. The symbols used have the following meaning:

DANGER!
● indicates an imminently hazardous situation which will result in death or
serious bodily injury if the corresponding precautions are not taken.

WARNING!
● indicates a potentially hazardous situation which can result in death or se-
rious bodily injury if the corresponding precautions are not taken.

CAUTION!
● means that if the corresponding safety measures are not taken, a potentially
hazardous situation can occur that may result in property injury or slight
bodily injury.

CAUTION
● CAUTION used without the safety alert symbol indicates a potentially haz-
ardous situation which, if not avoided, may result in damage to property.

● This symbol reminds you of the possible consequences of touching elec-


trostatically sensitive components.

Information
Useful practical tips and information on the use of equipment are identified
by the “Information” symbol. They do not contain any information that warns
about potentially dangerous or harmful functions.

Programming manual V2.62 11


© KEBA 2014
Language definition KeMotion

3 Language definition

3.1 Introduction
KAIRO is a programming language designed for machine operators to imple-
ment user programs. The language has been kept simple deliberately to make
programming machine sequences easy - without the necessity of a funda-
mental software engineering education.
The programmed code is being stored in files with the pre-defined file exten-
sions "tip" and "tid". KAIRO programs ("tip"-files) contain flows, whereas
KAIRO data files ("tid"-files) contain the corresponding data, e.g. position data.

3.2 File structure

3.2.1 Projects
A project is a directory with the file extension "tt", e.g. "project1.tt". It contains
KAIRO files which may be organized in further subdirectories. These subdir-
ectories only serve for organisational purposes - they have no logical meaning.
All KAIRO files of a project and all subdirectories of a project are elements of
the project.
If a program shall be executed the whole project the program belongs to must
be loaded as a whole.
There are two particular projects named "_system.tt" and "_global.tt". These
projects are automatically activated during start-up of the control software.
Objects of _system are visible throughout all projects, objects of _global are
visible in all projects except for _system. Objects of any other project are visible
only in the own project.

3.2.2 End-user programs


End-user programs are identified by their "tip" extension. An end-user program
only contains instructions. When a program is executed its instructions are
subsequently processed.
A program can be called by another program via its file name.

3.2.3 End-user data files


End-user data files are identified by their "tid" extension. An end-user data file
contains declarations of static variables belonging to the end-user program of
the same name. Inside the program a variable is accessed via its name, oth-
erwise via its program name, e.g. "program1.x" for variable "x" of program
"program1".

12 Programming manual V2.62


© KEBA 2014
KeMotion Language definition

Every project may contain a unique file named "_globalvars.tid". Any variable
declared in this file is global, i.e. accessible via its name throughout the whole
project

3.3 Table of instructions


This table summarizes all pre-defined names and symbols of KAIRO. For de-
tailed information please follow the corresponding links.
Robot movements
PTP
Lin
Circ
PTPRel
LinRel
StopRobot Chapter 5.1
WaitIsFinished
WaitJustInTime
RefRobotAxis
RefRobotAxisAsync
WaitRefFinished
Settings
Dyn
DynOvr
Ovl
Ramp Chapter 5.2
RefSys
Tool
OriMode
System Functions
… := … (Zuweisung)
// … (Kommentar)
WaitTime
Stop Chapter 5.3
Info
Warning
Error
Time Measurement

Programming manual V2.62 13


© KEBA 2014
Language definition KeMotion

CLOCK.Reset
CLOCK.Start
CLOCK.Stop
CLOCK.Read
CLOCK.ToString Chapter 5.3
TIMER.Start
TIMER.Stop
SysTime
SysTimeToString
Mathematical Functions
SIN, COS, TAN, COT
ASIN, ACOS, ATAN, ACOT
ATAN2
LN Chapter 5.3
EXP
ABS
SQRT
Bitwise Operations & Conversions
SHL
SHR
ROL
ROR
Chapter 5.3
SetBit
ResetBit
CheckBit
STR
Flow Control
CALL …
WAIT …
SYNC.Sync
IF … THEN … END_IF
ELSE
ELSIF … THEN
WHILE … DO … END_WHILE Chapter 5.4
LOOP … DO … END_LOOP
RUN …
KILL …
RETURN
LABEL …
GOTO … IF … GOTO …

14 Programming manual V2.62


© KEBA 2014
KeMotion Language definition

I/O- Devices
Digital I/Os
DIN.Wait
DOUT.Set
DOUT.Pulse
Chapter 5.5
DINW.WaitBit
DINW.Wait
DOUTW.Set
Analog I/Os
AIN.WaitLess
AIN.WaitGreater
AIN.WaitInside Chapter 5.5
AIN.WaitOutside
AOUT.Set

Technology Options
Triggers
OnDistance
OnParameter
Chapter 5.6
OnPlane
OnPosition

Data Types
Basic types
BOOL
DINT, REAL, DWORD
Chapter 6.1
STRING
ANY
Positions
POSITION_
AXISPOS
CARTPOS
AXISPOSREF
CARTPOSREF
AXISPOSEXT
CARTPOSEXT Chapter 6.2
ROBAXISPOS
AUXAXISPOS
ROBCARTPOS
DISTANCE_
AXISDIST
CARTDIST
Reference system and tool

Programming manual V2.62 15


© KEBA 2014
Language definition KeMotion

REFSYS_
WORLDREFSYS
CARTREFSYS_
CARTREFSYS
CARTREFSYSTEXT Chapter 6.3
CARTREFSYSAXIS
TOOL_
TOOL
TOOLSTATIC
Dynamics and overlapping
OVERLAP_
OVLREL
OVLABS
DYNAMIC_ Chapter 6.4
DYNAMIC
PERCENT
PERC200
I/O- Devices
DIN
DOUT
DINW
Chapter 6.5
DOUTW
AIN
AOUT
System and Extensions
ROBOTDATA
CLOCK
Chapter 6.6
TIMER
SYNC

3.4 Language structure

3.4.1 File format


End-user files are human-readable text files. Instructions and declarations are
separated by line breaks. In general the language is case-sensitive.

3.4.2 Designators
Designators serve to identify projects, programs, blocks, routines, variables,
constants, and types. A designator is a sequence of letters, numbers, and the
symbol "_". It must start with a letter or the symbol "_". The length of a desig-
nator is limited to 32 characters.

16 Programming manual V2.62


© KEBA 2014
KeMotion Language definition

Elements of KAIRO whose name refer to the file system (i.e. projects and pro-
grams) are generally treated in lower case. When accessing such elements
case sensitivity is neglected, e.g. a file "test.tip" may be referred to as "TEST"
or "Test".
Pre-defined names of KAIRO instructions or data types must not be used as
designators for projects, programs, or variables (see chapters 5 and 6). Gen-
erally, a new object must not be given the name of another object visible at this
point. Consequently, a variable must not bear the name of a global variable,
and a program must not bear the name of the corresponding project.

Examples of valid designators:


i
index
name
nameLen
MAX_VALUE
_roodHdl

3.4.3 Constant numbers


KAIRO distinguishes between integer numbers and floating point numbers.
Integers may be expressed in decimal, dual, or hexadecimal representation.

Examples of valid integer numbers:


100 -100 integer numbers (decimal)
2#1010 -2#1010 integer numbers (dual)
16#1ABF -16#ABF integer numbers (hexadecimal)

Floating point numbers consist of an integer part, a decimal point, and at least
one trailing digit. Floating point numbers in exponential representation consist
of an integer part, an optional decimal point with at least one trailing digit, and
the exponent.

Examples of valid floating point numbers:


1.01 1.99E4 1.99e+8 1e-8

3.4.4 Strings
Strings are delimited by the character ". They may contain all printable char-
acters. The length of a string is limited to 255.

Examples of valid strings:


"Hello World"
" "

3.4.5 Operators and delimiters


Operators are being used in arithmetic expressions and define in what way
variables and constants have to be interrelated. Operators are predominantly
represented by special characters and key words.

Programming manual V2.62 17


© KEBA 2014
Language definition KeMotion

Arithmetic operators
+ Addition
- Subtraction
* Multiplication
/ Division
MOD Floating point remainder
(Definition: if f := x MOD y, then x = i * y + f, where i is an
integer, f has the same sign as x, and the magnitude of f is
less than the magnitude of y)

Logical operators
These operators may be applied to integer numbers, bit fields, and logical val-
ues. They work bitwise in integer numbers and bit fields.
AND AND operation
OR OR operation
XOR Exclusive-Or operation
NOT negation

Relational operators

< less
<= less or equal
= equal
<> unequal
>= greater or equal
> greater

Other operators

. dot operator, e.g. vector.x


[] index, e.g. list[index]
() parentheses for enumerations, e.g. for parameter and
initialization lists; parentheses for arithmetical expressions

Delimiters

:= assignment operator
: colon
, comma

3.4.6 Comments
Line comments are preluded by //.

Example of a valid comment:


// Comment to the end of
line

3.5 Declaration of variables


To declare a variables means to define its name and data type. The variable
declaration is contained in data files. The colon separates the name from the
data type.

18 Programming manual V2.62


© KEBA 2014
KeMotion Language definition

Array and reference declarations are (ARRAY and MAPTO) are supported.

Examples of valid variable declarations:

// in test.tid
k : REAL
mk99 : BOOL
name : STRING
P11 : AXISPOS

// Array declaration::
// array of three REAL elements, indices 0, 1, and 2 :
v : ARRAY [3] OF REAL

// array of three STRING elements, indices 1, 2, and 3 :


as : ARRAY [1..3] OF STRING

// 3 by 3 matrix with 9 DINT elements:


Matrix1 : ARRAY [3] OF ARRAY [3] OF DINT
// or:
Matrix2 : ARRAY [3, 3] OF DINT

// reference declarations::
m1 : MAPTO BOOL
m2 : MAPTO AXISPOS

// usage, in test.tip
P11.a1 := v[0]
Matrix1[2][2] := P11.a2

Information
All KAIRO variables are initialized with 0. Enumeration variables (e.g. of type
RAMPTYPE) are initialized with the first value of the enumeration. STRING
variables are initialized with the empty string (""). Boolean variables are ini-
tialized with FALSE. Reference variables are initialized with "not mapped ".

3.5.1 Explicit initialization


Variables may explicitly be initialized upon declaration (contrary to the implicit
initialization with 0).

Initializing basic types


The initial value must be stated in the tid-file where the variable is declared.
REAL values may be initialized using integer constants.

Examples of valid initializations:

// in test.tid
i : DINT := 1 // i = 1
pi : REAL := 3.1415 // pi = 3.1415
r : REAL := 10 // r = 10.0
mk99 : BOOL := TRUE // mk99 := TRUE
text : STRING := "HELLO" // text := "HELLO"

Initializing composed types


Variables of composed types may also be initialized. However, such compli-
cated initializations will normally not be left to the end-user, but rather auto-

Programming manual V2.62 19


© KEBA 2014
Language definition KeMotion

matically be generated by the runtime system upon a request of the dialog


system TeachView (based on current values). For the sake of completeness
we will explain the syntax of such an initialization.
For composed types (arrays, structs, or blocks) an initialization list must be
provided, consisting of comma-separated values delimited by parentheses.
These values are subsequently assigned to the individual elements of the array
or struct.
In case there are fewer initial values than elements all remaining elements
maintain their current initialization.
A list may also contain voids, also in this case the corresponding elements
retain their current initialization. References may be mapped upon initialization
(using MAP or MAPX).
When an instance of an inherited block is initialized the elements of the base
block are placed prior to those of the inherited block.
When a struct is initialized a list of assignments may be provided instead of a
list of values (e.g. "x := 1"). In this case the left part of each assignment must
directly refer to an element of the struct, and such a list must not contain voids
or direct values.

Examples of struct initialization:

// in test.tid
a : ARRAY [5] OF DINT := (1, 2, , 4) // -> (1,2,0,4,0)
p : AXISPOS := (a1 := 1.1, a3 := 2.2) // -> (1.1,0,2.2,0,0,0,0,0,0)

3.6 Arithmetic expressions


An arithmetic expression describes a value which is of a certain data type.
Such an expression may contain literal constants, constants, variables, built-
in functions, and user-defined functions. The members of an arithmetic ex-
pressions are interrelated by operators.
Literal constants are numbers or strings. Constants, variables, and functions
have names. Elements of a struct variable are referred to by their element
name separated from the variable name by a dot. Array elements are indexed
using brackets (number of array element, enclosed by brackets).

Example:

// in test.tid
a : REAL
f : REAL

// in test.tip
...
// Assigning an expression to the variable d:
d := 2 * SQRT (a) * f

20 Programming manual V2.62


© KEBA 2014
KeMotion Language definition

3.6.1 Evaluation order


Operators in parentheses are evaluated prior to those outside. Apart from this
the following evaluation order is used:
1. . [](element access in structs and arrays)
2. NOT
3. * / MOD AND
4. + - OR XOR
5. < <= = <> >= >

Operators of equal priority are evaluated from left to right.


Operands of the boolean operators AND and OR are evaluated from left to
right. If the result is already defined by the left operand evaluation of the right
operand will be omitted (short-circuit evaluation).

3.7 Mapping
The mapping mechanism is used to define a variable as a reference to a certain
data type and then connect it to an object of this data type. The reference
variable is then said to be "mapped to the object". If the reference variable is
part of an operation in fact the corresponding mapped object is being used. If
a reference variable is used without an existing mapped object, an error is
issued.
Mapped objects may be variables or system variables. System variables have
a unique name throughout the whole system.
A reference variable allocated as much memory as is required to store a ref-
erence to the mapped object. This memory size is independent from the type
of the mapped object.
If a reference variable r shall later be mapped to a variable of type 'tType' it
must be declared as 'r : MAPTO tType'.
If the reference variable shall now be mapped to the KAIRO variable x, the
mapping is done by 'r := MAP(x)'. MAP is a built-in function used to map
KAIRO variables containing as argument the object to which it shall be map-
ped.
A system variables is mapped using the mapping 'r := MAPX(s)'. MAPX
is a built-in function used to map system variables containing as ar-gument the
name string of the system object to which it shall be mapped. In case no system
object with the specified name exists MAPX tries to in-terpret the name string
as internal static variable. The specified string may be the complete path of the
structure tree (e.g. "_system.Robot1") or may refer to an object of the _system-
project (e.g. "Robot1").
If all these trials fail the reference variable remains unmapped or an already
existing mapping is cancelled. This implies that the mapping 'r :=
MAPX("")' may be used to cancel an already existing mapping.

Programming manual V2.62 21


© KEBA 2014
Language definition KeMotion

If a reference variable is read in fact the mapped variable is read. Likewise, if


a reference variable is written to in fact the mapped variable is written to.

Example of mapping reference variables:

// in test.tid
x : MAPTO REAL
y : MAPTO REAL
z : MAPTO REAL
r : REAL
s : REAL

// in test.tip
x := MAP(r) // x is mapped to r
y := MAP(x) // equal to y := MAP(r);
x := MAP(s) // x is re-mapped to s
y := MAP(z) // runtime error, z has not yet been mapped!

Example of MAP and MAPX with string argument:

// in test.tid
s : STRING
r1 : MAPTO STRING
r2 : MAPTO BOOL

// in test.tip
s := "SYSVAR_BOOL";

r1 := MAP(s); // r1 : string containing "SYSVAR_BOOL"


r2 := MAPX(s); // r2 : boolean value of system variable named
// "SYSVAR_BOOL"
r2 := TRUE; // system variable is set to TRUE
r1 := ""; // string s is deleted

Example of MAPX stating the name of an internal static variable:

// Program _globalvars.tid of project project.tt:


gX : REAL

// in test.tid of project project.tt


r1 : MAPTO REAL

// in test.tip of project project.tt


r1 := MAPX("project.gX") // r1 is mapped to gX

3.8 Blocks
Blocks are real objects cast into software. A block summarizes properties
(member variables) and functions (methods). The representation of a certain
object by a variable is called a block instance.
Blocks are being used where several objects with identical properties and
functions exist.
KAIRO defines a series of general blocks. Blocks cannot be used in programs,
but instances of blocks. Before a block can be used it is necessary to create
an instance of it which must then be initialized.
Example:

22 Programming manual V2.62


© KEBA 2014
KeMotion Language definition

The hardware offers digital inputs. Each of these inputs has the same functions
and differs only by its field bus address. A digital input may or may not be set
The control software models digital inputs as a block. Each individual input is
a block instance.
The members of this block are a reference to the field bus address (so that the
input may be uniquely identified) and its current value (set or not set).
Furthermore, this block has a method used to wait for a desired value (set or
not set).
Before a digital input can be used in a program it must be initialised. In this
case the reference to the hardware must be established.

Accessing member variables and member functions


Member variables and methods are accessed like elements of a struct. The
name of the block instance is followed by the name of the member variable or
method, separated by a dot.

Example:

DI49.Wait (TRUE) // wait for digital input DI49 to be set


AI50.WaitLess (3.0) // wait for analog input AI50 to be less than 3
IF DI49.val AND (AI50.val > 1.5) THEN …

Wait .. method to wait for a certain input value


WaitLess .. method to wait until the analog value falls below the specified
threshold
val .. member variable containing the current input value
DI49, AI50 .. names of block instances of a digital and an analog input

3.9 Attributes

3.9.1 CONST
When a variable is declared in a data file the end-user may use the attribute
CONST to modify a type. CONST-variables are write-protected and cannot be
directly modified be a KAIRO program. However, they may obtain a value
through initializiation.

Examples:
// in tid-File
i : DINT CONST := 15

// in tip-File
i := 1 // error: no assignment-target

Programming manual V2.62 23


© KEBA 2014
Language definition KeMotion

3.9.2 READONLY
Using the READONLY attribute member variables of blocks or programs can
be protected against modification from the outside. Reading access from out-
side, however, is permitted.

3.10 Conventions and limits


● case-sensitive
● maximum designator length: 32 characters
● maximum string length: 255 characters
● range of a string character: 8 Bit
● maximum number of routine parameters: 16
● maximum number of variables in a waiting condition: 32

24 Programming manual V2.62


© KEBA 2014
KeMotion Program structure

4 Program structure
KAIRO programs consist of a series of instructions separated by line breaks.
KAIRO supports the following instruction types:
● assignments
● branching: IF, IF .. GOTO, GOTO .. LABEL, RETURN
● loops: WHILE, LOOP
● routine execution: CALL, macro call, RUN, KILL
● synchronization: WAIT
● deactivation of instructions: ##

4.1 Macro call


Routines that can be called in end-user programs are termed "macros". Macros
may be called as subroutines, stating the routine name followed by the actual
parameter list. The parameter list is delimited by parentheses, the parameters
are separated by commas.
Actual parameters may be simple expressions such as literal constants, con-
stants, variables, or variables combined with element accessing (struct or array
elements), but no function calls or arithmetic expressions.
In general the types of formal and actual parameter must coincide, but there
are exceptions to the rule:
● If the formal parameter has been declared as value parameter it is suffi-
cient that the actual parameter type can be assigned to the formal param-
eter type.
● If the formal parameter has been declared as reference parameter to a
block type, the type of the actual parameter may be a type inherited from
the formal parameter type.
● If the formal parameter has been declared as non-modifiable reference
parameter (CONST), it is sufficient that the actual parameter type is a
subset of the formal parameter type (enumeration or sub-range type ver-
sus integer type).
● If the formal parameter is of type REAL integer constants are accepted as
actual parameters.
Suited constants may be used for reference parameters; in this case a copy
will be created.
Optional parameters may be omitted inside the actual parameter list and at its
end.

Example of a macro call:

// in test.tid
P1 : AXISPOS
dyn1 : DYNAMIC

Programming manual V2.62 25


© KEBA 2014
Program structure KeMotion

// in test.tip
PTP(P1, dyn1) // optional parameter ovl is omitted
// DYNAMIC is inherited from DYNAMIC_

4.2 Disable-comment
In end-user programs instructions may be deactivated using the preluding 'dis-
able'-comment '##'. The affected instructions will remain to be part of the
execution structure, but will be missed out during the execution. If the instruc-
tions contain expressions composed of variables these variables will be refer-
enced – despite the 'disable'-comment. Referenced variables are not deleted
when a program is cleaned. Therefore, all data of such variables are retained.
Instructions spanning more than one line can only be deactivated as a whole.
In case of an IF-instruction also all ELSIF-parts, ELSE and END_IF must be
deactivated.

Example of disable-comment:
// in tip-File
PTP(P1) // PTP is macro of the robotics instruction set
PTP(P2) // P1, P2, P3 are position variables
## PTP(P3) // => disable comment, PTP(P3) will not be called,
// P3, however, stays referenced!

26 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

5 Instructions
Optional parameters
Some commands feature optional parameters. These are parameters that may
be omitted. In this case the command will show a defined default behaviour.
Optional parameters are enclosed by brackets in the parameter description
and marked by the leading word „OPTIONAL“ in the command definition.
The default behaviour (= behaviour if no parameter is supplied) is also docu-
mented in the command and parameter description.

Example:
MakroX (
param1 : DINT
OPTIONAL param2 : REAL
)

Parameter:
param1 must-parameter
[param2] optional parameter (default: 2)

5.1 Robot movements


The commands of this section dictate the movements of the robot.

Overview:
● PTP Point-to-point motion command
● Lin Linear motion command
● Circ Circular motion command
● PTPRel Relative point-to-point motion command
● LinRel Relative linear motion command
● Stops the movement and discards commanded path
● WaitIsFinished Waits until main-run has reached a certain position
● WaitJustInTime Delays program execution as long as possible
● Referencing (Homing)
● RefRobotAxis Referencing/Homing of an axis
● RefRobotAxisAsync Referencing/Homing of an axis (asynchronous)
● WaitRefFinished Wait until asynchronous referencing/homing is com-
pleted

5.1.1 General notes

Zero segments
Zero segments are motion commands whose path length is 0.

Programming manual V2.62 27


© KEBA 2014
Instructions KeMotion

Therefore, a zero segment will occur if two successive motion commands with
the same target position are sent to the robot. If zero segments are program-
med the robot stops at the target position (overlapping is impossible as the
overlapping radius goes to 0).

Information
It is impossible to overlap on zero segments, therefore the robot stops.

Optional parameters of motion commands


Dynamics and overlapping (dyn and ovl)
For all motion commands optional dynamics and overlap data may be speci-
fied. This data is valid only for the corresponding command.
If these parameters are not supplied pre-set values in the program will be used
(see Settings).

5.1.2 PTP
Motion command using point-to-point interpolation.

PTP (
pos : POSITION_
OPTIONAL dyn : DYNAMIC_
OPTIONAL ovl : OVERLAP_
)

The PTP-motion command is a synchronous point-to-point command, speci-


fying a target position and optional dynamics and overlapping data. All axes
will start to move and arrive at their target position simultaneously. The TCP-
movement results from the combination of single axis movements.
Parameter:
pos target position
[dyn] dynamics data
[ovl] overlapping data

5.1.3 Lin
Motion command using linear interpolation.

Lin (
pos : POSITION_
OPTIONAL dyn : DYNAMIC_
OPTIONAL ovl : OVERLAP_
)

The Lin-motion command is a Cartesian command, specifying a target position


and optional dynamics and overlapping data. The robot's TCP will move in a
straight line from its initial position to the target position. If, in addition, a change
of orientation is required, the robot's TCP will be moved from its initial orien-
tation to the target orientation, according to the orientation interpolation type.

28 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

Information
Linear interpolation does not support changing the robot mode.

Parameter:
pos target position
[dyn] dynamics data
[ovl] overlapping data

5.1.4 Circ
Motion command using circular interpolation.
Circ (
circPos : POSITION_
pos : POSITION_
OPTIONAL dyn : DYNAMIC_
OPTIONAL ovl : OVERLAP_
)

Fig.5-1: Figure 1: Circular motion command

The circle is defined by the initial position, the auxiliary position circPos, and
the target position pos. First the robot will move to the auxiliary position, then
to the target position.
Please note the following conditions:
● For a full circle two Circ-commands must be executed.
● Initial, auxiliary, and target position must differ from one another.
● The used type of orientation interpolation (command OriMode) is crucial.
It must be set according to the application to avoid an unexpected robot
movement.

Information
● Circular interpolation does not support changing the robot mode.
● The circle changes if the initial position is altered!

Programming manual V2.62 29


© KEBA 2014
Instructions KeMotion

Parameter:
circPos auxiliary position on circle
pos target position
[dyn] dynamics data
[ovl] overlapping data

5.1.5 PTPRel
Relative motion command using point-to-point interpolation.
PTPRel (
dist : DISTANCE_
OPTIONAL dyn : DYNAMIC_
OPTIONAL ovl : OVERLAP_
)

The PTPRel-motion command is a relative point-to-point command, specifying


a distance and optional dynamics and overlapping data. The distance is speci-
fied relative to the robot's initial position which may also depend on the previous
motion command.

Information
Be careful when using relative motion commands within loops, as unex-pec-
ted movements might occur.

Parameter:
dist distance of movement
[dyn] dynamics data
[ovl] overlapping data

5.1.6 LinRel
Relative motion command using linear interpolation.
LinRel (
dist : DISTANCE_
OPTIONAL dyn : DYNAMIC_
OPTIONAL ovl : OVERLAP_
)

The LinRel-motion command is a relative linear command, specifying a dis-


tance and optional dynamics and overlapping data. The distance is specified
relative to the robot's initial position which may also depend on the previous
motion command.

Information
Be careful when using relative motion commands within loops, as unex-pec-
ted movements might occur.

30 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

Parameter:
dist distance of movement
[dyn] dynamics data
[ovl] overlapping data

5.1.7 StopRobot
Stops the robot and discards the programmed path.

StopRobot(
)

This commands stops the robot on the path. All motion commands currently
being executed are aborted.
The stop is executed using the pre-set maximum axis deceleration, whereby
the stopping path is synchronized to the slowest axis to make sure the robot
stays on the path. The override value is not considered.

Information
The pre-set axis deceleration may be reduced by the manufacturer to enable
a softer stopping.

An example for using this command are sensor-controlled search movements


(e.g. move towards a stack until a sensor reports contact).
StopRobot stops the movement, but not the program, hence successive mo-
tion commands start where the robot has come to halt after StopRobot.

5.1.8 WaitIsFinished
This command synchronizes the robot's movement and the program execu-
tion.
WaitIsFinished (
OPTIONAL param : PERCENT
)

The program execution is interrupted until the robot has reached the program-
med position. Optionally a parameter may be specified indicating a position on
the last segment (segment parameter). In this case the program execution is
interrupted until the robot has reached the specified parameter.
Parameter:
[pos] Synchronization point on last segment, specified as segment parameter [%]

5.1.9 WaitJustInTime
Command for approximate synchronization of the robot's movement and the
program execution without negative influence on the path dynamics.

Programming manual V2.62 31


© KEBA 2014
Instructions KeMotion

WaitJustInTime (
)

Program execution is interrupted until a new segment must be appended to


the path in order to avoid braking to standstill. This command enables a last-
minute evaluation of peripheral signals while maintaining the full path velocity.

5.1.10 RefRobotAxis
Referencing/homing of a robot axis.
RefRobotAxis (
axis : ROBOTAXIS
OPTIONAL CONST timeMs : DINT
) : BOOL

This command is used to reference/home a robot's axis.


The homing movement must be parameterized in the PLC. This macro starts
homing according to the parameterization.
All homing methods specified by CANOpen DS 402 are available.

Information
Not all homing modes are supported by all drives. Please find more informa-
tion in the Programming Manual PLC/Robotics.

Parameters:
axis robot axis to be homed
Maximum homing duration.
Here a timeout may be specified after which the incomplete homing will be
[timeMs]
aborted. This time is monitored by a RobotControl timer.
timeMs = 0 ... monitoring is deactivated

If drive operation is not enabled when homing starts, homing cannot be exe-
cuted and an error will be issued. After homing has been successfully executed
motion commands may be used without any additional user interaction.
During homing both the start and the stop button maintain their function, hence
homing may be interrupted by pressing the stop button, and may be continued
by pressing the start button.
If the program counter is dislocated during homing or if homing is interrupted
and the program unloaded homing will be finished and the operation mode of
the drive will be reset to normal operation.

5.1.11 RefRobotAxisAsync
Asynchronous homing of a robot axis.
RefRobotAxisAsync (
axis: ROBOTAXIS
OPTIONAL CONST timeMs: DINT
)

32 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

This macro allows a simultaneous homing of several robot axes. With this
commands it is possible to define the reference position of an axis out of a
motion programm. This command does not wait until homing is completed, but
returns immediately after the homing command has been sent. To find out
whether homing has been completed the macro WaitRefFinished is used.

Information
Not all homing modes are supported by all drives. Please find more informa-
tion in the Programming Manual PLC/Robotics.

Parameters:
axis robot axis to be homed
Maximum homing duration.
Here a timeout may be specified after which the incomplete homing will be
[timeMs]
aborted. This time is monitored by a RobotControl timer.
timeMs = 0 ... monitoring is deactivated

5.1.12 WaitRefFinished
Wait until all asynchronously started homing movements have been comple-
ted.
WaitRefFinished (
) : BOOL

This macro waits until all asynchronous homing movements have been finish-
ed or an error has occurred during a homing procedure.
If homing has been completed successfully, TRUE will be returned; otherwise
FALSE will be returned.

ROBOTAXIS
Enumeration used to specify an axis for homing.
Elements:
A1…6 robot axes
AUX1..3 auxiliary axes

5.1.13 Example program


The following examples makes us of all commands discussed in this chapter.
It refers to a Cartesian handling with one rotational wrist axis.

Procedure:
Before processing starts it is checked if all axes are homed. If not, homing is
initiated.

Programming manual V2.62 33


© KEBA 2014
Instructions KeMotion

After homing the actual processing starts. The process consists of grabbing a
part from a stack of variable height and depositing it on a certain deposit po-
sition:
● Move to home position
● Move along a straight line with a subsequent semi-circle
● slow searching movement; as soon as a digital sensor fires, the searching
movement is stopped
● set an output to grab a part
● starting from the point where the sensor stopped the robot a Cartesian
relative movement shall be executed, followed by a relative axis movement
to re-orient the wrist axis
● then the movement is optimally synchronized with the process with respect
to dynamics (WaitJustInTime), and the robot is moved to a certain position,
depending on the state of a digital output
● output is reset to deposit the part
● move back to home position
Teach-In data (.tid file):
1: apos0 : AXISPOS := (0, 0, 0, 0)
2: dyn0 : DYNAMIC := (100, 100, 100, 100, 50, 250, 400, 350)
3: ovl0 : OVLREL := 100.0
4: cpos0 : CARTPOS := (100, 0, 0, 0, 0, -90, 0, 0, 0)
5: cpos1 : CARTPOS := (100, 100, 0, 0, 0, -90, 0, 0, 0)
6: cpos2 : CARTPOS := (200, -500, 0, 0, 0, -90, 0, 0, 0)
7: circHelp : CARTPOS := (150, 150, 0, 0, 0, -90, 0, 0, 0)
8: circEnd : CARTPOS := (200, 100, 0, 0, 0, -90, 0, 0, 0)
9: adist0 : AXISDIST := (0, 0, 0, -180)
10: cdist0 : CARTDIST := (0, 0, 100)
11: cpos3 : CARTPOS := (100, -100, 100, 0, 0, 90, 0, 0, 0)
12: cpos4 : CARTPOS := (200, 200, 200, 0, 0, 90, 0, 0, 0)
13: touchSensor : DIN := (MAPX("TT.IoDIn@1"))
14: workPosReady : DIN := (MAPX("TT.IoDIn@2"))
15: gripperClose : DOUT := (MAPX("TT.IoDOut@0"))

Teach-In program (.tip file):


1: IF NOT RobotState.isReferenced THEN
2: RefRobotAxis(A1)
3: RefRobotAxis(A4)
4: RefRobotAxisAsync(A2)
5: RefRobotAxisAsync(A3)
6: WaitRefFinished() // wait until A2 and A3 are have been
7: // homed
8: END_IF
9: PTP(apos0, dyn0, ovl0) // PTP to axis position with optional
10: // parameters
11: PTP(cpos0) // PTP to Cartesian position
12: Lin(cpos1) // line Cart0 – Cart1
13: Circ(circHelp, circEnd) // cirle to circEnd via circHelp
14: WaitIsFinished(80) // wait until 80% of circle is
15: // finished
16: Lin(cpos2, dyn1) // searching movement circEnd – cpos2
17: // with reduced dynamics
18: WAIT touchSensor.val // wait for sensor signal
19: StopRobot() // stop robot and discard rest of path
20: gripperClose.val := TRUE // sets a digital output
21: LinRel(cdist0, dyn0) // line, leading 100mm in z-direction,
22: // starting from current position
23: // and specifying dynamics
24: PTPRel(adist0) // relative axis movement to re-orient
25: // wrist axis
26: WaitJustInTime() // dynamics-optimal synchronization

34 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

27: //
28: IF workPosReady.val THEN // due to WaitJustInTime the condition
29: // will be evaluated not before
30: // program and movement are almost
31: // synchronous
32: Lin(cpos3)
33: ELSE
34: Lin(cpos4)
35: END_IF
36: WaitIsFinished() // wait until movement is finished
37: gripperClose := FALSE // resets the output
38: PTP(apos0)

5.2 Settings
This group contains commands which modify the settings for all subsequent
motion commands.
Dynamics commands are used to program velocity, acceleration, acceleration
ramp, and jerk of the robot's axes and the TCP.
The overlap command influences the path behaviour in the vicinity of the pro-
grammed positions.
RefSys and Tool have an effect on the path geometry, OriMode serves to set
the kind of orientation interpolation.

Overview:
● Dyn = Velocity, acceleration and jerk settings for TCP and axes
● DynOvr = Dynamic-override settings
● Ovl = Overlap absolute settings in %
● Ramp = Acceleration ramp settings
● RefSys = Reference system settings
● Tool = Robot tool settings
● OriMode = Orientation-interpolation settings

5.2.1 Programming dynamics and overlapping


Dynamics and overlapping may be programmed in two ways: by pre-setting
them using special commands or by specifying parameters when a motion
command is sent, where passed parameters overrule pre-set values. When a
program is loaded the pre-settings are taken from the robot configuration.

Example (using pre-set values):

Ovl (ovl1) // set overlapping according to ovl1


Dyn (d0) // set global dynamics
PTP (p1) // move to p1 and p2 using dynamics d0 and overlap ovl1
PTP (p2)
Ovl (ovl2) // set overlapping according to ovl2
Dyn (d1) // change global dynamics
PTP (p3) // move to p3 using dynamics d1 and overlap ovl2

Programming manual V2.62 35


© KEBA 2014
Instructions KeMotion

Example (using parameters along with the motion command):


Dyn (d0) // set global dynamics
PTP (p1, dyn1, ovl1) // move to p1 using dyn1 and ovl1
Lin (p2, dyn2, ovl2) // move to p2 using dyn2 and ovl2
PTP (p3) // move to p3 using global dynamics d0

5.2.2 Relative and absolute dynamics


The dynamics of a PTP-movement is specified in percent of the axis limits.
100% means, that the velocity-dominant axis moves at 100% of its velocity
limit.
The dynamics of the Cartesian movement is programmed in absolute values.
Whenever axis limits would be violated the robot control automatically reduces
the programmed dynamics such that the dynamics stays within the configured
axis limits.

5.2.3 Effect of dynamics commands

Motion commands without dynamics parameters


Motion commands without dynamics parameterization obtain their dynamics
by multiplication of steps 1, 2, and 3.
1 User-override (on handheld terminal)
2 DynOvr (%)
3 Dyn (abs)
PTP () Lin, Circ ()

Step 1 : Override
The override is equal to the override set on the handheld terminal (keys V+,
V-) or the values set by an external source. The override cannot be modified
by programmed commands. It is specified in percent.

Information
The override does not affect the path geometry!

Step 2 : Dynamics override


Using the dynamics override DynOvr the programmed dynamics may be low-
ered globally in the program. It is specified in percent.

Step 3: Dynamics
Using the command Dyn the dynamics for Ptp, for Cartesian position, and
Cartesian orientation may be separately programmed. For Ptp the dynamics
is specified in percent, whereas Cartesian dynamics is specified in absolute
values (mm/s, mm/s², mm/s³ or °/s, °/s², °/s³).

36 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

Motion commands with dynamics parameters


For motion commands with own dynamics parameters the programmed dy-
namics is multiplied by the override and by the currently set dynamics override.
1 User override (on handheld terminal)
2 DynOvr (%)
PTP, Lin, Circ (dyn)

Example (Handling application):


The absolute value of the path velocity is unessential. The system integrator
configures the default dynamics in terms of maximum values. In the program
the dynamics is programmed exclusively in percent.

DynOvr (50%) // pre-set to 50% globally


PTP (p1) // 50% max. axis velocity
Lin (p3) // 50% of Cartesian limits
DynOvr (100%) // pre-set to 100% globally
Lin (p4) // 50% of Cartesian limits
PTP (p5) // 50% max. axis velocity

Example (Processing task):


The absolute value of the path velocity is essential. The dynamics is entirely
specified in the program and passed as parameter along with the correspond-
ing motion command.
Dyn (dyn) // global pre-set for all motion commands
PTP (p1) // Ptp using pre-set dyn
Lin (p3) // Lin using pre-set dyn
PTP (p5, dyn1) // dyn1 only used for this motion command
Lin (p4, dyn1) // dyn1 only used for this motion command

5.2.4 Dyn
Specifies the full dynamics data.
Dyn (
dyn : DYNAMIC_
)

Velocity, acceleration, deceleration, and jerk for all subsequent movements


are simultaneously set. The values for Ptp must be specified as a percentage
of the axis limits, Cartesian values must be provided in absolute values.
Parameter:
dyn Dynamics

5.2.5 DynOvr
Specifies the dynamics override.
DynOvr (
ovr : PERCENT
)

Programming manual V2.62 37


© KEBA 2014
Instructions KeMotion

This command scales the dynamics for all subsequent motion commands and
dynamics macros. It is subject to the user-override set at the handheld terminal.

Information
The override does not affect the path geometry!

Parameter:
DynOvr Override in %

5.2.6 Ovl
The overlap parameterization defines the movement in the vicinity of the pro-
grammed positions.
Ovl (
ovl : OVERLAP_
)

Depending on the specified data relative or absolute parameterization is used.


Relative overlap parameterization (parameter ovl of type OVLREL) defines an
overlap degree using a percentage.
Absolute overlap parameterization (parameter ovl of type OVLABS) specifies
the maximum permitted deviations from the programmed target position.
Parameter:
ovl Overlapping data

Relative and absolute programming


Relative overlap parameterization:
A degree of overlapping is defined by a percentage value. 100% means time-
optimized overlapping that utilizes the acceleration reserves of the axes at
lowest-possible deviation from the programmed target position.
Values less than 100% will lead to smaller deviations, but prolong the cycle
time. Values greater than 100% cause larger deviations and smaller axis ac-
celerations at nearly a constant cycle time.

Absolute overlap parameterization


The maximum permitted deviations from the programmed target position are
specified. This requires several parameters:
● Distance of TCP-position in length units = overlap radius
● Distance of TCP-orientation in angle units
● Distance for linear and rotational auxiliary axes
The effect of the parameters on the different motion commands is described
in the section on data types OVLREL and OVLABS.

38 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

5.2.7 Ramp
Sets the ramp type for acceleration.
Ramp (
type : RAMPTYPE
OPTIONAL param : REAL
)

The desired ramp type for acceleration can be set here. For type TRAPEZOID
only a symmetrical ramp is allowed at present (0 < param <= 0.5). Types SINE
and SINESQUARE use default values (param = 0.5). The following figure de-
picts the different ramp shapes.

Fig.5-2: Figure 2: Acceleration ramp shapes

Parameters:
type Type of ramp
[param] Ramp parameter (required only for TRAPEZOID)

Behaviour upon missing optional parameter:


If no ramp parameter is specified along with ramp type TRAPEZOID, a default
value of 0.5 will be used. This results in a triangular shape.

RAMPTYPE
This enumeration indicates the ramp type used for acceleration.
Elements:
TRAPEZOID trapezoid ramp
SINE sinusoidal ramp
SINESQUARE sine-square ramp
MINJERK ramp with minimum intregral jerk

Programming manual V2.62 39


© KEBA 2014
Instructions KeMotion

5.2.8 RefSys

CAUTION!
Changing the reference system will result in an abrupt jump of the Cartesian
TCP-path. If a reference system command is skipped using SetPC you may en-
counter unwanted results!

Sets a reference system.


RefSys (
refSys : REFSYS_
)

The RefSys command sets a new reference system for the following position-
ing commands.
Cartesian positions refer to the currently set reference system. As long as no
reference system has been set the valid reference system is WORLD.

Information
If a reference system with all values equal to 0 is referenced to itself then the
WORLD system is used. Values other than zero trigger an error.

Parameter:
refSys Reference system

5.2.9 Tool

CAUTION!
Changing the tool will result in an abrupt jump of the Cartesian TCP-path. If a
tool command is skipped using SetPC you may encounter unwanted results!

Sets a tool.
Tool (
tool : TOOL_
)

The tool command sets a new tool for the robot. It allows changing the robot's
point of operation.
Parameter:
tool Tool to be set

5.2.10 OriMode
Sets the type of orientation interpolation.
OriMode (
ori : ORIMODE
)

40 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

The OriMode command sets the type of orientation interpolation for all suc-
cessive motion commands. As long as no OriMode is specified the type of
orientation interpolation from the robot configuration is used.
Parameter:
ori Type of orientation interpolation

ORIMODE
Type of orientation interpolation.
Elements:
The z-axes of initial and target orientation define a plane in which the z-axis
of the TCP is tilted. Simultaneously it will be rotated around the current z-
axis (see Figure 3).
CART Advantages: intuitive orientation movement
Disadvantage: Singularities may cause problems
Usage: for processing paths
No difference to CART interpolation for linear motion commands. For circles
the TCP will be rotated in the circular plane; initial and target orientation are
transited using CART interpolation (see Figure 4).
CARTCURVE Advantages: intuitive orientation movement
Disadvantage: Singularities may cause problems
Usage: at present only for circular processing paths
Wrist axes positions are calculated for initial and target orientation. Transit-
ing is done using Ptp-interpolation in axis space. The Cartesian position,
however, is linear interpolated in Cartesian space.
Advantages: enables quick re-orienting no problems concerning wrist-axes
WRISTJOINT singularities
Disadvantages: Orientation path is hard to predict and depends on the wrist
type of the robot (danger of collision!)
Usage: for paths whose orientation behaviour between the programmed
posi-tions is irrelevant.

Programming manual V2.62 41


© KEBA 2014
Instructions KeMotion

Orientation interpolation type CART

Fig.5-3: Figure 3: Orientation interpolation type CART

Orientation interpolation type CARTCURVE

Fig.5-4: Figure 4: Orientation interpolation type CARTCURVE

5.2.11 Example program


The following example uses all commands described in this chapter. It re-fers
to an articulated arm robot which is used to deburr a part.
Procedure: Before the processing is started a series of parameters are set:
overlapping, type of orientation interpolation, acceleration ramp type, start
override, reference system, and tool.
After that processing may begin:
● move to home position
● change tool
● move along a straight line with a subsequent semi-circle using the given
path dynamics; the type of orientation interpolation ensures a constant
angle between tool and part; furthermore, constant path velocity is re-
quired.

42 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

● move to home position


● change tool for second processing step
● reduce processing dynamics
● re-process part using the same path again
● move to home position

Fig.5-5: Figure 5: Resulting path

Teach-In data (.tid file):


1: apos0 : AXISPOS := (-35, -20, 25, -100, 35, 100, 0, 0, 0)
2: cpos0 : CARTPOS := (1111, -98, 1335, 20, 92, 180, 0, 0, 0, 0)
3: cpos1 : CARTPOS := (1111, 110, 1335, -20, 92, -180, 0, 0, 0, 0)
4: cp0 : CARTPOS := (1000, 21, 1335, -37, 92, -180, 0, 0, 0, 0)
5: crs0 : CARTREFSYS := (MAP(World), 0, 0, 30, 0, 0, 0)
6: t0 : TOOL := (5, 5, 15, 90, 0, 0)
7: cpos2 : CARTPOS := (1125, -67, 1310, 0, 92, -90, 0, 0, 0, 0)
8: d0 : DYNAMIC := (100, 100, 100, 100, 300, 2000, 2000, 10000,
200, 2000, 2000, 3600)
9: or0 : OVLREL := (100)
10: oa0 : OVLABS := (50, 50, 50, 50, TRUE)
11: t1 : TOOL := (5, 5, 5, 0, 0, 0)

Teach-In program (.tip file):


1: Ovl(oa0) // overlapping distance
2: OriMode(CART) // type of orientation interpolation
3: Ramp(MINJERK) // acceleration ramp type
4: DynOvr(100) // dynamics override
5: RefSys(crs0) // reference system of part
6: Tool(Flange) // set no tool for moving to home position
7: PTP(cpos2) // move to home position
8: Dyn(d0) // specify processing dynamics (300mm/s)
9: Tool(t0) // set tool for first processing step
10: Lin(cpos0) // start of processing
11: Circ(cp0, cpos1) // processing
12: Lin(cpos2) // move to home position
13: Tool(t1) // set tool for next processing step
14: DynOvr(50) // reduce dynamics to 50%
15: Lin(cpos0) // restart processing
16: Circ(cp0, cpos1) // processing
17: DynOvr(100) // reset reduced dynamics
18: RefSys(World) // new reference system = world
19: PTP(cpos2) // move to home position

5.3 System Functions


This group comprises assignments, comments as well as commands to com-
municate with the world outside, and functions for measuring time.

Programming manual V2.62 43


© KEBA 2014
Instructions KeMotion

Overview:
● ... := … assignmet
● // … comment
● WaitTime waiting time
● Stop stops all active programs
● Info issues an informations
● Warning issues a warning
● Error issues an error
● Creating random numbers
● Time Measurement
● SysTime reads the system time
● SysTimeToString converts the system time to a string
● Mathematical Functions
● SIN, COS, TAN, COT
● ASIN, ACOS, ATAN, ACOT
● ATAN2
● LN
● EXP
● ABS
● SQRT
● Bitwise Operations & Conversions
● SHL
● SHR
● ROL
● ROR
● SetBit
● ResetBit
● CheckBit
● STR

5.3.1 … := … (Assignment)
Assigns a value to a variable. An assignment consists of a variable (left hand
side) , the assignment operator :=, and an expression (right hand side). The
type of expression must be assignable to the data type of the variable (see
Basic data types).
When assigning structs (the type is a struct, an array, or a unit) the associated
memory is copied from one variable to the other. For variables not containing
any MAPTO-elements this is equal to assigning all elements, where the ele-
ments are subdivided until basic data types are reached.
For variables containing MAPTO-elements this is different, as references are
copied rather than the referenced contents.

44 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

Examples for valid assignments:


i := 1
x := (a + b) * 2

5.3.2 // … (Comment)
Line comments are preluded using the character sequence //.

Example of a valid comment:


// Comment to the end of line

5.3.3 WaitTime
Waits for a certain period of time.
WaitTime (
timeMs : DINT
)

This command halts the robot for the specified time in milliseconds.

Information
At first WaitTime synchronizes movement and program, afterwards the wait-
ing time starts. Hence the robot will be halted in any case.

Parameter:
timeMs Time in [ms]

Example:
WaitTime (100) // wait for 100ms
WaitTime (0) // wait for main-run

5.3.4 Stop
Stops all running programs.
Stop (
OPTIONAL mode : STOPMODE
)

This command stops the execution of all active programs. Without the op-tional
parameter the behaviour is equal to pressing the stop button on the handheld
terminal, i.e. the macro will be executed at once, without waiting for the main-
run. If the macro shall be executed only after the previous movements have
been completed a program synchronization must be programmed prior to the
stop macro (e.g. using the macro WaitOnPos()).
Parameter:
[mode] Type of stop

Programming manual V2.62 45


© KEBA 2014
Instructions KeMotion

Without ‚mode’ or if ALLAXIS is specified, the movement will be completely


stopped. In tracking applications also the movement due to the moving refer-
ence system will be stopped. If CONTINUETRACKING is chosen the move-
ment due to the programmed path will be stopped, whereas the movement due
to tracking will be maintained.

Example:
RUN prog2 // starts parallel program prog2
PTP (home)
PTP (apos0)
IF inVal > 12 THEN
Stop() // global program stop; also prog2 is stopped
END_IF
PTP (apos2)

STOPMODE
This enumeration specifies how a program shall be stopped. Particularly in
tracking applications it may be desirable to stop only the programmed move-
ment while maintaining the movement that originates from a moving reference
system.
Elements:
Complete stop of the robot's movement. In tracking applications also the
ALLAXIS
movement originating from a moving reference system is stopped.
CONTINUE-
Stops the programmed movement while maintaining tracking movements.
TRACKING

5.3.5 Info
Issues an info message.

Information
Whenever a system message is issued the program pre-processing is stop-
ped, leading to robot halt. If this is unwanted, DO instructions synchronized
with the program execution must be used, having no effect on the program
pre-processing (see Triggers).

Info (
text : STRING,
OPTIONAL param1 : ANY
OPTIONAL param2 : ANY
)

Info messages are displayed in the message protocol and in the report protocol
on the masks Messages and Message-Log.
Moreover, it is possible to display a maximum of two values of any type using
message functions. As placeholders „%1“ for the first value and „%2“ for the
second value are used.
If the parameters are of a basic data type their value will be issued in the mes-
sage, otherwise their name (and possibly type).

46 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

Parameters:
text message text
param1
variables of any type that a part of the message text
param2

Example:
av := AIN.Read();
cn := cn+1
Info ("Cycle %1 completed! Current value: %2",cn,av)

5.3.6 Warning
Issues a warning message.

Information
Whenever a system message is issued the program pre-processing is stop-
ped, leading to robot halt. If this is unwanted, DO instructions synchro-nized
with the program execution must be used, having no effect on the program
pre-processing (see Triggers).

Warning (
text : STRING
OPTIONAL param1 : ANY
OPTIONAL param2 : ANY
)

Warning messages are displayed in the message protocol and in the report
protocol on the masks Messages and Message-Log.
For description of the optional parameters see Info.
Parameters:
text message text
param1
variables of any type that a part of the message text
param2

Example:
cn := cn+1
Warning ("Cycle %1 - pressure increased!", cn)

5.3.7 Error
Issues an error message.

Programming manual V2.62 47


© KEBA 2014
Instructions KeMotion

Information
Whenever a system message is issued the program pre-processing is stop-
ped, leading to robot halt. If this is unwanted, DO instructions synchronized
with the program execution must be used, having no effect on the program
pre-processing (see Triggers).

Error (
text : STRING
OPTIONAL param1 : ANY
OPTIONAL param2 : ANY
)

Error messages are displayed in the message protocol and in the report pro-
tocol on the masks Messages and Message-Log.
Error messages lead to a program interruption. An error must be acknowl-
edged to be able to continue with the program execution.
For description of the optional parameters see Info.

Information
When an error message is issued the robot movement will be interrupted in
any case. The robot can continue only after the error message has been ac-
knowledged.

Parameters:
text message text
param1
variables of any type that a part of the message text
param2

Example:
PTP(startPos)
WHILE in1.val DO // assert vacuum for process
Error ("vacuum error - has part been lost?")
END_WHILE
Lin(cPos1)
Ptp(cPos2)

Information
Here it looks as if a cyclic message was issued, but in reality it is ensured that
after the message has been acknowledged the condition is re-checked, be-
fore the program execution resumes.

5.3.8 Random
Creates a random number within the given range.
Random (
CONST minVal : REAL
CONST maxVal : REAL
)

48 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

Parameters:
minVal Minimal value of the resulting random number
maxVal Maximal value of the resulting random number

Example:

randomVal := Random(0.0, 10.0); //Creates a random number between 0 and 10

5.3.9 Time Measurement

CLOCK.Reset
See CLOCK

CLOCK.Start
See CLOCK

CLOCK.Stop
See CLOCK

CLOCK.Read
See CLOCK

CLOCK.ToString
See CLOCK

TIMER.Start
See TIMER

TIMER.Stop
See TIMER

SysTime
Reads the system time in seconds since January 1st, 1970.
SysTime (
): DINT

This command reads the current system time from the control system and re-
turns it as DINT-value.

Example:
Value := SysTime() // read current system time

SysTimeToString
Converts time to a text string.

Programming manual V2.62 49


© KEBA 2014
Instructions KeMotion

SysTimeToString (
OPTIONAL time : DINT
): STRING

This command converts the system time to a formatted text string of the format
„DDD mon dd hh:mm:ss yyyy“. This is helpful for the use in log files. When
called without parameter sysTime returns the formatted current system time.
Parameters:
[time] Time in [s]

Example:
actTime := SysTimeToString() // read current system time
Info(actTime) // and display it as an info

5.3.10 Mathematical Functions

SIN, COS, TAN, COT


Trigonometric functions. The argument unit is degrees.
Funktion (
deg : REAL
): REAL

Parameters:
deg angle [°] at which the trigonometric function shall be evaluated.

ASIN, ACOS, ATAN, ACOT


Inverse trigonometric functions. The result unit is degrees.
Funktion (
val : REAL
): REAL

Parameters:
val Value for which the corresponding angle shall be determined.

ATAN2
Arc tangent with two arguments.

ATAN2 (
valY: REAL,
valX: REAL
): REAL

Example:
r := SIN(x) // calculate sine of x
Info("%1", r) // display result as info
r := ATAN2(y, x) // calculate arc tangent of y, x
Info("%1", r) // display result as info

50 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

LN
Natural logarithm.
LN (
val: REAL
): REAL

Parameters:
val Value whose natural logarithm shall be determined.

EXP
Exponential function.
EXP (
val: REAL
): REAL

Parameters:
val Value whose exponential value shall be determined.

ABS
Absolute value.
ABS (
val: REAL
): REAL

Parameters:
val Value whose absolute value shall be determined.

SQRT
Square root.
SQRT (
val: REAL
): REAL

Parameters:
val Value whose square root shall be determined.

5.3.11 Bitwise Operations & Conversions

SHL
Bitwise shifting to the left.
SHL (
expr : DWORD
digits : DINT
) : DWORD

Programming manual V2.62 51


© KEBA 2014
Instructions KeMotion

Parameters:
expr Value to be shifted
digits Number of bits to be shifted

Example:
out := SHL (in, n)

SHR
Bitwise shifted to the right.
SHR (
expr : DWORD
digits : DINT
) : DWORD

Parameters:
expr Value to be shifted
digits Number of bits to be shifted

Example:
out := SHR (in, n)

ROL
Bitwise rotation to the left.

ROL (
expr : DWORD
digits : DINT
) : DWORD

Parameters:
expr Value to be rotated
digits Number of bits to be rotated

Example:
out := ROL (in, n)

ROR
Bitwise rotation to the right.
ROR (
expr : DWORD
digits : DINT
) : DWORD

Parameters:
expr Value to be rotated
digits Number of bits to be rotated

52 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

Example:
out := ROR (in, n)

SetBit
Sets a bit in a specified word.
SetBit (
val : DWORD
bitNr : DINT
) : DWORD

Implementation: SetBit(value, bitNr) := value OR 2^bitNr


Parameters:
val Value in which a bit shall be set
bitNr Bit to be set (least significant bit = bit 0)

Example:
d := 16 // 16#0010
d := SetBit(d, 5) // set bit 5
Info("%1", d) // display result as info (16#0030)

ReserBit
Resets a bit in a specified word.
ResetBit (
val : DWORD
bitNr : DINT
) : DWORD

Implementation: ResetBit(value, bitNr) := value AND NOT 2^bitNr


Parameters:
val Value in which a bit shall be set
bitNr Bit to be set (least significant bit = bit 0)

Example:
d := 17 // 16#0011
d := ResetBit(d, 4) // reset bit 4
Info("%1", d) // display result as info (16#0001)

CheckBit
Checks if a specific bit is set in the specified word.
CheckBit (
val : DWORD
bitNr : DINT
) : BOOL

Parameters:
val Value which shall be ckecked for the given bit.
bitNr Bit to be checked (least significant bit = bit 0)

Programming manual V2.62 53


© KEBA 2014
Instructions KeMotion

Example:
d := 17 // 16#0011
IF CheckBit(d, 4) THEN // check bit 4
Info("Bit 4 is set") // display result as info
END_IF

STR
Supplies a formatted textual representation of a value.
STR (
expression : ANY
) : STRING

Parameters:
expression Value to be converted to a string

Example:
s := STR(65) // s : "65"

5.4 Flow Control


This group contains instructions for flow control.
Overview:
● CALL … calls a subroutine
● WAIT … waiting condition
● SYNC.Sync ... Synchronization of programs running parallel
● IF … THEN … END_IF conditional branching
● ELSE alternative branch
● ELSIF … THEN additional alternative branch
● WHILE … DO … END_WHILE conditional loop
● LOOP … DO … END_LOOP loop
● RUN … start parallel program
● KILL …stop parallel program
● RETURN returns to caller
● LABEL … label for goto-jumps
● GOTO … goto-jump
● IF … GOTO … conditional jump

5.4.1 CALL …
An end-user program may call another end-user program as a subroutine. This
call is introduced using the key word "CALL". An end-user program must not
call itself (not even indirectly via another program).

54 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

Example:
// in test.tip
CALL sub // call end-user program sub.tip

5.4.2 WAIT …
The WAIT-instruction enables the synchronization of the processing se-
quence. If the value of the WAIT-expression is TRUE the next instruction will
be executed. Otherwise, the routine waits until the expression evaluates to
TRUE. A WAIT-expression must not contain:
● Relational expressions of structs
● Function calls

Example:
// in test.tid
signal : BOOL
digin21 : BOOL
digin22 : BOOL
r : REAL

// in test.tip
WAIT signal
WAIT digin21 AND digin22
WAIT r < 0
WAIT r + 1 > 0

5.4.3 SYNC.Sync
Command to synchronize programms running parallel.
Using this command it is possible to synchronize the execution of two running
programs. Thus it is, e.g., possible to synchronize the movement of two robots.
See chapter 6.6.4 "Synchronization point SYNC" on page 88

5.4.4 IF … THEN … END_IF


IF-instructions are used to introduce conditional branches into the program.
The result of the IF-condition must be of type BOOL. The number of instructions
after THEN, ELSIF and ELSE is unlimited. Every IF-instruction must be termi-
nated using the key word END_IF.

Example:
// in test.tip
IF x < 100 THEN
y := 10
ELSIF x < 400 THEN
y := 20
ELSIF x < 900 THEN
y := 30
ELSE
y := 40
END_IF

Programming manual V2.62 55


© KEBA 2014
Instructions KeMotion

5.4.5 ELSE
The ELSE-instruction is used to insert an ELSE-branch into an existing IF-
instruction.

Example:
// in test.tip
IF x < 100 THEN
y := 10
ELSIF x < 400 THEN
y := 20
ELSIF x < 900 THEN
y := 30
ELSE
y := 40
END_IF

5.4.6 ELSIF … THEN


The ELSIF-instruction enables to insert an ELSIF-branch into an existing IF-
instruction.

Example:
// in test.tip
IF x < 100 THEN
y := 10
ELSIF x < 400 THEN
y := 20
ELSIF x < 900 THEN
y := 30
ELSE
y := 40
END_IF

5.4.7 WHILE … DO … END_WHILE


The WHILE-instruction serves to repeat an instruction sequence as long as a
condition is fulfilled. The result of the loop condition must be of type BOOL.
The loop may contain an unlimited number of instructions. The WHILE-in-
struction must be terminated using the key word END_WHILE.

Information
If a frequently executed loop contains no WAIT-instruction it may obstruct the
execution of other programs. In this case the control system issues a warning
and interrupts the uncooperative program from time to time.

Example:

WHILE ch <> " " DO


i := i + l
read (ch)
END_WHILEi

56 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

5.4.8 LOOP … DO … END_LOOP


The LOOP-instruction serves to repeat an instruction sequence for a given
number of times.
For each LOOP-instruction an internal loop variable is automatically created,
which is initialized with 1 when the loop is entered. The loop is repeatedly
executed until the loop variable excesses the programmed end value. If the
end value is less than 1 the loop will be skipped altogether. After each loop
pass the loop variable is increased by 1 and the end value is recalculated. The
loop may contain an infinite number of instructions. By omitting the end value
an infinite loop can be programmed.

Information
If a frequently executed loop contains no WAIT-instruction it may obstruct the
execution of other programs (see WHILE)!

Examples:
LOOP 10 DO
read(ch) // read 10 times
END_LOOP

j := 0
...
LOOP j DO
read(ch) // will be skipped
END_LOOP

LOOP DO // infinite loop


WAIT chg
chg := FALSE
...
END_LOOP

5.4.9 RUN …
The instruction RUN program starts an end-user program. This program will be
executed in parallel, as opposed to CALL which is used to call a program and
then continue when the called program has returned.
// in test.tip
RUN Prog189 // starts the end-user program Prog189.tip
...
KILL Prog189
...

5.4.10 KILL …
The instruction KILL program serves to abort an end-user program started
with RUN.
// in test.tip
RUN Prog189 // starts the end-user program Prog189.tip
...
KILL Prog189
...

Programming manual V2.62 57


© KEBA 2014
Instructions KeMotion

5.4.11 RETURN
The RETURN-instruction is used to end the execution of a routine.

Example:
// in test.tip
...
IF nok THEN
RETURN
END_IF
...

5.4.12 LABEL …
The LABEL-instruction defines jump targets. Please note that a label contained
in a GOTO- or IF-GOTO-instruction must be defined exactly once in the cor-
responding program.

Example:
LABEL label99

5.4.13 GOTO …
The GOTO-instruction is used to jump to different parts of the program. The
jump target must be defined by a LABEL-instruction which has to be part of
the same program as the GOTO-instruction. Jumps into an instruction block
from outside are prohibited. An instruction block may be a WHILE loop or the
different cases of an IF-instruction.

Example:
GOTO label99
...
LABEL label99

5.4.14 IF … GOTO …
The IF-GOTO-instruction is a shortened IF-instruction, which simplifies condi-
tional jumps inside a program. The result of the IF-condition must be of type
BOOL. If the condition is fulfilled, the program execution branches to the speci-
fied jump target. The jump target must be defined by a LABEL-instruction.

Example:
IF x < 100 GOTO label99
...
LABEL label99

5.5 I/O-Devices
For general information on I/O-devices see I/O-Devices.

58 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

5.5.1 Digital I/Os

DIN.Wait
See Digital input block DIN

DOUT.Set
See Digital output block DOUT

DOUT.Pulse
See Digital output block DOUT

DINW.WaitBit
See Digital input word DINW

DINW.Wait
See Digital input word DINW

DOUTW.Set
See Digital output word DOUTW

5.5.2 Analog I/Os

AIN.WaitLess
See Analog input block AIN

AIN.WaitGreater
See Analog input block AIN

AIN.WaitInside
See Analog input block AIN

AIN.WaitOutside
See Analog input block AIN

AOUT.Set
See Analog output block AOUT

5.6 Technology Options


This group contains advanced functions.

Programming manual V2.62 59


© KEBA 2014
Instructions KeMotion

5.6.1 Triggers
In many cases it is required to perform certain actions depending on the ge-
ometry of the movement. This can be achieved using programmable triggers
that trigger actions without influencing the dynamics of the movement.
This kind of synchronization between program and movement is done using
the DO-instruction.

Overview:
● OnParameter = Trigger on segment parameter
● OnPlane = Trigger defined by a plane
● OnDistance = Trigger defined by a distance to the beginning/end of a seg-
ment
● OnPosition = Trigger on segment end

General information
General runtime behaviour and DO-instruction
● Macros accessing the periphery (I/O) stop the program pre-processing,
and hence stop the robot's movement. If this is not desired, DO-instruc-
tions synchronized with the program execution must be employed which
have no influence on the program pre-processing. All other macros and
instructions are executed by the program preprocessing.
● The DO-instruction is a general instruction which may be used after any
other macro. Every DO contains precisely one instruction. Every line of
program may contain at most one DO.
● The DO-instruction is activated synchronously to the main-run, i.e. upon
termination of the previous instruction. The program pre-processing and
hence the movement will not be influenced by the DO-instruction.

Programming options
Using the DO-instruction action may be performed synchronously with the
program execution. For this a particular trigger macro is not necessarily re-
quired. For example, a DO-instruction may be programmed after a Linmacro.
In this case the DO-part will be executed when the motion command has been
completed.

Example:
Teach-In data (.tid file):
1: Pos1 : CARTPOS := (952.0, 196.0, 1228.0, 0, 0, 0, 1)
2: Pos2 : CARTPOS := (490.7, 150.2, 1557.1, 0, 0, 0, 1)

Teach-In program (.tip file):


1: Lin (Pos1) DO Info("Pos1 reached")
2: Lin (Pos2)

If an action shall be triggered e.g. right in the middle of a motion command


special trigger macros must be used.

60 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

Example:
Teach-In data (.tid file):
1: Pos1 : CARTPOS := (952.0, 196.0, 1228.0, 0, 0, 0, 1)
2: Pos2 : CARTPOS := (490.7, 150.2, 1557.1, 0, 0, 0, 1)

Teach-In program (.tip file):


1: Lin (Pos1)
2: OnParameter(50) DO Info("Half-way from Pos1 to Pos2 passed")
3: Lin (Pos2)

Furthermore, the actual point of time of trigger execution may be shifted using
the optional parameter time. This feature may be used to compensate valve
switching times etc. The time-parameter is added to the corresponding pa-
rameter specified in the robot configuration.

Boundary conditions
● Allowed trigger actions (instruction preluded by DO) are assignments,
macros, and subroutine calls.
● Prohibited trigger actions are macros with path influence (motion com-
mands, dynamics settings, tools or reference systems, etc). If such a
macro is used an error will be issued. The same goes for macros which
are not directly used as a trigger action, but are part of the called subrou-
tine. After a DO-instruction TeachView offers only suited macros.
● If the program counter is set to OnParameter, OnPlane, or OnDistance the
corresponding trigger action will not be executed. The trigger would be
undefined because the resulting movement depends on the starting posi-
tion. Consequently, a trigger in the first line of a program has no effect.
However, trigger macros of type OnPosition will be executed.
● In single-stepping mode trigger actions based on OnParameter, OnPlane,
and OnDistance will not be executed. Trigger actions based on OnPosition
and actions preluded by DO (e.g. Lin(P1) DO x := 5) will be executed even
in single-stepping mode.
● Per motion command a maximum number of eight triggers may be pro-
grammed.

OnParameter
Trigger on a segment parameter of the next motion segment. Optionally, a
time-shifting parameter may be specified. If it is negative, the assigned action
will be triggered before the trigger is reached, if it is positive the action will be
triggered after the trigger has been reached. If no time is specified the default
time-shifting set by the system integrator is being used, otherwise the specified
time is added.
The maximum negative time-shifting is limited by the time-shifting set by the
system integrator (typical -300 ms). The maximum positive time-shifting is 1 s.
These limits refer to the sum of configured and programmed time-shifting. In
case an invalid time-shifting is specified a warning will be issued and the trigger
action will not be executed.
OnParameter (
pos : PERCENT

Programming manual V2.62 61


© KEBA 2014
Instructions KeMotion

OPTIONAL timeMs : DINT


)

Parameters:
pos Segment parameter on which the trigger is placed [%]
Time-shifting of trigger action vs. trigger [ms] Limits:
[timeMs]
-300 ms (or alternative value specified by system integrator) .. 1000 ms

In an overlapping area the segment parameter is projected to the overlapping


path. This leads to small deviations between programmed and executed dis-
tances.
1: Lin (P0)
2: OnParameter(80) DO …
3: Lin (P1)

Example:
Measuring the time in ms the robot takes to move half-way from Pos1 to Pos2
along a straight line.
Teach-In data (.tid file):
1: Pos1 : CARTPOS := (300, 196, 1220, 0, 0, 0, 1)
2: Pos2 : CARTPOS := (0, 150, 1550, 0, 0, 0, 1)
3: Clock1 : CLOCK
4: duration : DINT

Teach-In program (.tip file):


1: Lin(Pos1) DO Clock1.Start()
2: OnParameter(50) DO duration := Clock1.Read()
3: Lin(Pos2)

OnPlane
Trigger defined on a plane in Cartesian space. The plane must be parallel to
one of the principal planes of the current reference system and is specfied by
a distance offset. (e.g. OnPlane(YZPLANE, 100)… plane parallel to the YZ-
plane at a distance of x=100 mm).
Optionally, a time-shifting parameter may be specified (see OnParameter).

62 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

The offset may also be teached. In this case, after the macro has been inserted
into the program, the desired principal plane and the corresponding coordinate
axis must be selected before the current position value is teached.

Example:
Robot is moving along the z-axis, from z=100 to z=0. A trigger shall be placed
to a certain position along this line. As the movement takes place normal to
the XY-plane, it makes sense to use a plane trigger.
So, OnPlane is inserted into the program and XYPLANE is selected. Then the
robot is moved to the desired trigger position. Pressing the "TEACH" key fin-
ishes the procedure.
OnPlane (
plane : PLANETYPE
pos : REAL
OPTIONAL timeMs : DINT
)

Parameters:
plane Plane on which the trigger is placed (XYPLANE, XZPLANE, YZPLANE)
pos Position offset of plane with respect to principal plane
[timeMs] Time-shifting of trigger action vs. trigger [ms] (see OnParameter).

Example:
Set a digital output 100 ms before the robot hits the plane at x=100 (in the
current reference system Rs1).
Teach-In data (.tid file):
1: Pos1 : CARTPOS := (300, 196, 1220, 0, 0, 0, 1)
2: Pos2 : CARTPOS := (0, 150, 1550, 0, 0, 0, 1)
3: DigOut1 : DOUT := (MAPX("TT.IoDOut@1"))
4: Rs1 : CARTREFSYS := (MAP(World), 0, 0, 70, 0, 0, 45)

Teach-In program (.tip file):


1: RefSys(Rs1)
2: Lin(Pos1)
3: OnPlane(YZPLANE, 100.0, -100) DO DigOut1.Set(TRUE)
4: Lin(Pos2)

PLANETYPE
This enumeration specifies the principal Cartesian plane.
Elements:
XYPLANE Plane spanned by X- and Y-axis
XZPLANE Plane spanned by X- and Z-axis
YZPLANE Plane spanned by Y- and Z-axis

OnDistance
Trigger at a specified distance to the beginning or end of a segment. Optionally,
a time-shifting parameter may be specified (see OnParameter).
OnDistance (
type : DISTANCETYPE

Programming manual V2.62 63


© KEBA 2014
Instructions KeMotion

dist : REAL
OPTIONAL timeMs : DINT
)

Parameters:
Specifies whether the distance refers to the beginning or end of the segment
type
(FROMBEGIN, FROMEND)
dist Distance
[timeMs] Time-shifting of trigger action vs. trigger [ms] (see Onparameter).

Information
If the specified distance is too large (longer than the segment) a warning will
be issued and the trigger will be pulled at the end (type = FROMBEGIN) or
the beginning (type = FROMEND) of the segment.

Example:
Set a digital output 20 mm before position P1 is reached.
Teach-In data (.tid file):
1: Pos0 : CARTPOS := (0, 150, 1000, 0, 0, 0, 1)
2: Pos1 : CARTPOS := (50, 150, 1000, 0, 0, 0, 1)
3: DigOut1 : DOUT := (MAPX("TT.IoDOut@1"))

Teach-In program (.tip file):


1: Lin (P0)
2: OnDistance (FROMEND, 20) DO DigOut1.Set(TRUE)
3: Lin (P1)

Set a digital output 20 mm after position P0 has been reached.


Teach-In data (.tid file):
1: Pos0 : CARTPOS := (0, 150, 1000, 0, 0, 0, 1)
2: Pos1 : CARTPOS := (50, 150, 1000, 0, 0, 0, 1)
3: DigOut1 : DOUT := (MAPX("TT.IoDOut@1"))

Teach-In program (.tip file):


1: Lin (P0)
2: OnDistance (FROMBEGIN, 20) DO DigOut1.Set(TRUE)
3: Lin (P1)

64 Programming manual V2.62


© KEBA 2014
KeMotion Instructions

DISTANCETYPE
This enumeration specifies whether the distance refers to the beginning or end
of a segment.
Elements:
FROMBEGIN Distance refers to the beginning of the segment
FROMEND Distance refers to the end of the segment

OnPosition
Trigger for synchronization between program execution and robot movement.
The trigger action will be executed when the robot passes the specified posi-
tion. This trigger is used to execute peripheral macros synchronously with the
robot movement, but without stopping the pre-processing. Time-shifting is not
supported.
OnPosition(
)

Example:
Sets a digital output synchronously with the movement, but without influencing
the movement.
Teach-In data (.tid file):
1: Pos1 : CARTPOS := (952.0, 196.0, 1228.0, 0, 0, 0)
2: Pos2 : CARTPOS := (490.7, 150.2, 1557.1, 0, 0, 0)
3: Pos3 : CARTPOS := (490.7, 100.0, 1557.1, 0, 0, 0)
4: Pos4 : CARTPOS := (490.7, 200.0, 1557.1, 0, 0, 0)
5: DigOut1 : DOUT := (MAPX("TT.IoDOut@1"))

Teach-In program (.tip file):


1: Lin(Pos1)
2: LOOP 3 DO
3: Lin(Pos3)
4: Lin(Pos4)
5: END_LOOP
6: OnPos() DO DigOut1.Set(TRUE)
7: Lin(Pos2)

Programming manual V2.62 65


© KEBA 2014
Instructions KeMotion

Program pre-processing vs. program execution


1) Set an output during program pre-processing (output is set after the seg-
ment Lin(P1) has been appended to the path, i.e. shortly after the program
has been started, without any correlation to the robot position):
Lin(P1)
DigOut1.Set (TRUE)
2) Set an output when position P1 is reached (during program execution):
Lin(P1) DO DigOut1.Set(TRUE)
is equivalent to
3) Lin(P1)
OnPosition() DO DigOut1.Set(TRUE)

5.6.1.7 Runtime behaviour of a DO-action

Information
The following example demonstrates that trigger actions are always executed
in a parallel program, hence the program linearity is lost.

Lin(P1)
DigOut1.Set(TRUE) DO boolVal := TRUE
IF boolVal THEN // condition possibly not fulfilled,
// as boolVal in parallel DO-program
// may be assigned only after If-condition
// has been evaluated

66 Programming manual V2.62


© KEBA 2014
KeMotion Data types

6 Data types
The structuring of these types is the same as offered by TeachView when a
new variable is created.

6.1 KAIRO Basic types


defines five basic data types, which require no declaration. Each data type is
assigned a certain range and a series of operators.
Meaning and range:

Title Description Range


BOOL Boolean value 8 bit TRUE or FALSE
DINT Integer number 32 bit, signed
DWORD Bit field 32 bit
REAL Floating point number IEEE 32 bit
STRING Strings max. 255 8-bit characters

Operators:

Title Operators
BOOL AND, OR, XOR, NOT (logical)
DINT Arithmetic and relational operators
AND, OR, XOR, NOT (bit-wise)
DINT, DWORD
SHL, SHR, ROL, ROR, =, <>
REAL Arithmetic and relational operators
STRING Relational operators, +

Assignments:
From/ To BOOL DINT DWORD REAL STRING
BOOL y x x x STR
DINT x y y y STR
DWORD x y y x STR
REAL x y x y STR
STRING x x x x y
y ... allowed (possibly automatic type conversion) x ... not allowed
STR ... functions to convert a basic type to a string

Furthermore, a generic data type is available which may exclusively be used


as parameter in routines and as referenced type of reference variables. This
type may not be instantiated.
Title Description
ANY Any type

Programming manual V2.62 67


© KEBA 2014
Data types KeMotion

6.1.1 BOOL
The BOOL-type may hold the values TRUE or FALSE. The result of a relation
is of type BOOL.

6.1.2 DINT, REAL, DWORD


Integer types (DINT) are whole numbers. Real types (REAL) are floating point
numbers. If DINT is assigned to REAL (and vice-versa) an implicit type con-
version is executed. When converting from DINT to REAL a precision loss will
occur if the DINT-number is large enough. When converting from REAL to
DINT trailing decimals will be lost and the DINT-range may be exceeded.
The result type of a permitted operation is defined by the following rules:
● if one operand is of type REAL, the result is of type REAL.
● otherwise: if one operand is of type DINT, the result is of type DINT.
● otherwise: operands and result are of the same type.

Example (conversion of DINT and DWORD):


// in test.tid i : DINT w : DWORD txt : STRING // in test.tip i := -1 txt := STR(i) //

6.1.3 STRING
A string is a series of characters. The maximum string length is 255 characters.
Strings may be concatenated using the "+"-operator. The built-in function STR
converts the contents of variable of a different type to a formatted string.

Example (string assignment):


// in test.tid s : STRING b : BOOL i : DINT r : REAL // in test.tip //... b := TRUE i

6.1.4 ANY
This data type is generic. It may only be used as parameter in routines and as
referenced type of reference variables. It may not be instantiated. Constants
may be passed as ANY-parameter.

Example (usage of ANY):


// in test.tid i : DINT r : REAL // in test.tip //... i := 65 r := 1.23 //... Info(“In

6.2 Positions

6.2.1 POSITION_
A position defines the position and orientation of a robot's TCP. It may either
be specified in axis coordinates or in Cartesian coordinates.

68 Programming manual V2.62


© KEBA 2014
KeMotion Data types

Hierarchy:

Fig.6-1: Hierarchy of position data types

6.2.2 AXISPOS
Position specified by axis positions.
The position of all robot axes and auxiliary axes is specified.
Variables:
a1..6 REAL Position of robot axes
aux1..3 REAL Position of auxiliary axes

6.2.3 CARTPOS
Position specified by Cartesian components.
CARTPOS contains a position in Cartesian coordinates referring to the cur-
rently set reference system (set by macro ‘RefSys’). Some positions may be
reached with different axis positions (several possibilities). To specify the de-
sired position of the axes every possibility is assigned a robot mode. The axes
position in which the robot achieves this position depends on currently set tool
(set by macro ‘Tool’).
Variables:
x, y, z REAL Position of TCP
a, b, c REAL Orientation of TCP
aux1..3 REAL auxiliary axes
Information on axes ambiguity, meaning depends on
mode DINT
type of robot

6.2.4 AXISPOSREF
Position specified by axis positions. Like AXISPOS, but the variables are ref-
erences.

Programming manual V2.62 69


© KEBA 2014
Data types KeMotion

Variables:
MAPTO
a1..6 Position of robot axes
REAL
MAPTO
aux1..3 Position of auxiliary axes
REAL

6.2.5 CARTPOSREF
Position specified by Cartesian components. Like CARTPOS, but the variables
are references.
Variables:
MAPTO
x, y, z Position of TCP
REAL
MAPTO
a, b, c Orientation of TCP
REAL
MAPTO
aux1..3 auxiliary axes
REAL
MAPTO Information on axes ambiguity, meaning depends on
mode
DINT type of robot

6.2.6 AXISPOSEXT
Position specified by axis positions. This Position can not be teached, the val-
ues are external given by the PLC. To use the position it has to be written initialy
one times. See also See also “RCE_SetAxisPos” in the PLC robotic manual.
With this PLC function block it is possible to write the axis position which is
used in the ‘port’ variable.
Variables:
port AXISPOSPORT Cartesian position of robot from PLC

6.2.7 CARTPOSEXT
Position specified by Cartesian components. This Position can not be teached,
the values are external given by the PLC. To use the position it has to be written
initialy one times. See also See also “RCE_SetCartPos” in the PLC robotic
manual. With this PLC function block it is possible to write the cartesian position
which is used in the ‘port’ variable.
Variables:
port CARTPOSPORT Position of robot axes from PLC

6.2.8 ROBAXISPOS
Position specified by axis positions.

70 Programming manual V2.62


© KEBA 2014
KeMotion Data types

The position of all robot axes is specified.


Positions of auxiliary axes are not specified. This data type is only available in
systems with external chained auxiliary axes. It is used to move the robot in-
dependently from position of auxiliary axes and without moving these auxiliary
axes.
Variables:
a1..6 REAL Position of robot axes

6.2.9 AUXAXISPOS
Position specified by axis positions.
The position of all auxiliary axes is specified.
Positions of robot axes are not specified. This data type is only available in
systems with external chained auxiliary axes. It is used to move the auxiliary
axes independently from robot axes and without moving these robot axes.
Variables:
aux1..3 REAL Position of auxiliary axes

6.2.10 ROBCARTPOS
Position specified by Cartesian components.
Like CARTPOS but does not contain positions of auxiliary axes. This data type
is only available in systems with external chained auxiliary axes. It is used to
move the robot independently from position of auxiliary axes and without mov-
ing these auxiliary axes.
Variables:
x, y, z REAL Position of TCP
a, b, c REAL Orientation of TCP
Information on axes ambiguity, meaning depends on
mode DINT
type of robot

6.2.11 DISTANCE_
Distance given in axis or Cartesian coordinates.
For the type of Cartesian representation see Positions.

Programming manual V2.62 71


© KEBA 2014
Data types KeMotion

Hierarchy:

Fig.6-2: Figure 7: Hierarchy of distance data types

6.2.12 AXISDIST
Distance specified in axis displacements. The displacement of all robot and
auxiliary axes is specified.
Variables:
da1..6 REAL Displacement of robot axes
daux1..3 REAL Displacement of auxiliary axes

6.2.13 CARTDIST
Distance specified in Cartesian coordinates. The distance is specified as dis-
placement in the WORLD-system.
The currently set robot mode is maintained.
Variables:
dx, dy, dz REAL Displacement of position
da, db, dc REAL Displacement of orientation
daux1..3 REAL Displacement of auxiliary axes

6.3 Reference system and tool

6.3.1 REFSYS_
Reference system for positions.
Reference systems are used in combination with Cartesian positions to relo-
cate a programmed geometry. Every position of a program refers to a previ-
ously set reference system. The default system may be changed using the
command REFSYS.

72 Programming manual V2.62


© KEBA 2014
KeMotion Data types

Hierarchy:

Fig.6-3: Hierarchy of reference systems

6.3.2 WORLDREFSYS
All Cartesian reference systems are based upon the WORLD-system (possibly
via a number of intermediate systems). The WORLD-system is always present,
and no further instances may be created.

6.3.3 CARTREFSYS_
Reference system for Cartesian positions.
Cartesian positions refer to a pre-set Cartesian reference system. When a
program is started the WORLD-system is active. The WORLD-system is a pre-
defined coordinate system.

6.3.4 CARTREFSYS
Cartesian reference system.
Variables:
x, y, z REAL Position displacement w.r.t. reference system
a, b, c REAL Orientation displacement w.r.t. reference system
MAPTO
baseRefSys refered reference system
REFSYS_

6.3.5 CARTREFSYSEXT
Cartesian reference system where the offset values are external given from
PLC. This reference system can not be teached. To use this reference system
it has to be initialy written one times by the PLC. See also See also “RCE_Set-
Frame” in the PLC robotic manual. With this PLC function block it is possible
to set the offsetdata of this reference system, which is used in the ‘port’ vari-
able.

Programming manual V2.62 73


© KEBA 2014
Data types KeMotion

Variables:
port FRAMEPORT Offsetdata of this reference system from PLC
MAPTO
baseRefSys refered reference system
REFSYS_

6.3.6 CARTREFSYSAXIS
Cartesian reference system which is based upon an external auxiliary axis.
This type of reference system is only available in systems containing an ex-
ternal auxiliary axis.
Positions defined on such a reference system refer to the position of the cor-
responding auxiliary axis. This may e.g. be used to write programs for pro-
cessing objects placed on a turntable, independently from the current turntable
position (the turntable must be defined as an external auxiliary axis).
Variables:
Externally coupled auxiliary axis upon which this refer-
axis ROBOTAXIS
ence system is based

6.3.7 TOOL_
The struct TOOL_ specifies a tool which is mounted to the robot flange. The
flange is located at the end of the last robot axis. The tool tip is called Tool
Center Point (TCP).

Hierarchy:

Fig.6-4: Figure 9: Hierarchy of tools

6.3.8 TOOL
TOOL specifies position and orientation of the tool tip relative to the robot
flange.
Variables:
x, y, z REAL TCP-position w.r.t. flange
a, b, c REAL TCP-orientation w.r.t. flange

74 Programming manual V2.62


© KEBA 2014
KeMotion Data types

6.3.9 TOOLSTATIC
TOOLSTATIC is equivalent to TOOL. However, instances of TOOLSTATIC
may not be created or modified. This data type is used for tools created by the
system (flange and default tool, if available).
Variables:
x, y, z REAL TCP-position w.r.t. flange
a, b, c REAL TCP-orientation w.r.t. flange

6.4 Dynamics and overlapping

6.4.1 OVERLAP_
OVERLAP_ is used to specify the overlapping movement between two seg-
ments.

Hierarchy:

Fig.6-5: Figure 10: Hierarchy of OVERLAP

6.4.2 OVLREL
Relative overlapping parameterization.
Relative parameterization defines an overlap degree using a percentage. 100
% means time-optimal overlapping, utilizing the acceleration reserves of the
axes at lowest-possible deviation from the programmed target position. Values
less than 100% will lead to smaller deviations, but prolong the cycle time. Val-
ues greater than 100% cause larger deviations and smaller axis accelerations
at nearly a constant cycle time.
Variables:
ovl PERC200 Percentage in the range of 0..200 %

6.4.3 OVLABS
Absolute overlapping parameterization.

Programming manual V2.62 75


© KEBA 2014
Data types KeMotion

Absolute parameterization specifies the maximum permitted deviations from


the programmed target position. This requires several parameters:
● Distance of TCP-position in length units = overlap radius
● Distance of TCP-orientation in angle units
● Distance for linear and rotational axes
Furthermore, when Cartesian movements are overlapped, constant path ve-
locity may be demanded in the overlapping area.
Variables:
posDist REAL Overlapping position distance of TCP
oriDist REAL Overlapping orientation distance of TCP
linAxDist REAL Distance for linear axes
rotAxDist REAL Distance for rotational axes
vConst BOOL Flag: keep path velocity constant during over-lapping

How the parameters are used:


The beginning of the overlap is determined by the smallest parameter. Over-
lapping radius and TCP-orientation distance can only be evaluated for Carte-
sian movements. During Point-to-point movements the parameters for the
axes are used.
Parameter -> posDist oriDist linAxDist rotAxDist
Linear robot and Rotational robot
PTP - -
auxiliary axes and auxiliary axes
Linear wrist and Rotational wrist
Lin, Circ mm deg
auxiliary axes and auxiliary axes

6.4.4 DYNAMIC_
The data type DYNAMIC allows to program the dynamics of a movement.

76 Programming manual V2.62


© KEBA 2014
KeMotion Data types

Hierarchy:

Fig.6-6: Figure 11: Hierarchy of DYNAMIC

6.4.5 DYNAMIC
Velocity, acceleration, deceleration, and jerk as a percentage of the maximum
axis limits of robot and auxiliary axes.
Velocity, acceleration, deceleration, and jerk of the Cartesian TCP position
movement.
Velocity, acceleration, deceleration, and jerk of the Cartesian TCP orientation
movement.
velAxis PERCENT % of maximum axis velocity
accAxis PERCENT % of maximum axis acceleration
decAxis PERCENT % of maximum axis deceleration
jerkAxis PERCENT % of maximum axis jerk
vel REAL Path velocity in mm/s
acc REAL Path acceleration in mm/s²
dec REAL Path deceleration in mm/s²
jerk REAL Path jerk in mm/s³
velOri REAL Path orientation velocity in deg/s
accOri REAL Path orientation acceleration in deg/s²
decOri REAL Path orientation deceleration in deg/s²
jerkOri REAL Path orientation jerk in deg/s³

Programming manual V2.62 77


© KEBA 2014
Data types KeMotion

It is permitted not to specify a full data block (all axis values = 0, all path values
= 0, or all orientation values = 0). In this case the currently set data are retained.

6.4.6 PERCENT
To specify percentages.
Integer value in the range of 0..100%

6.4.7 PERC200
To specify percentages in overlap commands.
Integer value in the range of 0..200%

6.5 I/O-Devices

6.5.1 Hardware connection of I/O-blocks


I/O-Blocks are used to connect the application to the hardware. Digital I/Os
map to BOOL-arrays, analog I/Os map to REAL-arrays, and I/O-Words map
to DINT-arrays.
Every I/O-block has a member variable port used to connect it to the corre-
sponding hardware variable in the system.
Apart from the hardware variable any other BOOL, DINT, or REAL-variable
may be used. This makes e.g. edge detection for any BOOL-variable very
easy.

6.5.2 Runtime behaviour of I/O-blocks


Runtime behaviour of i/O blocks All methods are evaluated during program
execution. If synchronization with the robot movement is desired Schaltpunkte
or waiting commands (WaitIsFinished, WaitTime) may be used.

6.5.3 Optional parameter timeMs


All macros used to wait for a certain value of an input may be limited by a
timeout. In this case the function returns when the timeout has expired. The
return value will be FALSE. If the timeout is not specified, the function waits
infinitely long for the desired value.

6.5.4 Digital input block DIN


Block for reading a digital input.

78 Programming manual V2.62


© KEBA 2014
KeMotion Data types

Member variables:
BOOL
val Current value
READONLY
posEdge BOOL Current value of rising edge detection
negEdge BOOL Current value of rising edge detection
MAPTO
port Reference to hardware endpoint
BOOL

These variables may be directly accessed, so there is no need for access


functions.

Edge detection:
posEdge detects and stores the transition FALSE-TRUE, negEdge the transi-
tion TRUE-FALSE. These variables stay set until they are reset by the user.

Methods:
● Wait- Wait for an input

DIN.Wait
Wait until the input is set or reset.
DIN.Wait ( val : BOOL OPTIONAL timeMs : DINT ) : BOOL

This function waits until the input is set or reset, or until the optional timeout
expires.
Parameters:
val Target value; function waits until the input takes this value.
timeMs When this period has passed waiting is aborted [ms].

Return value:
FALSE if timeout expires, TRUE if input takes target value.

Example:
// Wait for input. If input is already set when Pos0 is reached
// the robot may overlap to Pos1.
PTP(Pos0) pieceAvail.Wait(TRUE) PTP(Pos1)

// Wait for input. Overlapping to Pos1 is impossible, as Wait() is


// evaluated only after Pos0 has been reached.
PTP(Pos0) WaitIsFinished() pieceAvail.Wait(TRUE) PTP(Pos1)

6.5.5 Digital output block DOUT


Block for reading and writing a digital output.

Programming manual V2.62 79


© KEBA 2014
Data types KeMotion

Member variables:
val BOOL Current value
MAPTO
port Reference to hardware endpoint
BOOL

Methods:
● Set- Set output
● Pulse- Set output to TRUE for a certain period of time

DOUT.Set
Set an output.
DOUT.Set ( val : BOOL )

Alternatively, the output may be directly written to.


Parameters:
val Value to be written to the output

Example:
// sets an output to TRUE
Out5.Set(TRUE) // set output to TRUE

// alternative possibility
Out5.val := TRUE // set output to TRUE

DOUT.Pulse
Set output to TRUE for a certain period of time.
Command will be triggered synchronously with the main-run.
DOUT.Pulse ( val : BOOL; timeMS : DINT; OPTIONAL pauseAtInterrupt : BOOL )

Pulses a digital output with a signal of defined duration. The pulse duration is
specified in milliseconds.
At the beginning of the pulse the output is set to value, at the end of the pulse
the output is set to the inverted value of value.
If the output is already set to value when the pulse is executed, it will only be
reset at the end of the pulse.
The beginning of the pulse is synchronous with the main-run. Hence, overlap-
ping to next motion command is possible and the robot will not be stopped
during the pulse.
Using the optional parameter pauseAtInterrupt it is possible to indicate whether
the pulse shall be held until its end, or whether a program interruption shall
cause also a pulse interruption.

80 Programming manual V2.62


© KEBA 2014
KeMotion Data types

If no value or FALSE is specified, the pulse will be executed to its end. A pro-
gram interruption will not reset the output.
If TRUE is specified, the time will be put on hold upon program interruption and
the output be reset. When the program is continued the output is set again for
the remaining time. If the program is terminated (unloaded) the output will not
be set any more.
Parameters:
val TRUE=positive pulse, FALSE=negative pulse
timeMs Pulse duration in [ms]
Indicates if the pulse shall be interrupted upon program interruption. (OP-
pauseAtInterrupt
TIONAL) If not specified, FALSE will be assumed.

Example:
Out5.Pulse(TRUE, 500) // sets output to TRUE for half a second Out6.Puls

6.5.6 Digital input word DINW


Read a digital input word and wait for an input bit or word.
Member variables:
MAPTO
val DWORD Current input word
READONLY
MAPTO
port Reference to hardware endpoint
DWORD

Methods:
● WaitBit- Wait until bis is set
● Wait- Wait for a certain word value

DINW.WaitBit
Wait until a specified bit of the input word is set or reset.
DINW.WaitBit ( val : BOOL, bitNr : DINT, OPTIONAL timeMs : DINT ) : BOOL

This function waits until the specified bit is set or reset, or until the optional
timeout expires.
Parameters:
val Target value; function waits until specified bit takes this value.
bitNr bitNr Bit number of input word (0..31)
timeMs When this period has passed waiting is aborted [ms].

Return value:
FALSE if timeout expires, TRUE if input bit takes target value.

Programming manual V2.62 81


© KEBA 2014
Data types KeMotion

Example:
// Wait for bit 7 of input word „inData“. If the bit is already set when// Pos0 is
reached, the robot may overlap to Pos1.
PTP(Pos0) inData.WaitBit(TRUE, 7) PTP(Pos1)

// Wait for bit 7 of input word „inData“. Overlapping to Pos1 is impossible


// as Wait() is evaluated only after Pos0 has
// been reached.
PTP(Pos0) WaitIsFinished() inData.WaitBit(TRUE, 7) PTP(Pos1)

DINW.Wait
Wait for a certain word value of the input word.
DINW.Wait ( val : DWORD, OPTIONAL mask: DWORD, OPTIONAL timeMs : DINT ) : BOOL

This function waits until the input word takes the specified value, or until the
optional timeout expires. The input word may be masked.In this case the func-
tion waits until DINW.val AND mask = value.
Parameters:
val Target value; function waits until the input takes this value.
mask Mask for masking the read input word
timeMs When this period has passed waiting is aborted [ms].

Return value:
FALSE if timeout expires, TRUE if input takes target value.

Example:
// Wait for value 33 of the least significant 8 bits (mask = 255) of
// input word „inData“. If this value is already present when Pos0 is reached
// the robot may overlap to Pos1.
PTP(Pos0) inData.Wait(33, 255, 1000) PTP(Pos1)

6.5.7 Digital output word DOUTW


Block for writing and reading a digital output word, and for waiting for a specified
output bit and word.
Member variables:
MAPTO
val Current value of output word
DWORD
MAPTO
port Reference to hardware endpoint
DWORD

82 Programming manual V2.62


© KEBA 2014
KeMotion Data types

Methods:
● Set- Set output word

DOUTW.Set
Set the output word to the specified value.
DOUTW.Set ( val : DWORD)

Sets the digital output word to the specified value.


Alternatively, the output may be directly written to.
Parameters:
val Value to be written to the output word

Example:
// sets output word to 125
outData.Set(125) // set output word to 125

// alternative possibility
outData.x := 125 // set output word to 125

6.5.8 Analog input AIN


Block for reading an analog input.
Member variables:
MAPTO
val REAL Current input value
READONLY
MAPTO
port Reference to hardware endpoint
REAL

Methods:
● WaitLess- Wait for input less than x
● WaitGreater- Wait for input greater than x
● WaitInside- Wait for input inside limits
● WaitOutside- Wait for input outside limits

AIN.WaitLess / WaitGreater
Wait until input is less or greater than a value.
AIN.WaitLess / WaitGreater ( val : REAL, OPTIONAL timeMs : DINT ) : BOOL

This function waits until the analog input value is less or greater than the
specified value, or until the optional timeout expires.

Programming manual V2.62 83


© KEBA 2014
Data types KeMotion

Parameters:
val Specified value
timeMs When this period has passed waiting is aborted [ms].

Return value:
FALSE if timeout expires, TRUE if input takes target value.

Example:
// Wait for input. If input has already a valid value when Pos0 is reached
// the robot may overlap to Pos1.
// be aborted.
PTP(Pos0) IF aiTemp1.WaitLess(40.0, 1200) THEN PTP(Pos1) ELSE PTP(PosHome) END_IF

// Wait for input. The WaitLess()-condition is evaluated after the robot // has
passed the middle of the previous segment.
PTP(Pos0) WaitIsFinished(50) aiTemp1.WaitLess(40.0) PTP(Pos1)

AIN.WaitInside / WaitOutside
Wait until input value lies inside or outside a specified interval.
AIN.WaitInside / WaitOutside ( minVal : REAL, maxVal : REAL, OPTIONAL timeMs : DINT )

This function waits until the analog input value lies inside or outside a specified
interval, or until the optional timeout expires.
Parameters:
minVal Minimum value (first value of valid limit)
maxVal Maximum value (second value of valid limit)
timeMs When this period has passed waiting is aborted [ms].

Return value:
FALSE if timeout expires, TRUE if input takes target value.

Example:
// Wait until input lies outside specified limits,
// with the additional condition, that the observation
// of the input should be stopped after at most 2 s
b := aiTemp1.WaitOutside(5.0, 15.0, 2000) IF NOT b THEN Warning(“Timeout waiting on te

// Wait until input lies inside specified limits


realMaxVal := 4.0 aiPressure1.WaitInside(0.5, realMaxVal)

84 Programming manual V2.62


© KEBA 2014
KeMotion Data types

6.5.9 Analog Output AOUT


Block for reading and writing an analog output.
Member variables:
MAPTO
val Current output value
REAL
MAPTO
port Reference to hardware endpoint
REAL

Methods:
Set- Set an analog output

AOUT.Set
Set the analog output to a specified value.
AOUT.Set ( val : REAL )

Sets the analog output to the specified value.


Alternatively, the output may be directly written to.
Parameters:
val Value to be written to the output

Example:
Out5.Write(14.0) // set output to 14.0 realVal := 0.5 Out5.Write(realVal)

6.6 System and Extensions

6.6.1 Unit ROBOTDATA


This block offers access to a number of state variables of a robot. For each
robot an instance of this type is available.
Member variables:
STRING RE-
name name of the robot
ADONLY
DINT READON-
index Index of robot in the global robot array
LY
AXISPOSREF
axisSetPos Current axis position
READONLY
CARTPOSREF
cartSetPos Current TCP-position
READONLY
Indicates that the robot has reached the end of the actual
BOOL READON-
isOnPathEnd path. Useful e.g. to synchronize a robot movement with
LY
a peripheral IO via the KAIRO program.

Programming manual V2.62 85


© KEBA 2014
Data types KeMotion

BOOL READON-
isReferenced Referenced-state of robot (Homing state)
LY
ARRAY[1..9] OF
axisIsReferenced BOOL READON- Referenced-state of all drives
LY

6.6.2 CLOCK
The clock may be used for simple time measurement tasks in the program.
The time is measured in milliseconds.
Member variables:
timeMs DINT Time when clock was stopped [ms]

Overview of methods
● Reset- Reset the clock
● Start- Start the clock
● Stop- Stop the clock
● Read- Read time
● ToStr- Convert to a string of format tt hh:mm:ss.ms

CLOCK.Reset
Resets the clock.
The clock is reset even if the clock is currently running.
CLOCK.Reset ()

Example:
Clkl1.Reset() //clock is reset

CLOCK.Start
Starts the clock.
If the clock is started more often than once the previously measured time is
lost.
CLOCK.Start()

The starting time is stored in the clock.

Example:
Clk1.Start() // clock is started

CLOCK.Stop
Stops the clock.
The clock can only be stopped if it has been started previously.
CLOCK.Stop()

86 Programming manual V2.62


© KEBA 2014
KeMotion Data types

The stopping time is stored in clock and the time difference to the starting time
is calculated.

Example:
Clk1.Stop() // clock is stopped

CLOCK.Read
Read the measured time. If measurement is pending, the current interme-diate
time is read, otherwise the stopped time.
CLOCK.Read ( ) : DINT

Return value:
Measured time or current intermediate time [ms]

Example:
Value := Clk1.Read() // clock is read

CLOCK.ToString
Convert time to text of the format tt hh:mm:ss.ms
When measurement is pending the current intermediate time is read and for-
matted, otherwise the stopped time.
CLOCK.ToString ( ) : STRING

Return value:
Measured time or current intermediate time [ms], converted to format tt
hh:mm:ss.ms

Example:
value := Clk1.ToString() // clock is read; time is returned as // formatted tex

6.6.3 TIMER
A timer can be set to a certain time. When this time has passed a flag is sig-
nalled. Such a flag may be used within a waiting condition.
If the program is interrupted while the timer is running the remaining time to
signal is stored. Upon program continuation the timer is reset with the remain-
ing time.
Member variables:
q BOOL Flag signalizing a timer event

Methods:
● Start- Start the timer
● Stop- Stop the timer

Programming manual V2.62 87


© KEBA 2014
Data types KeMotion

TIMER.Start
Starts the timer.
If a timer is started more often than once, previous starts are discarded.
The timer flag is automatically reset upon timer start.
TIMER.Start ( timeMs : DINT )

Example:
Tm1.Start(2000) // start a 2-seconds-timer WAIT Tm1.q // wait until timer is signal

TIMER.Stop
Stops the timer.
The timer can only be stopped if it has been started previously.
TIMER.Stop ( ) : DINT

The timer flag stays unmodified when Stop() is called.


Return value:
Remaining time to timer signal [ms]

Example:
r := Tm1.Stop() // timer is stopped Info("Remaining time: %1 ms", r)

6.6.4 Synchronization point SYNC


Unit to synchronize the execution of programs running parallel.

Information
It is not reasonable to create SYNC units in the program scope. Typically
SYNC units are defined in the MULTI ROBOT scope.

Methods:
● Sync Synchronization of programs running parallel
Command to synchronize the execution of two running programs. Thus it is,
e.g., possible to synchronize the movement of two robots.
SYNC.Sync(
syncNr : DINT
) : BOOL

Parameters:
syncNr Number of the synchronization point

The first program which reaches a sync-macro sets the given syncNr and waits
until the synchronization point is cleared. I.e. until another program resets the
syncNr.

88 Programming manual V2.62


© KEBA 2014
KeMotion Data types

If a program reaches an already set synchronization point, this synchronization


point is reset. Afterwards both programs continue.
Whenever a synchronization point with a set syncNr differing from the given
syncNr is reached, an error is set and the program execution is stopped.

Example:
Robot 1

Lin(p1)
SyncRobs.Sync(3) // Waiting for the second robot
Lin(p2) // Movement is executed after second robot has reached syn

Robot 2

Lin(p1)
SyncRobs.Sync(3) // Waiting for the first robot
Lin(p2) // Movement is executed after first robot has reached sync

Programming manual V2.62 89


© KEBA 2014
Global variables KeMotion

7 Global variables
Some variables are automatically created by the system and may be used by
end-user programs.

IoDIn: ARRAY [0..31] OF BOOL


Array of logical digital inputs which is written to by the PLC

IoDOut: ARRAY [0..31] OF BOOL


Array of logical digital outputs which is read by the PLC

IoAIn: ARRAY [0..31] OF REAL


Array of logical analog inputs which is written to by the PLC

IoAOut: ARRAY [0..31] OF REAL


Array of logical analog outputs which is read by the PLC

IoWIn: ARRAY [0..31] OF DWORD


Array of logical input words which is written to by the PLC

IoWOut: ARRAY [0..31] OF DWORD


Array of logical output words which is read by the PLC

IoIIn: ARRAY [0..31] OF DINT


Array of logical integer input values which is written to by the PLC

IoIOut: ARRAY [0..31] OF DINT


Array of logical integer output values which is read by the PLC

CartPosPort : ARRAY [0..7] OF CARTPOSPORT


Array of logical cartesian input positions of robot, which can be written from
IEC.

AxisPosPort : ARRAY [0..7] OF AXISPOSPORT


Array of logical input axispositions of robot, which can be written from IEC.

FramePort : ARRAY [0..7] OF FRAMEPORT


Array of logical frames (offset of external reference system), which can be
written from IEC.

World: WORLDREFSYS
WORLD-coordinate system. May be set as a reference system. All other Car-
tesian systems refer to this system, directly or indirectly.

90 Programming manual V2.62


© KEBA 2014
KeMotion Global variables

Flange: TOOLSTATIC
The robot flange may be used as a tool and is always available. Flange rep-
resents a tool of length zero with zero orientation offset (all six values of the
frame are zero).

DefaultTool : TOOLSTATIC
A default tool may be configured. Variable will be instantiated for each robot in
the corresponding GLOBAL-project.

RobotData: ROBOTDATA
Contains robot state information. Variable will be instantiated for each robot in
the corresponding GLOBAL-project.

RobotBase : REFSYSSTATIC
RobotBase can be used as reference system. Variable will be instantiated for
each robot in the corresponding GLOBAL-project.

Programming manual V2.62 91


© KEBA 2014
Extending KAIRO instruction set KeMotion

8 Extending KAIRO instruction set


The main parts of the system project are delivered as encrypted Teachtalk-
archives (RcCore.tta and RcInternal.tta) and cannot be modified. The definition
of the KAIRO instructions for endusers is not encrypted (subdirectory 'userapi')
and can be adopted or extended for customer needs. The instructions definied
in the open part of the system project access the encrypted core over an ap-
plication interface definied in an open Teachtalk archive (RcInterface.tta).
This application interface is held compatible over several versions and allows
the customer to program its own extensions and modification in the KAIRO
intruction set. If the customer uses parts of the encrypted core which are not
part of the defined application interface compatibility with future versions is not
guaranteed.

92 Programming manual V2.62


© KEBA 2014

You might also like