Información Detallada sobre el Protocolo Modbus
En la Industria vamos a encontrar una gran cantidad de protocolos y tiene sentido si se entiende como comenzó todo, en sus inicios surgen los primeros PLC’s y evidentemente la necesidad de comunicarlos era imperante, se podrán imaginar que cada fabricante plantea la solución a su requerimiento de comunicación y crea su protocolo. Empieza la proliferación de las redes industriales, entonces vamos a organizar este artículo, mezclado con podcast y tutoriales para explicar al estilo #Infradummies todo lo relacionado con el Protocolo MODBUS.
Contenido
- PROTOCOLO MODBUS | Qué es
- PROTOCOLO MODBUS | Características
- MODBUS y el Modelo OSI
- Trama del Protocolo MODBUS
- Funciones del Protocolo
- MODBUS RS 485
- MODBUS TCP/IP
- MODBUS Tools | MODBUS Aplicaciones
- Equipos e implementaciones
- MODBUS RTU en MATLAB
- MODBUS en Arduino
- Conclusión
- Podcast
- Equipos Recomendados
¿QUÉ ES EL PROTOCOLO MODBUS?
Un poco de historia no cae mal, al comienzo del artículo se menciona la sigla PLC (Programmable Logic Controller) que en español no es más que el famoso Controlador Lógico Programable, son los equipos empleados en el sector industrial para llevar el control de máquinas, lineas de producción y en general todo lo relacionado con los procesos propios de la Industria. Antes de aparecer el primer PLC todo trabajaba bajo un modelo conocido como lógica cableada, empleando temporizadores, relés y otros cuantos elementos se controlaba la secuencia de funcionamiento de las máquinas. Muchos cables…realizar un cambio, ajuste, reconfiguración o mantenimiento no era imposible, el tema no radica allí el problema es el tiempo que tardas para realizar los ajustes, ademas este tipo de sistemas son poco escalables.
El primer PLC aparece aproximadamente a finales de los años 60, se propone un sistema conocido en su momento como Modular Digital Controller el acrónimo que aún ronda en la actualidad, padre de los PLC´s el histórico MODICON cuyo modelo exacto era Modicon 084. El ingeniero que lideró todo este proceso fué Dick Morley y digo fué porque acabó de fallecer el 17 de Octubre de 2017 (Gracias Dick).
Parece ser que en 1973 con el Modicon penetrando el sector industrial surge la necesidad de comunicar los equipos y es allí donde nace Modicon Bus (Modbus) el protocolo creado para comunicar los equipos Modicon. Muchos se estarán preguntando cómo es posible que algo tan antiguo se nombre en la actualidad, pues tanto el Modicon como Modbus son tan vigentes que el protocolo podría estar implementado en tu Nevera 🙂 . Esta es la razón, Schneider Electric multinacional que en la actualidad es líder en el campo de la electricidad y la automatización absorbe a Modicon en 1997 lo que ha permitido la evolución y mejora tanto en el Hardware como en el Protocolo Modbus.
El mundo de los protocolos podríamos decir que existen dos grandes clasificaciones: protocolos abiertos y protocolos propietarios. Modbus es un protocolo abierto, tenemos a nuestra disposición toda la información y precisamente gran parte del material compartido en este artículo proviene de Modbus Organization les comparto la misión en español.
La Organización Modbus es un grupo de usuarios independientes y proveedores de dispositivos de automatización que busca impulsar la adopción del conjunto de protocolos de comunicación Modbus y la evolución para abordar arquitecturas para sistemas de automatización distribuidos en múltiples segmentos del mercado. La organización Modbus también proporcionará la infraestructura para obtener y compartir información sobre los protocolos, su aplicación y certificación para simplificar la implementación por los usuarios, lo que resulta en una reducción de costos.
PROTOCOLO MODBUS | Características
En Modbus existen dos tipos de perfiles que pueden tomar los equipos dependiendo la variación del protocolo: maestro o esclavo| cliente o servidor. Un fabricante puede habilitar las siguientes posibilidades en su hardware, especialmente para las variaciones con trabajan sobre estándares seriales:
- El equipo sólo puede ser esclavo
- El equipo sólo puede ser maestro
- El equipo puede configurarse como maestro o como esclavo
Podremos encontrarnos con cualquiera de estas opciones, por ejemplo es habitual que una pantalla o HMI tenga de fábrica un perfil de maestro, un controlador de temperatura de fábrica viene con el perfil de esclavo.
En esta parte tengo que darte una recomendación a la hora de seleccionar un equipo, pues si no tienes en cuenta el perfil que necesitas puedes estar comprando el equipo equivocado, por esta razón se debe revisar con detenimiento los requerimientos y las especificaciones del hardware. Les comparto algunos fragmentos de catálogos de equipos para que comprueben este punto directamente.

Especificaciones relacionadas con el perfil de un equipo Modbus
En la imagen anterior se puede observar como el equipo S7-200 puede configurarse como maestro o esclavo.

Referencias de algunos equipos que tienen perfil de esclavo
En la imagen anterior se pueden observar algunos modelos de equipos propios de Schneider Electric que sólo pueden desempeñarse como esclavos de Modbus o Modbus Slave como se suele llamar en inglés.
Modbus tiene distintas variaciones, es decir, nos podemos encontrar con cualquiera de las siguientes opciones en un equipo, es habitual también que el hardware soporte varias. He desarrollado un podcast para cada tipo de variación accede a ellos a través de los siguientes enlaces.
En la siguiente imagen puedes ver un equipo que soporta Modbus RTU, Modbus ASCII y Modbus TCP.

Especificaciones de equipo que soporta Modbus RTU, Modbus ASCII y Modbus TCP
MODBUS y el Modelo OSI
Todos los protocolos están desarrollados bajo el marco de referencia conocido como el Modelo OSI (Open System Interconnection) que tiene 7 niveles o capas.
- Capa Física
- Capa de Enlace
- Capa de Red
- Capa de Transporte
- Capa de Sesión
- Capa de Presentación
- Capa de Aplicación
Si accedes a las capas que tienen enlaces puedes escuchar el podcast que se ha desarrollado hasta el momento con una perspectiva de redes industriales.
Por ejemplo Modbus RTU tiene implementada la capa física, la capa de enlace y la capa de aplicación, vamos a analizar un poco lo que se encuentra en cada nivel para ésta variante.
Capa Física
El Protocolo Modbus RTU puede trabajar sobre las siguientes recomendaciones en la capa física:
Teniendo en cuenta el número de equipos y los perfiles en RS232 se tienen 2 elementos solamente, evidentemente uno es el esclavo y el otro es el maestro. En RS 422 se pueden tener hasta 32 equipos pero sólo puede existir un maestro, por consiguiente los 31 restantes son esclavos. En RS 485 se tiene el mismo número de equipos que en RS 422, se podrían tener varios maestros, pero para el Protocolo Modbus RTU no aplica tener varios maestros en la red, la variación Modbus Plus (+) muestra algunas alternativas frente a las topologías.
Capa de Enlace
En la capa de enlace, se definen los ID’s de los equipos (números enteros 1,2,3…255), los perfiles (maestro – esclavo) y la técnica para detectar la integridad de la información enviada en la Trama entre otros aspectos. En Modbus RTU se emplea el CRC (chequeo de redundancia cíclica).

Modelo OSI y Capas de Modbus RTU, Imagen tomada de Modbus Organization
Como lo muestra la figura anterior la capa de enlace de OSI se llama Modbus Master/Slave frente a las capas del Protocolo Modbus RTU.
Capa de Aplicación
La capa de aplicación de Modbus trabaja bajo la abstracción Cliente /Servidor, para el caso de Modbus RTU el rol de cliente lo desempeña el Maestro y el rol de servidor lo toman los esclavos.
Trama del Protocolo Modbus
La trama es una estructura definida en el protocolo en donde los equipos intercambian información cumpliendo este formato. En la trama se definen los campos y el tamaño asignado para cada uno.
[ID][FUNCIÓN][DATO][CRC]
La estructura anterior muestra de forma genérica la trama del protocolo, vamos a ver cada campo.
ID: Dirección del esclavo, número enteros normalmente desde 1, hasta 255.
FUNCIÓN: Tipo de solicitud que se le realiza al esclavo, codificada de manera numérica, normalmente números que inician en 1,2,3,4, etc.
DATO: Este campo se emplea para enviar información complementaria a la solicitud realizada al esclavo, o se emplea para responder a la solicitud, por la tanto el campo de dato tiene una estructura diferente cuando el mensaje lo envía el maestro o cuando es la respuesta de un esclavo. Miremos esta situación con más detalle.
Trama Maestro
[ID][FUNCIÓN][DATO][CRC]
Para el maestro el campo dato está integrado por dos subcampos, la dirección y la longitud. En la dirección se indica al esclavo en que dirección debe buscar lo que se ha solicitado a través de la función y la longitud indica a partir de esa dirección cuantos elementos se deben tomar.

Estructura de la trama de un maestro Modbus
Trama esclavo | Trama slave
[ID][FUNCIÓN][DATO][CRC]
La estructura se mantiene para el esclavo pero nuevamente el cambio está en el campo de Dato, pues aparecen dos subcampos que son: Número de bytes para dar la respuesta y la respuesta en sí.

Estructura de la trama del Esclavo
Tamaño de la Trama
Ahora vamos a analizar cada campo cuantos bits, Bytes o Words ocupan, para el caso del Protocolo Modbus se organizan bloques de tamaño mínimo de Bytes como lo muestra la siguiente estructura.
[1 Byte][1 Byte][nxByte][1 Byte][1 Byte]
Recuerda el primer corchete es la dirección del esclavo (slave), con un Byte se pueden tener valores entre 0 y 255 para colocar la dirección (ID) del equipo. El segundo corchete es la función y con un Byte se tiene también la posibilidad de colocar valores entre 0 y 255 pero se debe tener en cuenta que no existen 256 funciones en el protocolo, son menos ya lo veremos más adelante. El tercer corchete es el campo de dato y es flexible dependiendo de si es un maestro o un esclavo. Y finalmente los últimos dos corchetes son dedicados al CRC (Chequeo de Redundancia Cíclica).

Tamaño de cada campo de la trama del Protocolo Modbus
Para un análisis más detallado te dejo un tutorial que puedes estudiar desde el minuto 8:36 en donde explico el tema de la trama del Protocolo Modbus.
Funciones del Protocolo
Recuerda la forma de hacer solicitudes al esclavo es por medio de la función la cual tiene asignado un Byte, realmente las funciones del protocolo Modbus van desde el #1 hasta el #127 y se clasifican en tres grupos: funciones públicas, funciones definidas por el usuario y funciones reservadas. Nos interesa estudiar las que emplean todos los equipos que tienen implementado el Protocolo y son aquellos códigos que son públicos. Vamos a estudiar los códigos disponibles según la Modbus Organization.

Funciones Públicas Disponibles en Modbus, tomado de Modbus Organization
Antes de comenzar a explicar esta tabla voy a seleccionar los códigos más comunes implementados en los equipos, recuerden, a pesar de tener disponibles muchas funciones en el Protocolo los fabricantes de los equipos implementan aquellos códigos que son claves de acuerdo a la funcionalidad que tiene el hardware.
Funciones más comunes del Protocolo Modbus
01 ->Read Coils
02->Read Discrete Inputs
03->Read Holding Register
04->Read Input Register
05->Write Single Coil
06->Write Single Register
15->Write Multiple Coils
16->Write Multiple Registers
Estas 8 funciones son muy habituales, pero no quiere decir que los fabricantes las implementan todas en un equipo, se puede dar el caso que de las mencionadas anteriormente sólo se implemente dos o tres, lo explico mejor con un ejemplo.

Módulo Protocolo Modbus para Equipo Zelio
El módulo SR3 MBU le permite al equipo Zelio de Schneider Electric comunicarse por medio del Protocolo Modbus se utiliza como interfaz mecánica un conector RJ-45. Una vez resuelto todo lo relacionado con la capa física revisamos los funciones que soporta empleando el módulo.

Funciones del Protocolo Modbus en Zelio
Sólo vienen disponibles 4 funciones del Protocolo Modbus la 03, 06, 16 (10 Hex) y 43 (2B Hex). Las funciones del equipo Zelio están expresadas en formato Hexadecimal, el código 43 es ¨Read Device Indentification¨.
Vamos entonces a analizar como interpretar los códigos en el campo de función de la trama.
Código [01] Read Coils
La interpretación literal es leer bobinas, suena raro la verdad para aquellos que no conocen un PLC, pero es importante anotar que los equipos tiene diferentes tipos de salidas entre las que se encuentran las Relé y de allí el nombre de bobinas ya que el elemento que se debe energizar para activar una salida es la bobina. Este nombre del código viene de los primero PLC´s ya que este tipo de salida es típica y apareció en los primeros Modicon.
Cómo funciona entonces, el maestro cuando solicita a un esclavo la función [01] le está pidiendo información del estado de sus salidas, no importa si son tipo digital, tipo relé, etc.
Código [02] Read Discrete Inputs
Leer entradas discretas, con este código el maestro le solicita al esclavo información del estado de sus entradas, no importa el tipo de entrada que tenga. Un ejemplo de respuesta del esclavo puede ser «tengo encendida la entrada 1, la entrada 4, la entrada 5, etc.»
Código [03] Read Holding Register
Leer registros de retención, el maestro le indica al esclavo por medio de este código que entregue información de una posición de memoria, este tipo de memorias son de lectura y escritura. Es quizá la función más importante del Protocolo Modbus pues por medio de estos registros se puede obtener información de todo lo que ocurre en el equipo, es solamente mover la información que se quiere compartir al registro de retención.
Código [04] Read Input Register
Leer registros de entrada, el maestro le indica al esclavo por medio de este código que entregue información de una posición de memoria, este tipo de memorias son de sólo lectura. Muchos equipos los utilizan para compartir información de sus entradas analógicas en caso de que las posean.
MODBUS RS 485
Se le denomina Modbus RS 485 al ya estudiado Protocolo Modbus, pero la capa física está manejada por la recomendación RS 485. Todo lo estudiado aplica, entre las especificaciones de RS 485 se pueden resaltar:
- Rango de Voltajes -> -6V DC a 6 V DC
- Se pueden interconectar hasta 32 equipos
- Recepción de las señales de forma diferencial, es decir, el voltaje a interpretar se obtiene luego de restar las dos señales que llegan al amplificador operacional (entrada no inversora y entrada inversora)
- Distancia máxima 1,2 Km
Recuerden que Modbus es un Protocolo monomestro, es decir que a pesar de tener 32 equipos solo puede estar un maestro al tiempo estableciendo la comunicación con el esclavo que él seleccione.
MODBUS TCP/IP
- Capa física
- Capa de enlace
- Capa de red
- Capa de transporte
- Capa de Aplicación
- Capa física -> 10/100 Base T
- Capa de enlace->Ethernet
- Capa de Red -> IP
- Capa de Transporte -> TCP
Capa física

Cable de red cruzado empleado para Modbus TCP
En la imagen anterior les comparto el cable que empleo para comunicarme directamente con los equipos, al ser cruzado el cable no es necesario el switch para interconectar las señales.

PLC’s que soportan Modbus TCP
En la imagen les presento un PLC S7-1200 de Siemens y un PLC Twido de Schneider Electric, ambos equipos soportan Modbus TCP, y la capa física comienza definida por el conector RJ45 que se puede observar en los equipos.
Capa de enlace
En la capa de enlace es importante tener en cuenta que aquí es donde aparece la dirección física del Equipo, que popularmente se le llama la dirección MAC, se compone de 6 bytes (6 octetos), cada equipo tiene una dirección unívoca en el mundo (no existen dos iguales).

Dirección MAC en equipo S7-1200
Si observan detenidamente la fotografía podrán identificar los 6 octetos expresados en Hexadecimal, cada dígito abarca entonces 4 bits (dos dígitos unidos son entonces un byte).
Capa de Red
Esta capa es importante pues aparece el protocolo IP, al cual le debemos la estandarización de todo lo relacionado con la direcciones IP, por lo tanto nuestros equipos en Modbus TCP deben tener asignada su dirección IP. Para hacer pruebas y redes de tamaño mediano se usan direcciones clase C, por eso es muy habitual encontrar direcciones IP como: 192.168.X.X configuradas en los equipos.
Capa de Transporte
El protocolo empleado en esta capa normalmente es TCP, y en esta parte es importante resaltar un parámetro de configuración definido para Modbus TCP y es el puerto que se va a emplear, por defecto es el 502.
Vamos a revisar entonces como queda toda la estructura de protocolos que necesita Modbus TCP para poder funcionar.

Protocolos que permiten que MODBUS TCP IP funcione correctamente, tomado de Modbus Organization
Trama Protocolo Modbus TCP IP
Se ha definido una estructura genérica para la trama del protocolo conocida como PDU (Simple Protocolo Data Unit) que permite independizar todo de las capas inferiores.

Estructura general de la trama de MODBUS, tomado de Modbus Organization
En el caso de MODBUS sobre TCP/IP se encapsula la PDU en una red TCP/IP como lo muestra el siguiente esquema de la trama.

PDU sobre TCP/IP, tomado de Modbus Organization
Al encapsularse sobre TCP/IP aparece en la trama un campo nuevo MBAP Header (MODBUS Aplication Protocolo header). El header tiene un tamaño de 7 bytes con el siguiente contenido:
[Transaction Identifier][Protocol Identifier][Length][Unit Identifier]
[ 2 Bytes ][ 2 Bytes ][2 Bytes][ 1 Byte ]
Transaction Identifier: Identificación de una petición o respuesta de Modbus
Protocolo Indentifier: Es igual a 0 (cero) para el protocolo Modbus
Length: Número de Bytes
Unit Identifier: Identificación del esclavo (En caso de pasar a redes Modbus RTU)
Entonces la configuración inicial básica que debe realizar un usuario cuando usa Modbus TCP es asignar la dirección IP del equipo y adicional la dirección del esclavo con el que se va a a comunicar.

Configurando Modbus TCP y Modbus RTU en un equipo Gateway
En la anterior configuración se puede ver la relación entre la dirección IP y el ID propio del esclavo para emplear Modbus RTU, entonces es habitual que en la configuración de Modbus TCP se siga asignando el ID del esclavo (número entero normalmente entre 1 y 255).
MODBUS Tools | MODBUS Aplicaciones
Existen distintas herramientas que te permiten emular un maestro o esclavo en el caso de Modbus RTU o un cliente o servidor en el caso de Modbus TCP. Estas herramientas son super potentes pues se pueden usar para comunicarse con equipos reales y probar las respectivas funciones que tiene implementadas, un listado válido de hardware con el que se pueden comunicar estas herramientas son:
- Controladores de temperatura
- Controladores
- Programadores Lógicos Programables (PLC’s)
- HMI’s
- Variadores de Velocidad
- Scadas
Vamos a comenzar con la primer herramienta que para mí es la más potente pues puedes monitorear directamente la trama del maestro y el esclavo, desarrollada por WinTECH Software Design tienen disponibles dos aplicaciones: Modscan (Modbus Master Data Scanner) y Modsim (Modbus Slave Simulator), con ellas puedes emular un maestro y un esclavo.
Para que tengas corriendo en un sólo computador las herramientas de WinTECH es necesario tener dos puertos seriales virtuales cruzados, para esa función me gusta usar el Virtual Serial Port Driver de Eltima Software.
Puedes descargar una versión de prueba del Virtual Serial Port Driver durante 15 días tendrás el programa 100% funcional.
Otra herramienta muy potente para analizar las comunicaciones seriales en cualquiera de sus versiones como son RS232, RS422 y RS 485 es Serial Port Monitor con ella puedes revisar la estructura de la trama de una comunicación serial no importa el protocolo que estén empleando los equipos. Lo más interesante es que viene dedicada para monitorear el Protocolo Modbus RTU.
Podrás descargar una versión de prueba por 15 días de Serial Port Monitor Standard
En el listado de aplicaciones vamos con otra herramienta para implementar el protocolo Modbus RTU, la empresa es Calta Computer Systems Limited. El programa se llama «Modbus for Windows«
Para el caso de Modbus TCP las herramientas de WinTech y de Calta Computer System sirven para tener un cliente y un servidor no es necesario agregar absolutamente nada, los programas ya tienen incluidos entre otros las siguientes variaciones:
- Modbus RTU
- Modbus ASCII
- Modbus TCP
En el siguiente tutorial te enseño cómo realizar una comunicación entre un cliente y un servidor.
Equipos e implementaciones
Vamos a ver una implementación de Modbus Rs 485, es decir, Modbus RTU corriendo sobre la capa física RS 485. El equipo empleado es un PLC de Siemens S7-200 y emuladores de Modbus para comunicarse con el equipo.
Otra implementación del protocolo esta vez con un equipo datalogger de la empresa Novus, es el Fieldlogger en el siguiente tutorial se puede observar la comunicación empleando la capa física RS 485. El equipo se configura como maestro Modbus y se emplea el software Modsim para emular el esclavo.
Vamos ahora a ver una implementación del Protocolo Modbus TCP empleando dos equipos de Schneider Electric, un Zelio y un Twido. En los tutoriales se puede ver el hardware requerido para realizar la comunicación. Los perfiles de los equipos en la comunicación son:
- Twido -> Cliente
- Zelio-> Servidor
MODBUS RTU en MATLAB
En los siguiente conjunto de tutoriales se puede observar la implementación de un maestro Modbus RTU, sin usar funciones especiales ni toolbox para mostrar el proceso de creación paso a paso de la trama propia del protocolo.
MODBUS en Arduino
Nos vamos acercando al final del artículo y no podemos dejar de lado nuevas tecnologías que están al alcance de todos por sus costos y que nos permiten entender los principios del funcionamiento de protocolos de industria, llega el turno del Arduino y en este caso vamos a implementar una comunicación mediante el protocolo Modbus RTU, colocando a trabajar un Arduino MEGA como maestro. Debemos realizar algunos ajustes en la capa física para lograr establecer la comunicación por RS 232 que es la forma como nos vamos a comunicar con nuestro esclavo, se debe agregar un módulo como el que muestro a continuación que se encarga de convertir los niveles de voltaje de Rs232 TTL a RS232 convencional.

Conector para Ajustar RS232 TTL a RS232 convencional
A continuación les dejo el tutorial que se ha desarrollado para que puedan ver más de cerca esta comunicación
Conclusión
Un apunte final antes de dar las conclusiones, mas o menos en 12 años que llevo de estar trabajando con distintos equipos de industria siempre me he encontrado con algún hardware que tiene disponible el protocolo Modbus, en cualquiera de sus sabores (RTU, PLUS, TCP, ASCII, JBUS). Agradezco tu atención hasta este punto y espero que puedas dominar al 100% el Protocolo, te dejo entonces mis conclusiones.
- Modbus lleva mucho tiempo desde su creación y ha sufrido una evolución evidente hasta tener una versión basada en Ethernet, es tan popular en el ambiente industrial que no creo que pierda su posición dominante en un futuro.
- Es un Protocolo abierto con el cual se pueden obtener competencias genéricas acerca del funcionamiento de las redes industriales y lo considero un camino obligado de transitar, para entender el mágico mundo de las comunicaciones propias de equipos de industria.
- Se pueden identificar elementos claves que son críticos a la hora de establecer una comunicación empleando el protocolo Modbus, los nombro a continuación: resolver la capa física (pin out y construcción de cables), asignar adecuadamente los ID´s en los equipos (direcciones únicas), conocer el mapeo de memoria frente a las direcciones propias del protocolo Modbus, elegir la longitud de acuerdo a la información disponible habitualmente en el esclavo.
Podcast del Protocolo Modbus
Si quieres tener la información clave del artículo en formato audio no dejes de descargarte el episodio.
Equipos Recomendados
El Hardware más usado en cuanto al Protocolo Modbus se conoce como Gateway o pasarelas que permiten intercambiar información entre Modbus RTU y Modbus TCP. Es posible también ampliar la funcionalidad de equipos como PLC’s empleando módulos que se comuniquen a través del Protocolo Modbus y permitan agregar sensores de temperatura o entradas de corriente, a continuación te muestro algunos ejemplos.
Amigo mío, felicitaciones por tu gran trabajo…
Ojalá lo finalice y un abrazo desde Chile y muchas gracias por la dedicación en la creación del Post.
Gracias Alvaro por tu comentario…espera muy pronto el video con el protocolo modbus RTU implementado en el arduino y las conclusiones…Un abrazo desde Colombia..
Amigo felicidades, muy buen trabajo, espero sigas compartiendo tus conocimientos, muchas gracias.
Gracias Edwuard por tu comentario
Excelente Trabajo Didactico. Muchas Gracias
Gracias Mario por tu comentario..
Muy buenas tardes mi estimado amigo saludos desde venezuela, en mi tesis de maestria en telematica la cual tiene que ver con lineamientos estrategicos para la migracion de protocolos en redes industriales a nivel de buses de campo, queria preguntarte que software y/o lenguaje de programacion usan las pasarelas o gateways y su estructura a nivel de hardware, agradeceria de antemano cualquier informacion que creas conveniente por favor…muchas gracias.
Un saludo Jairo, Gracias por tu pregunta. Las pasarelas deben resolver varios capas del modelo OSI, comenzando por la capa física si se van a convertir Modbus RTU sobre RS485 a Modbus TCP la pasarela debe tener un conector para recibir mínimo las dos señales de datos de RS485 y un conector RJ 45 para soportar Ethernet. Las otras capas de OSI involucradas son enlace, red, transporte y Aplicación. Luego de resolver el tema de señales eléctricas se debe organizar el mensaje o trama del Protocolo para lo cual los Gateway tienen software propietario 100% configurable para ajustar parámetros en el lado de la comunicación serial y en el lado de la comunicación sobre Ethernet y TCP/IP, son parámetros como ID del equipo serial, velocidad de comunicación, paridad, bit de parada, etc. Para el caso del lado de Modbus TCP son parámetros como dirección IP, máscara, etc. Un gateway también se puede construir empleando un PLC y a veces resulta más económica esa opción (Es la que yo utilizo en mi día a día), pero se debe tener en cuenta que un PLC es un equipo Programable y se debe realizar la lógica de funcionamiento, estoy desarrollando unos tutoriales para que puedan ver esa opción aplicada en los Controladores.
Muchas gracias por compartir esto !! Saludos desde Perú
Gracias CJ por tu saludo..un abrazo desde Colombia…
Hola buen dia, tengo una consulta, para una prueba tengo un programa zelio en bdf, es un contador ascendente que se activa por un sensor de proximidad, que necesito para mostrar la cuenta en una pantalla conectada al zelio.
Se requiere otro modulo de comunicación, o se puede realizar con el cable de programacion usb?
cual software para scada se puede utilizar con zelio
De antemano agradesco su atencion.
saludos cordiales.
Hay varias cosas que te puedo aclarar..comencemos:
1. Puedes comunicar el Zelio con cualquier tipo de HMI no necesariamente debe ser de la marca Schneider Electric, empleando los siguientes protocolos Modbus RTU y Modbus TCP, agregando un módulo para cada caso -> http://eeymuc.co/modbusrtuzelio/ -> https://youtu.be/PxvxZ2ZgSe8
2. En cuanto a cables con estos módulos te sirve un cable de red normal (Modbus TCP) y cables de conexión serial a 2 hilos o 4 hilos que representan el Rs485 o el RS422 para el caso de Modbus RTU
3. El Software de Scada es para el PC o las HMI no para el Zelio, debes garantizar que la HMI o Scada tengan los drivers de Modbus para intercambiar los datos con el Zelio.
4. Recuerda que el Zelio cuenta con una Pantalla LCD que puede ser empleada para mostrar la información de Contadores.
Hola muy buen artículo , donde puedo conseguir el código implementado en el vídeo del maestro mobdus
Un saludo Daniel voy a buscar el código para colocarlo en la descripción del Video de Youtube
Muy claro y didáctico…por fin entendí de donde venia la función leer «bobinas». Muy agradecido de que le hayas dedicado tu tiempo a generar este articulo. Abrazo desde Argentina.
Muchas Gracias Jorge Eduardo por tu comentario, un saludo desde Colombia.
Gracias por el artículo, me ayudó bastante, dónde podría ver el código de Arduino implementado? Saludos desde Quito-Ecuador
Un saludo Bryan gracias por tu comentario…el código lo estaré colocando en próximas actualizaciones en el blog..
Excelente para entender los conceptos, ya que mi objetivo aunque no es programar si me es importante entender el lenguaje del usuario
Un saludo Jairo….gracias por tu comentario..
Gracias por el Articulo esta muy interesante…. soy nuevo en esto del Modbus
Pregunta:
Como conecto los terminal +y – , a los RJ 45 o a un puerto serial.
Si estás viendo esta información en una comunicación serial es porque lo más seguro está haciendo referencia a las señales usadas en RS 485. En este estándar las señales se conectan en paralelo, es decir, positivo con positivo y negativo con negativo entre todos los equipos que se desean conectar…normalmente este estándar soporta en su capa física la interconexión de 32 equipos.
Buena tarde
Me gustaría saber, cual es la distancia máxima de cable UTP para implementar un conexión vía modbus TCP/IP?
Modbus TCP está montado sobre Ethernet y en la capa física puede usar habitualmente 10BaseT o 100 BaseT, las distancias para ambos son de 100 metros.
Buenos días, primero felicitarte por tu trabajo, muy elaborado y muy bien explidaco.
Tengo una duda y a ver si me puedes ayudar.
Tengo una central de clorado de agua y dispone de comunicación Modbus. Con la función 4 leo los valores analógico de Tº y PPM del agua, pero con la función 3 no me desenvuelvo. El fabricante me facilitó el mapeado (en italiano) y me dice que la función 03 (Read holding registers) son 2 registros consecutivos de 4 bytes en float, y te pongo los 3 primeros:
00 – set1cl2 ON
02 – set1cl2 OFF
04 – set2cl2 ON
….
así hasta 210
Como hago para leer esos datos? Porque con un lector de Modbus me dice que tiene 8 registros y en el registro uno me da como valor 16077.
No entiendo nada.
Gracias de antemano!!
Tranquilo Roberto..es muy fácil..te lo explico a continuación con más detalle:
1. La función 4 de Modbus tiene por nombre Read Input Register, lo que significa leer los registros de entrada. Estos registros son de sólo lectura no los podrás cambiar desde un maestro. En tu caso tu equipo te permite leer las variables que maneja (T y PPM).
2. La función 3 de Modbus tiene por nombre Read Holding Register, lo que significa leer los registros de retención. Estos registros son de lectura y escritura, es decir, los puedes modificar y muchos equipos los emplean para de forma remota cambiar parámetros de configuración.
3. Tanto los Input Register (IR) como los Holding Register (HR) tienen un tamaño de 16 bits (1 Word ó 2 Bytes que es lo mismo). Para poder entender los valores que estás leyendo debemos ver en el manual el fabricante que está ubicando en esos HR y luego como se organiza la información hay varias formas de organizar la info:
– Por Bytes (Parte baja y parte alta) Entregar información distinta en cada Byte
– Por Bit, recuerda que un HR son 16 bits y el puede dar funciones distintas a cada bit o a un grupo de bits dentro de ese grupo
– Por valores compactos en donde cada valor leído puede ser un código para indicar funcionalidades específicas en el equipo.
Nota final-> Me puedes compartir el manual y te doy más detalles..Espero te sirva la respuesta..
Andres buenas noches, primero que nada quiero felicitarte por tu excelente trabajo, tengo una duda, estoy tratando de conectar un Arduino Mega 2560 con un Power Meter Schneider PM2120, usando una tarjeta generica RS-485 (como interfaz entre el Arduino y el PM2120) no he podido leer los registros del PM. El proyecto es para un tema pedagocio del SENA ya que soy instructor alli y estamos trabajando con estos equipos. ¿Es posible contartarnos por algun otro medio para que me des una mano? de antemano gracias!
Un saludo Miguel, paso a responderte. Te aconsejo que antes de conectar los equipos directamente, pruebes la comunicación con el equipo Power Meter y el Arduino por separado para verificar que todo funciona. Debes emplear herramientas como las que te muestro en el siguiente video
https://youtu.be/S_JmG-j7QSk
Y un adaptador USB RS 485 para que puedas agregar la capa física a tu computador, te dejo un enlace de mercado libre para que la conozcas.
https://articulo.mercadolibre.com.co/MCO-447858582-conversor-usb-a-rs485-ch340-windows-xpvista7810-linux-_JM?quantity=1
Un lujo el artículo!!
Gracias!!
Gracias Guillermo por tu mensaje…
Buenisima informacion maestro, me saco de un par de encrucijadas y ahora una pregunta que la verdad no encuentro persona que me saque de dudas
Si quiero armar un sistema SCADA con plcs y tengo 8 maquinas para un plc supongase siemens que solo tiene 1 puerto modbus rs485, existe manera de yo simplificar esas 8 señales modbus a 1 para conectarla al plc o tendria que obligatoriamente insertale los modulos de comunicacion necesarios? o que otra manera existe de realizar esta tarea y ahorrar en costos. he buscado un dispositivo que hiciera de intermedio entre la cantidad x de maquinas y el plc y asi simplificar la señal pero realmente no encuentro nada.
Un saludo, paso a contestar tu inquietud al emplear la capa física RS485 puedes llegar a tener en conexión hasta 32 equipos empleando el mismo bus y todos los dispositivos se conectan en paralelo a las señales de datos positiva y negativa. Evidentemente tus 8 máquinas deben soportar la capa física y hablar el Protocolo Modbus, entonces si quieres usar los beneficios de la red Modbus y si ellos no poseen esta especificación tal vez con un módulo para cada uno es la solución más transparente. Entendiendo lo que planteas en tu montaje y leyendo entre líneas buscas tal vez un ahorro y no agregar los 8 módulos a tus máquinas, tendrías que ver las posibilidades que tienes para operar con entradas y salidas analógicas o de voltaje, también con entradas digitales para codificar en binario ciertas funcionalidades y estas tareas las realizas desde un solo PLC, pero es evidente que en las máquinas debes tener la flexibilidad de programar la recepción e interpretación de este tipo de comunicación. Es limitada a comparación de tener un protocolo, tal vez reduces el tema de hardware pero incrementas la parte de ingeniería pues tienes que entrar a organizar cada máquina bajo este esquema.
Buenas! Excelente todo! donde puedo ver el codigo arduino para implemertar Modbus?
Un saludo David, lo voy a agregar al propio artículo para que puedan acceder a ese contenido
Excelente trabajo. Muchas Gracias!!.
Gracias Mauricio por el mensaje
Excelente información y muy buen canal de YouTube, quiero hacerle una consulta:
Necesito conectar un caudalimetro fluxus Adm 7407 (que tiene un protocolo modbus Ascii RTS/CTS) con un sistema SCADA que estoy creando, el problema que tengo es que el proveedor no me da el mapeo de memoria de este dispositivo en su manual y desconozco el id de esclavo que este tiene, por lo tanto no puedo tomar las variables que necesito, intente usar modscan para comunicarme con el dispositivo y obtener esa información, intente la conexión con todos los id y no me funciono, usted me podría aconsejar que hacer en este caso para poder llevar a cabo mi proyecto?
Un saludo Otoniel eso ocurre muchas veces porque el Fabricante quiere que uses las herramientas de visualización y configuración propias. En ese caso te propongo que hagas lo siguiente para que puedas determinar los parámetros que se han configurado, descarga el programa que se propone para conectar el equipo (el que el fabricante sugiere) y vas a escuchar el tráfico empleando una aplicación como la que muestro en el siguiente video https://youtu.be/RgTm9g9WJgI
Así vas poder obtener el ID del equipo y parámetros propios del enlace serial como: tasa de bits, paridad, y bits de parada.
Hola, muchas gracias por la información.
Hola Wilber gracias por el mensaje
Muchas gracias por el blog, sobre todo cuando citas algunas cosas que informas ,me ha ayudado bastante . Gracias por compartir el conocimiento dices cosas muy concretas y sin tanto rodeo lo cual ayuda bastante y si uno quiere profundizar más ya sabe que camino tomar. Muchas gracias de nuevo.
Un saludo Juliana, gracias por el mensaje me alegra que te ayude el contenido
Esta muy completo este artículo, me ha servido de gran ayuda.
Felicidades y muchas gracias.
Hola Patrick, gracias por el mensaje
hola amigo una consulta me gustaría aprender todo sobre modbus tcp/ip me gustaría saber cuanto sale el curso
Un saludo Cristian, te espero por mi plataforma de entrenamiento para que puedas desarrollar esa habilidad profesional, te ayudo a que aprendas tecnologías propias de la Industria como las redes industriales, el IOT de la Industria y por supuesto aprendas a implementar el Protocolo Modbus TCP, te dejo la información en el siguiente enlace para que seas parte de la familia EEYMUC.
http://eeymuc.co/lanzamiento-diplomado-ci/
hola ing.hurtado le envió un gran abrazo y saludo desde mexico estado de veracruz ,esperando se encuentre muy bien , tengo una pregunta , existe alguna trama de arduino donde yo pueda leer a un trasmisor de flujo mediante modbus rs-485 y poder imprimir los datos en el monitor serial?
de antemano me gustaria pertenecer a EEYMUC y reforzar mis conocimientos con sus cursos.
Un saludo Ronald feliz 2021, es posible realizar la comunicación que planteas y te voy a dar algunas recomendaciones: 1. Debes resolver la parte de la capa física para que el arduino pueda soportar RS-485 (Agregar una tarjeta), 2. Debes usar las librerías en arduino que te permitan configurarlo como un maestro de Modbus RTU. Te comparto un video en mi canal de Youtube que puede orientarte en el proceso que te planteo https://youtu.be/58OLQPVOe00
Muchísimas gracias. Muy buen trabajo. Me fue de gran ayuda para mí trabajo. Saludos desde Argentina.
Un saludo Martín gracias por tu mensaje.
Felicitaciones amigo es información muy importante y se nota el gran esfuerzo que pusiste, tengo a consulta sobre cómo saber cuál es la trama del esclavo por ejemplo en un hmi como haría saberlo ???.
Estoy intentando suscribirme para realizar el diplomado de comunicación pero no me permite la pagina, espero puedas revisarlo .
Un saludo Hernán gracias por el comentario, te comparto un tutorial de mi canal de Youtube donde explico la trama del protocolo Modbus para los equipos esclavos https://youtu.be/mIz2UUz5WdM
Te dejo la información detallada para pertenecer a mi club de entrenamiento privado http://eeymuc.co/club/