Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Imagen nativa de Java y GraalVM:aumento de la conectividad de bases de datos en aplicaciones de fabricación

El panorama actual de aplicaciones en las industrias manufactureras se divide en una jerarquía rígida. Desde la gestión utilizando sistemas ERP hasta los sistemas de planificación utilizando MES, pasando por los sistemas de supervisión utilizando SCADA hasta los sistemas de control realizados con PLC y sistemas de campo en la parte inferior.

Mientras que la mayoría de los sistemas de gestión, planificación y supervisión se implementan en lenguajes de programación orientados a objetos de alto nivel, los sistemas de control se implementan completamente con lenguajes de bajo nivel, siendo C el lenguaje de programación dominante.

Este cambio abrupto de un nivel jerárquico de alto nivel a uno de bajo nivel crea varios problemas. Se necesitan herramientas y ecosistemas completamente diferentes. Para la implementación, es necesario contratar a desarrolladores completamente diferentes con una forma de pensar diferente para implementar una tarea. Se deben definir interfaces entre los dos mundos o sistemas. Sólo porque no existe la posibilidad de continuar con un lenguaje de programación de alto nivel conocido desde el nivel de supervisión en el nivel de control. Esto ahora ha cambiado. Utilizando la tecnología de contenedores en el nivel de control, por ejemplo en un PLC, podemos utilizar lenguajes de programación como Java en este nivel jerárquico y romper las jerarquías rígidas.

Java es un lenguaje de programación orientado a objetos, de alto nivel y ampliamente utilizado. Tiene una comunidad vibrante y un ecosistema de bibliotecas y marcos que brindan funcionalidad adicional, lo que le permite aprovechar las herramientas y soluciones existentes para crear su aplicación de manera más rápida y eficiente.

Mostraremos cómo Java está disponible en un PLCnext de Phoenix Contact para simplificar el desarrollo de una aplicación que se ejecuta en PLCnext y se comunica directamente con una base de datos para recuperar y almacenar información relevante de la aplicación y presentarla en una interfaz web. Uno de los frameworks más populares en Java es Hibernate. Simplifica el proceso de mapeo de objetos Java a tablas de bases de datos relacionales, reduciendo la cantidad de código repetitivo necesario para las operaciones de bases de datos. Hibernate proporciona un alto nivel de abstracción, lo que permite a los desarrolladores trabajar con objetos en lugar de consultas SQL directamente. Esto puede conducir a ciclos de desarrollo más rápidos y a un menor esfuerzo de desarrollo. Hibernate elimina las diferencias entre los diferentes proveedores de bases de datos, lo que facilita el cambio entre bases de datos sin cambios significativos en el código. Este artículo describe la integración de Hibernate para conectar software que se ejecuta en PLC a bases de datos.

Aplicación Java moderna en PLCnext

Para comenzar a implementar una aplicación Java moderna, recomendamos utilizar marcos de aplicación como Quarkus o Spring Boot. Estos frameworks simplifican la configuración del proyecto, la gestión de dependencias.

Para este ejemplo, iniciaremos nuestra aplicación utilizando la Guía de persistencia de Jakarta y ORM de Hibernación de Quarkus. Puede encontrar un ejemplo del código fuente en el proyecto github hibernate-orm-quickstart.

Comenzaremos modificando el código fuente de la aplicación. Podemos cambiar la clase Java Fruit.java en Event.java y agregue un nuevo campo date .

Ejemplo de código Event.java :

...
@Entity
@Table(name = "Events")
public class Event {
 @Id
 @GeneratedValue
 private Long id;
 
 private String title;
 
 @Column(name = "eventDate")
 private LocalDateTime date;
 
...

Podemos configurar la URL de la base de datos y las credenciales modificando el archivo application.properties

Ejemplo de src/main/resources/application.properties

quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=myusername
quarkus.datasource.password=mypassword
quarkus.datasource.jdbc.url=jdbc:postgresql://myremotehost/mydatabase
quarkus.datasource.jdbc.max-size=8
quarkus.datasource.jdbc.min-size=2
quarkus.hibernate-orm.database.generation=create
...

Cuando se inicia la aplicación, se creará e inicializará una tabla en la base de datos si es necesario. Después del inicio, podemos interactuar con la base de datos con una interfaz web que se ejecuta en el puerto 8080 del PLCnext:

Tenga en cuenta que todo esto sucede en el nivel de control de nuestra jerarquía sin ningún sistema adicional en el medio.

Imagen nativa de GraalVM

Muchos desarrolladores todavía creen que Java requiere el llamado Java Runtime Environment para ejecutar Java Byte-Code y no proporciona el rendimiento necesario. Este ya no es el caso de las aplicaciones integradas. En este ejemplo utilizamos la tecnología GraalVM Native Image para compilar código Java en una aplicación nativa. La compilación de imágenes nativas de GraalVM ofrece una solución convincente para abordar los desafíos del tiempo de inicio y el consumo de memoria en aplicaciones Java, particularmente en entornos con recursos limitados, como los sistemas integrados. Al compilar aplicaciones Java con anticipación en ejecutables nativos, GraalVM reduce significativamente el tiempo de inicio y la sobrecarga de memoria en comparación con la compilación tradicional Just-In-Time (JIT).

GraalVM de MicroDoc tiene la capacidad única de generar archivos binarios para dispositivos integrados. Al momento de escribir este tutorial, GraalVM admite procesadores ARM y x86 de 32 y 64 bits.

Para compilar nuestra aplicación Java con anticipación dirigida al PLC AXC F 1152 , podemos usar GraalVM de MicroDoc y configurar algunas opciones del compilador en el archivo application.properties .

...
quarkus.native.additional-build-args=--target=linux-arm,-H:CompilerBackend=llvm,-H:+PreserveFramePointer,-Dllvm.bin.dir=/llvm/bin,--native-compiler-path=/arm-none-linux-gnueabihf-g++,-H:CAPCacheDir=/cap-cache/armv7a-linux-gnueabihf

Encontrará más información sobre el proceso de compilación cruzada y depuración en el siguiente artículo:Creación y depuración de imágenes nativas de Java de MicroDoc GraalVM Embedded

Para construir la aplicación, puede usar el siguiente comando:

$ mvn -Pnative package

A continuación, iniciamos el simulador PLCnext. El simulador se proporciona como una imagen qemu. El simulador nos recibirá con la siguiente línea:

PLCnext Linux 2023.0 sim-axcf1152 ttyAMA0
sim-axcf1152 login:

Los binarios generados se pueden copiar al PLC con el comando scp que abre un shell seguro para el PLC y transfiere el binario al sistema de destino. Puede iniciar la aplicación usando el siguiente comando:

$ ./application

Usando el cliente PLCnext cockpit también podemos ver el uso actual de memoria y almacenamiento:

Sin embargo, también estamos interesados en el inicio y el consumo de memoria de nuestra única aplicación en comparación con la ejecución de la aplicación en un entorno de ejecución Java como OpenJDK. Así, medimos ambos valores como se muestra en la siguiente tabla:

Tiempo de inicio (menos es mejor), Uso de memoria (menos es mejor)

Imagen nativa de GraalVM: 0,413 s, 87 MB

OpenJDK: 13 s, 128 MB

GraalVM Native Image ofrece un rendimiento significativamente mejorado en términos de tiempo de inicio y uso de memoria en comparación con OpenJDK, lo que demuestra su eficacia a la hora de optimizar el consumo de recursos para una implementación eficiente de aplicaciones.

Resumen

Utilizar Java a nivel de control como un PLC tiene múltiples beneficios. En primer lugar, no hay corte tecnológico entre el nivel de supervisión y el nivel de control. La misma fuerza laboral puede implementar aplicaciones y beneficiarse del ecosistema Java y las herramientas disponibles. En segundo lugar, GraalVM puede compilar código Java como aplicaciones nativas en dispositivos integrados como procesadores ARM y x86 de 32 y 64 bits. Por lo tanto, sus desarrolladores no necesitan ocuparse de la arquitectura subyacente y pueden implementar su aplicación en un lenguaje orientado a objetos de alto nivel. En tercer lugar, gracias al soporte de contenedor del PLCnext de Phoenix Contact, tenemos acceso a las interfaces del PLC directamente en el mismo componente de hardware y podemos romper las rígidas jerarquías en las aplicaciones de las industrias manufactureras actuales.

Nota:

El Makers Blog muestra aplicaciones e historias de usuarios de miembros de la comunidad que Phoenix Contact no prueba ni revisa. Úselos bajo su propio riesgo.


Tecnología Industrial

  1. Metales especiales para aplicaciones de dispositivos médicos
  2. Reconocimiento de voz de Raspberry Pi:un proyecto sencillo de reconocimiento de voz
  3. El sector solar en proceso de maduración crea la necesidad de una gestión de activos solares
  4. Estado de la industria:actualización de marzo de 2021
  5. Conozca sus materiales:polieteretercetona (PEEK)
  6. Guía 2026:13 competidores y alternativas líderes de Pinterest
  7. ¿Qué es la soldadura por arco de tungsteno con gas o soldadura TIG?
  8. Cómo limpiar aluminio después de soldar
  9. Convierta las llamadas en frío en clientes potenciales calificados:cómo los datos de PPC impulsan el crecimiento de las ventas
  10. 5 beneficios de usar acero estructural para la fabricación
  11. Voltímetros y amperímetros de CA