Está en la página 1de 4

PROTOCOLO MODBUS

SIMULADOR MODBUS TESTER.


El programa Modbus tester (Mbus.exe) es un simulador de un maestro Modbus que
realiza peticiones de datos a un esclavo y visualiza los resultados.
Puede descargarlo desde http://www.modbus.pl/download/zxy66/v19/Mtester.zip o
desde la página de descargas de documentos de la asignatura en la carpeta Buses de
Campo http://www.dte.us.es/docencia/etsii/itis/emc/docs/bc/mbus

La aplicación Modbus tester tiene 3 pestañas de configuración:

1. Modbus Settings
En esta opción configuramos el puerto serie y el tipo de protocolo.
Especificaremos protocolo RTU y los parámetros deseados del puerto serie
(9600 N 8 1).

2. View Data
La opción View Data permite configurar la petición de datos que deseamos
hacer (inputs, coils etc.).
En Device Address especificamos la dirección del esclavo con la que deseamos
comunicar
En Start Address y Length especificamos la primera dirección del dato que
deseamos y el número de datos deseados
Scan Rate representa el tiempo entre peticiones de datos.
A la derecha de la ventana se escriben los valores obtenidos de la comunicación.
En la parte superior derecha de la aplicación hay contadores que indican el
número de peticiones realizadas y el número de respuestas obtenidas.
El botón Connect inicia el ciclo de peticiones de datos.

3. Comunication Spy
En esta ventana se visualizan las tramas de petición y respuesta en hexadecimal.

COMPROBACIÓN DE LA APLICACIÓN
En la pestaña Modbus Settings seleccionar uno de los puertos serie disponibles COMx,
protocolo RTU y los parámetros 9600 N 8 1.
En la pestaña View Data seleccionar:
• Device address: 1
• Data type: 1 Inputs
• Start address: 1
• Lenght: 8
• Scan rate: 10000 ms (10s)
• Data format: bit
Observe que en la parte derecha de la ventana se muestra una tabla con las direcciones
10001-10008 y sus valores asociados.
En la parte superior derecha se muestra el número de peticiones realizadas (polls) y el
número de respuestas correctas a esas peticiones. Pulse sobre el botón Clear para poner
a cero los contadores.
Pulse el botón Connect para que comiencen las peticiones de datos.
Cuando vea el contador Polls a 1 significa que se ha realizado la primera petición.
Pulse sobre el botón Disconnect para detener las peticiones.
Seleccione ahora la pestaña Communication Spy.
En la ventana aparecen caracteres en color azul que representan los bytes transmitidos.
Cada byte está representado en hexadecimal entre corchetes.
La trama transmitida consta de los siguientes bytes: 01 02 00 00 00 08 79 CC.
El primer byte representa la dirección del esclavo al que se le hace la petición.
El segundo byte es el código de función modbus. En este caso la función 2 es la de
petición de entradas digitales.
El tercer y cuarto byte son 00 00. Este valor es la dirección de la primera entrada digital
que se desea. Como hemos seleccionado el valor 1 para la primera dirección el valor
que se transmite al esclavo es dirección inicial -1 y por tanto el valor 0. Los dos bytes
representan el valor de la dirección inicial como un dato de 16 bits con el byte alto en
primer lugar y el byte de menor peso en segundo lugar.
Los dos bytes siguientes 00 08 representan el número de entradas consecutivas que
pedimos al esclavo. En nuestro caso hemos seccionado para el campo Lenght el valor 8.
El valor Lenght es un dato de 16 bits que se representa en dos bytes con el byte alto el
primer lugar y el byte bajo en segundo lugar.
Los dos últimos bytes son el CRC16 de la trama. El CRC16 es una información de 16
bits que se calcula a partir de los valores anteriores de la trama 01 02 00 00 00 08. Los
16 bits se representan en la trama con el byte bajo en primer lugar y el byte alto en
segundo lugar. En nuestro ejemplo el CRC16 obtenido es 0x79CC.

TRAMAS DE DATOS
Modifique varias veces los datos de las peticiones: dirección del esclavo, código de la
función, dirección de inicio etc.
Observe los bytes transmitidos y compruébelos con los valores configurados.

CÁLCULO DEL CRC16


El código del CRC16 se describe al final del documento MODBUS OVER SERIAL
LINE V1. El algoritmo mostrado en ese documento está basado en una tabla de valores
predefinidos para reducir el tiempo de cálculo del algoritmo.
Una alternativa a ese algoritmo sin utilizar las tablas de constantes se muestra a
continuación:
unsigned short CxxDlg::Crc(unsigned char *buf , int len)
{
unsigned short crc=0xffff , i;
while(len--)
{
crc = (crc ^ *buf++);
for(i=0;i<8;i++)
{
if(crc & 1)
crc=(crc>>1)^0xA001;
else
crc=(crc>>1);
}
}
return crc;
}

Comprobar el algoritmo con los valores de las tramas de prueba obtenidos con el
programa Modbus Tester.
Para mostrar el resultado en hexadecimal puede usar una variable del tipo CString y
representar el valor en hexadecimal usando el método Format con el argumento “%x”.
Para ver el resultado en pantalla puede usar la función AfxMessageBox.

SIMULADOR DE ESCLAVO MODBUS


El programa RSim es un simulador gratuito, limitado en tiempo de ejecución de un
esclavo Modbus. Puede descargar el programa desde la página del autor:
http://downloads.sourceforge.net/project/modrssim/mod_RSsim.exe?use_mirror=freefr
o desde la página de la asignatura:
http://www.dte.us.es/docencia/etsii/itis/emc/docs/bc/rsim

Descargue y ejecute la aplicación


En la ventana principal de la aplicación seleccione Prot: MODBUS RS-232 y en I/O
seleccione Digital Inputs.
Busque el botón Set up the communication en la parte superior derecha de la aplicación.
Seleccione el segundo puerto serie de su ordenador (recuerde que el otro está usado por
la aplicación Modbus tester). Seleccione los parámetros de comunicación 9600,N,8,1 y
en el campo RST control seleccione disable.
El botón superior derecho permite abtir el puerto de comunicaciones. Asegurese de
hacerlo para que puedan funcionar las comunicaciones.
La primera línea de la tabla de valores contiene los valores para las entradas digitales
10001-10016. Puede cambiar los valores de las entradas haciendo un doble click sobre
el valor de cualquier entrada.
Seleccione en modbus tester la petición de entradas digitales 10001-10016 y conecte la
comunicación entre las dos aplicaciones.
Cambie valores sobre los valores de las entradas en la aplicación RSim y compruebe el
funcionamiento del sistema.
Revise los valores hexadecimales de petición (azul) y respuesta (negro) en Modbus
Tester. Interprete los valores hexadecimales y asócielos con los valores de las entradas
digitales.

También podría gustarte