PROTOCOLO MODBUS: COMUNICACIÓN ARDUINO vs ANDROID

PROTOCOLO MODBUS: COMUNICACIÓN ARDUINO vs ANDROID

En los últimos tiempos están en auge las tecnologías asociadas a los sistemas domóticos. Existen muchas alternativas tecnológicas que nos permiten hoy en día tener en un móvil la información de un proceso físico que está pasando a centenares de kilómetros. De entre estas alternativas podemos destacar:

  • Arduino: Sus procesadores de bajo coste y su facilidad de programación y de despliegue ofrecen múltiples aplicaciones al campo de la domótica.
  • Android: Es el sistema operativo de una importante cuota de mercado de móviles, programables con la herramienta Android Studio.
  • Modbus: Protocolo que permite comunicar Arduino con Android a través de TCP/IP (arquitectura cliente/servidor).

Modbus es un protocolo de comunicaciones a nivel aplicación (como http), diseñado en 1979 por Modicon para su gama de controladores lógicos programables (PLCs).

Es un protocolo de comunicaciones superior a otros, debido a que es público, su implementación es fácil, requiere poco desarrollo y existen librerías para multitud de dispositivos. Es un protocolo de comunicaciones estándar de facto en la industria.

Para mostrar el funcionamiento del protocolo modbus, utilizaremos la siguiente maqueta de red, que simula un caso real de comunicación entre un arduino y un móvil android.

Protocolo Modbus

Primero de todo tenemos que explicar cómo se pone un arduino en la red. Se hace con un shield de ethernet para arduino.

Protocolo ModbusProtocolo Modbus

El encaje entre el shield ethetrnet y la placa arduino es muy sencillo e intuitivo. Debemos conectar el shield arduino con un cable UTP cruzado al router.

En la placa arduino introducimos el siguiente código, el cual necesita de las librerias Mudbus.cpp y Mudbus.h.

 

1

En este código vemos dos cosas importantes: Por un lado dota al equipo arduino de dirección MAC, IP, gateway y subred (se le podrá hacer pings y el responderá, será como un equipo más en red). Y por otro lado vemos que cada 10 milisegundos, carga o actualiza 3 valores del circuito arduino en los 3 primeros registros R del protocolo Mudbus, preparados para ser leidos desde otro dispositivo mediante comunicación TCP/IP.

A continuación debemos conectar nuestro dispositivo móvil Android a la wifi de nuestro router. Dicho router habrá sido configurado para dar por dhcp direcciones IP por encima de la dirección 10, para no tener conflictos (por ejemplo entre 192.168.1.20 – 192.168.1.100).

El siguiente código ejecutado en un android nos permitirá acceder a los registros del protocolo Mudbus cargados con valores de la placa arduino:

modbus3

El código anterior sólo realiza una conexión y obtiene los valores de los registros R en el momento en que se realiza la consulta. Si se desea obtener en directo los valores de la placa arduino, se deben de hacer más llamadas a esta función.

Al tratarse de una aplicación android y de una comunicación via TCP/IP, ésta tiene que hacerse mediante threads, puesto que el hilo principal de una aplicación no puede lanzar una consulta Modbus TCP/IP. Android obliga a hacer estas acciones a través de un thread especial, el AsynTask, que es quien centraliza toda comunicación TCP/IP en un móvil Android.

modbus2

Esperamos que os haya gustado y hasta el próximo artículo de Escola Espai!!!

 

6Comentarios

  • Benjamin
    20/03/2019

    podrias pasarme un ejemplo de la parte de android para probarlo? no consigo conectar

  • Benjamin
    19/03/2019

    hola como llamas a la clase mi tarea para poder comunicarte ?

  • Benjamin
    19/03/2019

    hola Eduard las variables salida de que tipo son ? y donde las defines?

  • Eduard
    29/01/2018

    Hola Javier,
    la librería para realizar este proyecto ha sido la j2mod-1.06.jar, aunque también podría funcionar cualquiera de las versiones posteriores.
    Un saludo

  • Javier
    16/11/2017

    Hola eduardo,

    Se que esta entrada es bastante antigua pero que libreria usas para la parte de android. Estoy teniendo bastantes encontronazos con las librerias para modbus y android studio me podrias ayudar con eso ?

    Muchisimas gracias,

    Javier

Escribe un comentario