1. Introduction to CNDE

Collaborative robot configurable network data exchange protocol (CNDE) is a way for the client to control the robot and obtain the feedback status of the robot through UDP communication.

Table 1-1 shows all the states of the robot that can be obtained by CNDE. The client can arbitrarily select several required states from the table and make the robot perform state feedback according to the set feedback period.

Similarly, the client can also select the required robot control function combinations from Table 1-2 to perform robot control operations. The communication data between the client and the robot CNDE must comply with the specified frame format. The robot CNDE communication ports are 20005 and 20006. Port 20005 is used for TCP communication, and port 20006 is used for UDP communication.

There are four main steps to use the CNDE function of robot:

①Configuration of input and output data content: the client sends an input and output configuration command to the robot, in which the command content is in the form of a series of control or state function names such as “std_DI_box,cfg_DI_box, motion_queue_len”, and the robot records and recognizes these names and then feeds back the corresponding function data types such as “UINT8,UINT8,INT32” to the client, which indicates that the configuration is successful.

②Start the CNDE data output of the robot: the client sends a command to start the CNDE data output to the robot, and the robot starts to send the robot state data to the client through UDP in the form of byte array (Little Endian) according to the configured period.

③Analyze the robot state data: the client receives the state data fed back by the robot circularly, and analyzes the data according to the data types fed back by the robot during output configuration and the byte length corresponding to each data type in Table 1-3 to obtain the actual value of each state. The output data of robot CNDE can support up to 4096 bytes, The CNDE output period ranges from 1 ms to 200ms.

④Sending robot control data: the client groups the control data according to the data types fed back by the robot during input configuration and the byte length corresponding to each data type in Table 1-3, and sends it to the robot through UDP communication. After receiving the control data, the robot performs data analysis and robot control operations. The CNDE input of the robot supports 256 recipes, and the client can configure multiple input recipes as needed. When sending the input data to the robot, it is necessary to specify the recipe number corresponding to the current data.

Table 1-1 Robot Output Configuration Function

Name

Data type

Description

std_DI_box

UINT8

Control box standard DI input (bit0 ~ bit7 indicates DI0 ~ DI7)

cfg_DI_box

UINT8

Control box configurable CI input (bit0 ~ bit7 indicates CI0 ~ CI7)

cfg_DI_tool

UINT8

Configurable tool DI inputs (bit0 ~ bit2 indicates toolDI0 ~ toolDI1)

std_AI0_box

DOUBLE

Control box analog input AI0(0 ~ 4095)

std_AI1_box

DOUBLE

Control box analog input AI1(0 ~ 4095)

std_AI_tool

DOUBLE

Analog input of end tool tool_AI0(0 ~ 4095)

run_up_time

DOUBLE

Statistics of Robot Boot Time (s)

target_joint_pos

DOUBLE_6

Target position of joint 1-6 (°)

target_joint_vel

DOUBLE_6

Target speed of joints 1-6 (°/s)

target_joint_acc

DOUBLE_6

Target acceleration of joints 1-6 (°/s2)

target_joint_current

DOUBLE_6

Joint 1-6 target current (A)

target_joint_torque

DOUBLE_6

Target torque of joints 1-6 (Nm)

actual_joint_pos

DOUBLE_6

Current position of joints 1-6 (°)

actual_joint_vel

DOUBLE_6

Current speed of joints 1-6 (°/s)

actual_joint_current

DOUBLE_6

Current current of joints 1-6 (A)

actual_joint_torque

DOUBLE_6

Joint 1-6 target torque (Nm)

actual_TCP_pos

DOUBLE_6

Current position of tool DKR(mm)

actual_TCP_vel

DOUBLE_6

Current tool speed DKR(mm/s)

actual_TCP_force

DOUBLE_6

Tool resultant force DKR(mm/s2)

target_TCP_pos

DOUBLE_6

Tool target position DKR(mm)

target_TCP_vel

DOUBLE_6

Tool target speed DKR(mm/s)

std_DO_box

UINT8

Standard DO output of control box (bit0 ~ bit7 indicates DO0 ~ DO7)

cfg_DO_box

UINT8

Control box configurable with CO output (bit0 ~ bit7 indicates CO0 ~ CO7)

cfg_DO_tool

UINT8

Standard tool DO output (bit0 ~ bit1 indicates toolDO0 ~ toolDO1)

std_AO0_box

DOUBLE

Control box analog AO0 (0.0 ~ 4095.0)

std_AO1_box

DOUBLE

Control box analog AO1 (0.0 ~ 4095.0)

std_AO_tool

DOUBLE

Tool analog AO1 (0.0 ~ 4095.0)

robot_mode

UINT8

Robot mode (0- automatic; 1- Manual)

collision_level

UINT8_6

Joint 1-6 collision grade (1-10)

speed_scaling_man

DOUBLE

Manual mode speed percentage (0 ~ 100)

speed_scaling_auto

DOUBLE

Automatic mode speed percentage (0 ~ 100)

program_state

UINT8

Robot program running state (1- stop; 2- in motion; 3- pause; 4- Drag)

line_number

INT32

Current program running line number

payload

DOUBLE

Load mass (kg)

pay_cog

DOUBLE_3

Load centroid (x,y,z)(mm)

motion_queue_len

INT32

Current motion queue length

ft_sensor_data

DOUBLE_6

Force sensor raw data

main_code

INT32

Main fault code

sub_code

INT32

Sub fault code

emergency_stop

UINT8

Emergency stop status

motion_done

INT32

Motion completion status

timestamp_us

UINT64

Robot system time (us)

output_BIT_reg_8xX

UINT8_X

BIT-type robot output registers (8xX indicates the number of registers, if you need 16 BIT-type output registers, the actual name is “output_BIT_reg_8x2”, and the robot can support up to 128 bit-type output registers)

output_INT_reg_X

INT32_X

INT robot output registers (X represents the number of registers. If you need 16 INT output registers, the actual name is “output_INT_reg_16”, and the robot can support up to 64 INT output registers)

output_DOUBLE_reg_X

DOUBLE_X

DOUBLE robot output register (X represents the number of registers, if you need 16 DOUBLE output registers, the actual name is “output_DOUBLE_reg_16”, and the robot can support up to 64 DOUBLE output registers)

servoj_time

UINT64_5

servoj timestamp data, unit ns

actual_joint_temp

DOUBLE_6

Joint j1-j6 driver temperature, unit °

axle_gen_com_data

UINT8_130

End-effector general periodic data

abnormal_stop

UINT8

Abnormal status, 0: no abnormality, 1: abnormality present

cur_lua_file_name

UINT8_256

Currently running lua file name

prog_total_line

UINT8

Total number of lines in current file

safety_box_signal

UINT8_6

Button box key signal 0: pressed 1: released

welding_voltage

DOUBLE

Actual welding voltage, unit V

welding_current

DOUBLE

Actual welding current, unit A

welding_track_speed

DOUBLE

Weld seam tracking speed, unit mm/s

tpd_exception

UINT8

TPD exception

alarm_reboot_robot

UINT8

Robot restart warning

modbus_master_connect

UINT8

Connection status of 8 Modbus masters
bit0-bit7 represent masters 0-7, 0-not connected, 1-connected

modbus_slave_connect

UINT8

Modbus slave connection status, 0-not connected, 1-connected

btn_box_stop_signal

UINT8

Emergency stop button signal

drag_alarm

UINT8

Drag warning

safety_door_alarm

UINT8

Safety door warning, 0 no warning, 1 safety door triggered

safety_plane_alarm

UINT8

Safety wall warning, 0 no warning, 1 entering safety wall

motion_alarm

UINT8

Motion warning, 0-no warning,
1-LIN instruction posture change too large,
2-TCP overspeed,
3-Collision occurred,
4-Axis 1 exceeded maximum speed,
5-Axis 2 exceeded maximum speed,
6-Axis 3 exceeded maximum speed,
7-Axis 4 exceeded maximum speed,
8-Axis 5 exceeded maximum speed,
9-Axis 6 exceeded maximum speed,
10-Axis 1 joint command and feedback deviation too large,
11-Axis 2 joint command and feedback deviation too large,
12-Axis 3 joint command and feedback deviation too large,
13-Axis 4 joint command and feedback deviation too large,
14-Axis 5 joint command and feedback deviation too large,
15-Axis 6 joint command and feedback deviation too large,
16-Singular posture,
17-LIN instruction motion speed adaptive,
18-Target speed adjustment timeout or incomplete,
19-Rotary insertion motion failed,
20-Helical insertion motion failed,
21-Linear insertion motion failed,
22-Surface positioning motion failed

interfere_alarm

UINT8

Interference area warning, 0 no warning, 1 entering interference area

udp_cmd_state

INT32

UDP connection status

weld_ready_state

UINT8

Welder ready status, 1: ready, 0: welder error

alarm_check_emerg_stop_btn

UINT8

Joint communication abnormality warning

ts_tm_cmd_com_error

UINT8

Torque system command error

ts_tm_state_com_error

UINT8

Torque system status error

ctrl_box_error

INT32

Control box error

safety_data_state

UINT8

Safety data status flag, 0 no abnormality, 1-abnormality

force_sensor_err_state

UINT8

Force sensor connection timeout fault; bit0-bit1 correspond to force sensor ID1-ID2

ctrl_open_lua_errcode

UINT8_4

Controller open protocol error code

servo_id

UINT8

Servo driver ID number

servo_errcode

INT32

Servo driver fault code

servo_state

INT32

Servo driver status

servo_actual_pos

DOUBLE

Servo current position

servo_actual_speed

DOUBLE

Servo current speed

servo_actual_torque

DOUBLE

Servo current torque

gripper_active

INT32

Gripper activation status

gripper_position

UINT8

Gripper position feedback (percentage)

gripper_speed

INT32

Gripper speed feedback (percentage)

gripper_current

INT32

Gripper current feedback (percentage)

gripper_temp

INT32

Gripper current temperature, unit °

gripper_voltage

INT32

Gripper current voltage, unit V

rotating_gripper_num

DOUBLE

Rotating gripper rotation count feedback

rotating_gripper_speed

UINT8

Rotating gripper rotation speed feedback (percentage)

rotating_gripper_tor

UINT8

Rotating gripper rotation torque feedback (percentage)

weld_break_off_state

UINT8

Welding interruption status: 0-welding not interrupted, 1-welding interrupted

weld_arc_state

UINT8

Welding arc status, 0-arc not interrupted, 1-arc interrupted

smarttool_state

UINT32

End-effector extended IO data (Smart-Tool)

tool_coord

DOUBLE_6

Current tool pose relative to end-effector

wobj_coord

DOUBLE_6

Current workpiece pose relative to base

exTool_coord

DOUBLE_6

Current external tool pose relative to tool

exAxis_coord

DOUBLE_6

Current external axis pose relative to base coordinate system

robot_state

UINT8

Robot running status,
1. Stopped; 2. Moving; 3. Paused; 4. Dragging

actual_flange_pos

DOUBLE_6

End-effector actual pose

target_TCP_cmpvel

DOUBLE_2

TCP command linear and angular velocity, unit mm/s, °/s

actual_TCP_cmpvel

DOUBLE_2

TCP actual linear and angular velocity, unit mm/s, °/s

tool_id

INT32

Tool number

wobj_id

INT32

Workpiece number

ft_sensor_raw_data

DOUBLE_6

End-effector force/torque - raw data in sensor coordinate system

ft_sensor_active

UINT8

Force/torque sensor activation status

gripper_motion_done

UINT8

Gripper motion completed

collision_state

UINT8

Collision detection status

trajectory_pnum

INT32

Current sequence number of discrete point motion

safety_stop0_state

UINT8

Safety stop SI0 signal status

safety_stop1_state

UINT8

Safety stop SI1 signal status

gripper_fault_id

UINT8

Faulty gripper number

gripper_fault

INT32

Gripper error number

ext_DI_state

UINT8_16

Extended DI

ext_DO_state

UINT8_16

Extended DO

ext_AI_state

INT32_4

Extended AI

ext_AO_state

INT32_4

Extended AO

rbt_enable_state

INT32

Driver enable completion status

joint_driver_torque

DOUBLE_6

Actual torque values of joints j1-j6, unit Nm

robot_time

INT32_7

Robot system time, year, month, day, hour, minute, second, millisecond

software_upgrade_state

INT32

Robot software upgrade status

end_lua_err_code

INT32

End button signal status

wide_voltage_ctrl_box_temp

DOUBLE

Wide voltage control box temperature, unit °

wide_voltage_ctrl_box_fan_current

INT32

Wide voltage control box fan current

last_servoJ_target

DOUBLE_6

Last servoJ target command pose

servoJ_cmd_num

INT32

ServoJ command count

strange_pos_flag

UINT8

Singular posture flag

alarm

UINT8

Warning, 0-no warning,
1-Shoulder joint configuration change,
2-Elbow joint configuration change,
3-Wrist joint configuration change,
4-RPY initialization failed,
5-WaitDI wait timeout,
6-WaitAI wait timeout,
7-WaitToolDI wait timeout,
8-WaitToolAI wait timeout,
9-Arc start success DI not configured,
10-WaitAuxDI wait timeout,
11-WaitAuxAI wait timeout,
12-Unreachable point in swing trajectory,
13-Conveyor tracking pick point calculation failed,
14-Joint torque sensor data abnormality

dr_alarm

UINT8

Driver warning, 0-no warning,
1-Axis 1 driver warning, resettable,
2-Axis 2 driver warning, resettable,
3-Axis 3 driver warning, resettable,
4-Axis 4 driver warning, resettable,
5-Axis 5 driver warning, resettable,
6-Axis 6 driver warning, resettable

alive_slave_num_error

UINT8

Active slave count fault, 0-no fault, 1-error, non-resettable

slave_com_error

UINT8_8

Slave communication fault, 0-no fault,
1-Slave offline,
2-Slave status inconsistent with set value,
3-Slave not configured,
4-Slave configuration error,
5-Slave initialization error,
6-Slave mailbox communication initialization error

cmd_point_error

UINT8

Command point fault, 0-no fault,
1-Joint command point error,
2-Linear target point error,
3-Arc intermediate point error,
4-Arc target point error,
5-Arc command point spacing too small,
6-Full circle/helix intermediate point 1 error,
7-Full circle/helix intermediate point 2 error,
8-Full circle/helix intermediate point 3 error,
9-Full circle/helix command point spacing too small,
10-TPD command point error,
11-TPD command tool does not match current tool,
12-TPD current command and next command start point deviation too large,
13-Internal/external tool switching error,
14-New helix start point error,
15-New spline curve command point error,
17-PTP joint command out of limit,
18-TPD joint command out of limit,
19-LINARC issued joint command out of limit,
20-Command overspeed in Cartesian space,
21-Torque command out of limit in joint space,
22-JOG joint command out of limit,
23-Axis 1 command speed out of limit in joint space,
24-Axis 2 command speed out of limit in joint space,
25-Axis 3 command speed out of limit in joint space,
26-Axis 4 command speed out of limit in joint space,
27-Axis 5 command speed out of limit in joint space,
28-Axis 6 command speed out of limit in joint space,
29-Joint feedback speed out of limit,
30-Joint command and feedback deviation too large,
31-DMP target point error (including tool mismatch),
32-TCP speed out of limit,
33-Next command joint configuration change,
34-Current command joint configuration change,
35-Joint speed out of limit in LIN command,
36-LIN command adaptive speed exceeds threshold,
37-Unreachable point in trajectory,
38-Unreachable point in trajectory - singular posture,
49-PTP and SPTP commands not allowed between ARCSTART and ARCEND,
50-PTP and SPTP commands not allowed between WEAVESTART and WEAVEEND,
51-Weave welding parameter error,
52-Weave welding command point spacing too small,
53-Unreachable point in swing trajectory - singular posture,
54-Unreachable point in swing trajectory - joint command out of limit,
55-Unreachable point in swing trajectory - planning exception (tool Z coincides with forward direction X angle),
56-Unreachable point in swing trajectory - planning exception (arc path point error),
65-Laser sensor command deviation too large,
66-Laser sensor command interrupted, seam tracking ended early,
81-External axis command speed out of limit,
82-External axis command and feedback deviation too large,
83-Extended peripheral (external axis/IO) communication interrupted,
84-Extended peripheral (external axis/IO) communication packet loss exception,
85-External axis 1 command speed out of limit in joint space,
86-External axis 2 command speed out of limit in joint space,
87-External axis 3 command speed out of limit in joint space,
88-External axis 4 command speed out of limit in joint space,
89-Extended peripheral (external axis/IO) Ethercat communication error,
90-Extended peripheral (external axis/IO) Canopen communication error,
97-Conveyor tracking - start point and reference point posture change too large,
113-Constant force control - X direction exceeds maximum adjustment distance,
114-Constant force control - Y direction exceeds maximum adjustment distance,
115-Constant force control - Z direction exceeds maximum adjustment distance,
116-Constant force control - RX direction exceeds maximum adjustment angle,
117-Constant force control - RY direction exceeds maximum adjustment angle,
118-Constant force control - RZ direction exceeds maximum adjustment angle,
119-External sensor data error,
120-Helical search motion failed,
121-Rotary insertion motion failed,
122-Linear insertion motion failed,
123-Surface positioning motion failed,
124-Abnormal dragging force, entering drag failed,
129-Exceeded maximum torque recording points,
130-Speed switching error,
131-Tool direction out of limit,
132-Momentum out of limit,
133-Power out of limit,
134-STL-Flash diagnostic abnormality,
135-STL-RAM diagnostic abnormality,
136-STL-CPU diagnostic abnormality,
137-Safety board II-ECAT safety data abnormality,
138-Axis 1 ECAT safety data abnormality,
139-Axis 2 ECAT safety data abnormality,
140-Axis 3 ECAT safety data abnormality,
141-Axis 4 ECAT safety data abnormality,
142-Axis 5 ECAT safety data abnormality,
143-Axis 6 ECAT safety data abnormality,
145-Abnormal communication between safety board and controller,
147-Focus following error,
148-Angular velocity out of limit,
149-Joint status word feedback abnormality

IO_error

UINT8

IO fault, 0-no fault,
1-Channel error, resettable,
2-Value error, resettable,
3-WaitDI wait timeout, resettable,
4-WaitAI wait timeout, resettable,
5-WaitAxleDI wait timeout, resettable,
6-WaitAxleAI wait timeout, resettable,
7-Channel configured function error, resettable,
8-Arc start timeout, resettable,
9-Arc end timeout, resettable,
10-Search timeout, resettable,
11-Conveyor IO detection timeout, resettable,
12-WaitAuxDI wait timeout, resettable,
13-WaitAuxAI wait timeout, resettable,
14-Wire search timeout, resettable

gripper_error

UINT8

Gripper fault, 0-no fault, 1-gripper motion timeout error, resettable

file_error

UINT8

Configuration file fault, 0-no fault,
1-zbt configuration file version error, initialization error - non-resettable,
2-zbt configuration file load failed, initialization error - non-resettable,
3-user configuration file version error, initialization error - non-resettable,
4-user configuration file load failed, initialization error - non-resettable,
5-exaxis configuration file version error, initialization error - non-resettable,
6-exaxis configuration file load failed, initialization error - non-resettable,
7-Robot model mismatch, need to reset - non-resettable,
8-dhpara configuration file version error, initialization error - non-resettable,
9-dhpara configuration file load failed, initialization error - non-resettable,
10-Robot model not set - non-resettable,
11-load configuration file version error, initialization error - non-resettable,
12-load configuration file load failed, initialization error - non-resettable,
13-speed configuration file version error, initialization error - non-resettable,
14-speed configuration file load failed, initialization error - non-resettable,
15-weavepara configuration file version error, initialization error - non-resettable,
16-weavepara configuration file load failed, initialization error - non-resettable

para_error

UINT8

Configuration parameter fault, 0-no fault,
1-Tool number out of limit error - resettable,
2-Positioning completion threshold error - resettable,
3-Collision level error - resettable,
4-Load weight error - resettable,
5-Load center of mass X error - resettable,
6-Load center of mass Y error - resettable,
7-Load center of mass Z error - resettable,
8-DI filter time error - resettable,
9-AxleDI filter time error - resettable,
10-AI filter time error - resettable,
11-AxleAI filter time error - resettable,
12-DI high/low level range error - resettable,
13-DO high/low level range error - resettable,
14-Workpiece number out of limit error - resettable,
15-External axis number out of limit error - resettable,
16-Conveyor tracking - encoder channel error - resettable,
17-Conveyor tracking - workpiece axis number error - resettable,
18-FR30L mounting method - non-standard mounting error - resettable

exaxis_out_slimit_error

UINT8

External axis soft limit fault, 0-no fault,
1-External axis 1 out of soft limit fault, resettable,
2-External axis 2 out of soft limit fault, resettable,
3-External axis 3 out of soft limit fault, resettable,
4-External axis 4 out of soft limit fault, resettable,
5-External axis 5 out of soft limit fault, resettable,
6-External axis 6 out of soft limit fault, resettable

dr_com_err

UINT8_6

Driver communication fault, 0-no fault, 1-fault

dr_err

UINT8

Driver fault, 0-no fault,
1-Axis 1 driver fault, non-resettable,
2-Axis 2 driver fault, non-resettable,
3-Axis 3 driver fault, non-resettable,
4-Axis 4 driver fault, non-resettable,
5-Axis 5 driver fault, non-resettable,
6-Axis 6 driver fault, non-resettable

out_sflimit_err

UINT8

Soft limit fault, 0-no fault,
1-Axis 1 out of soft limit fault, resettable,
2-Axis 2 out of soft limit fault, resettable,
3-Axis 3 out of soft limit fault, resettable,
4-Axis 4 out of soft limit fault, resettable,
5-Axis 5 out of soft limit fault, resettable,
6-Axis 6 out of soft limit fault, resettable

Table 1-2 Configuration Functions of Robot Input Control

Name

Data type

Description

speed_mask

UINT8

Global speed setting mask: 0-disable; 1- enable

speed

UINT8

Set the global speed (0-100)

std_DO_mask

UINT8

Control box standard DO output control mask (bit0 ~ bit7 indicates DO0 ~ DO7)

std_DO_box

UINT8

Control box standard DO output (bit0 ~ bit7 indicates DO0 ~ DO7)

cfg_DO_mask

UINT8

Control box configurable CO output mask (bit0 ~ bit7 indicates CO0 ~ CO7)

cfg_DO_box

UINT8

Control box Configurable with CO output (bit0 ~ bit7 indicates CO0 ~ CO7)

cfg_DO_tool_mask

UINT8

Control box standard tool DO output control mask (bit0 ~ bit1 indicates toolDO0 ~ toolDO1)

cfg_DO_tool

UINT8

Control box standard tool DO output (bit0 ~ bit1 indicates toolDO0 ~ toolDO1)

std_AO_mask

UINT8

Robot analog output control mask (bit0 ~ bit1 indicates control box AO0 ~ AO1;; Bit2 stands for tool AO0)

std_AO0_box

DOUBLE

Control box analog AO0 (0.0 ~ 4095.0)

std_AO1_box

DOUBLE

Control box analog AO1 (0.0 ~ 4095.0)

std_AO0_tool

DOUBLE

Tool analog AO1 (0.0 ~ 4095.0)

input_BIT_reg_8xX

UINT8_X

BIT-type robot input registers (8xX indicates the number of registers, if you need 16 BIT-type input registers, the actual name is “input_BIT_reg_8x2”, and the robot can support up to 128 bit-type registers)

input_INT_reg_X

INT32_X

INT robot input registers (X represents the number of registers, if you need 16 INT input registers, the actual name is “input_INT_reg_16”, and the robot can support up to 64 INT registers)

input_DOUBLE_reg_X

DOUBLE_X

DOUBLE robot input register (X represents the number of registers, if you need 16 DOUBLE input registers, the actual name is “input_DOUBLE_reg_16”, and the robot can support up to 64 DOUBLE registers)

Table 1-3 Correspondence between Data Types and Byte Length

Data type

Byte length

UINT8

1

INT32

4

DOUBLE

8

UINT8_X

1*X

INT32_X

4*X

DOUBLE_X

8*X