Modbus - Comunicación serial en entornos Modbus
Integración de usuarios seriales con el Com-Server de W&T
Modbus es un protocolo de comunicación introducido en los años 70 por Modicon para el intercambio de datos entre unidades de control, sistemas SCADA, logger de datos, etc. Hasta el día de hoy sigue siendo un estándar ampliamente aceptado en la industria y mantiene su popularidad también en la interconexión de componentes fotovotáicos y eólicos (inversor de corriente, logger de datos, memoria, medidor de energía, etc.).
En Internet están disponibles una gran cantidad de descripciones detalladas y artículos sobre Modbus, así como la especificación misma, de forma gratuita. Por eso nos vamos a limitar aquí a un breve resumen de las propiedades más importantes para mostrar las posibilidades de aplicación del Com-Server en diferentes entornos. Les mostramos diferentes posibilidades de aplicación de los Com-Server en un entorno Modbus más abajo en esta página.
Modbus en general
Modbus es un estricto procedimiento maestro/esclavo. Eso significa que los esclavos en Modbus solo pueden reaccionar a peticiones dirigidas a ellos, las denominadas Requests (peticiones), de un maestro en Modbus. La comunicación se basa en la lectura o escritura de registros por el maestro.
Cada petición contiene:
| Longitud | Nombre | Descripción |
|---|---|---|
| 1 byte | Address | Dirección del esclavo |
| 1 byte | Function Code | Tipo o amplitud del registro y acceso de lectura o de escritura |
| 2 byte | Start Address | Dirección en la que se ha iniciado el acceso (High-Byte first) |
| 2 byte | Register Count | Cantidad de los registros de lectura o escritura |
Un esclavo al que se ha dirigido una petición puede responder con una de las den. Response.
Una respuesta correcta contiene:
| Longitud | Nombre | Descripción |
|---|---|---|
| 1 byte | Address | Dirección del esclavo |
| 1 byte | Function Code | Idéntico al de la petición |
| 1 byte | Length | Cantidad de byte siguientes con el contenido del registro solicitado |
Pueden producirse dos tipos de errores:
- El esclavo entiende la petición a nivel sintáctico pero no conoce el registro solicitado y responde con una excepción (Function Code Response = Function Code Request + 0x80)
- El esclavo no reacciona.
Modbus/RTU
Modbus/RTU es el estándar habitual para la comunicación en Modbus vía interfaces seriales (RS232/422/485). A las peticiones y respuestas en Modbus se le agrega una suma de verificación de 2 bytes. Tanto el maestro como el esclavo reconocen el final del datagrama por una pausa en la transmisión de al menos 3,5 longitudes de caracteres.
Modbus/TCP
Modbus/TCP se emplea en la comunicación en redes TCP/IP. Aquí se antepone a las peticiones y a las respuestas un título para Modbus/TCP. Gracias a las sumas de verificación contenidas ya en los protocolos de red se puede prescindir de otras sumas de verificación el datagrama de Modbus.
| Longitud | Nombre | Descripción |
|---|---|---|
| 2 byte | Transaction ID | Número correlativo |
| 1 byte | Function Code | Idéntico al de la petición |
| 1 byte | Length | Cantidad de byte siguientes con el contenido del registro solicitado |
On the wire: Modbus/RTU vs. Modbus/TCP
Modbus/ASCII y Modbus/TCP Secure Protocol
Los dos son otras variantes de protocolo para Modbus, aunque en la práctica no gozan de una gran divulgacón. Los dispositivos de W&T no son compatibles con Modbus/ASCII ni con Modbus/TCP Secure Protocol.