Tutorial de PROFINET & Raspberry PLC: Cómo activar alarmas con CODESYS

Protocolos de comunicación Ethernet industrial con Raspberry Pi PLC
17 de septiembre de 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 is an industry technical standard for data communication over industrial Ethernet, designed for collecting data from, and controlling equipment in industrial systems, with particular strength in delivering data under tight time constraints. PROFINET supports you in creating integrated processes with real-time communication and connecting them up to the cloud via OPC UA.

The openness and flexibility of PROFINET mean you enjoy maximum freedom when designing your machine and system structure. Its efficiency allows you to use available resources optimally, while significantly increasing plant availability. PROFINET's performance sustainably increases productivity.

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 sits on Layer 7 of the ISO/OSI model since it is an application. It defines cyclic and acyclic communication between components, including diagnostics, functional safety, alarms, and other related information. Also, PROFINET is based on standard Ethernet for its communication medium.

High bandwidth, large message size, and versatility are just some of the benefits of having Ethernet in the industrial environment.

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:

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)". 

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!

Buscar en nuestro blog

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

¿Estás buscando 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.


Industrial PLC comparison >>>