Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

ProtocoloMODBUSv1 0

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 20

COMUNICACIÓN CON PANTALLAS

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

1.1. Protocolo MODBUS-RTU

1.2 Protocolo MODBUS-TCP/IP

2. OPCIONES DE COMUNICACIÓN MEDIANTE MODBUS CON PANTALLAS

2.1. Opción 1: Ejecución de Programa previamente gravado en la pantalla

2.1.1. Ejecución de Programa por Número

2.1.2. Ejecución de Programa por Nombre

2.2. Opción 2: Ejecución del Programa enviado a la pantalla

2.3. Opción 3: Modificación de Variables Internas de la Pantalla

2.3.1. Ejemplos

Anexo 1. Configuración por defecto de las Pantallas

Anexo 2. Script DTPM

Anexo 3. Representación de variables en Pantallas

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).

1.1. Protocolo MODBUS-RTU

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.

1.2 Protocolo MODBUS-TCP/IP

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.

Figura 1: Esquema de niveles de comunicación para comunicaciones MODBUS-TCP

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.

La estructura de la trama es la siguiente:

Figura 2: Trama del protocolo MODBUS-TCP

La cabecera MBAP (7 Bytes) contiene los siguientes campos:

Campo Bytes Descripción Cliente Servidor


(Master) (Slave)
Transaction 2 Número de la transacción Inicializado por Reenviado
Identifier Cliente por Servidor

Protocol 2 0 = Protocolo MODBUS Inicializado por Reenviado


Identifier Cliente por Servidor

Length 2 Numero de Bytes de la trama que siguen Inicializado por Inicializado


a éste (de “Unit Identifier” al final) Cliente por Servidor

Unit Identifier 1 Siempre a 255 o Unit ID Pantalla Inicializado por Reenviado


Cliente por Servidor

Tabla 1: Cabecera MBAP del Protocolo MODBUS-TCP

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.

2.1. Opción 1: Ejecución de Programa previamente gravado en la pantalla

La orden de ejecutar un programa previamente gravado en la pantalla puede realizarse a través


de dos direcciones de registros.

2.1.1. Ejecución de Programa por Número

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”.

Para detener el programa en ejecución se debe seleccionar el programa número 0.

Dirección Inicial 0200h

Número de Registros 1

Datos Numero del Programa

Tabla 3: Opción 1.1 → Ejecución de Programa por Número

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.

Dirección Inicial 0080h

Número de Registros 1a4

Datos Nombre del Programa en ASCII


terminado con un NULL

Tabla 4: Opción 1.2 → Ejecución de Programa por Nombre

Por ejemplo, si queremos ejecutar el programa MPTEST gravado en origen en la pantalla, la


PDU de MODBUS enviada serí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 00 80 00 04 08 4D 50 54 45 53 54 00 00

Ejemplo 1: PDU de MODBUS enviada para ejecutar el programa “MPTEST”

Observando en detalle el campo de datos:

Datos Datos Datos Datos Datos Datos Datos Datos


Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8

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.

Dirección Inicial 0100h

Número de Registros 1 a 124

Datos Script del Programa terminado con


un NULL

Tabla 5: Opción 2 → Ejecución del Programa enviado a la pantalla

2.2.1. Ejemplos.

Para los siguientes casos, se muestra como sería la PDU de MODBUS enviada:

 Ejemplo 2: Ejecutar un programa que muestre el texto “Hola” en modo Inmediato:

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

Observando en detalle el campo de datos:

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

Observando en detalle el campo de datos:

Datos Datos Datos Datos Datos Datos Datos Datos


Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8

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:

Datos Datos Datos Datos Datos Datos Datos Datos Datos


Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9

04 F0 48 6F 6C 61 20 03 A0
Modo Inmediato 'H' 'o' 'l' 'a' '' Blink

Datos Datos Datos Datos Datos Datos Datos Datos Datos


Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Byte 17 Byte 18

61 03 A0 20 74 6F 64 6F 73

'a' Blink '' 't' 'o' 'd' 'o' 's'

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).

Para el formato de representación de las variables en la pantalla, referir-se al Anexo 3.

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).

Registro 0202h Formato Valor Mínimo Valor Máximo

01 Entero 16 bits con signo -32768 +32767

1 Entero 16 bits sin signo 0 65535

2 Entero 32 bits con signo -2147483647 +2147483647

3 Entero 32 bits sin signo 0 4294967295

4 Formato Texto 1 carácter 8 caracteres

Tabla 6: Formato de los valores numéricos en función del Registro 0202h (514)

La relación de direcciones de las 26 variables se muestran en la tabla siguiente, donde para


cada variable y tipo de dato (con o sin signo):

 Valor 1: Word (16 bits) Bajo.

 Valor 2: Word (16 bits) Alto. (se ignora si el formato es 16 bits)

 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.

1 Por defecto el formato es Entero de 16 bits con signo

Página 9 de 20
Direcciones de Registros
Variable

Valor 1 Valor 2 Valor 3


A 0 0204 0205 0206 0207
B 1 0208 0209 020A 020B
C 2 020C 020D 020E 020F
D 3 0210 0211 0212 0213
E 4 0214 0215 0216 0217
F 5 0218 0219 021A 021B
G 6 021C 021D 021E 021F
H 7 0220 0221 0222 0223
I 8 0224 0225 0226 0227
J 9 0228 0229 022A 022B
K 10 022C 022D 022E 022F
L 11 0230 0231 0232 0233
M 12 0234 0235 0236 0237
N 13 0238 0239 023A 023B
O 14 023C 023D 023E 023F
P 15 0240 0241 0242 0243
Q 16 0244 0245 0246 0247
R 17 0248 0249 024A 024B
S 18 024C 024D 024E 024F
T 19 0250 0251 0252 0253
U 20 0254 0255 0256 0257
V 21 0258 0259 025A 025B
W 22 025C 025D 025E 025F
X 23 0260 0261 0262 0263
Y 24 0264 0265 0266 0267
Z 25 0268 0269 026A 026B

Tabla 7: Relación de Registros correspondientes a las Variables Internas de las Pantallas.


Valores en Hexadecimal

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”

Veamos algunos ejemplos concretos.

2.3.1. Ejemplos

Para los siguientes casos, se muestra como sería la PDU de MODBUS enviada:

 Ejemplo 5: Asignar el valor 10489 a la variable A

Func. Dirección Num. Num. Valor 1 Valor 2 Valor 3


Registro Registros Bytes

10 02 04 00 03 06 28 F9 00 00 00 00

Ejemplo 5: PDU de MODBUS enviada para asignar el valor 10489 a la variable A

Página 11 de 20
 Ejemplo 6: Asignar el valor -10489 a la variable A

Func. Dirección Num. Num. Valor 1 Valor 2 Valor 3


Registro Registros Bytes

10 02 04 00 03 06 D7 07 00 00 00 00

Ejemplo 6: PDU de MODBUS enviada para asignar el valor -10489 a la variable A

 Ejemplo 7: Asignar el valor 3,4789 a la variable B

Func. Dirección Num. Num. Formato Datos Datos Variable A Variable A


Registro Registros Bytes Byte Byte Valor 1 Valor 2
3 4

10 02 02 00 0A 14 00 01 00 00 00 00 00 00

Variable A Variable A Variable B Variable B Variable B Variable B


Valor 3 Valor 4 Valor 1 Valor 2 Valor 3 Valor 4

00 00 00 00 87 E5 00 00 00 04 00 00

Ejemplo 7: PDU de MODBUS enviada para asignar el valor 3,4789 a la variable B

 Ejemplo 8: Asignar el texto “AB-12-YZ” a la variable B

Func. Dirección Num. Num. Formato Datos Datos Variable A Variable A


Registro Registros Bytes Byte Byte Valor 1 Valor 2
3 4

10 02 02 00 0A 14 00 04 00 00 00 00 00 00

Variable A Variable A Variable B Variable B Variable B Variable B


Valor 3 Valor 4 Valor 1 Valor 2 Valor 3 Valor 4

00 00 00 00 41 42 2D 31 32 2D 59 5A

Ejemplo 8: PDU de MODBUS enviada para asignar el texto “AB-12-YZ” a la variable B

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:

MBAP Header PDU


TID Protocol Length Unit Func Dirección Num. Num. Valor 1 Valor 2 Valor 3
ID ID Registro Registros Bytes

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.

PARÁMETRO DE CONFIGURACIÓN Valor por defecto


Dirección del Dispositivo 1

Dirección LocalCast del Dispositivo 0

Puerto Serie

Puerto Serie: Bauds 9600

Puerto Serie: Data Bits 8

Puerto Serie: Stop Bits 1

Puerto Serie: Paridad Sin Paridad

TCP / IP

Dirección IP 192.168.1.100

Máscara de Red 255.255.255.0

Puerto TCP 53

Puerta de Enlace 192.168.1.1

Servidor DNS Primario 192.168.1.100

Servidor DNS Secundario 192.168.1.100

Direccionamiento IP Dinámico. Cliente DHCP Habilitado NO

Tabla 10: Configuración por defecto de las pantallas de MP Electronics

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 programas terminan con un byte NULL (0x00).

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).

DATO DESCRIPCION n Pretoken Token

Página Nueva página del Script 0x03 0x20

Blink Parpadea el texto que se 0x03 0xA0


encuentre entre 2 Blink

Color < n > A partir de aquí se cambia el 0–7 0x03 0xA1


color del texto

Gráfico < n > Aparece un gráfico 0 – 99 0x03 0xA4

Variable < n > Varias cifras formateadas que A–Z 0x03 0xAB
se pueden actualizar

Grosor < n > Cada columna ocupará n 1–8 0x03 0xC0


columnas de grosor

Tipo de letra < n > Tipos de letra (según modelo) 0 – 99 0x03 0xC1

Velocidad Modo < n > Velocidad del correr 1 – 99 0x03 0xC4

Espera Modo < n > Tiempo de espera entre modos 4 – 99 0x03 0xC5

(en cuartos de segundo)

Página 15 de 20
DATO DESCRIPCION n Pretoken Token

Línea < n , h > Nos situamos en la línea n de 1 – Líneas 0x03 0xC7


la pantalla. El texto que viene a Totales
continuación se situará en la
línea correspondiente.

El campo h indica si la línea es


simple (1) o doble (2).

Sincronismo Al principio de grupo de líneas 0x03 0xC9


(ejecución en paralelo)

No sincronismo Final de un grupo de líneas 0x03 0xCA


(ejecución en paralelo)

Idioma < n > Cambia el idioma de los 0x03 0xCB


tiempos

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

Brillo < n > Establecemos el brillo del 1 – 100 % 0x03 0xD0


display como un porcentaje
respecto al brillo máximo.

Valor 0 es AUTOMATICO:
Brillo en función de luz 0 para
ambiente (solo en caso de AUTOMÁTICO
disponer de sensor de luz)

MODO DESCRIPCION Pretoken Token

Entrada Izquierda El texto entra por la izquierda 0x04 0xD0

Correr El texto se desplaza de derecha a izquierda 0x04 0xE0

Sube El texto sube 0x04 0xE5

Baja El texto baja 0x04 0xE6

Inmediato El texto aparece inmediatamente 0x04 0xF0

Página 16 de 20
TIEMPO DESCRIPCION Pretoken Token

Año Dos cifras que indican el año 0x01 0x96

Número de mes Dos cifras que indican el mes 0x01 0x97

Mes Nombre del mes 0x01 0x98

Número de día Dos cifras que indican el día 0x01 0x99

Día Nombre del día 0x01 0x9A

Horas 2 cifras que indican la hora del día 0x01 0x9B

Minutos 2 cifras que indican el minuto del día 0x01 0x9C

Segundos 2 cifras que indican los segundos de la hora 0x01 0x9D

Temperatura Temperatura 0x01 0x9F

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

Hora (HH:MM) 5 caracteres Hora : Minutos 0x01 0xA7

Temperatura (ºC) 4 caracteres Temperatura y los símbolos ‘ º ’ y ‘C’ 0x01 0xA8

Día Abreviado Día de la semana abreviado 0x01 0xA9

Mes Abreviado Nombre del mes abreviado 0x01 0xAA

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:

VAR6.2B → Si la variable vale por ejemplo 1, el resultado será: __1.00

(los dos underscores representan espacios)

VAR9.0 → ________1

VAR09.0 → Se puede ajustar a la izquierda con ceros en vez de espacios,

colocando un cero 000000001

VAR+9.0 → También se puede indicar la representación con signo _______+1

VAR-9.0 → Poniendo el signo menos se ajusta por la izquierda 1_______

VAR9B → Puede ponerse solo el ajuste de antes de la coma ________1

VAR.9B → También puede ponerse solo el ajuste de después de la coma

1.000000000

Página 18 de 20
REVISIONES

Revisión 1.0 – Documento inicial

Página 19 de 20

También podría gustarte