Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Java и GraalVM Native Image: Ускорение подключения к базам данных в производственных приложениях

Современный ландшафт приложений в производственных отраслях разделен на жесткую иерархию. Начиная от управления с использованием ERP-систем, систем планирования с MES, систем контроля с SCADA до систем управления, реализованных с ПЛК и полевых систем на самом низу.

Пока большинство систем для управления, планирования и контроля реализованы на высокоуровневых объектно-ориентированных языках программирования, системы управления реализованы полностью на низкоуровневых языках, где C является доминирующим языком программирования.

Это резкое изменение от высокого к низкому уровню иерархии создает несколько проблем. Для реализации необходимы совершенно разные инструменты и экосистемы. Для реализации задачи необходимо привлечь совершенно разных разработчиков с иным мышлением. Интерфейсы должны быть определены между двумя мирами или системами. Только потому, что нет возможности продолжить с высокоуровневым языком программирования, известным на уровне контроля, на уровне управления. Это теперь изменилось. Используя контейнерные технологии на уровне управления в ПЛК, например, мы можем использовать языки программирования вроде Java на этом уровне иерархии и нарушить жесткие иерархии.

Java — широко используемый высокоуровневый объектно-ориентированный язык программирования. У него живое сообщество и экосистема библиотек и фреймворков, предоставляющих дополнительную функциональность, позволяя использовать существующие инструменты и решения для быстрой и эффективной разработки приложений.

Мы покажем, как Java доступна на ПЛК Phoenix Contact PLCnext для упрощения разработки приложения, запущенного на PLCnext и напрямую взаимодействующего с базой данных для получения и хранения прикладной информации и представления их на веб-интерфейсе. Один из самых популярных фреймворков в Java — Hibernate. Он упрощает процесс отображения Java-объектов на реляционные таблицы баз данных, уменьшая объем шаблонного кода, необходимого для операций с базой данных. Hibernate предоставляет высокий уровень абстракции, позволяя разработчикам работать с объектами, а не с SQL-запросами напрямую. Это может привести к более быстрым циклам разработки и сокращению затрат на разработку. Hibernate абстрагирует различия между различными поставщиками баз данных, облегчая переключение между базами данных без значительных изменений кода. Эта статья описывает интеграцию Hibernate для подключения ПО, запущенного на ПЛК, к базам данных.

Современное Java-приложение на PLCnext

Для начала реализации современного Java-приложения мы рекомендуем использовать фреймворки приложений, такие как Quarkus или Spring Boot. Эти фреймворки упрощают конфигурацию проекта, управление зависимостями.

Для этого примера мы начнем наше приложение, используя руководство Quarkus «Using Hibernate ORM and Jakarta Persistence». Пример исходного кода можно найти в проекте GitHub hibernate-orm-quickstart.

Мы начнем модифицировать исходный код приложения. Мы можем изменить Java-класс Fruit.java в Event.java и добавить новое поле date.

Пример кода Event.java:

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

Мы можем настроить URL базы данных и учетные данные, изменяя файл application.properties

Пример 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 ... 

Когда приложение запускается, таблица в базе данных будет создана и инициализирована при необходимости. После запуска мы можем взаимодействовать с базой данных через веб-интерфейс, запущенный на порту 8080 на PLCnext:

Имейте в виду, что все это происходит на уровне управления нашей иерархии без какой-либо дополнительной системы между ними.

GraalVM Native Image

Многие разработчики до сих пор верят, что Java требует так называемую Java Runtime Environment для выполнения Java Byte-Code и не обеспечивает необходимую производительность. Это больше не так для встраиваемых приложений. В этом примере мы используем технологию GraalVM Native Image для компиляции Java-кода в нативное приложение. Нативная компиляция образа GraalVM предлагает убедительное решение для решения проблем времени запуска и потребления памяти в Java-приложениях, особенно в средах с ограниченными ресурсами, таких как встраиваемые системы. Компилируя Java-приложения ahead-of-time в нативные исполняемые файлы, GraalVM значительно сокращает время запуска и накладные расходы на память по сравнению с традиционной Just-In-Time (JIT) компиляцией.

GraalVM от MicroDoc имеет уникальную способность генерировать бинарные файлы для встраиваемых устройств. На момент написания этого руководства GraalVM поддерживает 32-битные и 64-битные ARM и x86 процессоры.

Чтобы скомпилировать наше Java-приложение ahead-of-time для ПЛК AXC F 1152, мы можем использовать GraalVM от MicroDoc и настроить некоторые параметры компилятора в файле 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 

Больше информации о процессе кросскомпиляции и отладке можно найти в следующей статье: Building and debugging Java native images of MicroDoc GraalVM Embedded

Чтобы собрать приложение, можно просто использовать следующую команду:

$ mvn -Pnative package 

Затем запускаем симулятор PLCnext. Симулятор предоставляется как qemu-образ. Симулятор приветствует нас следующей строкой:

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

Сгенерированные бинарные файлы можно скопировать на ПЛК командой scp, которая открывает безопасную оболочку к ПЛК и передает бинарный файл на целевую систему. Можно запустить приложение следующей командой:

$ ./application 

Используя клиент PLCnext Cockpit, мы также можем посмотреть на текущее использование памяти и хранилища:

Однако мы также заинтересованы во времени запуска и потреблении памяти нашего отдельного приложения по сравнению с запуском приложения в Java Runtime Environment, как OpenJDK. Таким образом, мы измерили оба значения, как показано в следующей таблице:

Время запуска (меньше лучше), Использование памяти (меньше лучше)

GraalVM Native Image: 0.413 с, 87 МБ

OpenJDK: 13 с, 128 МБ

GraalVM Native Image предлагает значительно улучшенную производительность с точки зрения времени запуска и использования памяти по сравнению с OpenJDK, демонстрируя свою эффективность в оптимизации потребления ресурсов для эффективного развертывания приложений.

Резюме

Использование Java на уровне управления, как ПЛК, имеет множество преимуществ. Во-первых, нет разрыва в технологиях между уровнем контроля и уровнем управления. Та же рабочая сила может реализовывать приложения и пользоваться экосистемой Java и доступными инструментами. Во-вторых, GraalVM способен компилировать Java-код как нативные приложения на встраиваемых устройствах, таких как 32-битные и 64-битные ARM и x86 процессоры. Таким образом, ваши разработчики не должны заботиться о базовой архитектуре и могут реализовывать приложение на высокоуровневом объектно-ориентированном языке. В-третьих, благодаря поддержке контейнеров в PLCnext от Phoenix Contact, у нас есть доступ к интерфейсам ПЛК напрямую в том же аппаратном компоненте и мы можем нарушить жесткие иерархии в современных производственных приложениях.

Примечание:

Блог Makers демонстрирует приложения и пользовательские истории членов сообщества, которые не тестировались и не проверялись Phoenix Contact. Используйте их на свой страх и риск.

Промышленные технологии

  1. Определительное руководство по 20 ведущим консультантам по управлению активами SAP
  2. 12 экспертных советов для проектирования печатных плат, собирающихся идеально
  3. Процветание в новой эре трансграничной электронной коммерции: проверенные стратегии успеха
  4. Устранение гула вентилятора: как вибрационный анализ устранил звук котла
  5. Учебник по проектированию PCB в KiCad: Освоение открытого разработки печатных плат
  6. Ритейлерам: проверенные стратегии компенсации растущих доплат за доставку
  7. Понимание релейно-контактных схем (Ladder Diagrams): проектирование, монтаж и безопасность в промышленных системах у…
  8. Как закупка запчатей в США повышает эффективность и гибкость производства
  9. Современные изделия RIM: от автомобильной промышленности к передовым дизайнам
  10. Создание современного производственного персонала: целостная стратегия Smart Talent