# MODBUS SOBRE TCP/IP



## quantum (Ago 9, 2006)

Necesito toda la información disponible sobre el protocolo "MODBUS SOBRE TCP/IP", no me refiero a cada uno por separado, este tipo de protocolo es para conectarme a una RTU, no consigo información suficiente.

Les agradezco toda la ayuda que puedan.
GRACIAS


----------



## chuko (Sep 3, 2006)

1º) Estudiar un poco sobre las conexiones TCP. LAs conexiones TCP son arquitecturas de telecomunicaciones Cliente - Servidor. La aplicación Cliente es el que inicia una conversación TCP con la aplicación Servidora. Por ejemplo, el Firefox, que es la aplicación cliente, envía una petición de conexión con un servidor web (por ejemplo este). El servidor te acepta y se efectua un intercambio de información (en este caso HTML). El firefox interpreta esos datos HTML y los transformadorrma en tu pantalla en forma de letras con fuentes formateadas, imágenes, etc, etc.

2º) Para el caso de las comunicaciones modbus TCP es algo parecido. Necesitas por lo menos un servidor Modbus TCP y un cliente Modbus TCP. No es necesario armar ningun circuito lectronico profundo para probar este protocolo, basta con que programes dos aplicaciones en tu computadora (una aplicacion servidora y otra cliente). El Modbus sobre TCP en los PLC es como el HTML sobre TCP para las paginas web. O sea que vas a tener que realizar un interprete modbus y manejar conexiones TCP.

3º) Para manejar conexiones TCP ya vienen librerías standard de funciones para hacerlo. Esas son los _sockets_. O sea que tenes que estudiar un poco los sockets para comprender primero las conexiones TCP. El intercambio de información por medio de sockets es transparente, vas a ver que no tenes que hacer nada extraño con los paquetes Modbus RTU, es más, te vas a olvidar de calcular el CRC porque el TCP ya implementa un CRC para control de errores.

La idea de un socket servidor TCP (muy resumida) es la siguiente:

a) creas el socket con socket()
b) enlazas ese socket a una direccion IP con bind()
c) pones al socket a esperar que un cliente se te conecte con listen()
d) si un cliente se quiere conectar con este servidor lo podemos aceptar o rechazas (lo aceptamos porque eso es lo que queremos con accept()    )
e) enviamos datos y recibimos datos con read y write (acá entra en juego recien la trama modbus RTU binaria)
f) si queres terminar la conexión la haces con closesocket, o la puede hacer el cliente tambien.

La idea de un socket cliente TCP (muy resumida) es la siguiente:

a) creas el socket con socket()
b) enlazas ese socket a una direccion IP con bind()
c) intentas conectarte con un servidor con connect()
d) intercambias información con el servidor con read() y write() (acá entra en juego recien la trama modbus RTU binaria)
e) finalizamos la conexion con closesocket()

Buscá en http://www.modbus.org información sobre modbus
Y en google vas a encontrar un toco sobre sockets


----------

