ProtocoloMODBUSv1 0
ProtocoloMODBUSv1 0
ProtocoloMODBUSv1 0
MP-MERCURY MEDIANTE
PROTOCOLO MODBUS
Manual Técnico
Revisión del documento 1.0
Fecha: 29/06/2015
Nombre de fichero: Comunicación con Pantallas MP-MERCURY mediante Protocolo MODBUS. Revisión 1.0
ÍNDICE GENERAL
1. DESCRIPCIÓN
2.3.1. Ejemplos
Página 1 de 20
1. DESCRIPCIÓN
Con las Pantallas de MP Electronics, se puede interactuar mediante el protocolo MODBUS (tanto
en modo RTU como en modo TCP/IP). Este protocolo es muy utilizado en el entorno industrial y
fácilmente adaptable a muchos tipos de instrumentación, como por ejemplo los Controladores
Lógicos Programables (PLC).
El protocolo MODBUS en Modo RTU utiliza los silencios en la linea de transmisión para indicar
los inicios y finales del mensaje. Se considera un silencio el tiempo igual o mayor al necesario
para transmitir 3,5 bytes. Para cada velocidad de transmisión le corresponde un tiempo de
silencio especifico. Una vez realizada la transmisión de un mensaje, no se puede iniciar la
transmisión de otro hasta que no haya transcurrido el tiempo de silencio necesario (3,5 veces el
tiempo de transmisión de un byte).
Con este protocolo, la Pantalla trabaja en modo Esclavo. Una vez recibido un mensaje con la
dirección de la misma, se devolverá un mensaje con el resultado de la transmisión.
El protocolo MODBUS en Modo TCP/IP (en adelante MODBUS-TCP) es una variante del
Protocolo MODBUS para comunicaciones sobre redes TCP/IP, realizando las conexiones a
través del puerto TCP 502.
Página 2 de 20
Con este protocolo, la Pantalla trabaja en modo Esclavo para MODBUS (Servidor para TCP).
Las tramas son igual a las del protocolo MODBUS en modo RTU con las siguientes diferencias :
El campo ID (Dirección del Dispositivo) de la trama MODBUS-RTU es substituido por una
cabecera llamada Cabecera MBAP, los campos de la cual se detallan en la .
No hay CRC no ningún código de control de errores, dado que los protocolos de capas
inferiores se ocupan de tal tarea.
Una vez recibido un mensaje con la dirección de la misma, se devolverá un mensaje con el
resultado de la transmisión.
Página 3 de 20
2. OPCIONES DE COMUNICACIÓN MEDIANTE MODBUS CON
PANTALLAS
Las pantallas de MP Electronics soportan la Función 16 (10h) “Write Multiple Registers”, de
MODBUS. Los distintos modos de funcionamiento de la comunicación MODBUS se determinan
por las direcciones de registros a donde se envían los datos.
En este caso, los programas ejecutados deberán haber sido grabados en la pantalla con el
nombre: PRGM seguido del número (sin 0s a la izquierda).
Por ejemplo:
Programa 1: “PRGM1”.
Programa 3: “PRGM3”.
Programa 27: “PRGM27”.
Programa 149: “PRGM149”.
Número de Registros 1
Página 4 de 20
2.1.2. Ejecución de Programa por Nombre
En este caso, el campo de datos contiene el nombre del programa que se quiere ejecutar en
formato ASCII con un máximo de 8 caracteres y con un valor NULL que marca el final en caso
de tener menos.
Func. Dirección Num. Num. Datos Datos Datos Datos Datos Datos Datos Datos
Registro Registros Bytes Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8
10 00 80 00 04 08 4D 50 54 45 53 54 00 00
4D 50 54 45 53 54 00 00
'M' 'P' 'T' 'E' 'S' 'T' NULL NULL
Página 5 de 20
2.2. Opción 2: Ejecución del Programa enviado a la pantalla
Esta opción permite enviar el Script de un programa y que éste se ejecute de forma inmediata en
la pantalla. Los detalles del Script de DTPM se muestran en el Anexo 2.
2.2.1. Ejemplos.
Para los siguientes casos, se muestra como sería la PDU de MODBUS enviada:
Func. Dirección Num. Registros Num. Datos Datos Datos Datos Datos Datos
Registro Bytes Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6
10 01 00 00 03 06 04 F0 48 6F 6C 61
Ejemplo 2: PDU de MODBUS enviada para ejecutar un programa que muestre “Hola” en modo Inmediato
Datos Byte 1 Datos Byte 2 Datos Byte 3 Datos Byte 4 Datos Byte 5 Datos Byte 6
04 F0 48 6F 6C 61
Modo Inmediato 'H' 'o' 'l' 'a'
Página 6 de 20
Ejemplo 3: Ejecutar un programa que muestre el texto “V:” y la variable A.
Func. Dirección Num. Num. Datos Datos Datos Datos Datos Datos Datos Datos
Registro Registros Bytes Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8
10 01 00 00 04 08 04 F0 56 3A 20 03 AB 41
Ejemplo 3: PDU de MODBUS enviada para ejecutar un programa QUE MUESTRE “V: “ y la variable A
04 F0 56 3A 20 03 AB 41
Modo Inmediato 'V' ':' '' VAR 'A'
Ejemplo 4: Ejecutar un programa que muestre el texto “Hola a todos” en modo Inmediato
y con parpadeo de “a”:
Func. Dirección Num. Num. Datos Datos Datos Datos Datos Datos Datos Datos
Registro Registros Bytes Byte Byte Byte Byte Byte Byte Byte Byte
1 2 3 4 5 6 7 8
10 00 20 00 09 12 04 F0 48 6F 6C 61 20 03
Datos Datos Datos Datos Datos Datos Datos Datos Datos Datos
Byte Byte Byte Byte Byte Byte Byte Byte Byte Byte
9 10 11 12 13 14 15 16 17 18
A0 61 03 A0 20 74 6F 64 6F 73
Ejemplo 4: PDU de MODBUS enviada para ejecutar un programa que muestre “Hola a todos” con parpadeo de “a”
Página 7 de 20
Observando en detalle el campo de datos:
04 F0 48 6F 6C 61 20 03 A0
Modo Inmediato 'H' 'o' 'l' 'a' '' Blink
61 03 A0 20 74 6F 64 6F 73
Página 8 de 20
2.3. Opción 3: Modificación de Variables Internas de la Pantalla
Las Pantallas disponen de 26 Variables Internas que pueden representar números enteros o
decimales, así como texto de hasta 8 caracteres.
Las variables se numeran de la letra A a la Z (sin incluir la 'Ñ'). Las variables también se
numeran de 0 a 25 (A=0, B=1, C=2,… Z=25).
La función de modificar el valor de una variable de la pantalla permite enviar 2 palabras de datos
más una palabra para posición del punto decimal.
Se pueden enviar valor en formato Entero con o sin signo de 16 o 32 bits. La dirección de
registro 0202h (514) determina como serán interpretados los valores numéricos (con/sin signo &
16/32 bits).
Tabla 6: Formato de los valores numéricos en función del Registro 0202h (514)
Valor 3: Posición del punto decimal. Permite activar el punto decimal del valor enviado.
En la se indican los valores para cada posición del punto decimal.
Página 9 de 20
Direcciones de Registros
Variable
Página 10 de 20
Valor 3 Posición del punto decimal en la variable
0 00000000000
1 0000000000.0
2 000000000.00
3 00000000.000
4 0000000.0000
5 000000.00000
6 00000.000000
7 0000.0000000
8 000.00000000
9 00.000000000
10 0.0000000000
> 10 0.0000000000
Tabla 8: Posición del punto decimal para cada valor del registro correspondiente a “Valor 3”
2.3.1. Ejemplos
Para los siguientes casos, se muestra como sería la PDU de MODBUS enviada:
10 02 04 00 03 06 28 F9 00 00 00 00
Página 11 de 20
Ejemplo 6: Asignar el valor -10489 a la variable A
10 02 04 00 03 06 D7 07 00 00 00 00
10 02 02 00 0A 14 00 01 00 00 00 00 00 00
00 00 00 00 87 E5 00 00 00 04 00 00
10 02 02 00 0A 14 00 04 00 00 00 00 00 00
00 00 00 00 41 42 2D 31 32 2D 59 5A
Página 12 de 20
Recordemos que la PDU de MODBUS es la Unidad de Datos del Protocolo, y que ésta se
encapsula en la trama del protocolo, cuyo formato depende del Modo MODBUS (RTU o TCP/IP).
Por ejemplo, en caso de trabajar en modo MODBUS RTU, para el caso del ejemplo 5 y dirección
de la pantalla 01, la trama sería la siguiente:
ID PDU CRC
2
ID Func. Dirección Num. Num. Valor 1 Valor 2 Valor 3 CRC
Registro Registros Bytes
01 10 02 04 00 03 06 28 F9 00 00 00 00 36 D1
Ejemplo 9: Trama de MODBUS RTU enviada para asignar el valor 10489 a la variable A de la pantalla 01
En caso de trabajar en modo MODBUS-TCP, para el caso del ejemplo 5, la trama sería la
siguiente:
00 00 00 00 00 0D FF 10 02 04 00 03 06 28 F9 00 00 00 00
Ejemplo 10: Trama de MODBUS-TCP enviada para asignar el valor 10489 a la variable A de la pantalla
2
La Dirección MODBUS de la Pantalla coincide con su ID del Protocolo DTP (1 a 247)
Página 13 de 20
Anexo 1. Configuración por defecto de las Pantallas
Las pantallas de MP Electronics, en los parámetros que hacen referencia a las comunicaciones,
tienen al salir de fábrica la siguiente configuración.
Puerto Serie
TCP / IP
Dirección IP 192.168.1.100
Puerto TCP 53
Página 14 de 20
Anexo 2. Script DTPM
Para mandar programas a la Pantalla con la opción de ejecución inmediata. Cuando se ejecuta un
programa en el display, éste va decodificando cada código constituido por 2 bytes (1 byte
Pretoken y 1 byte Token), seguido de un texto. Cuando es interpretado un código, el público
puede observar cambios en la información del display.
Cada programa puede contener muchos códigos que se ejecutan secuencialmente, y pueden ser
de 4 tipos diferentes: DATO (parámetros de ejecución), MODO (los modos de aparición de los
textos en el display) TIEMPO (datos variables de tiempo y temperatura que se pueden añadir a
los textos) y EFECTO (alteran el contenido de los datos ya mostrados en el display con un
MODO).
Se aconseja que se coloquen los códigos DATO, MODO, TIEMPO y EFECTO, por este orden.
Los códigos de carácter van del 0 al 255 y se corresponden con la codificación Windows-1252
(Extensión de ISO-8859-1) aunque solo son visibles a partir del espacio en blanco (0x20).
Variable < n > Varias cifras formateadas que A–Z 0x03 0xAB
se pueden actualizar
Tipo de letra < n > Tipos de letra (según modelo) 0 – 99 0x03 0xC1
Espera Modo < n > Tiempo de espera entre modos 4 – 99 0x03 0xC5
Página 15 de 20
DATO DESCRIPCION n Pretoken Token
Día evento < x > Fecha destino para el evento 0x03 0xCC
Alineación < n > Alineación del texto en la línea 0: Centro 0x03 0xCD
o ventana
1 : Izquierda
2 : Derecha
Valor 0 es AUTOMATICO:
Brillo en función de luz 0 para
ambiente (solo en caso de AUTOMÁTICO
disponer de sensor de luz)
Página 16 de 20
TIEMPO DESCRIPCION Pretoken Token
Diferencia: días Días que faltan para la fecha del evento 0x01 0xA4
Diferencia: Semanas Semanas que faltan para la fecha del evento 0x01 0xA5
Diferencia: Meses Meses que faltan para la fecha del evento 0x01 0xA6
Diferencia: Minutos Horas que faltan para la fecha del evento 0x01 0xAC
Diferencia: Segundos Segundos que faltan para la fecha del evento 0x01 0xAD
Página 17 de 20
Anexo 3. Representación de variables en Pantallas
Para representar las variables hace falta insertar el Pretoken DATO (03h) seguido del Token VAR
(ABh) y después el nombre de una de las 26 variables [A,Z] (en mayúscula y sin incluir la Ñ) sin
ningún espacio en medio. Las variables se ponen a 0 si se les asigna este valor o cuando se
inicializa la pantalla. En caso de apagar, o desconectar la corriente, las variables conservarán su
valor mientras dure la batería interna. Tampoco se alterarán si se para o vuelve a empezar la
ejecución. Las variables tienen una precisión de 16 dígitos, es decir, se pueden mostrar 16 dígitos
(sumando los de antes y después de la coma) sin pérdida de precisión, en caso que se muestren
más de 16, los dígitos menos significativos diferirán del valor real.
Como el formateo por defecto de una variable es con 6 dígitos después de la coma, puede ser
incómodo representar números enteros con tantos decimales. Se puede formatear la variable
añadiendo el número de dígitos totales y el número de dígitos después de la coma, de la forma:
Ejemplos:
VAR9.0 → ________1
1.000000000
Página 18 de 20
REVISIONES
Página 19 de 20