Sei sulla pagina 1di 15

PROTOCOLO MODBUS

INTRODUCCIN La designacin Modbus Modicon corresponde a una marca registrada por Gould Inc. Como en tantos otros casos, la designacin no corresponde propiamente al estndar de red, incluyendo todos los aspectos desde el nivel fsico hasta el de aplicacin, sino a un protocolo de enlace (nivel OSI 2). Puede, por tanto, implementarse con diversos tipos de conexin fsica y cada fabricante suele suministrar un software de aplicacin propio, que permite parametrizar sus productos. No obstante, se suele hablar de MODBUS como un estndar de bus de campo, cuyas caractersticas esenciales son las que se detallan a continuacin. Todas las solicitudes y respuestas MODBUS estn diseadas en tal forma que el receptor puede verificar que un mensaje esta completo. Para cdigos de funcin donde la solicitud y respuesta son una longitud fija, el cdigo de funcin solo es suficiente. Para cdigos de funcin llevando una cantidad variable de datos en la solicitud y respuesta, la porcin de datos est precedida por un campo que representa el nmero de bytes que siguen. DESARROLLO Modbus es un protocolo de comunicaciones situado en el nivel 7 del Modelo OSI, basado en la arquitectura maestro/esclavo o cliente/servidor, diseado en 1979 por Modicon para su gama de controladores lgicos programables (PLCs). La comunicacin en este caso se controla por medio de cdigos de funcin, al contrario de lo que ocurre en la comunicacin DP. Adems, al contrario que en PROFIBUS DP, no se accede a los datos de la periferia de forma cclica sino que se accede directamente a los datos del control. MODBUS basa su modelo de datos sobre una serie de tablas las cuales tienen caractersticas distintivas. Las cuatro principales son: Entradas discretas. Bit simple, suministrado por un sistema I/O, de solo lectura. Salidas discretas. Bit simple, alterable por un programa de aplicacin, de lectura-escritura. Registros de entrada. Cantidad de 16 bits, suministrado por un sistema I/O, de solo lectura. Registros de salida. Cantidad de 16 bits, alterable por un programa de aplicacin, lectura-escritura

El protocolo Modbus dispone de una secuencia de cdigos de funcin, que los procesadores de comunicacin convierten en llamadas de funcin SIMATIC S7. Fsicamente, el protocolo Modbus funciona con las siguientes interfases:

RS232 C 20mA (TTY) RS422 / 485

Interfases RS232 (Recommended) Standard 232, tambin conocido como Electronic Industries Alliance RS-232C) es una interfaz que designa una norma para el intercambio serie de datos binarios entre un DTE (Equipo terminal de datos) y un DCE (Data Communication Equipment, Equipo de Comunicacin de datos). En particular, existen ocasiones en que interesa conectar otro tipo de equipamientos, como pueden ser computadores. Evidentemente, en el caso de interconexin entre los mismos, se requerir la conexin de un DTE (Data Terminal Equipment) con otro DTE. Para ello se utiliza una conexin entre los dos DTE sin usar mdem, por ello se llama: null mdem mdem nulo. El RS-232 consiste en un conector tipo DB-25 (de 25 pines), aunque es normal encontrar la versin de 9 pines (DE-9), ms barato e incluso ms extendido para cierto tipo de perifricos (como el ratn serie del PC). La transmisin 20mA tiene su origen en las interfaces de teleimpresores de Correos y Telgrafos. La tcnica se asumi en primera lnea de aparatos terminales industriales y tambin de ordenadores de la tcnica de datos media y grande. En los aparatos de nueva construccin la interfaz 20mA no se usa ms y en lugar de ello se prefiere generalmente una interfaz de bus RS485. Estndares (RS422). Estndar aprobado por la EIA para conectar dispositivos en forma serial. Junto con el RS-423, son los reemplazantes del estndar RS-232, pues soportan mayores velocidades de transferencia. Tambin permiten compatibilidad hacia atrs, pues es posible conectar dispositivos RS-232 en ellos. Un protocolo es un conjunto de reglas usadas por computadoras para comunicarse unas con otras a travs de una red. Un protocolo es una convencin o estndar que controla o permite la conexin, comunicacin, y transferencia de datos entre dos puntos finales. Ventajas del protocolo: Conexin sencilla a sistemas Modicon o Honeywell Adecuado para cantidades de datos pequeas o medianas (<= 255 Bytes) Transferencia de datos con acuse Es escalable en complejidad. Un dispositivo el cual tiene solo un propsito simple necesita solo implementar uno o dos tipos de mensaje. Es simple para administrar y expandir.

Desventajas del protocolo: Coste de configuracin y programacin elevado El protocolo no est extendido dentro de la familia SIMATIC Estructura de la red Medio Fsico El medio fsico de conexin puede ser un bus semidplex (half duplex) (RS-485 o fibra ptica) o dplex (full duplex) (RS-422, BC 0-20mA o fibra ptica). La comunicacin es asncrona y las velocidades de transmisin previstas van desde los 75 baudios a 19.200 baudios. La mxima distancia entre estaciones depende del nivel fsico, pudiendo alcanzar hasta 1200 m sin repetidores. Acceso al Medio La estructura lgica es del tipo maestro-esclavo, con acceso al medio controlado por el maestro. El nmero mximo de estaciones previsto es de 63 esclavos ms una estacin 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 (puede ser simplemente un reconocimiento. Mensajes difundidos. Estos consisten en una comunicacin 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 configuracin, reset, etc. Protocolo La codificacin de datos dentro de la trama puede hacerse en modo ASCII o puramente binario, segn el estndar RTU (Remote Transmission Unit). En cualquiera de los dos casos, cada mensaje obedece a una trama que contiene cuatro campos principales, segn se muestra en la figura 1. La nica diferencia estriba en que la trama ASCII incluye un carcter de encabezamiento (:=3AH) y los caracteres CR y LF al final del mensaje. Pueden existir tambin diferencias en la forma de calcular el CRC, puesto que el formato RTU emplea una frmula polinmica en vez de la simple suma en mdulo 16. Con independencia de estos pequeos detalles, a continuacin se da una breve descripcin de cada uno de los campos del mensaje:

Figura 1. Trama genrica del mensaje segn el cdigo empleado Nmero de esclavo (1 byte): Permite direccionar un mximo de 63 esclavos con direcciones que van del 01H hasta 3FH. El nmero 00H se reserva para los mensajes difundidos. Cdigo de operacin o funcin (1 byte): Cada funcin permite transmitir datos u rdenes al esclavo. Existen dos tipos bsicos 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, verificacin de contadores de intercambio, etc.) La tabla 1 muestra la lista de funciones disponibles en el protocolo MODBUS con sus correspondientes cdigos de operacin. Campo de subfunciones/datos (n bytes): Este campo suele contener, en primer lugar, los parmetros necesarios para ejecutar la funcin indicada por el byte anterior. Estos parmetros podrn ser cdigos de subfunciones en el caso de rdenes de control (funcin 00H) o direcciones del primer bit o byte, nmero 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 cdigo ASCII, esta palabra es simplemente la suma de comprobacin (checksum) del mensaje en mdulo 16 expresado en ASCII. En el caso de codificacin RTU el CRC se calcula con una frmula polinmica segn el algoritmo mostrado en la figura 2.

Tabla 1. Funciones bsicas y cdigos de operacin

Figura 2. Clculo del CRC codificacin RTU

Funcin 0: Esta funcin permite ejecutar rdenes de control, tales como marcha, paro, carga y lectura de programas de usuario del autmata. Para codificar cada una de las citadas rdenes se emplean los cuatro primeros bytes del campo de datos. La trama resultante es la representada en la figura 3 y la interpretacin de los cdigos de subfuncin se especifica en la tabla 2. En caso de las rdenes de marcha y paro, el campo de informacin de la trama representada en la figura 3 est vaco y, por tanto, el mensaje se compone simplemente de 6 bytes de funcin ms 2 bytes de CRC. La respuesta del esclavo a estas rdenes es un mensaje idntico al enviado por el maestro. Cabe sealar, adems, que despus de un paro el autmata slo acepta ejecutar subfunciones de la funcin 00H.

Figura 3. Trama genrica de las subfunciones de control de esclavos (cd. funcin 00H)

Tabla 2. Subfunciones correspondientes a la funcin =00H

Nivel de aplicacin Como se ha dicho a nivel general de buses de campo, el nivel de aplicacin de MODBUS no est cubierto por un software estndar, sino que cada fabricante suele suministrar programas para controlar su propia red. No obstante, el nivel de concrecin en la definicin de las funciones permite al usuario la confeccin de software propio para gestionar cualquier red, incluso con productos de distintos fabricantes. Variantes de modbus JBUS JBUS es una designacin utilizada por la firma APRIL para un bus propio que presenta gran similitud con MODBUS, con protocolos prcticamente idnticos. La designacin JBUS, de la misma forma que MODBUS, corresponde a un protocolo de enlace ms que a una red propiamente dicha. Puede, por tanto, implementarse con cualquiera de las conexiones fsicas normalizadas. Comparacin entre JBUS y MODBUS

La arquitectura de la red, el formato general de la trama y muchos de los cdigos de funcin de ambos buses coinciden exactamente. Existen, sin embargo, algunos cdigos de funcin cambiados, otros que presentan ligeras diferencias o funciones aadidas. Como diferencias ms relevantes citaremos las siguientes: Posee un registro de estado en cada estacin que permite un diagnstico de la estacin. El nmero de esclavo para JBUS (1er byte de la trama) permite valores que van del 01H hasta el FFH. Permite, por tanto, direccionar 255 esclavos en vez de 63. El nmero 00H se reserva igualmente para mensajes difundidos. Las funciones disponibles son prcticamente las mismas en ambos protocolos, pero algunos cdigos de funcin (2 byte de la trama) y de las subfunciones no coinciden.

Tabla 4. Funciones idnticas Modbus Jbus

MODBUS TCP/IP MODBUS TCP/IP es una variante o extensin del protocolo Modbus que permite utilizarlo sobre la capa de transporte TCP/IP. De este modo, Modbus-TCP se puede utilizar en Internet, de hecho, este fue uno de los objetivos que motiv su desarrollo (la especificacin del protocolo se ha remitido a la IETF=Internet Engineering Task Force). Cuando MODBUS es llevado sobre TCP informacin de longitud se adiciona en el prefijo (o encabezado) para permitir al receptor reconocer los lmites del mensaje, igual si el mensaje ha sido dividido en mltiples paquetes para la transmisin. La existencia de reglas de longitudes implcitas o explcitas, y el uso de un cdigo de chequeo de error CRC-3213(sobre Ethernet) resulta en una probabilidad muy pequea de corrupcin no detectada sobre un mensaje de solicitud o respuesta. En la prctica, un dispositivo instalado en Europa podra ser direccionado desde EEUU o cualquier otra parte del mundo. Las ventajas para los instaladores o empresas de automatizacin 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 gestin de sistemas distribuidos geogrficamente mediante el empleo de las tecnologas de Internet/Intranet actualmente disponibles. Es simple para administrar y expandir. No se requiere usar herramientas de configuracin complejas cuando se aade una nueva estacin a una red Modbus/TCP. Puede ser usado para comunicar con una gran base instalada de dispositivos MODBUS, usando productos de conversin los cuales no requieren configuracin. No es necesario equipo o software propietario de algn vendedor. Cualquier sistema computador o microprocesador con una pila de protocolos TCP/IP puede usar Modbus/TCP. MODBUS TCP/IP se ha convertido en un estndar industrial de facto debido a su simplicidad, bajo coste, necesidades mnimas 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 informacin entre dispositivos, as como monitorizarlos y gestionarlos. Tambin se emplea para la gestin de entradas/salidas distribuida, siendo el protocolo ms popular entre los fabricantes de este tipo de componentes. La combinacin de una red fsica verstil y escalable como Ethernet con el estndar universal de inter redes TCP/IP y una representacin de datos independiente de fabricante, como MODBUS, proporciona una red abierta y accesible para el intercambio de datos de proceso. Estructura del protocolo Modbus/TCP A continuacin se describe la forma general de encapsulacin de una solicitud o respuesta MODBUS cuando es llevada sobre una red Modbus/TCP. Es importante anotar que la estructura del cuerpo de la solicitud y respuesta, desde el cdigo de funcin hasta el fin de la porcin de datos, tiene exactamente la misma disposicin y significado como en las otras variantes MODBUS, tal como: MODBUS serial - codificacin ASCII MODBUS serial - codificacin RTU MODBUS PLUS

Las nicas diferencias en esos otros casos son la especificacin de los delimitadores inicial y final del mensaje, el patrn de chequeo de error y la interpretacin de la direccin. Todas las solicitudes son enviadas va TCP sobre el puerto registrado 502. Las solicitudes normalmente son enviadas en forma half-duplex sobre una conexin dada. Es decir, no hay beneficio en enviar solicitudes adicionales sobre una nica conexin mientras una respuesta est pendiente. Sin embargo, los dispositivos que desean obtener altas ratas de transferencia pueden establecer mltiples conexiones TCP al mismo destino. El campo direccin esclavo de MODBUS es reemplazado por un byte identificador de unidad el cual puede ser usado para comunicar a travs de dispositivos tales como puentes y gateways, los

cuales usan una direccin IP nica para soportar mltiples unidades independientes.

terminales

Los mensajes de solicitud y respuesta en Modbus/TCP poseen un prefijo o encabezado compuesto por seis bytes como se aprecia en la tabla 5. ref ref 00 00 00 len

El ref ref anterior son los dos bytes del campo referencia de transaccin, un nmero que no tiene valor en el servidor pero son copiados literalmente desde la solicitud a la respuesta a conveniencia del cliente. Este campo se utiliza para que un cliente Modbus/TCP pueda establecer simultneamente mltiples conexiones con diferentes servidores y pueda identificar cada una de las transacciones. El tercer y cuarto campo del prefijo (00) representa el identificador de protocolo, un nmero el cual debe ser establecido a cero. El l en especifica el nmero de bytes que siguen. La longitud es una cantidad de dos bytes, pero el byte alto se establece a cero ya que los mensajes son ms pequeos que 256. De esta forma, un mensaje Modbus/TCP completo posee una estructura como se muestra en la tabla 5.1 Tabla 5.1 estructura de mensajes Modbus/TCP. Posicin del Byte Significado Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 y mas Identificador de transaccin. Copiado por el servidor o normalmente 0. Identificador de transaccin. Copiado por el servidor- normalmente 0. Identificador de protocolo = 0. Identificador de protocolo = 0. Campo de longitud (byte alto) = 0.Ya que los mensajes son menores a 256. Campo de longitud (byte bajo). Nmero de bytes siguientes. Identificador de unidad (previamente direccin esclavo). Cdigo de funcin MODBUS Los datos necesarios 1.

El protocolo Modbus TCP Modbus/TCP simplemente encapsula una trama Modbus en un segmento TCP. TCP proporciona un servicio orientado a conexin fiable, lo que significa que toda consulta espera una respuesta.

Figura 14. Encapsulamiento de la trama Modbus en TCP. Esta tcnica de consulta/respuesta encaja perfectamente con la naturaleza Maestro/Esclavo de Modbus, aadido 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 solucin para la gestin desde unos pocos a decenas de miles de nodos. Conformacin de clases: MODBUS por su naturaleza es ya implementada en muchsimos lugares, por tanto una ruptura de las implementaciones existentes debe ser evitada. De esta forma el conjunto de los tipos de transaccin MODBUS existente ha sido clasificado en clases, donde el nivel 0 representa funciones las cuales son universalmente implementadas y totalmente consistentes, y el nivel 2 representa funciones tiles pero algo dependientes del esclavo. Esas funciones del conjunto, las cuales no son convenientes por interoperabilidad son tambin identificadas. Debe anotarse que futuras extensiones al estndar pueden definir cdigos de funcin adicionales para manejar situaciones donde el estndar existente es deficiente. o Clase 0.

Este es el mnimo conjunto til de funciones, tanto para el maestro como para el esclavo. Tabla de la clase 0 Cdigo 03 16 Funcin Leer multiples registros holding. Escribir holding. Clase 1 mltiples registros

Este es el conjunto adicional de funciones, el cual es comnmente implementado e interoperable. Como fue explicado antes, muchos esclavos deciden tratar entradas, salidas, registros, y valores discretos como equivalentes. Tabla de la clase 1 Cdigo Funcin 01 Leer estado de salidas discretas 02 Leer estado de entradas discretas. 04 Leer registros de entrada. 05 Forzar una salida discreta. 06 Prefijar un registro holding nico. 07 Leer estados de excepcin*. * Esta funcin tpicamente tiene un significado diferente para cada familia de esclavos. o Clase 2

Estas son las funciones de transferencia de datos necesarias para operaciones de rutina tal como supervisin y HMI. Tabla de la clase 2 Cdigo Funcin 15 Fijar mltiples salidas discretas 20 Leer referencia general*. 21 Escribir referencia general*. 22 Enmascarar registro de escritura. 23 Leer/escribir registros**. 24 Leer cola FIFO***. Esta funcin ser la ms apropiada para manejar grandes espacios de registros y datos, los cuales carecen de nmeros de referencia. Esta funcin permite la entrada y salida de un rango de registros como una transaccin nica. Es la forma ms eficiente usando MODBUS para desempear un intercambio regular de datos tal como con un mdulo I/O.

Una funcin algo especializada, destinada a permitir la a transferencia de datos desde una tabla estructurada como una FIFO a un computador. Prestaciones de un sistema MODBUS TCP/IP:

Las prestaciones dependen bsicamente de la red y el hardware. Si se usa MODBUS TCP/IP sobre Internet, las prestaciones sern las correspondientes a tiempos de respuesta en Internet, que no siempre sern las deseables para un sistema de control. Sin embargo pueden ser suficientes para la comunicacin destinada a depuracin y mantenimiento, evitando as desplazamientos al lugar de la instalacin.

Si disponemos de una Intranet de altas prestaciones con conmutadores Ethernet de alta velocidad, la situacin es totalmente diferente. En teora, 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 informacin til ser: 1.25M / 2 * 60% = 360000 registros por Segundo En 100BaseT la velocidad es 10 veces mayor. Esto suponiendo que se estn empleando dispositivos que pueden dar servicio en la red Ethernet aprovechando todo el ancho de banda disponible. En los ensayos prcticos realizados por by Schneider Automation utilizando un PLC Ethernet MomentumTM con entradas/salidas Ethernet, demostr que se podan escanear hasta 4000 bloques I/O por segundo, cada uno con hasta 16 I/O analgicas de 12-bits o 32 I/O digitales (se pueden actualizar 4 bases por milisegundo). Aunque estos resultados estn por debajo del lmite terico calculado anteriormente, pero debemos recordar que el dispositivo se prob con una CPU de baja velocidad (80186 a 50MHz con 3 MIPS). Adems, el abaratamiento de los ordenadores personales y el desarrollo de redes Ethernet cada vez ms rpidas, permite elevar las velocidades de funcionamiento, a diferencia de otros buses que estn inherentemente limitados una sola velocidad. Cmo 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. Desempeo requerido y esperado No existe una especificacin precisa acerca del tiempo de respuesta requerida para una transaccin sobre MODBUS o Modbus/TCP. Esto es debido a que se espera que Modbus/TCP sea usado en la ms amplia variedad posible de situaciones de comunicacin, desde sistemas I/O esperando temporizacin en milisegundos, a enlaces de radio de larga distancia con retardos de varios segundos. En general, los dispositivos tales como PLCs respondern a solicitudes ingresantes en un tiempo scan, el cual tpicamente vara entre 20 y 200 msg. Desde la perspectiva del cliente, ese tiempo de respuesta debe ser extendido por los retardos de transporte a travs de la red, a un tiempo de respuesta razonable. Tales retardos pueden ser de milisegundos para un Ethernet conmutado, a cientos de milisegundos para una conexin de red de rea amplia (WAN).

Cualquier tiempo timeout usado en un cliente debe ser ms grande que el mximo tiempo de respuesta razonable, para as evitar una excesiva congestin en el dispositivo servidor en la red, lo cual puede causar errores. As en la prctica, los timeouts usados en aplicaciones cliente de alto desempeo sern probablemente algo dependientes sobre la topologa de la red y el desempeo esperado del servidor. Aplicaciones cliente las cuales no son crticas en tiempo pueden con frecuencia dejar los valores timeout al establecido por defecto en TCP, el cual reportar fallo en la comunicacin despus de varios segundos. Los clientes pueden cerrar y re-establecer conexiones Modbus/TCP cuando el timeout ha expirado. Sin embargo al retransmitir una solicitud, es aconsejable establecer el timeout un poco ms grande que el anterior, para as permitir a un servidor recuperarse de un posible error. Gua de implementacin del cliente y servidor El contenido de esta seccin no ser considerado obligatorio para la implementacin particular de un cliente o servidor. Sin embargo, si son seguidas, estas polticas facilitaran la integracin cuando se implementen sistemas multivendedor y gateways a equipo MODBUS ya instalado. o Diseo del Cliente.

Modbus/TCP est diseado para permitir que el diseo de un cliente sea tan simple como sea posible. El proceso bsico de manejo de una transaccin es como sigue: Establecer una conexin TCP al puerto 50220en el destino (servidor) deseado. Preparar una solicitud MODBUS, codificada como fue descrito antes.

Enviar la solicitud MODBUS, incluyendo su prefijo Modbus/TCP de 6 bytes, como un nico buffer transmitido. Esperar que una respuesta aparezca sobre la misma conexin TCP. Opcionalmente correr un timeout, si se desea ser avisado de problemas de comunicacin ms rpido de lo que TCP normalmente reporta. Leer los primeros 6 bytes de la respuesta, el cual indicar la longitud real del mensaje recibido. Leer los bytes restantes de la respuesta.

Si no se espera una comunicacin adicional al destino particular en el futuro inmediato, cerrar la conexin TCP as que los recursos en el servidor puedan ser usados, si es requerido, para servir a otros clientes. Un tiempo de un segundo es sugerido como el perodo mximo para dejar una conexin abierta en el cliente.

En el evento que expire el timeout para una respuesta, realizar un cierre unilateral de la conexin, abrir una nueva, y re-enviar la solicitud. Esta tcnica permite al cliente control sobre la temporizacin de re-intentos, el cual es superior al suministrado por defecto por TCP. Tambin permite el uso de estrategias alternas, tal como enviar la solicitud a una direccin IP alterna, usando una red de comunicacin totalmente independiente, en caso de fallo de un componente de la infraestructura de la red. o Diseo del servidor.

Un servidor Modbus/TCP siempre ser diseado para soportar mltiples clientes concurrentes, sin importar que en su uso previsto solo un nico cliente parezca tener sentido. Esto permite al cliente cerrar y reabrir la conexin a fin de responder rpidamente a la no entrega de una respuesta. Si una pila de protocolos TCP/IP convencional es usada, considerables recursos de memoria pueden ser ahorrados reduciendo el tamao de los buffers de transmisin y recepcin. Un servicio TCP normal usualmente asignar 8K bytes o ms como un buffer de recepcin por conexin. Tal espacio de buffer no tiene valor en Modbus/TCP, ya que el tamao mximo de una solicitud o respuesta es menor que 300 bytes. De esta forma se liberan recursos para conexiones adicionales. Los sistemas operativos o lenguajes que fomentan el uso de mltiples threads (hilos de control), tal como Java, pueden usar la estrategia multithreaded, descrita a continuacin: 1. Esperar conexiones entrantes sobre el puerto 502 de TCP.

2. Cuando una nueva solicitud de conexin sea recibida, aceptarla y crear un nuevo thread para manejar la conexin. 3.

Dentro del nuevo thread, hacer lo siguiente en un lazo infinito:

Leer el encabezado de 6 bytes de la solicitud Modbus/TCP. No colocar un timeout aqu, pero en cambio esperar hasta ya sea que llegue la solicitud o la conexin sea cerrada. Ambas situaciones despertaran al thread automticamente. Analizar el encabezado. Si aparece corrupto, por ejemplo si el campo de protocolo no es cero o la longitud del mensaje es ms grande que 256, entonces cerrar unilateralmente la conexin. Esta es la respuesta correcta de un servidor a una situacin donde la codificacin TCP es incorrecta. Leer los bytes restantes del mensaje, cuya longitud es ahora conocida.

Procesar el mensaje MODBUS que ingres, si es necesario suspendiendo el thread corriente hasta que la respuesta correcta pueda ser calculada.

Eventualmente se tendr ya sea un mensaje MODBUS vlido o un mensaje excepcin para usar como una respuesta. Generar el prefijo Modbus/TCP para la respuesta, copiando el campo identificado de transaccin desde la solicitud, y recalculando el campo de longitud. Enviar la respuesta, incluyendo el prefijo Modbus/TCP como un buffer nico para transmisin sobre la conexin establecida. De nuevo volver a esperar el prximo prefijo de 6 bytes, y repetir el procedimiento. de Eventualmente, cuando el cliente elija cerrar la conexin, la recepcin del prefijo de 6 bytes fallar. En este caso se cierra la conexin y se cancela el thread corriente.

Potrebbero piacerti anche