Ir al contenido principal

Apéndice A Definición de registro Modbus

Maximiliano Vidal avatar
Escrito por Maximiliano Vidal
Actualizado hace más de un mes

1 Introducción a Modbus

Modbus es un protocolo de comunicación en serie. Mediante este protocolo, el robot puede comunicarse con dispositivos externos. Al controlar el robot mediante dispositivos externos como los PLC, el dispositivo externo actúa como una estación maestra Modbus y el robot como una estación esclava Modbus.

De acuerdo con el protocolo Modbus, las direcciones de Modbus asignadas por el robot colaborativo de seis ejes Dobot son las siguientes:

  • 00001-09999: Registro de bobina, el valor solo admite 0 o 1, se utiliza para controlar el robot, se puede leer y escribir.

  • 10001-19999: Registro de contacto, el valor solo admite 0 o 1, utilizado para obtener el estado del robot, solo lectura.

  • 30001-39999: Registro de entrada, el valor máximo admite números de coma flotante de doble precisión de 64 bits, que se utilizan para obtener datos de retroalimentación en tiempo real del robot, de solo lectura.

  • 40001-49999: Registro de retención, el valor máximo admite números de coma flotante de doble precisión de 64 bits, utilizados para la interacción del robot PLC, legibles y escribibles.

Los códigos de función Modbus correspondientes a diversos tipos de registros siguen el protocolo Modbus estándar:

Tipo de registro

Leer registro

Escribir un registro

Escribir varios registros

Registro de coil

01

05

0F

Registro de contactos

02

-

-

Registro de entrada

04

-

-

Registro de retención

03

06

10

El robot proporciona dos mapas para el acceso de dispositivos externos. Se puede acceder a map1 a través de los puertos 502 (Modbus-TCP) y 503 (RTU-over-TCP), y se puede acceder a map2 a través de los puertos 1502 (Modbus-TCP) y 1503 (RTU-over-TCP).

El sistema del robot utiliza algunas direcciones de map1 por defecto. Para obtener más información, consulte la definición de registro siguiente. map2 actualmente está vacío y se puede utilizar según las necesidades de los usuarios.

2 Registro de bobinas (mapa1, robot de control)

Dirección de PLC

Dirección de script (Get/SetCoils)

Tipo de registro

Función

00001

0

Bit

Iniciar

00002

1

Bit

Detener

00003

2

Bit

Poner en pausa

00004

3

Bit

Activar

00005

4

Bit

Desactivar

00006

5

Bit

Borrar alarma

00007

6

Bit

Entrar en arrastre

00008

7

Bit

Salir de arrastre

00009

8

Bit

Cambiar al modo automático

00010

9

Bit

Cambiar al modo manual

00011~01025

10~1024

Bit

Direcciones reservadas

01025~09999

1024~9998

Bit

Personalizado

3 Definición del registro de contactos (mapa1, estado del robot)

Dirección de PLC

Dirección de script (GetInBits)

Tipo de registro

Función

10001

0

Bit

Estado de funcionamiento

10002

1

Bit

Estado de parada

10003

2

Bit

Estado de pausa

10004

3

Bit

Estado de origen de seguridad

10005

4

Bit

Estado de pausa de piel de seguridad

10006

5

Bit

Estado de inactividad

10007

6

Bit

Estado de encendido

10008

7

Bit

Estado de activación

10009

8

Bit

Estado de alarma

10010

9

Bit

Estado de colisión

10011

10

Bit

Entrar en estado de arrastre

10012~19999

11~9998

Bit

No definido

4 Definición del registro de entrada (mapa1, datos de retroalimentación del robot en tiempo real)

Las funciones de registro de las direcciones PLC 30001~30999 y 31722~39999 no están definidas (excepto 32001, que almacena el código SN del controlador tipo U16). El orden de los bytes se invierte según el formato little-endian.

Dirección de PLC

Tipo de datos

Número

Tamaño de byte

Dirección de script (GetInRegs)

Tipo

Función

31000

unsigned short

1

2

999

U16

Validez de datos

31001

unsigned short

1

2

1000

U16

Longitud total de bytes del mensaje

31002~31004

-

-

-

1001~1003

-

Direcciones reservadas

31005~31008

uint64

1

8

1004~1007

U64

Entrada numérica, ver Instrucciones DI/DO

31009~31012

uint64

1

8

1008~1011

U64

Salida digital, ver Instrucciones DI/DO

31013~31016

uint64

1

8

1012~1015

U64

31017~31020

uint64

1

8

1016~1019

U64

Marca de tiempo de Unix (en ms)

31021~31024

-

-

-

1020~1023

-

Direcciones reservadas

31025~31028

uint64

1

8

1024~1027

U64

Valor estándar de prueba de estructura de memoria
0x0123 4567 89AB CDEF

31029~31032

-

-

-

1028~1031

-

Direcciones reservadas

31033~31036

double

1

8

1032~1035

F64

Relación de velocidad

31037~3104

-

-

-

1036~1039

-

Direcciones reservadas

31041~31044

double

1

8

1040~1043

F64

Voltaje de la placa de control

31045~31048

double

1

8

1044~1047

F64

Voltaje del robot

31049~31052

double

1

8

1048~1051

F64

Corriente del robot

31053~31096

-

-

-

1052~1095

-

Direcciones reservadas

31097~31120

double

6

48

1096~1119

F64

Posición de la articulación objetivo

31121~31144

double

6

48

1120~1143

F64

Velocidad de la articulación objetivo

31145~31168

double

6

48

1144~1167

F64

Aceleración de la articulación objetivo

31169~31192

double

6

48

1168~1191

F64

Corriente de la articulación objetivo

31193~31216

double

6

48

1192~1215

F64

Par de la articulación objetivo

31217~31240

double

6

48

1216~1239

F64

Posición real de la articulación

31241~31264

double

6

48

1240~1263

F64

Velocidad real de la articulación

31265~31288

double

6

48

1264~1287

F64

Corriente real de la articulación

31289~31312

double

6

48

1288~1311

F64

Valor de fuerza del sensor TCP
(Calculado a través de fuerzas de seis dimensiones)

31313~31336

double

6

48

1312~1335

F64

Coordenada cartesiana real de TCP

31337~31360

double

6

48

1336~1359

F64

Velocidad cartesiana real de TCP

31361~31384

double

6

48

1360~1383

F64

Valor de fuerza TCP
(Calculado a partir de la corriente conjunta)

31384~31408

double

6

48

1384~1407

F64

Coordenada cartesiana objetivo de TCP

31409~31432

double

6

48

1408~1431

F64

Velocidad cartesiana objetivo de TCP

31433~31456

double

6

48

1432~1455

F64

Temperatura de la articulación

31456~31480

double

6

48

1456~1479

F64

Modo de control de articulación.
8: Modo de posición;
10: modo de torsión

31481~31504

double

6

48

1480~1503

F64

Voltaje de la articulación

31505~31506

-

-

-

1504~1505

-

Direcciones reservadas

31507

char

1

1

Byte bajo 1506

I8

Sistema de coordenadas del usuario

31507

char

1

1

Byte alto 1506

I8

Sistema de coordenadas de la herramienta

31508

char

1

1

Byte bajo 1507

I8

Etiqueta de ejecución de cola de algoritmos

31508

char

1

1

Byte alto 1507

I8

Etiqueta de pausa de cola de algoritmos

31509

char

1

1

Byte bajo 1508

I8

Relación de velocidad de la articulación

31509

char

1

1

Byte alto 1508

I8

Relación de aceleración de la articulación

31510

char

1

1

Byte bajo 1509

I8

Relación de variación de aceleración de la articulación

31510

char

1

1

Byte alto 1509

I8

Relación de velocidad de posición cartesiana

31511

char

1

1

Byte bajo 1510

I8

Relación de velocidad de postura cartesiana

31511

char

1

1

Byte alto 1510

I8

Relación de aceleración de posición cartesiana

31512

char

1

1

Byte bajo 1511

I8

Relación de aceleración de postura cartesiana

31512

char

1

1

Byte alto 1511

I8

Relación de variación de aceleración de posición cartesiana

31513

char

1

1

Byte bajo 1512

I8

Relación de variación de aceleración de postura cartesiana

31513

char

1

1

Byte alto 1512

I8

Estado del freno del robot; consulte para obtener más detallesDescripción del estado del freno

31514

char

1

1

Byte bajo 1513

I8

Estado de activación del robot

31514

char

1

1

Byte alto 1513

I8

Estado de arrastre del robot

31515

char

1

1

Byte bajo 1514

I8

Estado de funcionamiento del robot

31515

char

1

1

Byte alto 1514

I8

Estado de alarma del robot

31516

char

1

1

Byte bajo 1515

I8

Estado de desplazamiento por impulsos del robot

31516

char

1

1

Byte alto 1515

I8

Tipo de máquina, consulteDescripción del tipo de robot

31517

char

1

1

Byte bajo 1516

I8

Señal de arrastre de tablero de botones

31517

char

1

1

Byte alto 1516

I8

Señal de activación de tablero de botones

31518

char

1

1

Byte bajo 1517

I8

Señal de registro de tablero de botones

31518

char

1

1

Byte alto 1517

I8

Señal de reproducción de tablero de botones

31519

char

1

1

Byte bajo 1518

I8

Señal de control de pinza de tablero de botones

31519

char

1

1

Byte alto 1518

I8

Estado en línea de fuerza de seis dimensiones

31520

char

1

1

1519 bytes bajos

I8

Estado de colisión

31520

char

1

1

1519 bytes altos

I8

(Piel de seguridad) El antebrazo está cerca del estado de pausa.

31521

char

1

1

1520 bytes bajos

I8

(Piel de seguridad) J4 está cerca del estado suspendido

31521

char

1

1

1520 bytes altos

I8

(Piel de seguridad) J5 está cerca del estado suspendido

31522

char

1

1

1521 bytes bajos

I8

(Piel de seguridad) J6 está cerca del estado suspendido

31522

char

1

1

1521 bytes altos

I8

Direcciones reservadas

31523~31552

-

-

-

1522~1551

-

Direcciones reservadas

31553~31556

double

1

8

1552~1555

F64

Direcciones reservadas

31557~31560

uint64

1

8

1556~1559

U64

ID de cola de algoritmo actual

31561~31584

double

6

48

1560~1583

F64

Par real

31585~31588

double

1

8

1584~1587

F64

Peso de la carga (kg)

31589~31592

double

1

8

1588~1591

F64

Distancia excéntrica en dirección X (mm)

31593~31596

double

1

8

1592~1595

F64

Distancia excéntrica en dirección Y (mm)

31597~31600

double

1

8

1596~1599

F64

Distancia excéntrica en dirección Z (mm)

31601~31624

double

6

48

1600~1623

F64

Valores de coordenadas del usuario

31625~31648

double

6

48

1624~1647

F64

Valores de coordenadas de la herramienta

31649~31652

double

1

8

1648~1651

F64

Índice de ejecución de reproducción de trayectoria

31653~31676

double

6

48

1652~1675

F64

Valor sin procesar actual de datos de fuerza de seis dimensiones

31677~31692

double

4

32

1676~1691

F64

[qw,qx,qy,qz] cuaternión objetivo

31693~31708

double

4

32

1692~1707

F64

[qw,qx,qy,qz] cuaternión real

31709

unsigned short

1

2

1708

U16

Estado manual/automático.
1: Manual
2: modo automático
0: el cambio de modo no está habilitado

31710~31721

double

1

24

1709~1720

F64

Direcciones reservadas

1440

Total de 1440 bytes

Descripción del valor de realimentación del parámetro de movimiento

Si los parámetros de movimiento (velocidad, aceleración, etc.) se configuran por separado en el proyecto, los valores de retroalimentación relevantes no se actualizarán inmediatamente, sino que hasta el robot ejecute el siguiente comando de movimiento.

Instrucciones DI/DO

Cada DI/DO ocupa 8 bytes, cada byte tiene 8 bits (binario) y puede representar el estado de hasta 64 puertos de DI/DO. Cada byte de bajo a alto y cada bit representan un estado de terminal. 1 significa que el terminal correspondiente está en ON y 0 significa que el terminal correspondiente está en OFF o que no hay ningún terminal correspondiente.

Por ejemplo, el primer byte de DI es 0x01, que en binario se representa como 00000001. Cuando se lee desde el bit menos significativo al más significativo, cada bit corresponde al estado de D1_1 a DI_8. En este caso, DO_1 está establecido en ON, mientras que las 7 DI restantes están establecidas en OFF.

El segundo byte es 0x02, que en binario se representa como 00000010. Cuando se lee desde el bit menos significativo al más significativo, cada bit corresponde al estado de D1_9 a DI_16. En este caso, DI_10 está establecido en ON, mientras que las 7 DI restantes están establecidas en OFF.

Los bytes posteriores siguen este patrón. Dependiendo del armario de control, el número de terminales de E/S varía. Los bits binarios más allá del número de terminales de E/S se rellenan con 0.

Descripción del modo robot

Valor

Definición

Descripción

1

ROBOT_MODE_INIT

Estado de inicialización

2

ROBOT_MODE_BRAKE_OPEN

Cualquier liberación del freno de la articulación

3

ROBOT_MODE_POWEROFF

Estado de apagado del brazo robótico

4

ROBOT_MODE_DISABLED

No activado (sin liberación del freno)

5

ROBOT_MODE_ENABLE

Activado e inactivo

6

ROBOT_MODE_BACKDRIVE

Modo de arrastre

7

ROBOT_MODE_RUNNING

Estado de ejecución (proyecto, movimiento de cola TCP, etc.)

8

ROBOT_MODE_SINGLE_MOVE

Estado de movimiento único (desplazamiento por impulsos, RunTo, etc.)

9

ROBOT_MODE_ERROR

Alarmas no borradas. Este estado tiene la prioridad más alta. Independientemente del estado del brazo robótico, devuelve 9 cuando hay una alarma.

10

ROBOT_MODE_PAUSE

Estado de pausa del proyecto

11

ROBOT_MODE_COLLISION

Estado de activación de la detección de colisión

Descripción del estado del freno

Este byte expresa el estado del freno de cada articulación en bits. 1 significa que se ha liberado el freno de esa articulación. El número de bit se corresponde con la articulación como se muestra en la siguiente tabla:

Número de bit

Significado

7

Direcciones reservadas

6

Direcciones reservadas

5

Articulación 1

4

Articulación 2

3

Articulación 3

2

Articulación 4

1

Articulación 5

0

Articulación 6

Ejemplo:

  • 0x01 (00000001): Se libera el freno de la articulación 6

  • 0x02 (00000010): Se libera el freno de la articulación 5

  • 0x03 (00000011): Se liberan los frenos de las articulaciones 5 y 6

  • 0x03 (00000100): Se libera el freno de la articulación 4

Descripción del tipo de robot

Valor

Modelo

3

CR3

5

CR5

7

CR7

10

CR10

12

CR12

16

CR16

101

Nova 2

103

Nova 5

113

CR3A

115

CR5A

117

CR7A

120

CR10A

122

CR12A

126

CR16A

130

CR20A

150

Magician E6

5 Definición del registro de retención (mapa1, interacción robot-PLC)

Dirección de PLC

Dirección de script (Get/SetHoldRegs)

Tipo de registro

Función

40001~41024

0~1023

-

Direcciones reservadas

41025~49999

1024~9998

-

Personalizado

¿Ha quedado contestada tu pregunta?