Program Instructions

It is possible to add new instructions by right clicking a program or from the Program menu, as shown in the previous section.

This section describes the instructions supported by the RoboDK graphical user interface for robot offline programming.

Joint Move

Select ProgramRobot Programs - Image 4 Move Joint Instruction to add a new joint movement instruction. Alternatively, select the corresponding button in the toolbar.

Unless a target is selected before adding the instruction, the movement instruction will create a new target and they will be linked. If the target is moved the movement is also modified.

If this is the first instruction that is added to the program, two more instructions will be added before the movement instruction: a Reference Frame selection and a Tool Frame selection. This will make sure that when the program reaches the movement instruction the robot is using the same reference and tool frames used to create this new target.

Robot Programs - Image 5

Linear Move

Select ProgramRobot Programs - Image 6Move Linear Instruction to add a new linear movement instruction. Alternatively, select the corresponding button in the toolbar.

Unless a target is selected before adding the instruction, the movement instruction will create a new target and they will be linked. If the target is moved the movement is also modified.

Joint Moves and Linear Moves behave the same way and can be easily switched from one type to the other.

Same as with the Joint Move Instruction, if this is the first instruction that is added to a program, two more instructions will be added before the movement instruction: a Reference Frame selection and a Tool Frame selection.

Contrary to Joint Movements, Linear Movements are sensible to robot singularities and axis limits. For example, 6-axis robots can’t cross a singularity following a linear move. The following image shows an example saying Joint 5 is too close to a singularity (0 degrees). […] Consider a Joint move instead. As shown in the following image.

Robot Programs - Image 7

If a linear move is not strictly necessary, right click the movement instruction and change it to a Joint Instruction.

Robot Programs - Image 8

Alternatively, the target, the TCP or the position of the reference frame must be modified to avoid the singularity.

Set Reference Frame

Select Program Robot Programs - Image 9 Set Reference Frame Instruction to use a specific reference frame. This will update the given reference frame on the controller for the following movement instructions and will change the Active reference frame of the robot in RoboDK for simulation purposes. That means that movement instructions to specific targets (Cartesian targets) will be made with respect to the last reference frame set.

The reference frame is a variable also known as Work Object (ABB robots), UFRAME (Fanuc robots), FRAME (for Motoman robots) or $BASE (for KUKA robots).

Robot Programs - Image 10

Set Tool Frame

Select Program Robot Programs - Image 11Set Tool Frame Instruction to use a specific tool frame (TCP). This will update the given tool frame on the program for the following movement instructions and will change the Active tool frame of the robot in RoboDK for simulation purposes. That means that movement instructions to specific target (Cartesian targets) will be made with respect to the last tool frame set.

The reference frame is a variable also known as ToolData (ABB robots), UTOOL (Fanuc robots), TOOL (for Motoman robots) or $TOOL (for KUKA robots).

Robot Programs - Image 12

Circular Move

Select ProgramRobot Programs - Image 13Move Circular Instruction to add a new circular movement instruction. Alternatively, select the corresponding button in the toolbar.

Unless two targets are selected before adding the instruction, the movement instruction will create no new targets. It is required to add two more targets separately and link them from the circular move instruction, as shown in the next image.

Robot Programs - Image 14

The circular path is an arc created from the point where the robot is located, passing through the first circular point (Target Linked 1) and ending at the end point (Target Linked 2).

Set Speed

Select ProgramRobot Programs - Image 15 Set Speed Instruction to add a new instruction that changes the speed and/or the acceleration. It is possible to specify speed and accelerations in the joint space and in the cartesian space.

Activate the corresponding cases to impose a specific speed and/or acceleration in the program. The robot speed is applied from the moment this instruction is executed.

The robot speed can also be changed in the robot parameters menu: Double click the robot, then, select parameters.

Robot Programs - Image 16

Show Message

Select ProgramRobot Programs - Image 17 Show Message Instruction to add a new instruction that will display a message on the teach pendant.

Robot Programs - Image 18

Pause

Select ProgramRobot Programs - Image 19 Pause Instruction to add a new instruction that will pause the program execution for some time or stop the program until the operator desires to resume the program.

Robot Programs - Image 20

Program call

Select ProgramRobot Programs - Image 21 Program Call Instruction to add a call to a sub program from the current program.

By default, this is a blocking call to a specific program. However, it is possible to switch to Insert Code to enter code specific at the location of this instruction. This might be useful for a specific application and a specific controller.

Robot Programs - Image 22Robot Programs - Image 23

Switch from Program Call to Start Thread to provoke a non-blocking call to a sub program. In this case, the controller will start a new thread. This option is only available for certain controllers and only works for specific operations.

Set/Wait IO

Select ProgramRobot Programs - Image 24 Set or Wait I/O Instruction to change the state of Digital Outputs (DO). By default, this instruction is set to Set Digital Output. This instruction also allows waiting for a specific Digital Input (DI) to switch to a specific state.

The IO Name can be a number or a text value if it is a named variable. The IO Value can be a number (0 for False and 1 for True) or a text value if it is a named state.

Robot Programs - Image 25

Set to Wait for Digital Input to stop the program execution until a specific input changes to a specific value. Furthermore, most robot controllers support a timeout delay to raise an error if the waiting time exceeds a specific value. Check the Timeout (ms) option to activate this feature.

Robot Programs - Image 26

Altering simulated Digital Inputs and Digital Outputs will create new station variables. To check the state of these variables you can right click the station and select Station Parameters. It is also possible to read or modify these variables through the API.

Set Rounding value

Select ProgramRobot Programs - Image 27 Set Rounding Instruction to alter the rounding accuracy. The rounding accuracy used to smooth the edges between consecutive movements. This change takes effect from the moment it is executed inside a program (same as with all the other instructions), so it is typical to set this value at the beginning of a program.

Without a rounding instruction, the robot will reach the speed of 0 at the end of each movement (unless the next movement is tangent with the previous movement). This will provoke high accelerations and quick speed changes to ensure the best accuracy for each movement.

This value is also known as Blending radius (Universal Robots), ZoneData (ABB robots), CNT/FINE (Fanuc robots), Cornering (Mecademic robots) or $APO.CDIS/$APO.CPTP/Advance (KUKA robots).

Robot Programs - Image 28

Some controllers require setting this value as a percentage, for example on a Fanuc controller, if you want to provide the command CNT5 you should enter the value 5.

You can also specify the rounding parameter in the Program Events window if you are generating your programs for robot machining, 3D printing or curve/point following.

Robot Programs - Image 29

RoboDK’s path accuracy tests may allow to have a better understanding of the effects of different rounding strategies.

Simulation event

Select ProgramRobot Programs - Image 30 Simulation Event Instruction to provoke a specific simulation event. Simulation events have no impact on generated code and are used only to provoke a specific event for simulation purposes.

Simulation events using the graphical user interface allow you to:

attach or detach objects to robot tools

show or hide objects or tools

change the position of objects and reference frames

Robot Programs - Image 31

For example, if the robot moves to a specific location to grab an object we can set up an Attach object event to move that object together with the robot. Then, after the robot has moved and it is ready to leave the objects we can set up a Detach object event to leave any objects the tool has grabbed.

Robot Programs - Image 32