1. Introdução ao CNDE

O Protocolo de Troca de Dados Configurável em Rede (doravante denominado CNDE) para robôs colaborativos é uma forma pela qual o cliente controla o robô e obtém o feedback de estado do robô através da comunicação UDP.

A Tabela 1-1 é o conjunto de todos os estados do robô que podem ser obtidos pelo CNDE. O cliente pode selecionar arbitrariamente vários estados necessários da tabela e fazer com que o robô forneça o feedback de estado de acordo com um período de feedback definido.

Da mesma forma, o cliente também pode selecionar as combinações de funções de controle do robô necessárias da Tabela 1-2 para executar operações de controle do robô. Os dados de comunicação CNDE entre o cliente e o robô devem seguir um formato de quadro especificado. A porta de comunicação CNDE do robô é a 20006.

O uso da função CNDE do robô envolve principalmente os seguintes quatro passos:

① Configuração do conteúdo dos dados de entrada e saída: O cliente envia uma instrução de configuração de entrada ou saída para o robô, onde o conteúdo da instrução é uma série de nomes de funções de controle ou estado, como «std_DI_box, cfg_DI_box, motion_queue_len». Após o robô registrar e identificar esses nomes, ele retorna ao cliente os tipos de dados das funções correspondentes, como «UINT8, UINT8, INT32», indicando que a configuração foi bem-sucedida.

② Iniciar a saída de dados CNDE do robô: O cliente envia uma instrução para iniciar a saída de dados CNDE para o robô. O robô então começa a enviar os dados de estado do robô para o cliente via UDP na forma de um array de bytes (modo little-endian), de acordo com o período configurado.

③ Analisar os dados de estado do robô: O cliente recebe os dados de estado de feedback do robô em um loop e analisa os dados com base nos tipos de dados retornados pelo robô durante a configuração de saída e no comprimento de bytes correspondente a cada tipo de dados na Tabela 1-3, obtendo assim os valores reais de cada estado. Os dados de saída CNDE do robô suportam no máximo 4096 bytes, e o período de saída CNDE pode ser configurado entre 1 e 200 ms.

④ Enviar dados de controle do robô: O cliente monta o pacote de dados de controle com base nos tipos de dados retornados pelo robô durante a configuração de entrada e no comprimento de bytes correspondente a cada tipo de dados na Tabela 1-3, e envia via comunicação UDP para o robô. Após receber os dados de controle, o robô analisa os dados e executa as operações de controle. A entrada CNDE do robô suporta 256 receitas. O cliente pode configurar várias receitas de entrada conforme a necessidade e, ao enviar dados de entrada para o robô, deve especificar o número da receita correspondente aos dados atuais.

Tabela 1-1 Funções de Configuração de Saída do Robô

Nome

Tipo de Dado

Descrição

std_DI_box

UINT8

Entrada DI padrão do painel de controle (bit0 ~ bit7 representam DI0 ~ DI7)

cfg_DI_box

UINT8

Entrada CI configurável do painel de controle (bit0 ~ bit7 representam CI0 ~ CI7)

cfg_DI_tool

UINT8

Entrada DI da ferramenta configurável do painel de controle (bit0 ~ bit2 representam toolDI0 ~ toolDI1)

std_AI0_box

DOUBLE

Entrada analógica AI0 do painel de controle (0 ~ 4095)

std_AI1_box

DOUBLE

Entrada analógica AI1 do painel de controle (0 ~ 4095)

std_AI_tool

DOUBLE

Entrada analógica tool_AI0 da ferramenta de extremidade (0 ~ 4095)

run_up_time

DOUBLE

Tempo de funcionamento do robô desde a inicialização (s)

target_joint_pos

DOUBLE_6

Posição alvo das juntas 1-6 (°)

target_joint_vel

DOUBLE_6

Velocidade alvo das juntas 1-6 (°/s)

target_joint_acc

DOUBLE_6

Aceleração alvo das juntas 1-6 (°/s²)

target_joint_current

DOUBLE_6

Corrente alvo das juntas 1-6 (A)

target_joint_torque

DOUBLE_6

Torque alvo das juntas 1-6 (Nm)

actual_joint_pos

DOUBLE_6

Posição atual das juntas 1-6 (°)

actual_joint_vel

DOUBLE_6

Velocidade atual das juntas 1-6 (°/s)

actual_joint_current

DOUBLE_6

Corrente atual das juntas 1-6 (A)

actual_joint_torque

DOUBLE_6

Torque alvo das juntas 1-6 (Nm)

actual_TCP_pos

DOUBLE_6

Posição atual da ferramenta DKR (mm)

actual_TCP_vel

DOUBLE_6

Velocidade atual da ferramenta DKR (mm/s)

actual_TCP_force

DOUBLE_6

Força resultante na ferramenta DKR (N)

target_TCP_pos

DOUBLE_6

Posição alvo da ferramenta DKR (mm)

target_TCP_vel

DOUBLE_6

Velocidade alvo da ferramenta DKR (mm/s)

std_DO_box

UINT8

Saída DO padrão do painel de controle (bit0 ~ bit7 representam DO0 ~ DO7)

cfg_DO_box

UINT8

Saída CO configurável do painel de controle (bit0 ~ bit7 representam CO0 ~ CO7)

cfg_DO_tool

UINT8

Saída DO da ferramenta padrão do painel de controle (bit0 ~ bit1 representam toolDO0 ~ toolDO1)

std_AO0_box

DOUBLE

Saída analógica AO0 do painel de controle (0.0 ~ 4095.0)

std_AO1_box

DOUBLE

Saída analógica AO1 do painel de controle (0.0 ~ 4095.0)

std_AO_tool

DOUBLE

Saída analógica AO1 da ferramenta (0.0 ~ 4095.0)

robot_mode

UINT8

Modo do robô (0-automático; 1-manual)

collision_level

UINT8_6

Nível de colisão das juntas 1-6 (1 ~ 10)

speed_scaling_man

DOUBLE

Porcentagem de velocidade no modo manual (0 ~ 100)

speed_scaling_auto

DOUBLE

Porcentagem de velocidade no modo automático (0 ~ 100)

program_state

UINT8

Estado de execução do programa do robô (1-parado; 2-em movimento; 3-pausado; 4-arrastando)

line_number

INT32

Número da linha do programa em execução

payload

DOUBLE

Massa da carga (kg)

pay_cog

DOUBLE_3

Centro de gravidade da carga (x, y, z) (mm)

motion_queue_len

INT32

Comprimento atual da fila de movimento

ft_sensor_data

DOUBLE_6

Dados brutos do sensor de força

main_code

INT32

Código de falha principal

sub_code

INT32

Código de falha secundário

emergency_stop

UINT8

Estado de parada de emergência

motion_done

INT32

Estado de conclusão do movimento

timestamp_us

UINT64

Tempo do sistema do robô (us)

output_BIT_reg_8xX

UINT8_X

Registradores de saída do robô tipo BIT (8xX indica o número de registradores. Se você precisar de 16 registradores de saída tipo BIT, o nome real será: «output_BIT_reg_8x2». O robô suporta no máximo 128 registradores de saída tipo BIT)

output_INT_reg_X

INT32_X

Registradores de saída do robô tipo INT (X indica o número de registradores. Se você precisar de 16 registradores de saída tipo INT, o nome real será: «output_INT_reg_16». O robô suporta no máximo 64 registradores de saída tipo INT)

output_DOUBLE_reg_X

DOUBLE_X

Registradores de saída do robô tipo DOUBLE (X indica o número de registradores. Se você precisar de 16 registradores de saída tipo DOUBLE, o nome real será: «output_DOUBLE_reg_16». O robô suporta no máximo 64 registradores de saída tipo DOUBLE)

ft_sensor_data

DOUBLE_6

Dados do sensor de força

Tabela 1-2 Funções de Configuração de Controle de Entrada do Robô

Nome

Tipo de Dado

Descrição

speed_mask

UINT8

Máscara de configuração de velocidade global: 0-não efetivo; 1-efetivo

speed

UINT8

Definir velocidade global (0-100)

std_DO_mask

UINT8

Máscara de controle de saída DO padrão do painel de controle (bit0 ~ bit7 representam DO0 ~ DO7)

std_DO_box

UINT8

Saída DO padrão do painel de controle (bit0 ~ bit7 representam DO0 ~ DO7)

cfg_DO_mask

UINT8

Máscara de controle de saída CO configurável do painel de controle (bit0 ~ bit7 representam CO0 ~ CO7)

cfg_DO_box

UINT8

Saída CO configurável do painel de controle (bit0 ~ bit7 representam CO0 ~ CO7)

cfg_DO_tool_mask

UINT8

Máscara de controle de saída DO da ferramenta padrão do painel de controle (bit0 ~ bit1 representam toolDO0 ~ toolDO1)

cfg_DO_tool

UINT8

Saída DO da ferramenta padrão do painel de controle (bit0 ~ bit1 representam toolDO0 ~ toolDO1)

std_AO_mask

UINT8

Máscara de controle de saída analógica do robô (bit0 ~ bit1 representam AO0 ~ AO1 do painel de controle; bit2 representa AO0 da ferramenta)

std_AO0_box

DOUBLE

Saída analógica AO0 do painel de controle (0.0 ~ 4095.0)

std_AO1_box

DOUBLE

Saída analógica AO1 do painel de controle (0.0 ~ 4095.0)

std_AO0_tool

DOUBLE

Saída analógica AO1 da ferramenta (0.0 ~ 4095.0)

input_BIT_reg_8xX

UINT8_X

Registradores de entrada do robô tipo BIT (8xX indica o número de registradores. Se você precisar de 16 registradores de entrada tipo BIT, o nome real será: «input_BIT_reg_8x2». O robô suporta no máximo 128 registradores tipo BIT)

input_INT_reg_X

INT32_X

Registradores de entrada do robô tipo INT (X indica o número de registradores. Se você precisar de 16 registradores de entrada tipo INT, o nome real será: «input_INT_reg_16». O robô suporta no máximo 64 registradores tipo INT)

input_DOUBLE_reg_X

DOUBLE_X

Registradores de entrada do robô tipo DOUBLE (X indica o número de registradores. Se você precisar de 16 registradores de entrada tipo DOUBLE, o nome real será: «input_DOUBLE_reg_16». O robô suporta no máximo 64 registradores tipo DOUBLE)

Tabela 1-3 Relação entre Tipos de Dados e Comprimento de Bytes

Tipo de Dado

Comprimento (bytes)

UINT8

1

INT32

4

DOUBLE

8

UINT8_X

1*X

INT32_X

4*X

DOUBLE_X

8*X