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 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. |
Trigger | Supported | 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>)
andWAIT_PAINTPOSITION(<reldistance>)
. The corresponding V6 instruction would beWAIT $"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.