Duerr Translators

This section provides basic information about the Duerr1 translator.

This page discusses:

Instruction Support

DUERR Instruction Support

The Duerr Translator supports upload and download of all instructions in the DELMIA Robotics language that are available in the Duerr EcoTalk language. All features of the supported instructions which apply to Duerr are supported.

The translation result of the tasks are in TIP- and TID-files which can be loaded into the Duerr controller. TIP-files contain instructions, and TID-files contain data declarations. On upload, any unsupported Duerr EcoTalk instructions are stored as custom instructions so that the program can be downloaded again without loss of data.

The following table summarizes the level of support for each DUERR Instruction by the DELMIA Duerr translator and DELMIA simulation. Any instruction which does not appear in this list is uploaded as a V6 Custom instruction and will not be used in simulation.

DELMIA Instruction Level of Support Duerr Instructions Comments
Goto Supported GOTO
Condition Partial Support IF condition ELSEIF condition ELSE ENDIF Condition is a GET(io signal) or a simple integer/Boolean variable comparison (i.e. x==10). GET is used for inputs of type Boolean.
For Not supported NA
While do Partial Support WHILE expression ENDWHILE Condition is a GET(io signal) or a simple integer/Boolean variable comparison (i.e. x==10). GET is used for inputs of type Boolean.
Return Supported RETURN
Break Not Supported NA
Run (service) Not Supported NA
Run (procedure) Partial Support CALL No arguments. No device tasks.
Procedure Partial Support //PROGRAM…//END No arguments.
Custom Supported Any unsupported instruction
Grab/Release Supported SET_GRIPPER SET_GRIPPER(Control Open) releases a part. SET_GRIPPER(Control Close) grabs a part.
Tool attach/detach Not Supported NA
Assign Partial Support Variable=expression or SET(io signal) Expression is an integer or boolean variable or constant. (i.e. yy=10, zz=yy). SET is used for outputs of type Boolean.
Wait Partial Support RECEIVE Only Boolean input/output signals allowed.
Spot Operation Not supported NA Downloaded as standard robot motion with warning
Arc Operation Not supported NA Downloaded as standard robot motion with warning
Sealant Operation Supported
PTP(<target>) 
LIN(<target>) 
CIRC(<target>) 
LIN_W(<target>) 
CIRC_W(<target>)
JOINT, LINEAR, CIRCULAR, LINEAR (wrist joint) and CIRCULAR (wrist joint) move with SETTOOL(toolprofile), SETOBJECT(objectframe profile), VEL(motion profile), ACC(accel) and OVERLAP(accuracy profile). Corresponding POINT output of type Axis (jointarget), Object (Cartesian/tag) or World (Cartesian/tag World parameter true).

Sealant operation created during upload using Arc Sealing application. Upload using Surface Painting or Surface Sealing application creates Paint Operation.

Paint OperationSupported
PTP(<target>) 
LIN(<target>) 
CIRC(<target>) 
LIN_W(<target>) 
CIRC_W(<target>)
JOINT, LINEAR, CIRCULAR, LINEAR (wrist joint) and CIRCULAR (wrist joint) move with SETTOOL(toolprofile), SETOBJECT(objectframe profile), VEL(motion profile), ACC(accel) and OVERLAP(accuracy profile). Corresponding POINT output of type Axis (jointarget), Object (Cartesian/tag) or World (Cartesian/tag World parameter true).

Sealant operation created during upload using Arc Sealing application. Upload using Surface Painting or Surface Sealing application creates Paint Operation.

TriggerSupported Gun or SetBrush (depending on the type of trigger) along with Gun number, GunOn/Off, brush number and trigger point.
Unsupported Instructions
Any instruction that is not supported on download displays a warning. Any instruction that is not supported on upload also displays a warning, and a custom instruction is created. Tthis custom instruction will be downloaded so the original NRL command is still intact.
Goto

A DELMIA Goto instruction is translated into a Goto <label>. In DELMIA, the label is defined on a specific instruction.

On upload the label is set on the first instruction after the <label>. The label will be named identically as the Duerr EcoTalk <label>. If there are no more instructions, a custom activity is created with the name <label>. If the label referenced by a GOTO does not exist in the program, a warning is displayed and the label will be placed on the instruction following the GOTO.

On download, the LABEL instruction is output just before the instruction that has the DELMIA label defined on it. The label name must follow the format for Duerr EcoTalk identifiers, otherwise an error is generated.

Condition
A DELMIA Condition instruction is translated into an IF condition ENDIF. The condition must be a simple comparison of a variable to another variable or a constant. The variable type must be an integer or a Boolean. If an input of type Boolean is used, the Duerr macro GET is downloaded. If an incorrect variable or input type is used, a warning is displayed and the instruction is not downloaded. For upload, a GET(input1 HIGH) is translated to an input condition (i.e. input1==true).
While
A DELMIA While instruction is translated into an WHILE condition ENDWHILE. The condition must be a simple comparison of a variable to another variable or a constant. The variable type must be an integer or a Boolean. If a input of type Boolean is used, the Duerr macro GET is downloaded. If an incorrect variable or input type is used, a warning is displayed and the instruction will not be downloaded. For upload, a GET(input1 LOW) will be translated to an input condition (i.e. input1==false).
Custom
A custom instruction text is downloaded into the task exactly as is. On upload, any unsupported instruction is created as a custom instruction with the name of the custom instruction being the Duerr instruction's text.
Grab/Release

On download, a Grab is output as a SET_GRIPPER(Control/NotControl Close). A release instruction is output as a SET_GRIPPER(Control/NotControl Open). In Duerr EcoTalk, the Control option means that the controller will monitor a part present input and display an error if the part is not found within a certain amount of time. As there is no corresponding command in V6, the Control/NotControl option is stored in the Custom NRL text stored in the OLPData for the V6 instruction.

On upload, a SET_GRIPPER instruction is uploaded as a Grab for Close or a Release for Open. The part to grab or release is specified in the parameter PartGrabbed of the "Duerr Controller Profile".

Assign
A DELMIA assign instruction is translated into a Duerr assign or a SET instruction. The target of the assignment can be a variable of type integer/Boolean or an output of type Boolean. The source expression must be a variable/constant of type integer/Boolean. If an incorrect variable or output type is used, a warning is displayed and the instruction is not downloaded. For upload, a SET(output1 LOW) will be translated to an output (i.e. output1=false).
Wait
A DELMIA wait instruction is translated into a Duerr RECEIVE assignment. The condition must be a simple comparison of a input of type Boolean. If an incorrect input type is used, a warning is displayed and the instruction will not be downloaded. For upload, a RECEIVE(input1 LOW) will be translated to an input condition (i.e. WAIT input1==false).
Run (procedure)
A DELMIA run instruction, where the run is calling a procedure, is translated into a Duerr program CALL instruction. Arguments are not supported, and if used display a warning and the instruction is not downloaded. A CALL to a device task other than the robot being downloaded is not supported, and if used will display a warning and the instruction is not downloaded.
Robot Motion
The following are DUERR standard robot motion commands. The table below gives basic information on the level of support for different motion options.
In .TIP (program) file:

SETTOOL( GUN_1_50  )
SETOBJECT( L462  )
VEL( V1200  )
ACC( A5000  )
OVERLAP( NODEC30  )
//
PTP( P1  )
SETBRUSH( GUN1 ,19 ,P2 ,TR1  )
GUN( GUN1 ,GunOn ,P3 ,TR2  )
VEL( V350  )
LIN( P4  )
LIN( P5  )
LIN( P6  )
VEL( V150  )
LIN( P7  )
LIN( P8  )
GUN( GUN1 ,GunOff ,P14 ,TR3  )
In .TID (declaration file):
P1 : POINT := (Axis, 74.69, 30.381, -33.993, -87.964, -46.326, -99.406, -793.78, 0, 0)
P2 : POINT := (Object, 3697.577, -748.494, 1627, 98.329, 4.953, 94.051, -466, 0, 0)
P3 : POINT := (Object, 3647.99, -746.555, 1632.53, 98.1, 9.37, 119.41, -466, 0, 0)
P4 : POINT := (Object, 3664.82, -731.52, 1517.16, 98.1, 9.37, 119.41, -466, 0, 0)
P5 : POINT := (Object, 3691.926, -764.886, 1538.947, 93.626, 11.39, 103.739, -466, 0, 0)
P6 : POINT := (Object, 3699.98, -774.801, 1545.42, 89.152, 13.411, 88.068, -466, 0, 0)
P7 : POINT := (Object, 3696.535, -791.828, 1554.706, 86.476, 10.526, 73.149, -466, 0, 0)
P8 : POINT := (Object, 3694.46, -802.086, 1560.3, 83.8, 7.64, 55.23, -466, 0, 0)
A5000 : ACCELERATION := (5000, 5000, 5000, 5000, 63)
L462 : OBJECT := (3471.75, 11.19, -409.4, -0.03, 0.144, -179.79)
GUN_1_50 : TOOL := (0, 0, 613, 0, 0, -90)
V150 : VELOCITY := (150, 500, 500, 15)
V350 : VELOCITY := (350, 500, 500, 35)
V1200 : VELOCITY := (1200, 500, 500, 100)
NODEC30 : OVERLAPDCL := (Cart, 0, 30, 360, 360, 100)
TR1 : TRIGGERFRAME := (Object, 0, 0, 0, 0)
TR2 : TRIGGERFRAME := (Object, 0.577, 0.577, -0.577, 0)
DUERR Motion Option Support Level DELMIA Equivalent Description Translation Notes
PTP, LIN, CIRC, LIN_W and CIRC_W Supported Joint, Linear, CircularVia, Circular motion type LIN_W and CIRC_W are identical to LIN and CIRC but use wrist joint orientation type. A V6 Robot motion or paint/sealant operation is created based on GUN commands. For paint/sealant, the first GunOn move is a start process move. Last move prior to GunOff is an end process move. Moves in between GunOn/Off are mid process moves.

Sealant operation created during upload using Arc Sealing application. Upload using Surface Painting or Surface Sealing application creates Paint Operation

POINT (object, world, axis) with values Supported JointTarget, CartesianTarget Target type/Target Type Axis is a jointtarget with joint/aux. axis. Type object is a Cartesian tag target relative to current objectframe profile. Type world is a Cartesian tag target relative to world.
VEL(VELOCITY var) Supported Motion Profile VEL instruction A motion profile with the same name as the VELOCITY variable will be created. VELOCITY:=(abs. speed, rot. Speed, rotZ speed, PTP percent speed) Absolute speed, percent speed or rotational speed supported. Units on absolute speed is MM/SEC. If rotational speed for the motion profile is absolute then DEG/SEC is used. Absolute speed always used for Cartesian targets. Percent speed always used for joint targets.
OVERLAP(OVERLAPDCL var) Supported Accuracy Profile OVERLAP instruction An accuracy profile with the same name as the OVERLAPDCL variable will be created. OVERLAPDCL:=(type, percent, distance, rot. distance, rotZ distance, axis percent) Type - Fine (flyby off) Vel (percent based) Cart (distance based) PtpVel (percent jointtarget only) Pos (not supported) ConstPos (not supported) Accuracy type distance or percent supported. Value percent or distance is used to set the accuracy value. Rotational distance not supported. Axis percent is for aux. axes rounding which is also not supported.
SETTOOL(TOOL var) Supported Tool Profile SETTOOL instruction A tool profile with the same name as the TOOL var will be created. Toolprofile values will be set based on the TOOL var declaration.
SETOBJECT(OBJECT var) Supported Objectframe profile SETOBJECT instruction A objectframe profile with the same name as the OBJECT var will be created. Objectframe profile values will be set based on the OBJECT var declaration.
SETBRUSH, SETBRUSH_B, SETBRUSH_E, SETBRUSH_M Supported Applicative profile Duerr Brush Data SETBRUSH instruction for setting paint/dispensing application parameters using a Triggerframe. For B option the trigger is a point rather than a frame. For E option the trigger is a X,Y or Z value. For M option there is no trigger point. An applicative profile of type Duerr Brush Data will be created. BrushType - not set, B, E, or M Gun number - 1 or 2 Brush Number - 1….n Brush Point - <POINT name> Brush CoordAxis - not set, DueToX, DueToY, DueToZ Brush Value - Value (Due to X, Y or Z…only for SETBRUSH_E) Trigger - <TRIGGERFRAME name> (only for SETBRUSH) TriggerCoord - World, Object, Base TriggerNx - normal vector X coord TriggerNy - normal vector Y coord TriggerNz - normal vector Z coord TriggerDist - trigger distance
GUN, GUN_B, GUN_E, GUN_M Supported Applicative profile Duerr Gun Data GUN instruction for turning paint/dispensing on using a Triggerframe. For B option the trigger is a point rather than a frame. For E option the trigger is a X,Y or Z value. For M option there is no trigger point. An applicative profile of type Duerr Gun Data will be created. Gun Type - not set, B, E, or M Gun number - 1 or 2 Gun Command - GunOn or GunOff GunPoint - <POINT name> Gun CoordAxis - not set, DueToX, DueToY, DueToZ Gun Value - Value (Due to X, Y or Z…only for GUN_E) Trigger - <TRIGGERFRAME name> TriggerCoord - World, Object, Base TriggerNx - normal vector X coord TriggerNy - normal vector Y coord TriggerNz - normal vector Z coord TriggerDist - trigger distance
Linetracking

Linetracking is handled using a conveyor and a tracking profile.

The key to setting up a successful tracking profile for OLP is ensuring that the Distance in the referential parameters is correct. Changing the Referential Distance changes the location of the trolley 0.0. The trolley 0.0 is the equivalent of the Duerr conveyor frame. The world coordinates location of the trolley when it is jogged to 0.0 should match the Duerr frame X value.

It is possible that the conveyor frame in the Duerr RobotControl1.cfg file does not have a 0.0 X value, in which case the X value relative to World in would not be 0.0. A conveyor frame that is 0.0 will be similar to the following:

// X coordinate of the world frame is in the direction of the conveyor for the following standard preset 
[RC.Tracking.ConveyorPreLink]
x   =  0
y   =  0
z   =  0
a   =  0
b   =  90
c   =  0

// X coordinate of the world frame is in the direction of the conveyor for the following standard preset 
[RC.Tracking.ConveyorPostLink] 
x   =  0
y   =  0
z   =  0
a   =  0
b   =  -90
c   =  0

A non-zero base frame would have an X value specified:

// X coordinate of the world frame is in the direction of the conveyor for the following standard preset 
[RC.Tracking.ConveyorPreLink]
x   =  1000
y   =  0
z   =  0
a   =  0
b   =  90
c   =  0

// X coordinate of the world frame is in the direction of the conveyor for the following standard preset 
[RC.Tracking.ConveyorPostLink] 
x   =  1000
y   =  0
z   =  0
a   =  0
b   =  -90
c   =  0

A movable objectframe profile is used in all track moves. This objectframe profile must be attached to a part that is moved by the conveyor.

During upload, the conveyor trolley is selected for the X260 objectframe profile. All tags associated with the X260 objectframe profile are attached to the same conveyor trolley as the objectframe profile.

All tracked tags are uploaded and/or downloaded relative to the movable objectframe profile.

In addition to getting the frame of reference setup correctly, another key component of linetracking is the wait command. In the Duerr language this is done using WAIT_CONVEYOR(<distance>) and WAIT_PAINTPOSITION(<reldistance>). The corresponding V6 instruction would be WAIT $"Referential.1"> total_distance. The total_distance would be the distance from WAIT_CONVEYOR plus the reldistance from the WAIT_PAINTPOSITION. Referential.1 is the same referential that is referred to in the Tracking profile.

In order to simulate correctly, the conveyor speed must be set to match the Duerr controller. At the controller, a file named BCU1.cfg has a parameter under [global/Conveyorsimulation] which has a conveyorSpeed in m/min.

In V6, this speed is set by editing the conveyor device in equipment design.

Expressions

If an error occurs converting an expression on upload, the instruction containing the expression is uploadeded as a custom instruction. If an error occurs converting an expression on download, the instruction containing the expression is skipped. This prevents compile errors in the generated program. In both cases, a warning is displayed.

Expression Conversion

DUERR expressions have many of the operators supported in DELMIA.

Category Description Duerr Operator DELMIA Operator
Binary Integer/Double Plus + +
Minus - -
Multiply * *
Division / /
Modulus NA MOD
Power NA **
Unary Negative - -
Not NA Not
Bitwise Not NA ~
Binary Comparison Equals == =
Not Equals <> <>
Less Than < <
Less Than or Equal <= NA
Greater Than > >
Greater Than or Equal >= NA
Binary Boolean And AND And
Or NA Or
XOR NA Xor
Bitwise And NA &
Bitwise Or NA |
Left Shift NA <<
Right Shift NA >>
Bitwise XOR NA ^^
Other Grouping ( ... ) ( ... )
conditional (if) If...then...else... If...then...else

There are no DUERR operators that do not have a DELMIA equivalent. DUERR expressions can contain functions. However, if any functions are encountered, the expression is in error and uploaded as a custom instruction.

Controller Parameters

The DUERR Controller Parameters are created as a standalone applicative profile named "DUERR Controller Profile". The following are the parameters for the current release.

Parameter Measure Purpose Default Value
ProgramFileEncoding String This parameter is used to set the encoding used in the robot program. (i.e. Shift-JIS)
CommentWaitSignal Boolean Used to treat all Wait signal instructions during upload as custom instructions. False
PartGrabbed String This parameter is used to set the grabbed part in an uploaded grab instruction.
RailGroup String This parameter determines which auxiliary axes values in the downloaded/uploaded program will map to RailTrackGantry. Two formats can be used. First is to set the starting axes number for all RailTrackGantry axes. Second is to use a semi-colon delimited value with the axes numbers for each aux. axes 3;5 would put the first rail axes into robtarget aux. axes value 3 and the second rail axes into aux. axes value 5.
TagPrefix String This parameter is used to add a prefix to all tag names during upload.
ToolGroup String This parameter determines which auxiliary axes values in the downloaded/uploaded program will map to EndOfArmTooling. Two formats can be used. First is to set the starting axes number for all EndOfArmTooling axes. Second is to use a semi-colon delimited value with the axes numbers for each aux. axes 2;4 would put the first tool axes into robtarget aux. axes value 2 and the second tool axes into aux. axes value 4.
WorkGroup String This parameter determines which auxiliary axes values in the downloaded/uploaded program will map to WorkpiecePositioner. Two formats can be used. First is to set the starting axes number for all WorkpiecePositioner axes. Second is to use a semi-colon delimited value with the axes numbers for each aux. axes 1;6 would put the first work axes into robtarget aux. axes value 1 and the second work axes into aux. axes value 6.
WorldCoords Boolean This parameter detemines whether tags are downloaded/uploaded relative to station or robot coordinates. True

Global Variables

The Duerr Ecotalk language uses a file called _globalvars.tid for storage of global variables which can be used by any instruction program (.TIP file).

The _globalvars.tid file is stored in a sibling of the .tip file directory named _global.tt. The Duerr upload translator looks for the _globalvars.tid file in the same directory as the program selected for upload. If found, it is used to create profiles or targets used in the uploaded programs. If the _globalvars.tid is not found in the directory selected, the translator looks for the sibling directory _global.tt. If, for example, the program (.TIP) files are in DUERR_UPLOAD\L308STYLE.tt, the translator looks for DUERR_UPLOAD\_global.tt. If the _globalvars.tid file is not found in the upload directory or the sibling _global.tt directory, a warning is displayed.

During download, a _globalvars.tid file is always generated. All tool, motion, accuracy, and objectframe profiles used are downloaded into this file. All robot motions with the OLP data PositionType set to "Global" are output into the _globalvars.tid file.

Template File Download

When uploading from a controller backup followed by a download, or when wanting to download to an existing controller backup, the template file download allows you to keep most of the backup .tid files intact.

Programs are typically downloaded using one of the style directories (i.e. X760_AWD.tt) as the template directory.

The download does not overwrite files in the template directory, but rather uses all of the .tid files to create the downloaded files. All POINT and profile data (i.e. VELOCITY, TOOL, OBJECT,…) declarations are found in the template directory files. If a POINT or profile being downloaded matches a declaration found, the file that contains it will be used as a template file. The template file is used exactly as found in the backup, but the downloaded declaration of the POINT or profile data overwrites the declaration found in the template file.

For example, if a move to perch is found in the Style1App1 task, by default (no template directory) the declaration for perch is put into a new file called Style1App1.tid. However, for template directory download, if the Style1App1.tid file exists in the template directory it will be used, and the perch POINT will be updated or appended to the already existing template file.

During template directory download, targets that do not have the OLP data Position Type set to "Global" can have duplicates. This means you could have, for example, a sealtag1 in STY1APP1.tid and another sealtag1 in STY1APP2.tid.

The result of a template directory download is close to identical to the original backup, with only data selected for download being updated.

[1] EcoRC2, EcoRPC, and EcoTalk are or may be trademarks or registered trademarks of Duerr or its subsidiaries in the U.S. and in other countries.