Español | English
rss facebook linkedin Twitter

MODBUS

Aunque en los dispositivos SCADA hay varios protocolos, se podría decir que el stándar de facto en varios campos del control industrial es modbus. Sus ventajas son que su especificación es pública y se puede utilizar sin tener que pagar por ello, es sencillo y puede extenderse fácilmente si se desea.
Este protocolo se publicó por primera vez en 1979 con la idea de intercomunicar PLCs. Aunque originalmente el formato de los datos era binario y se transmitían a través de cables serie, actualmente el protocolo puede usarse en distintos tipos de interfaz serie ( como RS232 o RS485) y sobre TCP/IP y se contempla un modo ASCII en el que se envían los bytes representados en hexadecimal usando caracteres de texto.
La estructura básica se llama PDU. Es muy sencilla y se explica con esta imagen:

Su funcionamiento encaja perfectamente con el paradigma cliente/servidor sin estado. El cliente hace una petición mediante un PDU y el servidor le responde con otro PDU.
Como se ve, cada PDU (protocol data unit) es simplemente un byte (funtion code) que representa la operación que se quiere realizar. Junto con este código se añaden datos que dependen de la operación a realizar.
En la realidad, esta unidad se encapsula dentro de otra que depende de la tecnología física que se utiliza para transmitir los datos, así como del modo de transmisión (binario o ASCII), con lo que el resultado final es más parecido a esto:


Las operaciones son generalmente muy sencillas. No vamos a enumerar todas las que hay, pero en resumen hay 3 tipos:
- Acceso de datos. En MODBUS hay 2 tipos de datos que son bits, registros de 16 bits o ficheros que son agrupaciones de 10000 registros de 16 bits que se leen secuencialemnte, por lo que hay funciones para cada tipo de datos. Las operaciones que se pueden hacer son leer y escribir un único valor de 1 o 16 bits, leer o escribir varios valores contiguos de de 1 o de 16 bits y leer o escribir una porción de un fichero. Hay otras funciones para realizar operaciones más especificas, como leer y escribir varios registros de 16 bits en un solo PDU, aplicar máscaras de bits a registros de 16 bits o leer valores de una cola FIFO de registros de 16 bits, en el caso de que el dispositivo tenga alguna.
- Diagnóstico. Este tipo de funciones preguntan al dispositivo acerca de su estado, su número de identificación, que excepciones de protocolo ha tenido y en caso de usarse una conexión de tipo serie, qué eventos y errores han sucedido en el interfaz.
- Otros: Uno de los códigos de función está reservado para encapsular llamadas a procedimientos o cualquier otra petición que se sale del protocolo. El estándar define este código (43), así como algunos subcódigos que están reservados.
Estas peticiones se responden con otro PDU. La respuesta es igual de simple. Si no ha habido ningún error, el código de función es el mismo que se ha recibido. Dependiendo de la operación, se añaden los datos que se hayan pedido.


En caso de error, la respuesta es el código de función con el bit de más peso a uno (equivale a sumar 128) junto con un código de excepción.


Como puede verse el protocolo es sencillo y a pesar de esto, en la actualidad sigue siendo apropiado para multitud de tareas. Además de la sencillez otra de las características que vemos, más bien que no vemos es la seguridad. Efectivamente el protocolo no contempla ningún mecanismo de autenticación ni privacidad y aunque originalmente estas medidas seguramente no eran necesarias y además difíciles de implementar en dispositivos con limitaciones técnicas importantes, en la actualidad hace falta añadir medidas de seguridad. Más aún teniendo en cuenta que en algunos casos se utiliza en sistemas críticos que en caso de fallo o ataque podría tener consecuencias fatales.

Patxi Astiz
S21sec labs

(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login