Modbus es un protocolo de comunicaciones serie situado en el nivel 2 del Modelo OSI, desarrollado y publicado por Modicon para su gama de controladores lógicos programables (PLCs). en 1979. La designación Modbus Modicon corresponde a una marca registrada por Gould Inc. Como en tantos otros casos, la designación no corresponde propiamente al estándar de red, incluyendo todos los aspectos desde el nivel físico hasta el de aplicación, sino a un protocolo de enlace. Puede, por tanto, implementarse con diversos tipos de conexión física y cada fabricante suele suministrar un software de aplicación propio, que permite parametrizar sus productos.
Su objeto es bien sencillo: La transmisión de información entre distintos equipos electrónicos conectados a un mismo bus. Existiendo en dicho bus un solo dispositivo maestro (Master) y varios equipos esclavos (Slaves) conectados(cliente/servidor), No hace falta más que echar un vistazo al mercado industrial actual para darse cuenta que, a día de hoy, el protocolo Modbus es el protocolo de comunicaciones más común utilizado en entornos industriales, sistemas de telecontrol y monitorización. Lo que implica de forma implícita que: tanto a nivel local como a nivel de red, en su versión TCP/IP, seguirá siendo uno de los protocolos de referencia en las llamadas Smart Grids, redes de sensores, telecontrol y un largo etc de sistemas de información que ya empiezan a asomar la cabeza en nuestro día a día.
En su origen estaba orientado a una conectividad a través de líneas serie como pueden ser RS-232 o RS-485, pero con el paso del tiempo han aparecido variantes como la Modbus TCP, que permite el encapsulamiento delModbus serie en tramas Ethernet TCP/IP de forma sencilla. Esto sucede porque desde un punto de vista de la torre OSI, el protocolo Modbus se ubica en la capa de aplicación.
Las razones por las cuales el uso de Modbus es superior a otros protocolos de comunicaciones son:
1. Es público y seguro, lo que permite a los fabricantes desarrollar dispositivos tanto Master como Slave sin royalties aplicados al protocolo. Este hecho facilita el acceso a la información y estructura del protocolo que, además, es muy básica pero funcional para su objetivo.
2. Su implementación es fácil, requiere poco desarrollo(no requiere licencias), debido a que se acorta considerablemente respecto a otros protocolos en los que se complica la estructura de las tramas y en consecuencia el acceso a los datos que no están almacenados en estructuras complejas.
3. Maneja bloques de datos sin suponer restricciones, lo que implica cierta flexibilidad a la hora del intercambio de información. Que quiere decir esto? Para expresarlo de forma más clara, si se transmite un dato de 16bits de información su representación no está sujeta a ninguna restricción, por lo que puede tratarse de un dato tipo Word con signo, un entero sin signo de 16bits o la parte alta de una representación tipo Float de 32bits, etc. La representación del valor vendrá definida por la especificación que el fabricante dé del dispositivo, lo que permite la representación de un amplio rango de valores.
Estructura de la red
Medio Físico
El medio físico de conexión puede ser un bus semidúplex (half duplex) (RS-485
o fibra óptica) o dúplex (full duplex) (RS-422, BC 0-20mA o fibra óptica).
La comunicación es asíncrona y las velocidades de transmisión previstas van
desde los 75 baudios a 19.200 baudios. La máxima distancia entre estaciones depende
del nivel físico, pudiendo alcanzar hasta 1200 m sin repetidores.
Acceso al Medio
La estructura lógica es del tipo maestro-esclavo, con acceso al medio controlado
por el maestro. El número máximo de estaciones previsto es de 63 esclavos más una
estación maestra.
Los intercambios de mensajes pueden ser de dos tipos:
• Intercambios punto a punto, que comportan siempre dos mensajes: una demanda del
maestro y una respuesta del esclavo.
• Mensajes difundidos. Estos consisten en una comunicación unidireccional del maestro a todos los esclavos. Este tipo de mensajes no tiene respuesta por parte de los esclavos y se suelen emplear para mandar datos comunes de configuración, reset, etc.
Estructura lógica
El funcionamiento tiene una base muy sencilla: El Master(maestro) pregunta y los Slaves(esclavos) responden o actúan en función de lo que este diga..
El MODBUS siempre funciona con un maestro y uno o más esclavos, siendo el maestro quién controla en todo momento el inicio de la comunicación con los esclavos, solicitando información del resto de dispositivos conectados que ejercen como esclavos y son quienes suministran la información al primero, que según la especificación pueden ser hasta 247 en una misma red. El esclavo por otro lado se limita a retornar los datos solicitados por el maestro,
Cada esclavo debe tener una única dirección, así el maestro sabe con quién se debe comunicar.
Como se ha dicho a nivel general de buses de campo, el nivel de aplicación de no está cubierto por un software estándar, sino que cada fabricante suele suministrar programas para controlar su propia red. No obstante, el nivel de concreción en la definición de las funciones permite al usuario la confección de software propio para gestionar cualquier red, incluso con productos de distintos fabricantes.
Modbus permite el control de una red de dispositivos, por ejemplo un sistema de medida de temperatura y humedad, y comunicar los resultados a un ordenador. Modbus también se usa para la conexión de un ordenador de supervisión con una unidad remota (RTU) en sistemas de supervisión adquisición de datos (SCADA).
Existe gran cantidad de modems que aceptan el protocolo Modbus. Algunos están específicamente diseñados para funcionar con este protocolo. Existen implementaciones para conexión por cable, wireless, SMS o GPRS. La mayoría de problemas presentados hacen referencia a la latencia y a la sincronización.
Ejemplo de implementación de una red Modbus/TCP:
http://www.univalle.edu.co/~telecomunicaciones/trabajos_de_grado/informes/tg_AndresRuiz.pdf [1]
Con el paso de los años y según la evolución de las redes de comunicaciones entre dispositivos electrónicos, así como de la conectividad entre dispositivos, han ido apareciendo variantes del protocolo Modbus que estaba pensado en su inicio para redes implementadas sobre líneas serie.
Existen dos versiones principales: MODBUS RTU para la comunicación serial convencional, y MODBUS/TCP, que emplea Ethernet como medio físico de transmisión.
Funciones especialmente dignas de mención:
• MODBUS RTU/ASCII
o Comunicación con 16 dispositivos (esclavos) por canal (hay disponibles 1 canal)
o Velocidad de transferencia de hasta 19,2 Kbps
• MODBUS TCP/IP
o Comunicación con 64 dispositivos (esclavos) (empleando la función automática de comunicación)
o Velocidad de transferencia de 10/100 Mbaud
Los modos de transmisión definen como se envían los paquetes de datos entre maestros y esclavos, el protocolo MODBUS define dos principales modos de transmisión, con diferentes representaciones numéricas de los datos y detalles del protocolo ligeramente desiguales:
MODBUS RTU (Remote Terminl Unit). La comunicación entre dispositivos se realiza por medio de una representación binaria compacta de los datos.. Esta es la opción más usada del protocolo.
MODBUS ASCII (American StandardCode for Information Interchange). Es una representación legible del protocolo pero menos eficiente. La comunicación entre dispositivos se hace por medio de caracteres ASCII.
Ambas implementaciones del protocolo son serie. El formato RTU finaliza la trama con un suma de control de redundancia cíclica (CRC), mientras que el formato ASCII utiliza una suma de control de redundancia longitudinal (LRC).
Es la evolución más utilizada/conocida, una “versión” del protocolo Modbus que permite la implementación de este protocolo sobre redes Ethernet i, en consecuencia, aumenta el grado de conectividad. Es muy semejante al formato RTU, pero estableciendo la transmisión mediante paquetes TCP/IP (puerto del sistema 502, identificador asa-appl-proto). Esta “versión” del protocolo encapsula la trama base del protocolo Modbus en la capa de aplicación TCP/IP de forma sencilla.
De este modo, Modbus-TCP se puede utilizar en Internet, de hecho, este fue uno de los objetivos que motivó su desarrollo (la especificación del protocolo se ha remitido a la IETF=Internet Engineering Task Force).
En la práctica, un dispositivo instalado en Europa podría ser direccionado desde EEUU o cualquier otra parte del mundo.
Las ventajas para los instaladores o empresas de automatización son innumerables:
• Realizar reparaciones o mantenimiento remoto desde la oficina utilizando un PC, reduciendo así los costes y mejorando el servicio al cliente.
• El ingeniero de mantenimiento puede entrar al sistema de control de la planta desde su casa, evitando desplazamientos.
• Permite realizar la gestión de sistemas distribuidos geográficamente mediante el empleo de las tecnologías de Internet/Intranet actualmente disponibles.
MODBUS® TCP/IP se ha convertido en un estándar industrial de facto debido a su simplicidad, bajo coste, necesidades mínimas en cuanto a componentes de hardware, y sobre todo a que se trata de un protocolo abierto.
En la actualidad hay cientos de dispositivos MODBUS® TCP/IP disponibles en el mercado. Se emplea para intercambiar información entre dispositivos, así como monitorizarlos y gestionarlos. También se emplea para la gestión de entradas/salidas distribuidas, siendo el protocolo más popular entre los fabricantes de este tipo de componentes.
La combinación de una red física versátil y escalable como Ethernet con el estándar universal de interredes TCP/IP y una representación de datos independiente de fabricante, como MODBUS®, proporciona una red abierta y accesible para el intercambio de datos de proceso.
El protocolo Modbus TCP
Modbus/TCP simplemente encapsula una trama Modbus en un segmento TCP. TCP proporciona un servicio orientado a conexión fiable, lo que significa que toda consulta espera una respuesta.
Esta técnica de consulta/respuesta encaja perfectamente con la naturaleza Maestro/Esclavo de Modbus, añadido a la ventaja del determinismo que las redes Ethernet conmutadas ofrecen a los usuarios en la industria. El empleo del protocolo abierto Modbus con TCP proporciona una solución para la gestión desde unos pocos a decenas de miles de nodos.
Prestaciones de un sistema MODBUS TCP/IP
Las prestaciones dependen básicamente de la red y el hardware. Si se usa MODBUS® TCP/IP sobre Internet, las prestaciones serán las correspondientes a tiempos de respuesta en Internet, que no siempre serán las deseables para un sistema de control. Sin embargo pueden ser suficientes para la comunicación destinada a depuración y mantenimiento, evitando así desplazamientos al lugar de la instalación.
Si disponemos de una Intranet de altas prestaciones con conmutadores Ethernet de alta velocidad, la situación es totalmente diferente.
En teoría, MODBUS® TCP/IP, transporta datos hasta 250/(250+70+70) o alrededor de un 60% de eficiencia cuando se trasfieren registros en bloque, y puesto que 10 Base T proporciona unos 1.25 Mbps de datos, la velocidad de transferencia de información útil será:
1.25M / 2 * 60% = 360000 registros por Segundo
En 100BaseT la velocidad es 10 veces mayor.
Esto suponiendo que se están empleando dispositivos que pueden dar servicio en la red Ehernet aprovechando todo el ancho de banda disponible.
En los ensayos prácticos realizados por by Schneider Automation utilizando un PLC Ethernet MomentumTM con entradas/salidas Ethernet, demostró que se podían escanear hasta 4000 bloques I/O por segundo, cada uno con hasta 16 I/O analógicas de 12-bits o 32 I/O digitales (se pueden actualizar 4 bases por milisegundo). Aunque estos resultados están por debajo del límite teórico calculado anteriormente, pero debemos recordar que el dispositivo se probó con una CPU de baja velocidad (80186 a 50MHz con 3 MIPS).
Además, el abaratamiento de los ordenadores personales y el desarrollo de redes Ethernet cada vez más rápidas, permite elevar las velocidades de funcionamiento, a diferencia de otros buses que están inherentemente limitados una sola velocidad.
¿Cómo podemos comunicar dispositivos MODBUS existentes sobre MODBUS TCP/IP?
Puesto que MODBUS® TCP/IP es simplemente un protocolo MODBUS® encapsulado en TCP, es muy sencillo comunicar dispositivos MODBUS® existentes sobre MODBUS® TCP/IP. Para ello se requiere una pasarela que convierta el protocolo MODBUS a MODBUS TCP/IP.
http://es.wikipedia.org/wiki/Modbus [2]
http://www.xmcarne.com/blog-tecnico/introduccion-modbus/ [3]
http://www.tecdigitaldelbajio.com/blog/27-modbus-parte-iii-que-es-el-modbus.html [4]
http://www.mitsubishi-automation.es/products/networks_modbus.html [5]
http://www.etitudela.com/entrenadorcomunicaciones/downloads/5modbus.pdf [6]
http://es.scribd.com/doc/109014434/Manual-Protocolo-Modbus-Castellano [7]
El protocolo MODBUS usa el concepto de tablas de datos para almacenar la información en un esclavo, una tabla de datos no es más que un bloque de memoria usado para almacenar datos en el esclavo, las tablas de datos que usa en MODUS son cuatro y se muestran en la siguiente tabla:
Observe que hay dos direcciones, una es usada para diferenciar entre las tablas de datos, la llamamos dirección MODBUS y la otra es la dirección usada en la comunicación entre el maestro y el esclavo, está es la dirección usada en la trama o paquetes de datos enviados entre maestros y esclavos.
Codificación de datos
La codificación de datos dentro de la trama puede hacerse en modo ASCII o puramente binario, según el estándar RTU (Remote Transmission Unit). En cualquiera de los dos casos, cada mensaje obedece a una trama que contiene cuatro campos principales, según se muestra en la figura 1. La única diferencia estriba en que la trama ASCII incluye un carácter de encabezamiento («:»=3AH) y los caracteres CR y LF al final del mensaje. Pueden existir también diferencias en la forma de calcular el CRC, puesto que el formato RTU emplea una fórmula polinómica en vez de la simple suma en módulo 16.
Con independencia de estos pequeños detalles, a continuación se da una breve descripción de cada uno de los campos del mensaje:
Número de esclavo (1 byte):
Permite direccionar un máximo de 63 esclavos con direcciones que van del 01H hasta 3FH. El número 00H se reserva para los mensajes difundidos.
Código de operación o función (1 byte):
Cada función permite transmitir datos u órdenes al esclavo. Existen dos tipos básicos de órdenes:
• Ordenes de lectura/escritura de datos en los registros o en la memoria del esclavo.
• Ordenes de control del esclavo y el propio sistema de comunicaciones (RUN/STOP, carga y descarga de programas, verificación de contadores de intercambio, etc.)
La tabla 1 muestra la lista de funciones disponibles en el protocolo MODBUS con sus correspondientes códigos de operación.
Campo de subfunciones/datos (n bytes):
Este campo suele contener, en primer lugar, los parámetros necesarios para ejecutar la función indicada por el byte anterior. Estos parámetros podrán ser códigos de subfunciones en el caso de órdenes de control (función 00H) o direcciones del primer bit o byte, número de bits o palabras a leer o escribir, valor del bit o palabra en caso de escritura, etc.
Palabra de control de errores (2 bytes):
En código ASCII, esta palabra es simplemente la suma de comprobación (‘checksum’) del mensaje en módulo 16 expresado en ASCII. En el caso de codificación RTU el CRC se calcula con una fórmula polinómica según el algoritmo mostrado en la figura 2.
Modbus Plus (Modbus+ o MB+), es una versión extendida del protocolo y privativa de Modicon. Dada la naturaleza de la red precisa un coprocesador dedicado para el control de la misma. Con una velocidad de 1 Mbit/s en un par trenzado y sus especificaciones son muy semejantes al estándar EIA/RS-485 aunque no guarda compatibilidad con este.
JBUS
JBUS es una designación utilizada por la firma APRIL para un bus propio que presenta gran similitud con MODBUS, con protocolos prácticamente idénticos. La designación JBUS, de la misma forma que MODBUS, corresponde a un protocolo de enlace más que a una red propiamente dicha. Puede, por tanto, implementarse con cualquiera de las conexiones físicas normalizadas.
Variaciones
Todas las implementaciones presentan variaciones respecto al estándar oficial. Algunas de las variaciones más habituales son:
• Coma Flotante IEEE
• entero 32 bits
• datos 8 bits
• tipos de datos mixtos
• campos de bits en enteros
• multiplicadores para cambio de datos a/de entero. 10, 100, 1000, 256 ...
• direcciones de esclavo de 16 bits
• Tamaño de datos de 32 bits (1 dirección = 32 bits de datos devueltos.)
Enlaces:
[1] http://www.univalle.edu.co/~telecomunicaciones/trabajos_de_grado/informes/tg_AndresRuiz.pdf
[2] http://es.wikipedia.org/wiki/Modbus
[3] http://www.xmcarne.com/blog-tecnico/introduccion-modbus/
[4] http://www.tecdigitaldelbajio.com/blog/27-modbus-parte-iii-que-es-el-modbus.html
[5] http://www.mitsubishi-automation.es/products/networks_modbus.html
[6] http://www.etitudela.com/entrenadorcomunicaciones/downloads/5modbus.pdf
[7] http://es.scribd.com/doc/109014434/Manual-Protocolo-Modbus-Castellano