Tutorial de PROFINET & Raspberry PLC: Cómo activar alarmas con CODESYS
Protocolos de comunicación Ethernet industrial con Raspberry Pi PLC
17 septiembre, 2021 por
Tutorial de PROFINET & Raspberry PLC: Cómo activar alarmas con CODESYS
Boot & Work Corp. S.L., Fernandez Queralt Martinez

Introducción

PROFINET es una solución de Ethernet industrial abierta basada en estándares internacionales. Es un protocolo de comunicación diseñado para intercambiar datos entre controladores y dispositivos en un entorno de automatización para el control industrial.

En este post, ejecutaremos la pila de dispositivos PROFINET de p-net y su aplicación de ejemplo en la industria PLC Raspberry como dispositivo IO, y configuraremos un segundo PLC industrial Raspberry Pi como controlador IO con Codesys

Enlaces relacionados

Cómo

Conectar un PLC Raspberry al Wi-Fi

Leer 

PLC Raspberry

Familia de productos

Ver 

Conceptos básicos sobre

Las salidas analógicas del PLC Raspberry Pi

Leer 

Cómo

Encontrar tu PLC industrial perfecto

Leer 

Touchberry Pi

Familia de productos

Ver 

Cómo

Programar las entradas de interrupción del PLC Raspberry con Python

Leer 

PROFINET

PROFINET es un estándar técnico de la industria para la comunicación de datos a través de Ethernet industrial, diseñado para la recogida de datos y el control de los equipos en los sistemas industriales, con especial fuerza en la entrega de datos bajo restricciones de tiempo. PROFINET te ayuda a crear procesos integrados con comunicación en tiempo real y a conectarlos a la nube mediante OPC UA. La apertura y la flexibilidad de PROFINET te permiten disfrutar de la máxima libertad a la hora de diseñar la estructura de tus máquinas y sistemas. Su eficiencia te permite utilizar los recursos disponibles de forma óptima, al tiempo que aumenta significativamente la disponibilidad de la planta. El rendimiento de PROFINET aumenta la productividad de forma sostenible.

Para garantizar un rendimiento adecuado, PROFINET suministra datos a través de los siguientes canales de comunicación:

  • TCP/IP (o UDP/IP)

  • PROFINET en tiempo real (RT)

  • PROFINET en tiempo real isócrono (IRT)

  • Redes sensibles al tiempo (Time Sensitive Networking (TSN))

Fíjate en el modelo ISO/OSI, un modelo de siete capas que describe genéricamente las capas de abstracción de un sistema de comunicación. Cualquier comunicación de red puede dividirse en una serie de capas.

Modelo ISO/OSI - Tutorial de PROFINET y Raspberry PLC: Cómo activar alarmas con CODESYS

Ethernet se sitúa en la capa 1 (capa física) y en la capa 2 (capa de enlace de datos) del modelo ISO/OSI. Las tramas de Ethernet incluyen información como las direcciones MAC del emisor y el receptor, el etiquetado de LAN virtual (VLAN) y la calidad del servicio (QoS).

PROFINET se sitúa en la capa 7 del modelo ISO/OSI, ya que es una aplicación. Define la comunicación cíclica y acíclica entre componentes, incluyendo el diagnóstico, la seguridad funcional, las alarmas y otra información relacionada. Además, PROFINET se basa en el estándar Ethernet para su medio de comunicación. El gran ancho de banda, el gran tamaño de los mensajes y la versatilidad son algunas de las ventajas de contar con Ethernet en el entorno industrial.

Tutorial

En este post, vamos a ejecutar la pila de dispositivos PROFINET p-net y su aplicación de ejemplo de rt-labs para la automatización industrial. Vamos a implementar un dispositivo PROFINET IO, teniendo un módulo IO con 8 entradas y 8 salidas digitales, y un PLC basado en Raspberry Pi como controlador IO ejecutando el runtime Codesys para la automatización de Raspberry Pi. Una vez que consigamos que la aplicación de ejemplo se ejecute en nuestros PLCs Raspberry, seremos capaces de comunicar ambos PLCs Raspberry con PROFINET.

Requisitos

  • 2x PLCs Raspberry

  • Hub Ethernet USB

  • 1x Suministro de energía

  • 2x Cables Ethernet

  • Ordenador portátil Windows (o máquina virtual Windows) con CODESYS

  • Ordenador portátil Linux o una pantalla con cable HDMI para conectarse a su controlador lógico programable Raspberry a través de SSH

Configuración del controlador IO

1. En primer lugar, establece una dirección IP estática para Ethernet desde tu ordenador portátil con Windows: 192.168.0.60. Conecta un cable Ethernet desde tu portátil Windows a tu PLC industrial Raspberry Pi y conéctate a través de SSH:

ssh pi@10.10.10.20

Como alternativa, puedes conectar un cable micro HDMI desde el PLC Raspberry a un monitor.

Establece una dirección IP estática para la interfaz eth0 de tu PLC Raspberry IO-Controller: 192.168.0.100.

Aprende cómo 

IO-Controller: 192.168.0.100 - Configuración del controlador IO - Tutorial PROFINET y Raspberry PLC: Cómo activar alarmas con CODESYS

2. Ves a tu ordenador portátil con Windows, y descarga e instala el Sistema de desarrollo CODESYS V3 y el  CODESYS Control para Raspberry Pi SL. Existe una versión de prueba gratuita. Es necesario registrarse. Y con la versión de prueba, tendrás que reiniciar el tiempo de ejecución de Codesys en el PLC Raspberry cada dos horas.

3. Una vez instalado, abre Codesys y crea un nuevo proyecto estándar. En la siguiente ventana que aparece, selecciona el dispositivo "Codesys Control for Raspberry Pi SL" y selecciona programar en "Texto estructurado (ST)". 

ssh pi@10.10.10.20

Nota: Si no puedes ver el dispositivo "Codesys Control for Raspberry Pi SL" significa que la instalación no se ha realizado correctamente. Inténtalo de nuevo y comprueba que tu dispositivo en el menú de la izquierda aparece como "Codesys Control for Raspberry Pi SL".

4. En el menú superior, utiliza Tools > Update Raspberry Pi > Type Username and Password > Scan your "IP address". 5. Selecciona la IP estática de la Raspberry Pi (Por ejemplo, para este tutorial, 192.168.0.100).

5. Haz doble clic en el "Dispositivo (CODESYS Control for Raspberry Pi SL)" > Haz clic en la pestaña "Scan Network" y selecciona tu Raspberry PLC. El marcador de la imagen debería volverse verde. Para verificar la comunicación, ve a la pestaña "Device" y "Send Echo Service".

Nota: Si tienes algún problema, haz clic con el botón derecho del ratón en "Device (CODESYS Control for Raspberry Pi SL)" > Actualizar dispositivo... > Mostrar todas las versiones (sólo para expertos) > Y selecciona la misma versión que elegiste al crear el nuevo proyecto, en este caso: CODESYS Control for Raspberry Pi SL - Versión 4.0.1.0. Y vuelve a intentar el paso 5.

6. Go to the rt-labs Github and save this file on your Windows laptop.

7. Vuelve a Codesys, en el menú superior "Tools" ("Herramientas"), selecciona "Device Repository" ("Repositorio de dispositivos") > Instalar > selecciona el archivo GSDML que acabas de guardar.

8. En el "Device (CODESYS Control for Raspberry Pi SL)" del panel de dispositivos, haga clic con el botón derecho y seleccione "Add Device..." > Adaptador Ethernet > Ethernet.

9. Haz clic con el botón derecho del ratón en Ethernet > select "Add Device..." > "Profinet IO" > "Profinet IO Master" > "PN_Controller".

10. Haz clic con el botón derecho del ratón en "PN_Controller (PN-Controller)" > Selecciona "Añadir dispositivo... " > "P-Net Sample App".

11. Haz clic con el botón derecho del ratón en la "P_Net_Sample_App (P-Net Sample App)" > Seleccione "Añadir dispositivo..." > "Fieldbuses" > "Profinet IO" > "Profinet IO Module" > "DIO 8xLogicLevel". 

12. Ve a la Ethernet del paso 8 y haz doble clic > Selecciona la interfaz "eth0". La dirección IP se actualizará después.

13. Ve a "PN_Controller" en el menú de la izquierda y modifica la Primera dirección IP 192.168.0.50 y la Última dirección IP 192.168.0.60 .

14. Ve al nodo "P_Net_Sample_App" en el menú de la izquierda > Parámetro IP > Ajusta la dirección IP a la dirección existente de tu IO-Device: 192.168.0.50.

15. Ve a tu proyecto en el panel izquierdo > Device (CODESYS Control for Raspberry Pi SL) > PLC Logic > Application > PLC_PRG (PRG).

16. Hay dos secciones, la de las variables en la parte superior y la del programa en la inferior. 

Sección de las variables

PROGRAM PLC_PRG VAR in_pin_button_LED: BOOL; out_pin_LED: BOOL; in_pin_button_LED_previous: BOOL; flashing: BOOL; oscillator_state: BOOL := FALSE; oscillator_cycles: UINT := 0; END_VAR

Sección del programa

oscillator_cycles := oscillator_cycles + 1;
IF oscillator_cycles > 200 THEN
oscillator_cycles := 0;
oscillator_state := NOT oscillator_state;
END_IF
IF in_pin_button_LED = TRUE THEN IF in_pin_button_LED_previous = FALSE THEN flashing := NOT flashing; END_IF out_pin_LED := TRUE; ELSIF flashing = TRUE THEN out_pin_LED := oscillator_state; ELSE out_pin_LED := FALSE; END_IF in_pin_button_LED_previous := in_pin_button_LED;

17. Haz clic con el botón derecho del ratón en "DIO_8xLogicLevel" > "Edit IO mapping..." > Haz doble clic en el icono del "Bit de entrada 7" > Haz clic en el botón [...] > Ve a Aplicación > PLC_PRG > "in_pin_button_LED".

18. Haz clic con el botón derecho del ratón en "DIO_8xLogicLevel" > "Edit IO mapping..." > Haz doble clic en el icono del "Bit de salida 7" > Haz clic en el botón [...] > Ve a Aplicación > PLC_PRG > "out_pin_LED".

19. Haz doble clic en la Aplicación > "Configuración de tareas" > Tarea principal > Selecciona "Cíclico" > 4 ms.

20. Haz doble clic en la aplicación > "Profinet_CommunicationTask" > Selecciona "Cyclic" > 10 ms. Utiliza la prioridad 30.

21. En el menú superior, ve a Build > Generate Code.

22. En el menú superior, ve a Online > Login, para transferir la aplicación a la Raspberry Pi. Selecciona "" en la ventana emergente.

23. Ve al menú superior Herramientas > "Actualizar Raspberry Pi" > Información del sistema, y mira en el cuadro de texto "Información de tiempo de ejecución" para seguir los registros del controlador.

24. Una vez configurado el IO-Controller, puedes apagar la máquina Windows que ejecuta la aplicación Codesys.

Recuerda que debes apagar y encender el controlador IO del PLC Raspberry cada dos horas si utilizas la versión de prueba.

25. Instala Wireshark. Comprueba que tu PLC Raspberry IO-Controller envía paquetes LLDP cada 5 segundos.

Configuración del dispositivo IO

25. Ahora, vamos a configurar el IO-Device para ejecutar la aplicación PROFINET desde rt-labs.

26. Enciende el IO-Device Raspberry PLC, cambia su dirección IP a 192.168.0.50 y conéctalo al IO-Controller Raspberry PLC.

IO-Device: 192.168.0.50 - Configuración del dispositivo IO - Tutorial de PROFINET y Raspberry PLC: Cómo activar alarmas con CODESYS

27. Conecta tu PLC de código abierto Raspberry Pi a Internet vía LAN o WiFi para poder descargar el software. 

28. Para compilar p-net en Raspberry, es necesario descargar primero algunos paquetes:

sudo apt update
sudo apt install snapd
sudo reboot
sudo snap install cmake --classic

29. Verifica la versión instalada:

cmake --version

30. Instala git:

sudo apt install git

31. Crea un directorio llamado profinet:

mkdir /home/pi/profinet
cd /home/pi/profinet

32. Clona la fuente:

git clone --recurse-submodules https://github.com/rtlabs-com/p-net.git

33. Configura y crea la compilación:

cmake -B build -S p-net

34. Compila el código:

cmake --build build --target install

35. Configura y crea la complicación:

cmake -B build -S p-net

36. Ejecuta este comando desde el directorio de profinet:

snap run cmake -B build -S p-net -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DUSE_SCHED_FIFO=ON

37. Ve al directorio de compilación:

cd build

38. We are going to test this application with plain files. So, make two files to simulate buttons:

touch /home/pi/profinet/build/button1.txt
touch /home/pi/profinet/build/button2.txt

40. Ejecuta la aplicación con los dos botones de archivos planos:

sudo ./pn_dev -vvvv -b /home/pi/profinet/build/button1.txt -d /home/pi/profinet/build/button2.txt

41. Si sólo tienes una terminal, necesitas ejecutar la aplicación en segundo plano para escribir manualmente 1 o 0 en el archivo /home/pi/profinet/build/buttonX.txt para cambiar sus valores así:

echo 1 > /home/pi/profinet/build/button1.txt
echo 0 > /home/pi/profinet/build/button1.txt

Para más información sobre el tutorial, por favor visita este  enlace  . 

¡Ahora es tu turno!

Ahora es el momento de que empieces a desarrollar tus propias aplicaciones. Puedes utilizar la aplicación de ejemplo como plantilla de partida. Experimenta modificando los módulos disponibles y los tipos de datos que envían y reciben. ¡Modifica tu archivo GSDML en consecuencia para explicar el comportamiento de los dispositivos IO a la herramienta de configuración del PLC!

Tutorial de PROFINET & Raspberry PLC: Cómo activar alarmas con CODESYS
Boot & Work Corp. S.L., Fernandez Queralt Martinez
17 septiembre, 2021
Compartir
Archivar

¿Buscas tu controlador lógico programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparación PLC industrial>>>

¿Quieres más información?

¡Rellena el formulario!

¡Cuéntame más!