Sie sind auf Seite 1von 12

UNIVERSIDAD NACIONAL DE SAN AGUSTIN

FACULTAD DE PRODUCCION Y SERVICIOS


ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

LABORATORIO 06:
SIMULADOR DEL PROTOCOLO MODBUS

1. OBJETIVO

 Conocer un simulador del protocolo modbus


 Representar el funcionamiento del protocolo modbus, lo que nos
ayudará a entender mejor cómo puede ser interceptado, manipulado y,
por ende, necesariamente protegido.

2. FUNDAMENTO TEORICO
PROTOCOLO DE COMUNICACIÓN MODBUS
Protocolo de comunicación Modbus. Fue desarrollado en 1979 por la empresa
norteamericana MODICON para su gama de controladores lógicos programables
(PLCs) y debido a que es público, relativamente sencillo de implementar y flexible se
ha convertido en uno de los protocolos de comunicaciones más populares en sistemas
de automatización y control. Se encuentra situado en el nivel 7 del Modelo OSI.
Modbus especifica el procedimiento que el controlador y el esclavo utilizan para
intercambiar datos, el formato de estos datos, y como se tratan los errores. No
especifica estrictamente el el tipo de red de comunicaciones a utilizar, por lo que se
puede implementar sobre redes basadas en Ethernet , RS-485, RS-232 etc.
DESCRIPCIÓN GENERAL
Modbus funciona siempre en modo maestro - esclavo (cliente - servidor), siendo el
maestro (cliente) quien controla en todo momento las comunicaciones con los
esclavos que pueden ser hasta 247 (@1d a @247d ) . Los esclavos (servidores) se
limitan a retornar los datos solicitados o a ejecutar la acción indicada por el maestro.
La comunicación del maestro hacia los esclavos puede ser de dos tipos:
Peer to peer: Se establece comunicación “maestro - esclavo” , el maestro solicita
información y el esclavo responde ( se envía el comando a un dispositivo comprendido
entre las direcciones 1d i 247d ).
Broadcast: Se establece comunicación “maestro - todos los esclavos” , el maestro
envía un comando a todos los esclavos de la red sin esperar respuesta (se envía a la
dirección @0d).
La secuencia básica en las comunicaciones Modbus consiste siempre en una trama de
pregunta, seguida de su correspondiente trama de respuesta:

Pregunta: con el código de función que indica al esclavo que operación ha de realizar,
y los bytes necesarios (datos, comprobación) para su ejecución.
Respuesta: con la confirmación o datos resultantes de la ejecución de la función.
Las comunicaciones Modbus se pueden realizar, además, en modo ASCII o en modo
RTU. En modo ASCII los bytes se envían codificados en ASCII, es decir, que por cada
byte a transmitir se envian dos caracteres ASCII ( 2 bytes ) con su representación

REDES DE AUTOMATIZACION Y CONTROL 0


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

hexadecimal ( esto permite leer las tramas con un simple editor de texto ). En modo
RTU se envían en binario, tal cual. En el modo ASCII las tramas comienzan por 3AH
(carácter ':'), y terminan en 0DH-0AH (CR LF Carrier Return Line Feed) y cada byte se
envía como dos caracteres ASCII. En modo RTU no se utiliza indicador de inicio y final
de trama.
PRINCIPALES CARACTERÍSTICAS
Control de acceso al medio tipo Maestro/Esclavo.
El protocolo especifica: formato de trama, secuencias y control de errores.
Existen dos variantes en el formato: ASCII y RTU
Solo especifica la capa de enlace del modelo ISO/OSI.
A cada esclavo se le asigna una direcci ´on fija y ´unica en el rango de 1 a 247.
La dirección 0 esta reservada para mensajes de difusión sin respuesta.
FORMATO GENERAL DE LAS TRAMAS
Campos de las tramas Modbus
El número de campos de las tramas Modbus varía ligeramente dependiendo de si se
utiliza la codificación ASCII o RTU:
Codificación ASCII ( formato texto ):
 Inicio de trama: 2 caracteres ASCII ( que representan 1 byte ) codificando el
caracter “:” (0x3A).
 Número Esclavo: 2 caracteres ASCII ( que representan 1 byte ) codificando la
dirección del esclavo destino ( o origen ) de la trama.
 Código Operación: 2 caracteres ASCII ( que representan 1 byte ) con el código
de operación.
 Dirección, datos y subfunciones Datos: con los parámetros necesarios para
realizar la operación.
 LRC(16): H L.
 Final de trama: 4 caracteres ASCII ( que representan 2 bytes ) con los
caracteres CR (0x0D) - LF (0x0A).
Codificación RTU (en el formato binario, el inicio de trama debería ser tras 3.5
tiempo de carácter):

 Número Esclavo: 1 byte con la dirección del esclavo destino ( o origen ) de la


trama.
 Código Operación: 1 byte con el código de operación
 Subfunciones Datos: con los parámetros necesarios para realizar la operación.
 CRC(16): H L
DESCRIPCIÓN DE LOS CAMPOS DE LAS TRAMAS MODBUS
 Número de Esclavo (1byte)
En el caso de las tramas enviadas por el máster, el campo de número de esclavo
indica la dirección del destinatario de esta trama. Permite direccionar hasta 247

REDES DE AUTOMATIZACION Y CONTROL 1


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

esclavos, con las direcciones de 1d a 247d (0x00 a 0xF7). El 0x00 es para los
mensajes de Broadcast, así el primer esclavo comienza con la dirección 1 ( de 1 a 247
). En el caso de las tramas enviadas por los esclavos, este byte sirve para indicar al
máster a quién pertenece la respuesta. Es decir, cada vez que un esclavo responde,
sitúa su propia dirección en el byte de dirección lo que permite saber al maestro a que
equipo corresponde cada respuesta. Las tramas broadcast, no tienen asociada
respuesta, y algunas implementaciones de Modbus no admiten la trama de broadcast.
 Código de Operación o Función ( 1byte)
Indica el tipo de operación que se quiere realizar sobre el esclavo. Las operaciones se
pueden clasificar en dos tipos:
De lectura / escritura en memoria: para consultar o modificar el estado de los registros
del mapa de memoria del esclavo.
Ordenes de control del esclavo: para realizar alguna actuación sobre el esclavo.
 Dirección, datos y subfunciones (n bytes)
Este campo contiene la información necesaria para realizar la operación indicada en el
código de operación. Cada operación necesitará de unos parámetros u otros, por lo
que el número de bytes de este campo variará según la operación a realizar. En el
caso del esclavo, este puede responder con tramas con o sin campo de datos
dependiendo de la operación. En los casos en que se produzca algún error es posible
que el esclavo responda con un byte extra para especificar el código de error.
 Control de errores LRC o CRC
Se utiliza un sistema de detección de errores diferente dependiendo del tipo de
codificación utilizado (ASCII o RTU) . En el caso de la codificación ASCII es el
checksum (o Longitud Redundancy Check LRC) en módulo 16 expresado en ASCII (2
caracteres representan 1 byte), sin considerar el ":" ni el “CR LF” de la trama. En la
codificación RTU se utiliza el método de CRC (Cyclical Redundancy Check) codificado
en 2 bytes (16 bits).

Para calcular el CRC se carga un registro de 16 bits todo con '1's , se hace OR con
cada uno de los caracteres de 8 bits con el contenido de cada byte y el resultado se
desplaza una bit a la izquierda insertando un 0 en la posición de menos peso (la de la
derecha). El de la izquierda se extrae y se examina: si es 1 se vuelve a hacer OR con
un valor prefijado, si es 0 no se hace ninguna OR... y el proceso se repite hasta que se
han hecho los 8 shifts del byte.

CÓDIGOS DE OPERACIÓN O FUNCIÓN MÁS FRECUENTES

 Función 1 o 2 ( 1 Read Coil Status - 2 Read Input Status )

Permite realizar la lectura del estado de las DIs (@1XXXX el comando 2-Read input
status) o DOs (@0XXXX el comando 1-Read Coil Status). Para ello el maestro solicita
el número de bits que desea leer a partir de una determinada dirección. Cada dirección
se corresponde con un registro de 1 bit con el estado del la entrada digital. El esclavo
responde indicando el número de bits que retorna y sus valores. En la trama de
respuesta se aprovechan todos los bits del byte, y puede haber hasta 256 bytes.

REDES DE AUTOMATIZACION Y CONTROL 2


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

 Función 3 o 4 ( 3 Read Holding Registers – 4 Read Input Registers )

Permite realizar la lectura del valor de las AIs ( @4XXXX el comando 3 Read Holding
Registers ) o AOs ( @3XXXX el comando 4 Read Input Registers ) . El máster indica la
dirección base y número de palabras a leer a partir de esta, mientras que el esclavo
indica en la respuesta el número bytes retornados, seguido de estos valores. Aunque
en realidad se está escribiendo en el rango de registros o valores numéricos , los
registros son direccionados a partir de la dirección 0 ( así el registro @40001 se
direcciona 0 )

 Función 5 ( Force Single Coil )

Permite modificar el estado de una DO del esclavo ( mando o relé ) . Es decir


mediante este comando se puede modificar algún bit de alguna de las variables
internas del esclavo u ordenar la ejecución o activación de un mando. Actúa sobre la
zona de memoria de los DOs @0XXXX . El Maestro especifica la dirección del bit o
mando que quiere modificar seguido de 0x00 para ponerlo a 0 o 0xFF para ponerlo a
1. El esclavo responde con una trama similar indicando la dirección que ha modificado
y el valor que ha establecido en el bit o mando.

 Función 6 ( Preset Single Register )

Permite la escritura en las AOs del esclavo ( ya sea una señal o valor interno del
equipo ), y por tanto actúa sobre la zona de memoria de las AOs ( @4XXXX ). Se debe
indicar la dirección del valor que se quiere modificar y la magnitud que se le quiere
asignar. Luego el esclavo debería responder con la dirección del dato que ha
modificado y el valor que le ha asignado, que debería coincidir con el enviado. Aunque
en realidad se está escribiendo en el rango de AOs , los registros son direccionados a
partir de la dirección 0 ( así el registro @40001 se direcciona 0 )

 Función 7 ( Read Exception Status )

Permite la lectura rápida de un byte fjo de un esclavo, que generalmente es el de


excepción y que informa del estado del equipo. No tiene dirección del byte debido a
que siempre se lee el mismo byte ( determinado por el propio dispositivo esclavo)

 Función 15 ( Force Multiple Coils )

Permite la modificación simultanea de varios bits de DOs en el esclavo, pasándolos a


OFF ( ‘0’ ) o a ON ( ‘1’) según convenga. Actúa sobre la zona de memoria de las DOs (
@0XXXX ). Así en el comando se pasan la dirección inicial ( dirección del primer bit o
mando a modificar ) y la cantidad y estado de cada uno de los sucesivos mandos ( bits
) a modificar.

 Función 16 ( Preset multiple registers )

Permite realizar la escritura en un grupo de AOs, y por tanto actúa sobre la zona de
AOs ( @4XXXX ). Se debe especificar la dirección a partir de la que se quiere
comenzar a actualizar valores, el número de valores que se quiere actualizar, y la lista
de valores que se quiere asignar a estos registros. Aunque se está escribiendo en el

REDES DE AUTOMATIZACION Y CONTROL 3


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

rango de registros o valores numéricos , los registros son direccionados a partir de la


dirección 0 ( es decir el registro @40001 se direcciona 0 )

 Función 20 ( Read General Reference )

Retorna el contenido de los regitros de la Extended Memory ( @6XXXX ). En la trama


se envía la dirección del esclavo, el código de función, el número de bytes que se va a
leer y los bytes de comprobación de error. En los datos se establece el grupo o grupos
o referencias a leer. Cada grupo se define en un campo "sub-request" que contiene:

Reference type: 1 byte ( debe ser 6 )

Extended Memory file number: 2 bytes ( 0x01 a 0x0A )

La direccion del fichero a partir de la que se quiere comenzar a leer: 2 bytes

La cantidad de registros a leer: 2 bytes

Los datos a leer seguidos de los demas campos no debe superar la longitud máxima
permitida en los mensajes Modbus, es decir los 256 bytes.

 Función 21 ( Write General Reference )

Modifica el contenido de los registros de la Extended Memory ( 6XXXX ). Esta función


permite trabajar en grupos de registros que no tienen porque ser contiguos (
internamente sí que han de ser contiguos ). Cada grupo se define en un campo "sub-
request" que contiene:

 Reference type: 1 byte ( debe ser 6 )


 Extended Memory file number: 2 bytes ( 0x01 a 0x0A )
 La direccion del "fichero" a partir de la que se quiere comenzar a leer: 2 bytes
 La cantidad de registros a leer: 2 bytes

Los datos a leer seguidos de los demas campos no debe superar la longitud máxima
permitida en los mensajes Modbus, es decir los 256 bytes.

3. ELEMENTOS A UTILIZAR

 Computadora personal
 Modbus Master
 Modbus PAL (Esclavo)

4. PROCEDIMIENTO DE EJECUCION
4.1 Ejecutamos el modbus master,que aparece configurado para operar en conexiones
tipo serie, por lo que deberemos configurarlo para hacerlo bajo TCP. En este modo el
puerto por defecto que emplea es el 502. Para ello iremos a “Option” y
seleccionaremos “Modbus TCP…”.

REDES DE AUTOMATIZACION Y CONTROL 4


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

También haremos lo propio en el apartado “Modbus Mode” – “TCP”.

REDES DE AUTOMATIZACION Y CONTROL 5


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

4.2 definir la IP del Master. Puesto que tanto uno como otro corren en el mismo equipo
configuraremos la de Loopback, 127.0.0.1.

4.3 ahora toca configurar los esclavos. En “Modbus slaves” seleccionamos “Add” y allí
definiremos el nuestro, identificado con “1” y con el nombre “Colocar su nombre y
apellido”.

REDES DE AUTOMATIZACION Y CONTROL 6


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

4.4 Abriremos el editor (icono con aspecto de ojo) y configuraremos en la pestaña


“Coils” del 1 al 8, configurando los 4 primeros con un “numero cui ” y los 4 segundos
con un “cuatro últimos dígitos de sus DNI”.

CUI: 20061980 ---- uso el 2006 para las 4 primeros dígitos


DNI: 45024255 ---- uso el 4255 para los 4 últimos dígitos

REDES DE AUTOMATIZACION Y CONTROL 7


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

4.5 Aprovecharemos para configurar también el apartado “Holding registers” esta vez
del 1 al 4, y con los siguientes valores.

4.6 Por último, pincharemos en “Run” para iniciar el esclavo. Si abrimos un “cmd”
veremos que en nuestro equipo se nos ha abierto un socket en el puerto TCP-502.

REDES DE AUTOMATIZACION Y CONTROL 8


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

4.7 Ahora deberemos ir a nuestro “Master” y conectarnos al “Esclavo” pinchando en el


icono marcado.

4.8 Para hacer una lectura o escritura seleccionaremos el icono situado a la derecha
del que empleamos para conectarnos, viendo a continuación los resultados. Esto es:

1001 1111
2006 4255

REDES DE AUTOMATIZACION Y CONTROL 9


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

4.8 Que se realice una lectura y escritura dependerá también del “Function Code”. En
el caso anterior teníamos “Read Coils (0x01)”, sin embargo si esto lo cambiamos por
“Read Holding Registers (0x03)” veremos el otro resultado. Ojo, que en este caso el
“Number of Registers” ahora es 4, valor que ha cambiado del “8” del número de “Coils“
configurados.

4.9 Para ello cambiaremos la “Function Code” por “Write Multiple Registers (0x10)” y
en campo inferior por valores como 999, 888, 777, 666. Luego a continuación
pincharemos sobre “Read/Write” y veremos cómo cambian los valores en el esclavo.

5. CUESTIONARIO
5.1. ¿Según el simulador modbuss que funciones tiene el master?

Sirve para probar los dispositivos tipo slaves (esclavos), soporta


múltiples cantidades de éstos. Puede configurarse para el puerto serie
RTU y para Ethernet TCP. También permite la comunicación entre
muchos dispositivos conectados a la misma red.

REDES DE AUTOMATIZACION Y CONTROL 10


UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE PRODUCCION Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA

5.2. ¿Según el simulador modbuss que funciones tiene el esclavo?

Permite simular hasta 247 esclavos. El esclavo se conecta al número de


puerto TCP asignado en el master (502 en nuestra simulación). Dentro
de los esclavos se puede configurar el número de coils (en binario 0 – 1)
y el holding registers (registros de tenencia) que posteriormente puede
ser modificado directamente desde el master.

5.3. Investigar y desarrollar cuales son las aplicaciones del protocolo de


comunicación modbus.

Sirve para la implementación de redes de control industrial, este protocolo


puede ser accedido a través de internet o la Intranet local usando los
protocolos TCP/IP. El protocolo Modbus/TCP se ha difundido ampliamente por
ser abierto, lo cual le permite la comunicación con una gran diversidad de
elementos industriales y por su sencillez.

6. OBSERVACIONES Y CONCLUSIONES

 Modbus es un protocolo de comunicaciones, basado en la arquitectura


maestro/esclavo o cliente/servidor.
 Sirve para la implementación de redes de control industrial, este protocolo
puede ser accedido a través de internet o la Intranet local usando los
protocolos TCP/IP.
 El simulador qModBus nos permitió representar el funcionamiento del
protocolo modbus, lo que nos ayudará a entender mejor cómo puede ser
interceptado, manipulado y, por ende, necesariamente protegido.
 Modbus/TCP es un protocolo de comunicación diseñado que permite a equipos
industriales tales como PLCs, PC, drivers para motores y otros tipos de
dispositivos físicos de entrada/salida, comunicarse sobre una red Ethernet.
 Se pudo modificar los registros de tenencia del esclavo, a través del
maestro del modbus.

 Este software permite un máximo de 247 slaves.

REDES DE AUTOMATIZACION Y CONTROL 11

Das könnte Ihnen auch gefallen