Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ModBus Parte1
ModBus Parte1
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.
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.