산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

Java 및 GraalVM 네이티브 이미지:제조 앱의 데이터베이스 연결성 강화

오늘날 제조 산업의 애플리케이션 환경은 엄격한 계층 구조로 나누어져 있습니다. ERP 시스템을 활용한 관리부터 MES를 활용한 기획 시스템, SCADA를 활용한 감독 시스템, PLC로 구현한 제어 시스템, 맨 아래의 현장 시스템까지.

관리, 계획 및 감독을 위한 대부분의 시스템은 고급 객체 지향 프로그래밍 언어로 구현되는 반면, 제어 시스템은 C가 지배적인 프로그래밍 언어인 저급 언어로 완전히 구현됩니다.

높은 수준에서 낮은 수준의 계층 구조 수준으로의 급격한 변경은 몇 가지 문제를 야기합니다. 완전히 다른 도구와 생태계가 필요합니다. 구현을 위해서는 서로 다른 사고방식을 가진 완전히 다른 개발자들이 참여하여 작업을 구현해야 합니다. 인터페이스는 두 세계 또는 시스템 간에 정의되어야 합니다. 제어 수준의 감독 수준에서 알려진 고급 프로그래밍 언어를 계속 사용할 가능성이 없기 때문입니다. 이제 이것이 바뀌었습니다. 예를 들어 PLC의 제어 수준에서 컨테이너 기술을 사용하면 이 계층 수준에서 Java와 같은 프로그래밍 언어를 사용하고 경직된 계층을 깨뜨릴 수 있습니다.

Java는 널리 사용되는 고급 객체 지향 프로그래밍 언어입니다. 추가 기능을 제공하는 라이브러리와 프레임워크의 활발한 커뮤니티와 생태계를 갖추고 있어 기존 도구와 솔루션을 활용하여 애플리케이션을 보다 빠르고 효율적으로 구축할 수 있습니다.

PLCnext에서 실행되는 애플리케이션 개발을 단순화하고 데이터베이스와 직접 통신하여 애플리케이션 관련 정보를 검색 및 저장하고 이를 웹 인터페이스에 표시하기 위해 Phoenix Contact PLCnext에서 Java를 사용할 수 있는 방법을 보여 드리겠습니다. Java에서 가장 인기 있는 프레임워크 중 하나는 Hibernate입니다. 이는 Java 개체를 관계형 데이터베이스 테이블에 매핑하는 프로세스를 단순화하여 데이터베이스 작업에 필요한 상용구 코드의 양을 줄입니다. Hibernate는 높은 수준의 추상화를 제공하여 개발자가 SQL 쿼리가 아닌 객체로 직접 작업할 수 있도록 합니다. 이를 통해 개발 주기가 빨라지고 개발 노력이 줄어들 수 있습니다. Hibernate는 서로 다른 데이터베이스 공급업체 간의 차이점을 추상화하여 중요한 코드 변경 없이 데이터베이스 간 전환을 더 쉽게 만듭니다. 이 기사에서는 PLC에서 실행되는 소프트웨어를 데이터베이스에 연결하기 위한 Hibernate 통합에 대해 설명합니다.

PLCnext의 최신 Java 애플리케이션

최신 Java 애플리케이션 구현을 시작하려면 Quarkus 또는 Spring Boot와 같은 애플리케이션 프레임워크를 사용하는 것이 좋습니다. 이러한 프레임워크는 프로젝트 구성, 종속성 관리를 단순화합니다.

이 예에서는 Quarkus의 Hibernate ORM 및 Jakarta 지속성 사용 가이드를 사용하여 애플리케이션을 시작합니다. 소스 코드의 예는 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;
 
...

application.properties 파일을 수정하는 데이터베이스 URL과 자격 증명을 구성할 수 있습니다.

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

애플리케이션이 시작되면 데이터베이스에 테이블이 생성되고 필요한 경우 초기화됩니다. 시작 후 PLCnext의 포트 8080에서 실행되는 웹 인터페이스를 사용하여 데이터베이스와 상호 작용할 수 있습니다.

이 모든 일은 중간에 추가 시스템 없이 계층 구조의 제어 수준에서 발생한다는 점을 명심하세요.

GraalVM 네이티브 이미지

많은 개발자들은 여전히 Java가 Java 바이트 코드를 실행하려면 소위 Java Runtime Environment가 필요하며 필요한 성능을 제공하지 않는다고 믿고 있습니다. 임베디드 애플리케이션에서는 더 이상 그렇지 않습니다. 이 예에서는 GraalVM 네이티브 이미지 기술을 사용하여 Java 코드를 네이티브 애플리케이션으로 컴파일합니다. GraalVM의 네이티브 이미지 컴파일은 특히 임베디드 시스템과 같이 리소스가 제한된 환경에서 Java 애플리케이션의 시작 시간 및 메모리 소비 문제를 해결하기 위한 강력한 솔루션을 제공합니다. GraalVM은 Java 애플리케이션을 기본 실행 파일로 미리 컴파일함으로써 기존 JIT(Just-In-Time) 컴파일에 비해 시작 시간과 메모리 오버헤드를 크게 줄입니다.

MicroDoc의 GraalVM에는 임베디드 장치용 바이너리를 생성하는 고유한 기능이 있습니다. 이 튜토리얼을 작성하는 시점에서 GraalVM은 32비트 및 64비트 ARM 및 x86 프로세서를 지원합니다.

PLC AXC F 1152를 대상으로 Java 애플리케이션을 미리 컴파일하기 위해 , MicroDoc의 GraalVM을 사용하고 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

다음 문서에서 크로스 컴파일 및 디버깅 프로세스에 대한 자세한 내용을 확인할 수 있습니다. MicroDoc GraalVM Embedded의 Java 기본 이미지 빌드 및 디버깅

애플리케이션을 빌드하려면 다음 명령을 사용하면 됩니다:

$ mvn -Pnative package

다음으로 PLCnext 시뮬레이터를 시작합니다. 시뮬레이터는 qemu 이미지로 제공됩니다. 시뮬레이터는 다음 줄로 우리를 맞이할 것입니다:

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

생성된 바이너리는 scp 명령을 사용하여 PLC에 복사할 수 있습니다. PLC에 대한 보안 셸을 열고 바이너리를 대상 시스템으로 전송합니다. 다음 명령을 사용하여 애플리케이션을 시작할 수 있습니다:

$ ./application

PLCnext Cockpit 클라이언트를 사용하면 현재 메모리 및 스토리지 사용량도 확인할 수 있습니다.

그러나 우리는 OpenJDK와 같은 Java Runtime Environment에서 애플리케이션을 실행하는 것과 비교하여 단일 애플리케이션의 시작 및 메모리 소비에도 관심이 있습니다. 따라서 우리는 다음 표와 같이 두 값을 모두 측정했습니다.

시작 시간(적을수록 좋음), 메모리 사용량(적을수록 좋음)

GraalVM 네이티브 이미지: 0.413초, 87MB

OpenJDK: 13초, 128MB

GraalVM 네이티브 이미지는 OpenJDK에 비해 시작 시간과 메모리 사용량 측면에서 크게 향상된 성능을 제공하여 효율적인 애플리케이션 배포를 위해 리소스 소비를 최적화하는 효과를 입증합니다.

요약

PLC와 같은 제어 수준에서 Java를 사용하면 여러 가지 이점이 있습니다. 우선, 감독 수준과 통제 수준 사이에는 기술 격차가 없습니다. 동일한 인력이 애플리케이션을 구현하고 Java 에코시스템과 사용 가능한 도구의 이점을 누릴 수 있습니다. 둘째, GraalVM은 32비트 및 64비트 ARM 및 x86 프로세서와 같은 임베디드 장치에서 Java 코드를 기본 애플리케이션으로 컴파일할 수 있습니다. 따라서 개발자는 기본 아키텍처를 관리할 필요가 없으며 고급 객체 지향 언어로 애플리케이션을 구현할 수 있습니다. 셋째, Phoenix Contact PLCnext의 컨테이너 지원 덕분에 동일한 하드웨어 구성 요소에서 PLC 인터페이스에 직접 액세스할 수 있으며 현재 제조 산업 애플리케이션의 경직된 계층 구조를 깨뜨릴 수 있습니다.

참고:

메이커스 블로그에는 피닉스컨택트의 테스트나 검토를 거치지 않은 커뮤니티 회원의 애플리케이션과 사용자 스토리가 표시됩니다. 자신의 책임하에 사용하십시오.


산업기술

  1. PC에서 WakeOnLan(WoL)에 PLCnext 사용
  2. 창고 표지판 구매 가이드:최적의 최상위 조직 효율성 표지판을 선택하여 탐색을 개선하고 창고 생산성을 높이는 방법
  3. 액체 분배 시스템에서 정밀 튜브의 역할:1부
  4. 사람들이 Fusion 360에서 가장 많이 사용하는 CAD 파일 형식은 무엇입니까?
  5. 가공 6061 알루미늄:6061 알루미늄 속성, 가격 및 알루미늄 6061 대 6063, 7075
  6. Industry 4.0 소프트웨어 솔루션:사용자보다 누가 더 잘 알겠습니까?
  7. 연구에서 제조 확장 프로그램에 대한 14:1 이상의 수익을 찾았습니다
  8. 레거시 시스템에 적합한 AI 통합 전략 선택
  9. 오, CAM-ada:르네상스 맨 Blaise Barrette 및 Fusion 360
  10. 네온에 대해 자주 묻는 질문