Monthly Archive Julio 2017

PorOpiron Electronics

¿Modbus y Arduino combinados?

Modbus y Arduino: por un lado un protocolo de comunicación con un larguísimo recorrido en el mundo industrial del que hemos hablado en otras entradas.

Por el otro, una marca que desarrolla placas Open Source de la que Opiron ha hablado largo y tendido en muchos tutoriales. De hecho, tenéis la sección de Arduino abierta en nuestro canal de Youtube.

¿Qué pasaría si combináramos ambos?

¿Un dispositivo con Modbus y Arduino?

Sigamos avanzando en nuestro concepto: Modbus es un protocolo de comunicación que desde hace unos años es libre, y por lo tanto, puede implementarse en múltiples dispositivos sin necesidad de pagar royalties. Por el otro, Arduino es también una plataforma de hardware libre, con una comunidad de programadores y recursos enormes.  Las posibilidades de combinar ambas tecnologías son muchas, pudiendo ampliar las capacidades de comunicación de las placas Arduino con:

  • Sistemas SCADA.
  • Sistemas PLC, RTU.
  • Redes industriales ya existentes.

Pero seguramente conviene no quedarse ahí, puesto que Modbus además aporta la seguridad de apoyar nuestros proyectos sobre una tecnología absolutamente robusta y probada en el mundo industrial.

Modbus: ¿TCP o RTU? , Arduino ¿Qué placa?

Cuestión de tecnología: Como sabemos, de Modbus tenemos diferentes versiones, desde las versiones Modbus RTU hasta las Modbus TCP. Por suerte, todas ellas son integrables con los módulos Arduino gracias a la gran cantidad de librerías desarrolladas para tal fin.  Elegir una u otra dependerá de las necesidades de las comunicaciones que debamos implementar así como de las redes donde se deba integrar el dispositivo. Te recomiendo leer esta entrada para más información.

En cuanto a Arduino, ¿Es Modbus implementable en cualquier placa? La respuesta corta es sí…  Al menos Arduino Mega, Uno o Leonardo sí lo son (probado!)

¿Quieres aprender a implementar Modbus con Arduino?

Es evidente que las ventajas de combinar ambos son enormes. Ahora bien, aprender por separado ambas tecnologías (aunque ya sepas al menos una de ellas), no es tan fácil. Por mucho que haya librerías y recursos disponibles en internet. Por ello, te proponemos que estés atento, puesto que muy pronto lanzaremos un curso que te permitirá convertirte en un experto de ambas tecnologías.

PorOpiron Electronics

Mapa de memoria de Modbus

Para comprender el mapa de memoria de Modbus, basta recordar que Modbus es un protocolo desarrollado para PLC’s, y que a estos se les pueden conectar básicamente 4 tipos de instrumentos: de salida digital, de entrada digital, de salida analógica y de entrada analógica, que coinciden con las 4 áreas que describimos a continuación.

Coils 

Las salidas digitales, también llamadas coils en la mayoría de biblografía que podáis encontrar. Cada registro dispone de 1 bit. La región de salidas digitales va de la dirección @1 a @9999. Por lo tanto, esta región del mapa de memoria ocupa 10.000 bits, y cada bit puede representar una salida digital.

Inputs

Las entradas digitales, también llamadas inputs en muchos libros. Cada registro dispone de 1 bit. La región de entradas digitales va en este caso de la dirección @10001 a @19999. Por lo tanto, al igual que en las salidas, el mapa de memoria de las entradas digitales ocupa 10.000 bits, y cada bit representa una entrada digital.

Input Registers

Las entradas analógicas, que podréis identificar como input registers en la mayoría de bibliografía. Cada registro dispone de 16 bit. La región de entradas digitales va en este caso de la dirección @30001-@40000. Por lo tanto, al igual que en las salidas, el mapa de memoria de las entradas digitales ocupa 160.000 bits. ¿Qué por qué ocupan más bits las entradas analógicas que las digitales? Pues porque en las entradas digitales sólo hay dos estados (abierto o cerrado), mientras que las analógicas pueden tener infinitos (2 elevado a 16) valores entre dos valores diferentes.

Holding Registers

Las salidas analógicas, que podréis identificar como holding registers en la mayoría de bibliografía.  Por lo tanto, al igual que en las salidas, el mapa de memoria de las entradas digitales ocupa 160.000 bits.

¿Y dónde están las direcciones @20001- @30000?

Por si no te has dado cuenta mientras ibas leyendo, entre el espacio que comprende las inputs y las holding registers queda un espacio de direcciones indefinido según el estándar Modbus.

Conclusión

El mapa de memoria de Modbus es un reflejo de los instrumentos que podemos conectar a un PLC. Conocer el mapa de memoria nos permitirá optimizar los accesos a memoria de dispositivos externos, optimizar las conexiones y también depurar / diagnosticar problemas más rápidamente.

PorOpiron Electronics

Redes Modbus: Cuatro puntos a recordar

Imagina que eres un ingeniero de control y un día te llaman por problemas de latencia o sincronización en redes Modbus… ¿Qué parámetros debería consultar? Cada red puede tener sus propias particularidades, veamos 😉

1. Funcionamiento

Lo primero es lo primero: recordar el funcionamiento: En redes Modbus, las reglas de cómo fluye la comunicación las dicta el propio protocolo. En la comunicación, hay siempre un maestro que pregunta datos a uno o varios esclavos al mismo tiempo. El protocolo determina, en función del mensaje enviado por el maestro, qué acción debe tomar el esclavo (por ejemplo, abrir una válvula o comunicar un dato).

2. Capa física

Ya lo hemos mencionado en otros post, estamos hablando de un protocolo de aplicación y por lo tanto, podemos encontrarnos su implementación sobre diferentes medios fìsicos, en concreto, sobre RS-232 o RS-485 – Modbus RTU y Modbus ASCII- y Ethernet, Modbus TCP/IP. Si vamos un poco más allá, las comunicaciones serie y TCP/IP pueden ser implementadas  para conexión por cable, wireless, SMS o GPRS.

En función de cada una además, tenemos más particularidades. En redes Modbus RTU, se prevé un total de 255 direcciones entre @1 y @254 para dispositivos, y la @0 reservada para broadcasting. Cabe mencionar de cada protocolo físico, el broadcasting no es posible sobre RS-232, mientras que en RS-485 el broadcasting se puede extender a 32 dispositivos al mismo tiempo. La velocidad de transferencia para estas redes está limitada a 19,2 kbps.

En redes Modbus TCP/IP, puede haber más dispositivos en la red y también la velocidad de transferencia es mayor, 10/100 Mbaud. Esto convierte a Modbus en un protocolo IoT, tal y como comentábamos en esta entrada.

3. Cantidad de dispositivos

Parece obvio pero muchas veces, no se tiene en consideración. ¿Cuántos dispositivos tiene la red? La cantidad de dispositivos va a afectar en la latencia y sincronización de las comunicaciones.

4. Implementaciones

Por último, podemos encontrar muchas implementaciones diferentes. Por ejemplo, podemos encontrar dispositivos RTU que envíen datos de caudal remotamente desde varios kilómetros de distancia, pero también sistemas más locales conectados a un sistema SCADA.

Conclusión

Hay muchísimas implementaciones posibles de redes Modbus, cada una puede tener características muy diferentes que van a determinar su rendimiento. No olvides estos cuatro puntos 🙂

PorOpiron Electronics

Codesys: 10 tips para iniciarse en la programación

Como comentábamos en otras entradas, Codesys ® es un potente software de programación de PLC’s basado en la norma IEC 61131-3, compatible con una gran variedad de PLC’s de diferentes fabricantes.  ¿Qué tips son recomendados para iniciarse con el entorno? Os dejo a continuación los que son, a mi parecer, los 10 más importantes:

1. Declaración de variables

Todo programa de automatización necesita variables, y en Codesys ® tenemos básicamente dos tipos de variables: las locales y las globales. Las primeras las declaramos en las mismas funciones, mientras que las segundas se declaran insertando un objeto GVL (Global Variable List).

2. Direccionamiento

Cuando programamos en Codesys ® trabajamos con símbolos, no con direcciones de memoria directamente. La asignación de la variable con la dirección de memoria respectiva se puede hacer de dos maneras diferentes.

Codesys

Direccionamiento en CodeSys

Una posibilidad es asignar la dirección de las variables desde la misma declaración de variables con la sintaxis NombreVariable AT %Dirección : TipoDato, o bien desde el objeto de direccionamiento, por ejemplo, el objeto GPIO si usamos una Raspberry PI.

 

3. Referencias cruzadas

Todo programador de PLC necesita poder buscar en algún momento todos aquellos lugares del programa donde una variable está funcionando.

En Codesys ®, las referencias cruzadas las podemos encontrar desde el menú Ver / Referencias Cruzadas.

4. Bloques

Codesys ® está basado en IEC 61131-3, y por lo tanto la forma de organizar las funciones y bloques son las unidades de Organización de Programa (program organization units o POUs), que permiten crear programas, funciones y funciones con memoria. Los bloques se dividen en:

  • POU: Todo bloque que se ejecuta dentro del PLC es un POU.
  • FB: Es un bloque con memoria y, por lo tanto, su salida depende ya no sólo de las entradas actuales sino también del estado de sus variables. Un ejemplo claro es una función PID.
  • FC: Es un bloque sin memoria, y por lo tanto su salida siempre se corresponderá con el valor de la entrada. Un ejemplo son las funciones matemáticas: SQRT, SIN, etc.

Resumiendo, todo bloque en Codesys ® es un POU (De Programmable Organization Unit). Además, cada uno de estos bloques puede estar escrito en los lenguajes de programación definidos por IEC 61131-3: IL, ST, LD, SFC y FBD.

5. Ampliación del software mediante librerías

Si bien el software trae consigo muchas librerías, con el paso del tiempo necesitaremos ampliar con más funciones específicas. Para los profesionales de automatización recomendamos la librería oscat.de

6. HMI integrado

Viene con un HMI incorporado en el software, lo que permite que el desarrollo de la interfaz hombre máquina pueda hacerse en el mismo entorno de desarrollo, pudiendo hacer una integración mucho más efectiva.

7. Versiones de software

Hay dos versiones de software disponibles en la actualidad, la v2.3 y la v.3.5. Cada una tiene sus pros y sus contras, si bien la v3.5 es la más nueva. Recomendamos usar la última.

8. Simulación

Codesys ® trae consigo un simulador potente, una herramienta excelente que nos servirá para poder depurar y probar los programas que hagamos antes de volcarlos a los PLC.

9. Ejemplos: ¿Por dónde empiezo?

En la CoDeSys Store hay varios ejemplos gratuitos muy interesantes que se pueden descargar.

10. Ayuda online

La última versión no tiene un manual específico, pero en cambio trae consigo una ayuda integrada al software muy completa, que es de muchísima utilidad para poder empezar a programar.