modbus

MODBUS ¿QUÉ ES EL PROTOCOLO MODBUS? El Controlador Lógico Programable, son los equipos empleados en el sector industrial

Views 237 Downloads 8 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

MODBUS ¿QUÉ ES EL PROTOCOLO MODBUS? El Controlador Lógico Programable, son los equipos empleados en el sector industrial para llevar el control de máquinas, líneas 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, además este tipo de sistemas con 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. 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. Modbus es un protocolo de solicitud-respuesta implementado usando una relación maestro-esclavo. En una relación maestro-esclavo, la comunicación siempre se produce en pares, un dispositivo debe iniciar una solicitud y luego

esperar una respuesta y el dispositivo de inicio (el maestro) es responsable de iniciar cada interacción. Por lo general, el maestro es una interfaz humanomáquina (HMI) o sistema SCADA y el esclavo es un sensor, controlador lógico programable (PLC) o controlador de automatización programable (PAC). El contenido de estas solicitudes y respuestas, y las capas de la red a través de las cuales se envían estos mensajes, son definidas por las diferentes capas del protocolo.

Figura 1. Una Relación de Red Maestro-Esclavo

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.

Especificaciones relacionadas con el perfil de un equipo Modbus

Referencias de algunos equipos que tienen perfil de esclavo

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

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 recomendaciones en la capa física: 

RS 232

trabajar

sobre

las

siguientes

 

RS 422 RS 485

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. 1) La capa física se encarga de la transmisión de bits al canal de comunicación. 2) Define los niveles de la señal eléctrica con la que se trabajará. 3) Controla la velocidad de transmisión(duración de un bit). Al igual que hay una red telefónica unida por cables de unas características y se envían unas señales eléctricas de una forma determinada que permite que hablemos entre nosotros, el protocolo MODBUS en su capa física establece tres subniveles: –MEDIO como es el canal de transmisión (cable, F.O. , radio,..) –MAU (Media attachment Unit).Contiene la electrónica (donde se generan o donde se reciben los niveles eléctricos). –PLS (Physical Logical Signal ).Codificación en la emisión de la información binaria a señales eléctricas y decodificación en la recepción.

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. 1) Se encarga de establecer una comunicación libre de errores entre dos equipos. 2) Forma la trama organizándola información binaria y la pasa a la capa física. Esta capa tiene dos subniveles: –MAC (Media Acces Control).Controla cuando el canal de transmisión está libre para poder enviar la información. –LLC (Logical Link Control). Controla y recupera los errores, también codifica y decodifica la información a HEXADECIMAL o ASCII.

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

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 tienen 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

Es una evolución natural de las comunicaciones seriales como Modus RTU y Modbus ASCII. En Modbus sobre TCP/IP como lo nombra la Modbus Organization toda la estructura de la trama se mantiene como lo que se ha estudiado hasta el momento, pero se hacen algunos ajustes propios de las nuevas capas del modelo OSI que se están incluyendo. Empezamos nombrando algunos cambios, los perfiles de los equipos son ahora Cliente y Servidor. Se puede trazar un paralelo para entender el comportamiento de los equipos con el tradicional Modbus RTU, los maestros son ahora clientes y los esclavos son servidores. Vamos a ver dentro del Modelo OSI que nuevas capas se han agregado: 1. Capa física

2. 3. 4. 5.

Capa de enlace Capa de red Capa de transporte Capa de Aplicación

Este es un buen ejemplo de integraciones de recomendaciones y protocolos para que pueda trabajar Modbus TCP IP como lo conocemos. 1. 2. 3. 4.

Capa física -> 10/100 Base T Capa de enlace->Ethernet Capa de Red -> IP Capa de Transporte -> TCP

Capa física Comenzamos con recomendaciones que nos van a definir las interfaces mecánicas, pin outs y señalización entre otras especificaciones. En Modbus TCP en la capa física se estandariza con la norma EIA/TIA 568, que define entre otros aspectos el código de colores del cable, se emplea un conector RJ45 que interconecta 8 señales, en donde 4 son dedicadas exclusivamente a la transmisión y recepción de datos (TX+, TX-, RX+, RX-). Pregunta: ¿Es posible conectar un PLC que soporta Modbus RTU en el hardware y conexiones de computadores tradicionales? Respuesta: Por supuesto que sí, cumple con las mismas normas que emplean lo computadores, pero sólo podrán intercambiar información bajo el protocolo aquellos equipos que tengan implementado Modbus TCP, es decir, un cliente y un servidor.

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

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.