Skip to main content

15.4.18 Advanced commands

15.4.18.1 RelTool

Explanation

It is used to translate or rotate the spatial position in the tool frame as specified by the current command.

Main difference from Offs: Offs is the offset relative to the work object frame, and RelTool is the offset relative to the tool frame.

Definition

Return value, data type: robtarget, to return the new pose after the offset.

RelTool(Point, XOffset, YOffset, ZOffset, Rx, Ry, Rz [, Tool, Wobj]);

Point, data type: robtarget, the point to be offset, or the initial point of the offset command.

XOffset, data type: double, offset in the x-direction of the tool frame.

YOffset, data type: double, offset in the y-direction of the tool frame.

ZOffset, data type: double, offset in the z-direction of the tool frame.

Rx, data type: double, the rotation angle around the x-axis of the tool frame.

Ry, data type: double, the rotation angle around the y-axis of the tool frame.

Rz, data type: double, the rotation angle around the z-axis of the tool frame.

Tool, data type: tool, contain tool frame information describing the Point position.

Wobj, data type: wobj, contain work object frame information describing the Point position.

Example

Example 1

p2=RelTool(p1,100, 0, 30, 20, 0, 0);

Since no tool and work object is specified, tool0 and wobj0 are used by default. Offset point p1 by 100 mm in the x-direction, 0 mm in the y-direction, and 30 mm in the z-direction on the tool frame, and then rotate 20 degrees around the x-axis. Last assign the new target point position to p2.

Example 2

p2=(RelTool(p1,100, 0, 30, 20, 0, 0), tool5, wobj6);

Offset point p1 by 100 mm in the x-direction, 0 mm in the y-direction, and 30 mm in the z-direction on the tool5 tool frame, and then rotate 20 degrees around the x-axis. Last assign the new target point position to p2.

Example 3

MoveL (RelTool(p1,100, 0, 30, 20, 0, 0), v4000, fine, tool2, wobj4);

RelTool is used along with the Move command. As no tool or work object frame is specified, the tool and wobj of the Move command will be used. Offset point p1 by 100 mm in the x-direction, 0 mm in the y-direction, and 30 mm in the z-direction on the tool2 tool frame, and then rotate 20 degrees around the x-axis.

Attention

Auxiliary programming is not supported for the optional parameters (Tool and Wobj) of this command.

The 5-axis models of the xMate CR series may have many unreachable points when using the RelTool command due to the lack of one orientation DOF. It is necessary to determine the offset based on the characteristics of reachable orientations (e.g. translation of points is usually reachable where the flange remains parallel to the base).

15.4.18.2 Offs

Explanation

The position offset function, which is used to offset a point in the work object frame specified in the current command by a distance and return the position value of a new point. The translation offset is represented by x, y, and z, and the orientation rotation offset is represented by Rx, Ry, and Rz.

Definition

Return value, data type: robtarget, the new pose after the offset.

Offs (Point, XOffset, YOffset, ZOffset [, Rx, Ry, Rz] )

Point, data type: robtarget, the point to be offset, or the initial point of the offset command.

XOffset, data type: double, offset in the x-direction of the work object frame.

YOffset, data type: double, offset in the y-direction of the work object frame.

ZOffset, data type: double, offset in the z-direction of the work object frame.

Rx, data type: double, the rotation angle around the x-axis of the work object frame.

Ry, data type: double, the rotation angle around the y-axis of the work object frame.

Rz, data type: double, the rotation angle around the z-axis of the work object frame.

Example

Example 1

p11=Offs(p10, 100, 200, 300);

Have the point p10 offset 100 mm in the x-direction, offset 200 mm in the y-direction, offset 300 mm in the z-direction of the work object frame, and assign the position of the new target point to p11.

Attention

This command does not support auxiliary programming for the moment.

15.4.18.3 ConfL

Explanation

After the command is enabled, the following two items are checked:

  1. Check whether the actual joint angle (i.e., cf1−7) reached through the Cartesian path is largely different from the teaching of the target point. If the difference is too large, the log will display the prompt, and the user consider whether to reach the target point in such a way.

  2. Check whether the actual joint configuration (i.e., cfx value) reached through the Cartesian path is consistent with the teaching of the target point, and if not, an error will be reported and the movement will stop.

Example

Example 1

ConfL(on)
MoveL (p1,v1000 ….);
  // If the J6 angle at the P1 teaching position is -5°, the J6 angle may be 355° after the MoveL command is executed (the difference between the two is {plus}-360°, that is, they are the same position). At this time, the log will prompt "The difference between the actual point of the turning angle and the set point is too large", but the movement will not stop.
…
ConfL(off);
MoveL (p1,v1000 ….);
  // After the conf check of the Cartesian path is disabled, the robot can move to P1, but the cf1−7 and cfx values of confdata for the actual point and teaching point are not checked.

Attention

  1. The ConfL command corresponds to Cartesian motion commands such as MoveL and MoveC, without impact on the MoveJ and MoveAbsj, or the conf setting of "Move to".

  2. In the case of executing Cartesian motion commands such as linear motion and circular motion, the robot moves towards the target point with the pose most similar to that in the starting point. At this point, the angle of the target point will be automatically selected, so the actual turning angle of the robot at the target point will be different from the angle at the teaching position in some cases. When the command is enabled, a prompt is given for this situation.

15.4.18.4 ConfJ

Explanation

The Cartesian frame corresponds to a set of conf parameters (cf1−7, cfx). The conf data corresponding to the Cartesian coordinate points manually changed or written by the user may be incorrect, which makes it impossible for the controller to resolve the path of the target point. But in some scenarios, the user cares only about the robot’s TCP position rather than the orientation. In this case, ConfJ Off can be used to remove conf limitations of the point and the controller can try to calculate the inverse kinematics closest to the starting point of the path (the calculation may fail, resulting in a failure of the motion command).

Users can read the introduction to confdata for details of conf.

Example

Example 1

p1.trans.x = ….;
MoveJ (p1,v1000 ….);
 // Only the frame is modified, not the confdata parameters. This command is likely to cause the execution to fail.
…
ConfJ(Off);
MoveJ (p1,v1000 ….);
 // After the conf check is disabled, the robot can move to P1, but the orientation is uncertain.

Attention

The ConfJ command corresponds to MoveJ, without impact on the other motion commands, or the conf setting of "Move to".

15.4.18.5 Conf

Explanation

Effect of unified ConfL and ConfJ on/off:

Conf on: equivalent to ConfL on and ConfJ on

Conf off: equivalent to ConfL off and ConfJ off

Example

Example 1

Conf(on);
MoveL (p0, v1000 …);
MoveJ (p1,v1000 ….);
/ /Effect equivalent to the following commands:
ConfL (on);
ConfJ (on);
MoveL (p0, v1000 …);
MoveJ (p1,v1000 ….);

15.4.18.6 VelSet

Explanation

The VelSet command allows for adjusting maximum motion speed for smoother motion when the robot is handling fragile objects. Instead of being constant, the maximum velocity of each joint keeps changing with load, body orientation, and other factors when the robot is moving. The VelSet command scales the maximum velocity capability curve for a specific task path, and the scaled maximum velocity capability curve is also a changing curve.

Definition

VelSet (gain);

gain, data type: int, the maximum velocity capacity is specified in percentage, ranging from 1% to 100%, where 100% means the maximum acceleration. The robot reports an error when going over the limit.

Example

Example 1

VelSet (50);

Set the maximum velocity capability to half of the robot’s default maximum velocity.

Attention

1. The VelSet command only affects the motion commands of the corresponding RL project, instead of JOG, move to, rapid motion, and other non-project functions.

2. The VelSet function will interrupt the turning zone. Please do not insert VelSet commands between the motion commands that require a turning zone.

3. The difference between the VelSet command and the program running rate adjustment slide: the program running rate adjustment slide modifies the user’s expected velocity, for example, motion command V4000, under 50% slide control, equals a user’s expected velocity of V2000. But if the robot is at its limits, the actual maximum velocity of this motion command is only V1000, then the actual motion velocity of the robot does not change regardless of whether the velocity slide is at 50% or 100% because both V2000 and V4000 are above V1000. Changing the expected velocity during this range will not impact the actual execution velocity; on the contrary, VelSet 50 does not change the user’s expected velocity but reduces the actual maximum velocity of the motion command by 50% during the motion planning process. Under the same motion command, the actual motion velocity of the robot will be cut to half from V1000 to V500. The user should identify the difference between these two functions.

4. Speed automatically reverts to the default (100%) during the following operations:

  • RL program is reset manually (PP to Main)

  • A new RL program is loaded

15.4.18.7 AccSet

Explanation

The AccSet command allows for adjusting acceleration for smoother movement when the robot is handling fragile objects.

Definition

AccSet (acc, ramp);

Acc, data type: int, the acceleration is specified as a percentage of the system preset value, ranging from 30% to 100%, where 100% means the maximum acceleration, beyond which the robot will stop and report an error.

Ramp, data type: int, the Jerk is specified as a percentage of the system preset value, ranging from 30% to 100%, where 100% means the maximum jerk, beyond which the robot will report an error.

Example

Example 1

AccSet (50, 50);

Acceleration and jerk are set to half of the default.

Attention

Acceleration automatically reverts to the default (100%) during the following operations:

  • RL program is reset manually (PP to Main)

  • A new RL program is loaded

15.4.18.8 MotionSup

Explanation

It is used to turn on and off Collision Detection.

Definition

MotionSup(type [, level, event]);

Type, data type: keyword, On: turn on, Off: turn off

Level, data type: int, the additional parameter for MotionSup On to modify the collision detection sensitivity percentage, range [1, 200]:

Event, data type: string, the additional parameter for MotionSup On to set the behavior after collisions

  • "softstop" indicates it stops compliantly

Example

Example 1

MotionSup(On);
/ /... other commands
MotionSup(Off);

After enabling collision detection, users can execute other commands and turn off collision detection by MotionSup Off after the completion of commands

Example 2

MotionSup(On, 200, “softstop”);

Users enable collision detection and set the detection sensitivity percentage to 200% and the behavior triggered to a compliant stop after detecting a collision.

15.4.18.9 MotionSupPlus

Explanation

MotionSupPlus (Motion Supervision Plus) is used to adjust the robot’s joint collision detection sensitivity in the RL program at any time.

Definition

MotionSupPlus(x1, x2, x3, x4, x5, x6, x7);

x1 to x7, the collision detection sensitivity in % for joints 1-7, respectively.

Example

Example 1

MotionSupPlus(5, 20, 7, 20, 6, 20, 5);

Indicates the sensitivity of the 7 joints to be 5, 20, 7, 20, 6, 20, 5, respectively.

Note:

For 6-axis robots, 7 parameters should be set too, where the first 6 parameters correspond to joints 1-6.

This command is available for cobots and six-axis industrial robots, but not three- and four-axis industrial robots.

15.4.18.10 MotionSupJointTrq

Explanation

MotionSupJointTrq (Motion Supervision Joint Torque) Motion supervision is used to adjust the driving torque limits of robot joints at any time in the RL program.

Definition

MotionSupJointTrq(x1, x2, x3, x4, x5, x6, x7);

x1 to x7 indicates the driving torque limits of joint 1 to joint 7 respectively, in N.m.

Example

Example 1

MotionSupJointTrq (100, 91, 59, 14, 14, 14, 5);

It indicates that the driving torque limits of 7 joints are 100 N.m, 91 N.m, 59 N.m, 14 N.m, 14 N.m, 14 N.m, and 5 N.m, respectively.

Note:

For 6-axis robots, 7 parameters should be set too, where the first 6 parameters correspond to joints 1-6.

This command is available for cobots and six-axis industrial robots, but not three- and four-axis industrial robots.

15.4.18.11 BreakLookAhead

Explanation

This command informs the control system to cancel the lookahead and force the cancellation of the turning zone between the previous motion command and the next motion command. The robot TCP will move to the target point position of the previous motion command and then move to the next point without the turning zone. The program pointer will also wait for the TCP to move to the target point position of the previous motion command before continuing the lookahead scan.

Definition

The command includes no parameters and no return value

Example

Example 1

MoveL(p1,v1000, z50, tool0);
BreakLookAhead
MoveL(p2,v1000, z50, tool0);
MoveL(p3,v1000, z50, tool0);

1) The turning zone of point P1 is set to z50. Because of the BreakLookAhead command, the lookahead and the turning zone will be canceled, and the robot TCP will move exactly to point P1 and then to P2. There is no BreakLookAhead command between P2 and P3, so the robot will look ahead at P2 and pass the z50 turning zone before moving to P3.

2) The BreakLookAhead command has the same effect as the wait 0 command.

15.4.18.12 GetRobotMaxLoad

Explanation

It is used to get the maximum load value of the current robot model.

Definition

Ret = GetRobotMaxLoad();

Ret, return value, data type: int, maximum payload

Example

int maxload = GetRobotMaxLoad();
print(maxload);

With xMate 7 as an example, return 7.

15.4.18.13 GetRobotState

Explanation

It is used to get the current operating state of the control system. Use the 4-byte bit information to represent the state of the control system, including fault, emergency stop, safety gate, operation mode, servo mode, and motion state, as shown in following table.

Definition

Ret = GetRobotState();

Ret, return value, data type: byte array, use four-byte types to represent the robot state.

Example

Example 1

byte st = GetRobotState();
print(st);

Return {0, 5, 0, 0}. According to the table, the current state is: no fault, motor powered on, automatic mode, robot motion state, servo is in position mode.

S/N

State bits

Meaning

1

Byte[1].bit[1]

1: Control system is not authorized

2

Byte[1].bit[2]

1: Control system recoverable faults

3

Byte[1].bit[3]

1: Control system fatal error

4

Byte[1].bit[4]

1: Servo system failure

5

Byte[1].bit[5]

1: Servo system fatal failure

6

Byte[1].bit[6]

1: Emergency stop

7

Byte[1].bit[7]

1: Safety gate stop

8

Byte[1].bit[8]

Reserved

9

Byte[2].bit[1]

Power-on state, 0: motor is not powered on; 1: motor is powered on

10

Byte[2].bit[2]

Robot motion state, 0: idle; 1: in motion

11

Byte[2].bit[3]

Operation mode, 0: manual mode; 1: automatic mode

12

Byte[2].bit[4]

Servo mode, 0: position mode; 1: torque mode

13

Byte[2].bit[5]

Reserved

14

Byte[2].bit[6]

Reserved

15

Byte[2].bit[7]

Reserved

16

Byte[2].bit[8]

Reserved

17

Byte[3]

Reserved

18

Byte[4]

Reserved

15.4.18.14 AutoIgnoreZone

Explanation

It is used to specify whether to allow the control system to automatically ignore the turning zone.

Definition

AutoIgnoreZone (true/false);

true: Allow the control system to automatically ignore the turning zone (This is also the default state of the control system);

false: Do not allow the control system to automatically ignore the turning zone

image756

As shown above: The robot runs two MoveL commands with a z50 turning zone in between. During the motion, the robot needs lookahead from its current position for smooth and safe motion. For example, when the robot moves to p0, it looks ahead to P1. In this process, the control system pre-processes the information between p0 and p1.

As the robot moves forward, the lookahead end point also moves forward. At a certain point, the lookahead end point p1 coincides with p2, the start point of the turning zone. If the control system has received the second motion command, it can generate a turning zone properly and control the robot to move along the predetermined trajectory; if the control system fails to receive the second motion command, it cannot generate the turning zone, and it will process the turning zone according to the AutoIgnoreZone command status. See below for the logic:

AutoIgnoreZone true: Instead of waiting for the second motion command, the control system will cancel the turning zone and control the robot to move directly toward P3.

AutoIgnoreZone false: The control system will wait for the second motion command, during which the robot will slow down until the turning zone trajectory is generated. If the robot fails to receive the second motion command when reaching P2, the robot will stop moving and report an error through HMI.

The failure of the robot to receive the second motion command timely is often a result of too many non-motion commands between two motion commands, e.g.:

image757

Many print commands are added between two motion commands, and it takes a long time for the control system to receive the second motion command after the first one is processed.

Example

Example 1

AutoIgnoreZone(true);
MoveL(p3,v1000, z50, tool0);
MoveL(p4,v1000, fine, tool0);

Allow the control system to automatically ignore the turning zone

Example 2

AutoIgnoreZone(false);
MoveL(p3,v1000, z50, tool0);
MoveL(p4,v1000, fine, tool0);

Do not allow the control system to automatically ignore the turning zone

15.4.18.15 MotionWaitAtFinePoint true/false

Explanation

When the robot is stationary and the user clicks Start, the control system will look ahead a certain distance according to the lookahead parameter before starting the robot. This command sets whether the robot starts moving immediately when the lookahead coincides with a fine point.

Fine point: the target point without a turning zone, i.e. a target point with the turning zone parameter set to fine.

Definition

MotionWaitAtFinePoint(true/false);

MotionWaitAtFinePoint true: The control system controls the start of the robot strictly according to the lookahead parameters. The robot only starts to move when the lookahead distance reaches the set value of the lookahead parameter or the lookahead of all motion commands is completed. In this state, the control system can guarantee the set lookahead distance.

MotionWaitAtFinePoint false: The control system does not strictly follow the lookahead parameters, and the robot starts moving immediately when the lookahead coincides with the fine point. In this state, the robot can still start smoothly when the program logic gets extremely complicated, but the lookahead distance cannot be guaranteed.

Default: MotionWaitAtFinePoint false

Example

Example 1

MotionWaitAtFinePoint(true);
MoveL(p1,v1000, fine, tool0);
MoveL(p2,v1000, fine, tool0);
MoveL(p13v1000, fine, tool0);
MoveL(p1,41000, fine, tool0);
MoveL(p1,51000, fine, tool0);

When the control system looks ahead to p1, it does not start the robot immediately, but checks whether the current lookahead distance has reached the set length before deciding whether to start the robot.

Example 2

MotionWaitAtFinePoint(false);
MoveL(p1,v1000, fine, tool0);
MoveL(p2,v1000, fine, tool0);
MoveL (p3,v1000, fine, tool0);
MoveL (p4,v1000, fine, tool0);
MoveL (p5, v1000, fine, tool0);

When the control system looks ahead to p1, it immediately starts the robot, instead of checking whether the current lookahead distance has reached the set length.

15.4.18.16 IgnoreOverride

Explanation

In scenarios where welding, gluing, and other processes have strict requirements for the motion speed along the path, the command is developed with the hope of the motion speed of the process section not being affected by the global speed. This command can temporarily block the influence of the rate slider on motion commands, so that a specific segment of motion commands and trajectories is not affected by the global speed.

This command supports performance in both automatic and manual modes. In manual mode, the motion speed is limited by v250. If the speed exceeds v250, it moves at v250. In automatic mode, it moves at the desired speed.

Definition

IgnoreOverride(On/Off);

IgnoreOverride On indicates that subsequent motion commands are not affected by the rate slider, and IgnoreOverride Off has the opposite effect.

Example

Example 1

MoveJ (p1,v1000 ….);//Affected by slider speed
IgnoreOverride(On);
MoveJ (p2,v1000 ….);//Unaffected by slider speed
MoveJ (p3,v1000 ….);//Unaffected by slider speed
IgnoreOverride(Off);
MoveJ (p4,v1000 ….);//Affected by slider speed

Example 2 (manual mode)

IgnoreOverride(On);
MoveJ (p2,v1000 ….);//Unaffected by slider speed and moving at the speed of v250
MoveJ (p3,v100 ….);//Unaffected by slider speed and moving at the speed of v100
IgnoreOverride(Off);

Example 3 (automatic mode)

IgnoreOverride(On);
MoveJ (p2,v1000 ….);//Unaffected by slider speed and moving at the speed of v1000
MoveJ (p3,v100 ….);//Unaffected by slider speed and moving at the speed of v100
IgnoreOverride(Off);

Attention

Affected motion commands: MoveAbsJ, MoveJ, MoveL, MoveC, MoveCF, MoveT, SearchL, SearchC, TrigL, TrigC, and TrigJ.

The command is not immediately executed and does not interrupt the turning zone.

It can only be used in motion tasks and cannot be used in Inzone; otherwise, an error will be reported.

15.4.18.17 SingAreaLockAxis4

Explanation

This command indicates the use of locking the 4-axis method to avoid robot wrist singularities.

Definition

SingAreaLockAxis4(on/off );

SingAreaLockAxis4 on indicates the enabling of the 4-axis locking to avoid wrist singularity function. It should be noted that this function can only be enabled when the 4-axis of the robot is at 0° or ±180°. It is necessary to ensure that the 4-axis is at the target point of the previous motion command of SingAreaLockAxis4 on or that the 4-axis of the robot is already at the above angle to ensure normal program operation, otherwise, an error will be reported.

Off, the function is turned off.

Note: The Cartesian motion command between SingAreaLockAxis4 on and SingAreaLockAxis4 off adopts a special interpolation method for its pose, without changing the motion angle of the 4-axis. Any motion command attempting to change the 4-axis angle will cause an error. At the same time, this command is designed as a blocking command, which will interrupt the turning zone between the front and rear motion commands of SingAreaLockAxis4.

The current version is applicable to industrial standard six-axis series (XB, NB models) and collaborative xMateCR, xMateSR series (excluding 5-axis models).

This command is not supported when full DH compensation is enabled.

Example

Example 1

MoveAbsJ(p1,v1000, z50, tool0);
SingAreaLockAxis4(on);
MoveL(p2,v1000, z50, tool0);
MoveL(p3,v1000, z50, tool0);
SingAreaLockAxis4(off);
MoveL(p5, v1000, z50, tool0);

Point position p1 needs to ensure that the 4-axis angle is 0° or ±180°. When running to SingAreaLockAxis4, the 4-axis locking for wrist singularity avoidance function is enabled. The MoveL p2 and MoveL p3 will adopt the special interpolation method for their poses to maintain the 4-axis angle unchanged. SingAreaLockAxis4 off indicates to close the function.

15.4.18.18 SpeedRefresh

Explanation

It is used to override the speed value in the current motion program task.

Definition

SpeedRefresh(override);

override, data type: int, value range: [1%, 100%], if the speed override value exceeds the limit range, the robot will report an error.

Example

Example 1

SpeedRefresh(70);

It indicates the current speed override value is set to 70%

Attention

  1. When executing pptomain, pptofunc, cursor movement, reloading the project, or entering/exiting demo mode, the speed value set through SpeedRefresh will be cleared and restored to the program running speed set on the teach pendant interface.

  2. Priority note: If a speed value is set through SpeedRefresh, the speed specified by this command shall prevail; if the robot’s operating speed is manually adjusted after the SpeedRefresh command is executed (e.g., by dragging the speed slider on the teach pendant), the manually adjusted speed shall prevail thereafter.

  3. The SpeedRefresh command takes effect in turning zones.

  4. The SpeedRefresh command can set a speed value that exceeds the maximum program speed limit in manual mode or the initial maximum program speed in automatic mode. Use this command with caution. (When running an RL program in Automatic mode, if pause is clicked and switched to manual mode, then the "Run" button is clicked to continue execution, the program running speed at this time will take the smaller value between the "program speed limit in manual mode" and the "speed value set through SpeedRefresh")

  5. The speed override value set through SpeedRefresh will not be immediately completed, since there will be a certain time lag between issuing commands and the speed impact on the physical robotic arm.

15.4.18.19 CSpeedOverride

Explanation

It indicates the current speed override value that users read

Definition

Ret = CSpeedOverride();

Ret Data type: int The value range is 1%−100% of the speed override value

Example

Example 1

int override = CSpeedOverride();
print(override);

If the current speed override value is 70%, it will return to 70

15.4.18.20 SingAreaJointWay

Explanation

It indicates the use of joint space trajectory interpolation to avoid singularities in Cartesian commands.

The Cartesian motion command between SingAreaJointWay on and SingAreaJointWay off will be automatically detected by the control system for any singularity. If the trajectory does not contain singularities, it will move in the same way as a normal trajectory. If it contains singularities, it will move in a unique pattern specific to the mode. See below for details:

image754

As shown in the above figure, for the Cartesian trajectory P0P1 with singularities, the control system detects the singularity Psingular and adds two points, Pcut1 and Pcut2, around the singularity Psingular, to the original trajectory. The original trajectory is divided into three parts: P0Pcut1, Pcut1Pcut2, and Pcut2P1. Among them, P0Pcut1 and Pcut2P1 are still in the original Cartesian trajectory, but Pcut1Pcut2 uses a joint space trajectory (MoveAbsJ) instead of the original trajectory, so that it can traverse the singularity. The three trajectory segments are smoothly transitioned using a turning zone, and the turning radius of the turning zone can be set, which is the zone parameter in the command.

The motion of robot near singularities usually involves a large range of joint angles, so when using this command, it is necessary to confirm whether the robot’s motion trajectory meets the requirements.

Note: The current version is applicable to industrial standard six-axis series (XB, NB models).

Definition

SingAreaJointWay(on/off, zone);

on/off, to indicate that the joint interpolating singularity is enabled or disabled.

Zone, to indicate the radius of the turning zone for the three trajectory segments P0Pcut1, Pcut1Pcut2, and Pcut2P1 after cutting, as shown in the above figure, referring to the definition of the turning zone.

Example

Example 1

MoveAbsJ(p1,v1000, z50, tool0);
SingAreaJointWay(on, 50);
MoveL(p2,v1000, z50, tool0);
MoveL(p3,v1000, z50, tool0);
SingAreaJointWay(off);
MoveL(p5, v1000, z50, tool0);

In the above commands, SingAreaJointWay on, 50 enables singularity avoidance and specifies an internal turning radius of 50 mm for singularity avoidance. SingAreaJointWay off disables singularity avoidance, and the motion commands in between will use the method of joint interpolating singularity avoidance for motion.

15.4.18.21 SingAreaWrist

Explanation

This command indicates using sacrifice orientation to avoid singularities in Cartesian commands.

The Cartesian motion commands between SingAreaWrist on and SingAreaWrist off both use sacrifice orientation to move. In this case, the robot tool follows the correct and precise trajectory motion, but the shape of the robot’s wrist will be altered. When the singularity is not traversed, the above situation will also occur.

The robot uses sacrifice orientation to move, and the wrist orientation of the robot may have a large range of motion. Therefore, when using this command, it is necessary to confirm whether the robot’s motion trajectory meets the requirements.

Note:

The current version is applicable to industrial standard six-axis series (XB, NB models) and collaborative xMateCR, xMateSR series.

Definition

SingAreaWrist(on/off, limit);
on/off, to indicate that the sacrifice orientation for singularity avoidance is enabled or disabled.

Limit, the value in degrees that represents the maximum allowable sacrifice orientation.

Example

Example 1

MoveAbsJ (p1,v1000, z50, tool0);
SingAreawrist (on, 30);
MoveL (p2,v1000, z50, tool0);
MoveL (p3,v1000, z50, tool0);
SingAreaWrist off;
MoveL (p4,v1000, z50, tool0);

In the above commands, SingAreaWrist on, 30 enables singularity avoidance and specifies the maximum sacrifice orientation of 30 degrees for singularity avoidance. SingAreaWrist off disables singularity avoidance, and the motion commands in between will use the method of singularity avoidance for motion. Please note that the turning zone between p1 and p2 and between p2 and p3 can be generated normally, while the turning zone between p3 and p4 cannot be generated.

Attention

It can only be used for linear motion, not for curved motion.

When using the sacrifice orientation for singularity avoidance function, the teaching point will be changed when it is within the singularity range. The wrist orientation during motion may sometimes differ from the taught orientation, not only at the teaching points where singularities are traversed, but also potentially at subsequent teaching points.

The motion of the orientation near the singularity may differ between single-step motion and continuous motion.

15.4.18.22 SetRobotJointsMaxAcc

Explanation

It is used to dynamically modify the maximum acceleration of the robot joint. When the robot needs to magnify the maximum acceleration of the joint to raise the takt and increase the robot’s motion speed, the maximum acceleration of each joint can be set by this command. The effect of this command is consistent with the "maximum joint acceleration" under the motion parameters set on HMI, and this command is available for a specific motion.

Definition

SetRobotJointsMaxAcc(jointval1, jointval2, jointval3, jointval4, jointval5, jointval6, jointval7 );

jointval1−7, data type: double/int, maximum acceleration of the joint, unit: °/s2.

Example

Example 1

SetRobotJointsMaxAcc (80000.0, 70000.0, 70000.0, 150000.0, 150000.0, 20000.0, 20000.0);

Attention

When there is a turning zone between the two motion commands, the turning zone is generated according to the constraints of the smaller one between the maximum joint accelerations.

15.4.18.23 SetRobotJointsMaxJerk

Explanation

It is used to dynamically modify the maximum jerk of the robot joint. When the robot needs to magnify the maximum jerk of the joint to raise the takt and increase the robot’s motion speed, the maximum jerk of each joint can be set by this command. The effect of this command is consistent with the "maximum joint jerk" under the motion parameters set on HMI, and this command is available for a specific motion.

Definition

SetRobotJointsMaxJerk(jointval1, jointval2, jointval3, jointval4, jointval5, jointval6, jointval7 );

jointval1−7, data type: double/int, maximum jerk of the joint, unit: °/s3.

Example

Example 1

SetRobotJointsMaxJerk (30000.0, 27000.0, 27000.0, 50000.0, 40000.0, 60000.0, 60000.0);

Attention

When there is a turning zone between two trajectory segments, the turning zone is generated according to the constraints of the smaller one between the maximum joint accelerations;

15.4.18.24 SetTransmissionOverloadParams

Explanation

It is used to dynamically modify the driving overload coefficient of the robot. When the robot needs to magnify the driving overload coefficient of the joint properly to raise the takt and increase the robot’s motion speed, the driving overload coefficient of each joint can be set by this command. The effect of this command is consistent with the "overload coefficient" under the body parameters set on HMI, and this command is available for a specific motion.

Definition

SetTransmissionOverloadParams (jointval1, jointval2, jointval3, jointval4, jointval5, jointval6, jointval7);

jointval1−7, data type: double/int, driving overload coefficient of the joint.

Example

Example 1

SetTransmissionOverloadParams (0.95, 0.95, 0.95, 0.95, 1.5, 0.95, 1.0);

Attention

When there is a turning zone between two trajectory segments, the turning zone is generated according to the constraints of the smaller one between the transmission overload coefficients;

15.4.18.25 ResetTransmissionOverloadParams

Explanation

Used to restore the robot’s transmission overload coefficient to its original value; to be used in conjunction with the SetTransmissionOverloadParams command; the effect of this command is cleared after taking effect;

Definition

ReSetTransmissionOverloadParams();

No parameters.

Example

Example 1

ReSetTransmissionOverloadParams();

15.4.18.26 SetAccRampTime

Explanation

It is used to set the acceleration ramp time, that is, the time it takes for the robot to increase its acceleration from a minimum to a maximum. The smaller the value, the faster the robot accelerates, and vice versa.

Definition

SetAccRampTime (ramptime);

ramptime, data type: double/int, acceleration ramp time, range: , unit: s.

Example

Example 1

SetAccRampTime (0.15);

15.4.18.27 ResetAccRampTime

Explanation

It is used to reset the acceleration ramp time, with the SetAccRampTime.

Definition

ResetAccRampTime ();

No parameters;

Example

Example 1

ResetAccRampTime();

15.4.18.28 SetVarValue

Explanation

It is used to assign the variables in the turning zone, and the assignment is not triggered for lookahead.

Definition

SetVarValue(var1, var2);

Assign var2 to var1.

var1: data type: byte, int, double, bool, and writable register variable with no function code bound.

var2: data type: byte, int, double, bool, IO variable, register variable, function return value, and expression.

Example

Example 1

  //The robot is currently located in the p0.
MoveL(p1);
SetVarValue(var1, var2); // Assign var2 to var1 at the start point of the turning zone
MoveL(p2);

Attention

The implicit conversion occurs during the assignment.

int a=1;
double b=20.22;
SetVarValue(a, b);

For example, after the assignment, the variable a is 20.

15.4.18.29 SetStopAccRampTime

Explanation

It is used to set the acceleration ramp time during the final stop phase. For target points without a turning zone, this is the time it takes for the robot to increase its acceleration from a minimum to 0 during the final stop phase. The smaller the value, the faster the robot stops, and vice versa. If the acceleration ramp time is greater than the acceleration ramp time during the final stop phase, the robot will use the longer acceleration ramp time for stopping.

Definition

SetStopAccRampTime(ramptime);

ramptime, data type: double/int, acceleration ramp time during the final stop phase, range: [0.01, 1], unit: s.

Example

Example 1

SetAccRampTime(0.15);

15.4.18.30 ResetStopAccRampTime

Explanation

It is used to reset the acceleration ramp time during the final stop phase, with the SetStopAccRampTime.

Definition

ResetStopAccRampTime();

No parameters;

Example

Example 1

ResetStopAccRampTime();

15.4.18.31 PathRecStart

Explanation

Start recording the robot’s path. It is a stop lookahead command.

After executing PathRecStart to initiate path recording, the supported motion types for recording include MoveL, MoveJ, MoveAbsJ, MoveC, TrigL, TrigC, and TrigJ. During path recording, the execution of MoveC and TrigC commands cannot be interrupted; otherwise, the target points cannot be recorded. If MoveC or TrigC commands are interrupted, an error will be reported and execution will stop.

Definition

PathRecStart();

Example

MoveL(p1,v1000, z50, tool0, wobj0);
PathRecStart();
MoveL(p2,v1000, z50, tool0, wobj0);

When lookahead reaches PathRecStart, it stops lookahead and waits for the motion before PathRecStart to complete before executing PathRecStart. Motion commands after this command will be recorded.

15.4.18.32 PathRecStop

Explanation

Stop recording the robot’s path and clear the recorded path data. It is a stop lookahead command.

Definition

PathRecStop();

Example

MoveL(p1,v1000, z50, tool0, wobj0);
PathRecStop();
MoveL(p2,v1000, z50, tool0, wobj0);

When lookahead reaches PathRecStop, it stops lookahead and waits for the motion before PathRecStop to complete before executing PathRecStop. After this command, path recording will cease and the recorded path data will be cleared.

15.4.18.33 PathRecBwd

Explanation

Make the robot move backward along the recorded path. It is a stop lookahead motion command, and the motion of PathRecBwd will not be recorded.

If there are commands that interrupt lookahead between motion instructions, when executing the recorded path, the turning zone of the trajectory before the lookahead interrupting command will be set to z0.

After executing PathRecStart to initiate path recording, if an interrupt is triggered, the PathRecBwd command in the interrupt must precede other motion commands; otherwise, an error will be reported and execution will stop.

PathRecBwd cannot be interrupted. If an interrupt is triggered while executing PathRecBwd, an error will be reported and execution will stop.

Definition

PathRecBwd();

Example

MoveAbsJ(j1, v1000, z50, tool_weld);
PathRecStart();
MoveL(p1,v1000, z50, tool0, wobj0);
MoveAbsJ(j2, v1000, z50, tool_weld);
PathRecBwd();
MoveL(p2,v1000, z50, tool0, wobj0);

Two motion commands are recorded after PathRecStart. When executing PathRecBwd, the robot will perform path backtracking, moving from j2→p1→the robot’s position when executing PathRecBwd (j1)

15.4.18.34 PathRecFwd

Explanation

Make the robot move backward to the position where PathRecBwd was executed. It is a stop lookahead motion command, and the motion of PathRecFwd will not be recorded.

If there are commands that interrupt lookahead between motion instructions, when executing the recorded path, the turning zone of the trajectory before the lookahead interrupting command will be set to z0.

After executing PathRecStart to initiate path recording, if an interrupt is triggered, the PathRecFwd command in the interrupt must not be followed by any motion commands; otherwise, an error will be reported and execution will stop.

PathRecFwd cannot be interrupted. If an interrupt is triggered while executing PathRecFwd, an error will be reported and execution will stop.

Definition

PathRecFwd();

Example

MoveAbsJ(j1, v1000, z50, tool_weld);
PathRecStart();
MoveL(p1,v1000, z50, tool0, wobj0);
MoveAbsJ(j2, v1000, z50, tool_weld);
PathRecBwd();
PathRecFwd();

When executing PathRecBwd, the robot performs path backtracking . At this point the robot is at position j1. When executing PathRecFwd, the robot will move from j1->p1->j2 back to position j2.

15.4.18.35 GetRecStartStatus

Explanation

Get whether path recording is enabled. The return value is of bool type

Definition

GetRecStartStatus();

Example

bool b1 = GetRecStartStatus();

Get whether path recording is enabled. true if enabled, false if disabled.

15.4.18.36 SetMaxMotionJerk

Explanation

Set the value of the robot’s underlying otgc jerk. The default value is 300. Increasing this value can achieve faster start/stop effects. The value will be restored to default after pptomain;

Definition

SetMaxMotionJerk(Num);

Num: Data type: int/double, greater than 100

Example

Example 1

SetMaxMotionJerk(10000);

15.4.18.37 VibSuppression

Explanation

Command to set the vibration suppression function switch. During Pptomain, the vibration suppression function reverts to the state set in the HMI interface (see the vibration suppression function in the Dynamic settings module in 9.8).

Definition

VibSuppression(Type);

Type, data type: keyword, on: turn on, off: turn off

Example

VibSuppression(on);
MoveAbsJ(p1,v500, fine, tool1);
MoveAbsJ(p2,v500, fine, tool1);
MoveAbsJ(p3,v500, fine, tool1);
VibSuppression(off);
MoveAbsJ(p4,v500, fine, tool1);

When executing the VibSuppression(on) command, the controller enables the vibration suppression function. The movements at subsequent points p1−p3 will be affected by the vibration suppression function, where robot vibrations during start/stop are suppressed, resulting in improved trajectory accuracy. When executing the VibSuppression(off) command, the controller disables the vibration suppression function.