Skip to content

Command Request Execution

When sending a command request to the IndyDCP server, the data depends on the purpose of each command. In this section, details about each command group ( similar commands are grouped ) are described and examples of request/response frame are showed.

Robot Motion Control Command

Robot Motion Control Command is commands about basic motion of Robot.

Emergency Stop and Stop command

0001: Emergency Stop, 0005: Stop

Emergency stop command can stop the robot immediately after receiving command, whatever the motion robot was conducting. It has same result with emergency buttons which is connected to CB. The request frame format for emergency stop command is described below.

Header Command Data
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID No Data
(0 byte)
"NRMK-Indy7" "" 0x00 0x34 1 0 - 1 -

  • Robot Name: is "NRMK-Indy7", which is ASCII string (20-byte)
  • Robot Version: NULL string (not used in the request frame) (12-byte)
  • STEP Info: 0x00 (not used in the request frame) (1-byte)
  • SoF: is fixed at 0x34 for the requested frame (1-byte)
  • InvokeID: 1 is used for this example (4-byte)
  • Data Length: is 0 because data transfer is not required. (4-byte)
  • Reserved: Since the reserved area is not in use, leave 10 bytes blank. (10-byte)

As result, the request frame header for an emergency stop command is 56 bytes.

Since the Command ID of the emergency stop command is 1, the value of the command area is 1 and the data area is empty because data transfer is not required.

The ACK response frame of IndyDCP server for this emergency stop command is described below.

Header Command Data
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID No Data
(0 byte)
"NRMK-Indy7" "v2.2.3" 0x02 0x12 1 0 - 1 -

  • Robot Name: is the same as the request frame
  • Robot Version: is the version of IndyFramework
  • STEP Info: is the version of STEP (0x02 indicates STEP2)
  • SoF: is fixed at 0x12 for response frames
  • InvokeID: is the same as the request frame
  • Data Length: is 0 because data transfer is not required.
  • Reserved: After Indy Framework 2.2.3, 4 bytes among the 10 bytes reserved domain contains robot status (Please refer to Reserved Field and Robot Status).
  • Command ID: is the same as the request frame

The NAK response frame of IndyDCP server for emergency stop command is described below.

Header Command Data
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID Error Code
(4 byte)
"NRMK-Indy7" "v2.2.3" 0x02 0x12 1 4 - 9999 20

NAK response frame can be distinguished by the command ID value of 9999. It has a 4-byte integer error code in the data area that can help determine the reason of failure (see NAK Response Frame Error Code)). Accordingly, the value of the data length in the NAK response frame header area is 4.

Stop command (Command ID 5) stops the robot if it is in motion. The emrgency stop command immediately stops the robot by turning off all the servo and applying brake. However, the stop command stops gradually with proper procedures when the robot is in motion. In addition, the emergency stop command becomes true after the robot stops, and reset command is required for additional command or robot control. The stop command has the same frame structure as the emergency stop command, with only a different command ID.

Reset Command

0002: Reset Robot

The reset command (Command ID 2) resets the robot when it detects a collision, an emergency stop button was pushed, or robot is in error state. The reset command make the robot automatically reset.

Header Command Data
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID No Data
(0 byte)
"NRMK-Indy7" "" 0x00 0x34 2 0 - 2 -

Since the reset command also has no data in the request frame, ACK/NAK response frames are same as emergency stop command's response frame.

Servo/Brake Control Command

0003-0004: Servo & Brake On/Off

Servo On/Off (Command ID 3) is a command that turns on/off the servo Motor of each joints. Brake On/Off (Command ID 4) is a command that turns on/off the brake of each joints. Tables below are examples of request frame for on/off the servo.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "" 0x00 0x34 3 6 - 3
Data
Joint-0 Servo (1 byte) Joint-1 Servo (1 byte) Joint-2 Servo (1 byte) Joint-3 Servo (1 byte) Joint-4 Servo (1 byte) Joint-5 Servo (1 byte)
1 1 1 1 0 0

The length of the data of servo on/off command is DOF*1 result of multiplication of number of joint and the size of boolean (1-byte). Thus, the length of the data is six (Indy7 has 6-axis), and the data area has a servo on/off boolean value for each joints. In this example, 0-3 servo will be turned on, and 4-5 servo will be turned off. The ACK response frame for the above request has no value to return and there are no data.

Note

Joint indexing starts from number 0

Move Command

0006: Execute Move Command

The move command is for executing JointMove or TaskMove stored in the program tree set as the default program in the conty.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "" 0x00 0x34 4 16 - 6
Data
Move Command Name (ASCII String)
"MySpecificMove01"

In move command, the data is move command's name in the default program. Thus, the data type is ASCII string and the maximum length of data is 200-byte. The example run the move command named MySpecificMove01 in default program. MySpecificMove01's ASCII string length is 16, so the data length in the header is 16.

If the robot is already in motion or in emergency stop, move command cannot be executed. In case robot is already in motion, the command should be requested after the robot stops and, in case robot is in emergency stop, the command should be requested after reset. The command also failed if the move command's name is not equal to the name in the default program. In the case of such a failure, the IndyDCP server sends a NAK response frame with an error code.

Command for moving robot to specific position

0007-0012: Move To & Move By

0007-0008 commands move the robot to special position. Move To Home (0007) moves the robot to home position saved through the conty and, Move To Zero (0008) moves the robot to the zero position (all joint's position is 0). Since these commands are for moving to predefined position, there are no value at the data area.

0009-0010 commands move the joints with the JointMove. Joint Move To (0009) moves the joint to the absolute joint position in request data, and Joint Move By (0010) moves the joints with distance requested from current position.

0011-0012 commands move the robot with the TaskMove. Task Move To (0011) moves the robot to the absolute position in the task space, and Task Move By (0012) moves the robot with distance in the task space.

The tables below are examples of JointMove and TaskMove.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "" 0x00 0x34 5 48 - 9
Data
Joint-0 Angle (degree, 8byte) Joint-1 Angle (degree, 8byte) Joint-2 Angle (degree, 8byte) Joint-3 Angle (degree, 8byte) Joint-4 Angle (degree, 8byte) Joint-5 Angle (degree, 8byte)
35.123 -90.00 2.955 150.0 -120.0 45.0

This example is a command that moves joints to positions in the data area. Since robot has 6-axis, and each joint position is described with 8-byte double, the size of the data is 48-byte (DOF*8).

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "" 0x00 0x34 6 48 - 12
Data
Task X Position (meter, 8byte) Task Y Position (meter, 8byte) Task Z Position (meter, 8byte) Task U Position (degree, 8byte) Task V Position (degree, 8byte) Task W Position (degree, 8byte)
0.0 0.1 -0.25 30.00 0 0

This example is a command that relatively moves the robot from current position to the task space position in the data area. Since the task space is described with XYZUVW, the size of the data is always 48byte.

WARNING

  • In case wrong coordinate was input, robot may collide with environment. It is recommended that moving the robot after running commands on simulation mode.
  • In command data, the unit of length/distance is [Meter] and angular is [Degree]
  • The order of data for task space is XYZUVW.

Robot Program Control Command

Robot Program Control Command controls the robot program created by conty.

0014-0017 commands are for starting, stopping, pausing, resuming the program respectively. These commands can be failed according to the state of the robot or the program. For example, IndyDCP server will return the failure response in case starting program was requested when robot is already in motion or pause or resume command was made even though there was no program loaded .

0018 command loads and runs the default program. Requesting 0018 command will load the default program. After 0018 command, 0014-0017 commands can be executed to control the default program. Basically, the robot programs are saved in android device running conty. But, in case the robot program is assigned to default program, STEP also save the robot program.

The conty can save 10 default programs. 0019 is a command to register the robot program loaded on conty as default program. The data value (1 ~ 10) will be the number of default program and it can be canceled with setting the value to 0. The table below is the example of canceling registration.

Header Command Data
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID Default Program # (4byte)
"NRMK-Indy7" "" 0x00 0x34 30 4 - 19 0

0020 is the command to check the currently registered default program. Request data is empty and response data is the default program number (4-byte integer, 1~10). If the response data is 0, it means there is no registered default program now.

Header Command Data
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID Default Program # (4byte)
"NRMK-Indy7" "v2.2.3" 0x02 0x12 31 4 - 20 7

Reading Robot state information

0030-0039 and 0060-0064 commands are for requesting current state of robot. The robot states are listed in command list. Furthermore, robot status register

The table below is the ACK response frame of the command number 0031 (Is Robot Ready). Since the robot state value are the boolean of 1 or 0, the data length of the ACK response frame is 1-byte (true / false).

Header Command Data
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID Robot State (T/F, 1byte)
"NRMK-Indy7" "v2.2.3" 0x02 0x12 7 1 - 2 1

Change Direct Teaching Mode command

0080-0081: Change Direct Teaching Mode

0080 command is used to start the direct teaching mode when robot is ready, and 0081 command is used to finish the direct teaching mode when robot is in direct teaching mode. In case robot is moving, 0080 command will fail.

Warning

Tool properties are not according with actual tool, the robot may fall or rise in direct teaching mode.

Custom Robot Motion

0090-0099 commands are for adding waypoints to the set via IndyDCP and running the motion in the set.

0090-0094 are the command to add, remove, reset a waypoint and run motion with JointMove. Similarly, 0095-0099 are the command to add, remove, reset a waypoint and run motion with TaskMove.

Robot Configuration

Robot configuration can be done with following commands via indyDCP. But, all configuration commands are supported by Conty. Therefore, it is recommended to configure the robot while watching directly through Conty with GUI interface.

TCP Setting

0100-0103: Set Default TCP & TCP Compensation

The TCP (Tool Center Point) setting is required for moving the robot based on the tool with TaskMove. The initial value for TCP is {0, 0, 0, 0, 0, 0}, which is the center of the flange of the robot. TCP can be modified by command number 0100, and 0101 command reset TCP to initial value.

In addition to the TCP, there is the TCP compensation value. 0102 command can set TCP compensation value and compensation value will be added to default TCP. For example, in case default TCP was set as {0, 0, 0.1, 0, 0, 90} and compensation value was set as {0, -0.2, 0, 0, 0, 30}, result TCP is {0, -0.2, 0.1, 0, 0, 120}. 0103 command reset the compensation value. After resetting the compensation value, result TCP will be same with default TCP. If default TCP is changed with command 0101 or 0102, compensation value will also be reset to zero.

TCP use XYZUVW value, like the task space coordinate. Therefore, its length of the data is 48 bytes. The requested frame example is as follows.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "" 0x00 0x34 10 48 - 100
Data
Default TCP X (meter, 8byte) Default TCP Y (meter, 8byte) Default TCP Z (meter, 8byte) Default TCP U (meter, 8byte) Default TCP V (meter, 8byte) Default TCP W (meter, 8byte)
0.0 0.0 0.1 90.00 0 0

Reference Frame Setting

0104-0105: Set Reference Frame

The Reference Frame Setting is required for setting the reference coordinate system of TaskMove

The default value for reference frame is determined by the axis of body 0 (see Conty UI). 0104 command can change the reference frame according to the XYZ distance and UVW angle and it can be used for TaskMove. Similar to TCP setting, the data of request frame has XYZUVW value and command 0105 resets reference frame to initial value.

Collision Level Setting

0106: Set Collision Detection Sensitivity Level

Collision detection level can determine the sensitivity of collision (1~5, 1 is most sensitive). Data type of request frame is 4 byte integer. Below is an example of request frame.

Header Command Data
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID Level (4byte)
"NRMK-Indy7" "" 0x00 0x34 11 4 - 106 3

Velocity Level Setting

0107-0108: Set Joint/Task Velocity Boundary

Velocity level can determine default velocity. In conty program or move command, robot moves with velocity level set in the move command, however, some other commands e.g. Move Home, Move Zero, Joint Move To/By, Task Move To/By moves robot with velocity level set by this command. The data type of request frame is 4 byte integer.

Blending radius level setting

0109-0110: Set Joint/Task Blending Radius Level

almost same as velocity level, but this command sets blending radius level.(among 1~9, 4 byte integer)

Waypoint Interval time Setting

0111-0112: Set Joint/TaskMove Waypoint Time

This command sets default period between each waypoints when executing time-based interpolator. The unit is [second] and minimum value is 0.5. The type of data is 8byte double.

TaskMove Base Mode Setting

0113: Set TaskMove Base Mode

There are two base mode for TaskMove, one is TCP and the other is reference frame. When the request frame data is 0, base mode is set to reference frame and when the data is 1, base mode is set to TCP.

Set Blending Radius

0116-0117: Set Joint/Task Blending Radius

Reading Robot Configuration

0200-0210 command can read the configuration values of all the settings set in the previous section. The reading data type is same as configuration command. The configuration command writes the data in the request frame, but the reading command does not contain the data in the request frame and ACK response frame contains the data about configuration. Examples of ACK response frames for these configuration readings are shown below.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "v2.2.3" 0x02 0x12 13 48 - 202
Data
RefFrame X (meter, 8byte) RefFrame Y (meter, 8byte) RefFrame Z (meter, 8byte) RefFrame U (meter, 8byte) RefFrame V (meter, 8byte) RefFrame W (meter, 8byte)
0 -0.25 1.2 0 0 90

Reading Robot Data

Robot Data includes datas about robot control, such as current position, velocity, state of motors. Since it is reading command, request frame doesn't include the data, normally.

Reading Robot Control Status

0300-0302: Get Robot Control Status

0300 command requests the time that the robot has run. It returns the run time in seconds (8byte double data) in the ACK response frame. 0301 command requests the robot's control mode as 4byte integer data. 0302 command requests the on/off state of the servo motor and brake at each joints. Below is an example of ACK response frame (0302 command).

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "v2.2.3" 0x02 0x12 14 12 - 302
Data
Joint-0 Servo (1byte) Joint-1 Servo (1byte) Joint-2 Servo (1byte) Joint-3 Servo (1byte) Joint-4 Servo (1byte) Joint-5 Servo (1byte) Joint-0 Brake (1byte) Joint-1 Brake (1byte) Joint-2 Brake (1byte) Joint-3 Brake (1byte) Joint-4 Brake (1byte) Joint-5 Brake (1byte)
1 1 1 1 1 1 0 0 0 0 0 0

Reading Robot Control Data

0320-0324: Get Robot Control Data

Each of command number 0320~0324 requests joint position(0320), joint velocity(0321), task position(0322), task velocity(0323), torque(0324). In case of command 0320, 0321, 0324, the type of data of response frame is 8byte Double, and data lenth is DOF*8 In case of command 0322, 0323, the lenth of data of response Frame is 48(6*8).

Reading Last Emergency Event Data

0380: Get Last Emergency Data

0380 command requests the information about lastly occured emergency stop event. It can be used to find the reason of emergency stop. Below is ACK response frame of 0380 command.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "v2.2.3" 0x02 0x12 15 40 - 380
Data
Emg Code (4 byte integer) ArgsInt 0 (4 byte integer) ArgsInt 1 (4 byte integer) ArgsInt 2 (4 byte integer) ArgsDouble 0 (4 byte integer) ArgsDouble 1 (4 byte integer) ArgsDouble 2 (4 byte integer)
3 4 -160 0 0 0 0

The length of the data is 40 byte. 4 byte integer shows emergency stop event code, and additional information about event is saved in 3 integer arguments and 3 double arguments. See IndyFramework for additional information of emergency stop data.

SmartIO Control

IndyDCP provides commands that control each pins of each IO, or control all.

0400 command requests one DI with SmartDI number. 0401 command requests every value of SmartDI array. In case of 0400 command, the type of data is 4 byte integer, which is the number of smartDI, and the data of ACK response frame is 1 byte, which describes HIGH(1) or LOW(0). In case of 0401 command, since smartDI has 32 items and each DI number is described with 1 byte, the data length is 32 byte. Below is an example of ACK Response Frame of 0401 command, in which SmartDI 02, 03 is HIGH and others are LOW.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "v2.2.3" 0x02 0x12 16 32 - 401
Data
SmartDI_00 (1 or 0, 1ybte) SmartDI_01 (1 or 0, 1ybte) SmartDI_02 (1 or 0, 1ybte) SmartDI_03 (1 or 0, 1ybte) SmartDI_04 (1 or 0, 1ybte) ... SmartDI_31 (1 or 0, 1ybte)
0 0 1 1 0 ... 0

The command 0402 and 0403 request to write SmartDO. 0402 command writes only one of the corresponding DO values with the SmartDO number, and 0403 is the command to write the entire SmartDO array. Thus, for 0402, the data length of the request frame is 5 bytes with the SmartDO number (4 byte integer) and the SmartDO value (1 or 0, 1 byte). In the case of 0403, the total number of SmartDO is 32, so the data length in the request frame is 32 bytes. Below is an example of the request frame of command 0402 (HIGH for SmartDO 04).

Header Command Data
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID SmartDO Num(4byte) SmartDO Value(1byte)
"NRMK-Indy7" "" 0x00 0x34 17 5 - 402 4 1

SmartAI, SmartAO does not support commands that read or write all AI and AO at once. Similar to 0400 and 0402 commands, one AI, AO can be controlled through commands 0404 and 0405. For the data in the request frame, the SmartAI/AO number is 4byte integer, and the value is 4byte integer (0-10000 range).

Other I/O Control

Indy robot series and CB also supports CAN port to use FT Sensor.

Reading FTSensor value with CAN Port

0420-0423: Get CAN FTSensor

The CAN port is on the CB and robot's last body. If the FTSensor is connected to one of these CAN port, the value of sensor can be read through the command.

When reading the FTSensor, it supports two types of data. One is raw data values coming from sensors and the other is data converted into actual force values. FTSensor data from robot's CAN port can be read with 0420 (raw data) or 0421 (transformed data). FTSensor data from CB's CAN port can be read with 0422 (raw data) or 0423 (transformed data).

FTSensor data consists of six data, XYZUVW. Raw data is described by a 4 byte integer, which means that the data length of the ACK response frame is 24 byte, and the transformed datais described by 8 byte Double, which means that the data length of the ACK response frame is 48 byte. The transformed data is in Newton (N) for XYZ values and in Newton meters (Nm) for UVW values. Below is an example of the response data frame for 0423 command.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "v2.2.3" 0x02 0x12 18 32 - 423
Data
FTValue X(N, 8byte) FTValue Y(N, 8byte) FTValue Z(N, 8byte) FTValue U(Nm, 8byte) FTValue V(Nm, 8byte) FTValue W(Nm, 8byte)
32 12 -6.4 -1.2 1.5 -1.5

Direct Variable

Direct variable is a pre-declared variable within a robot program for reading and writing each type Direct variables are accessible not only in IndyDCP, but also in Conty and other communications, and since direct variables at the same address are shared with each other, they have the same value and can be used in various ways.

Type and Adress of Direct Variable

There are seven types of direct variables(Byte, Word, DWord, LWord, Flot, DFloat and Modbus). Modbus Type is direct variable for modbus register, which is used in ModbusTCP.

1000 direct variables for each type are provided, and variables are expressed using address values. The address is 000~999, expressed in three digits. The table below is the byte and data types for each direct variable type.

Variable Type Type number Adress Value Bytes & Data Type
BYTE (B) 0 B000 ~ B999 1 Byte, Unsigned Integer
WORD (W) 1 W000 ~ W999 2 Byte, Integer
DWORD (I) 2 I000 ~ I999 4 Byte, Integer
LWORD (L) 3 L000 ~ L999 8 Byte, Integer
FLOAT (F) 4 F000 ~ F999 4 Byte, Floating Point
DFLOAT (D) 5 D000 ~ D999 8 Byte, Floating Point
MODBUS (M) 10 M000 ~ M999 2 Byte, Integer / Modbus Register 0~999

Reading Direct Variable**

There are two commands reading direct variables: single read and continuous read. The single read command read a direct variable for a single address value, and the continuous read command can read up to 20 at a time for a continuous address.

The single reading can be done with 0460 command. The data of request frame consists of two integer (4 byte each). For example, the read request for the W012 direct variable is as follows.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "" 0x00 0x34 20 8 - 460
Data
Direct Variable Type(4byte Integer) Direct Variable Address(4byte Integer)
1 12

The size of the data of response frame is determined by the type of the direct variable For above example, data lenth of response frame is 2 byte which is the value of W012.

The continuous reading can be done with 0461 command. The required data is three 4-byte integer. The first and second data are same as the single reading, and the third data corresponds to the length of continuous reading. It can be up to 1-20 in length, and no more than 21 can be read at once. For example, if 10 direct variables from D100 to D109 are read continuously, the third data is 10, and the request frame example is as follows.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "" 0x00 0x34 21 12 - 461
Data
Direct Variable Type
(4byte Integer)
Direct Variable Start
Address (4byte Integer)
Address Length
(4byte Integer)
5 100 10

The data of the response frame will be the array corresponding to the address value. The size of the data of the response frame for above requet is 8*10=80byte.

Writing Direct Variable

There are also two ways to write direct variable: single write and continuous write. The single write command write a direct variable for a single address value, and the continuous write command can write up to 20 at a time for a continuous address.

0463 command can write a single direct variable and three data are required. The first data is variable type (4-byte). The second data is the address value of the variable from 0~999 (4-byte). The third data is the value of the direct variable to be written. In case the first data is 1, then the third data is 2 bytes, since it is a W direct variable of 2 bytes, and the total data is 10 bytes. As such, the size of the third data is equal to the size of the direct variable type. Below is an example for writing value of 35 for a W012 direct variable.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "" 0x00 0x34 20 10 - 462
Data
Direct Variable Type
(4byte Integer)
Direct Variable Address
(4byte Integer)
Writing Value
(2byte; Depending on Type)
1 12 35

The response frame for the writing request has no data, if writing was done successfully.

The continuous writing can be done with 0464 command.

The number of required data is 4. The first three data are variable type, address to start writing from, and number of writes. The last one is the value to be written. As with the response frame data of a direct variable continuous read, it is continuously attached according to the type and number of direct variables. For example, if the values are written from L240 to L245 (6 LWORD type), the size of the data area is 60byte with a total (12 byte + 8*6 byte ) An example of the request frame is shown below.

Header Command
Robot Name Robot Version STEP Info SoF InvokeID Data Length Reserved Command ID
"NRMK-Indy7" "" 0x00 0x34 20 60 - 463
Data
Direct Variable Type(4byte Integer) Direct Variable Address(4byte Integer) Address Length(4byte Integer)
3 240 6
Value 1
(L240;8byte)
Value 2
(L241;8byte)
Value 3
(L242;8byte)
Value 4
(L243;8byte)
Value 5
(L244;8byte)
Value 6
(L245;8byte)

NAK Response Frame

If the command fails, a NAK response containing an error code with command ID 9999 is received. The error codes for these NAK response frames are described in the table below.

Error Code Error Name Description
0 ERR_NONE Not error
1 ERR_NO_MATCHED_ROBOT The robot is not matched
2 ERR_NO_MATCHED_STEP the STEP is not matched
4 ERR_HEADER_FORMAT Error of header format
5 ERR_OVER_DATA_SIZE Data size exceeded
6 ERR_NOT_SUPPORT_COMMAND The command is not supported
7 ERR_UNKNOWN_COMMAND The command is unknown
8 ERR_UNKNOWN_DATA The data is unknown
9 ERR_PROCESS_FAILED Process has failed
10 ERR_PARSE_FAILED Parsing command has failed (data error)
11 ERR_NO_MATCHED_PARAMETER Data type is not matched
12 ERR_NO_MATCHED_DATA_SIZE Data length is not matched
14 ERR_ROBOT_MOVING_STATE Command failure due to robot-in-motion.
15 ERR_ROBOT_PROGRAM_RUNNING Command failure due to program running.
16 ERR_ROBOT_MOVE_FAILED Execution of robot motion command failed.
17 ERR_NO_DEFAULT_PROGRAM No default program is found.
18 ERR_NO_CURRENT_PROGRAM There's no program currently loaded
19 ERR_CURRENT_PROGRAM_STATE Command failure due to current program state
20 ERR_EMG_STATE The robot is in Emergency Stop.
21 ERR_ROBOT_STATE Command failure due to current robot state
22 ERR_ROBOT_PROGRAM_LOAD_FAILED Loading robot program failed.
23 ERR_DIRECT_VARIABLE_INVALID_ADDRESS Invalid direct variable adress.
24 ERR_DIRECT_VARIABLE_INVALID_FORMAT Invalid direct variable reference data format
25 ERR_DIRECT_VARIABLE_REFNUM_LIMIT The number of access for direct variable exceeded 20