Imagem nativa Java e GraalVM:aumentando a conectividade do banco de dados em aplicativos de manufatura
O cenário atual de aplicações nas indústrias de manufatura está dividido em uma hierarquia rígida. Desde o gerenciamento usando sistemas ERP até sistemas de planejamento usando MES, passando por sistemas de supervisão usando SCADA, até sistemas de controle realizados com PLCs e sistemas de campo na parte inferior.
Enquanto a maioria dos sistemas de gerenciamento, planejamento e supervisão são implementados em linguagens de programação orientadas a objetos de alto nível, os sistemas de controle são implementados completamente com linguagens de baixo nível, sendo C a linguagem de programação dominante.
Esta mudança abrupta de um nível hierárquico de alto nível para um nível inferior cria vários problemas. São necessárias ferramentas e ecossistemas completamente diferentes. Para a implementação, desenvolvedores completamente diferentes com uma maneira de pensar diferente devem ser contratados para implementar uma tarefa. As interfaces devem ser definidas entre os dois mundos ou sistemas. Somente porque não há possibilidade de continuar com uma linguagem de programação de alto nível conhecida desde o nível de supervisão até o nível de controle. Isso agora mudou. Usando a tecnologia de contêiner no nível de controle de um PLC, por exemplo, somos capazes de usar linguagens de programação como Java nesse nível de hierarquia e quebrar hierarquias rígidas.
Java é uma linguagem de programação orientada a objetos de alto nível amplamente utilizada. Possui uma comunidade vibrante e um ecossistema de bibliotecas e estruturas que fornecem funcionalidades adicionais, permitindo que você aproveite as ferramentas e soluções existentes para construir seu aplicativo de forma mais rápida e eficiente.
Mostraremos como o Java está disponível em um PLCnext da Phoenix Contact para simplificar o desenvolvimento de uma aplicação que está rodando no PLCnext e se comunica diretamente com um banco de dados para recuperar e armazenar informações relevantes da aplicação e apresentá-las em uma interface web. Um dos frameworks mais populares em Java é o Hibernate. Ele simplifica o processo de mapeamento de objetos Java para tabelas de bancos de dados relacionais, reduzindo a quantidade de código padrão necessário para operações de banco de dados. O Hibernate fornece um alto nível de abstração, permitindo que os desenvolvedores trabalhem diretamente com objetos em vez de consultas SQL. Isso pode levar a ciclos de desenvolvimento mais rápidos e a uma redução do esforço de desenvolvimento. O Hibernate abstrai as diferenças entre os diferentes fornecedores de bancos de dados, facilitando a alternância entre bancos de dados sem alterações significativas no código. Este artigo descreve a integração do Hibernate para conectar software executado em PLCs a bancos de dados.
Aplicação Java moderna no PLCnext
Para começar a implementar um aplicativo Java moderno, recomendamos o uso de frameworks de aplicativos como Quarkus ou Spring Boot. Esses frameworks simplificam a configuração do projeto, o gerenciamento de dependências.
Para este exemplo, iniciaremos nosso aplicativo usando o Guia de Persistência de Hibernate ORM e Jakarta do Quarkus. Um exemplo do código-fonte pode ser encontrado no projeto github hibernate-orm-quickstart.
Começaremos modificando o código fonte do aplicativo. Podemos mudar a classe Java
09 em 16 e adicione um novo campo 26 . Exemplo de código
34 :08
Podemos configurar a URL do banco de dados e as credenciais modificando o arquivo41
Exemplo de src/main/resources/application.properties
17
Quando a aplicação for iniciada, uma tabela no banco de dados será criada e inicializada, se necessário. Após a inicialização, podemos interagir com o banco de dados através de uma interface web rodando na porta 8080 do PLC.
Tenha em mente que tudo isso acontece no nível de controle da nossa hierarquia, sem qualquer sistema adicional entre eles.
Imagem nativa do GraalVM
Muitos desenvolvedores ainda acreditam que Java requer o chamado Java Runtime Environment para executar Java Byte-Code e não fornece o desempenho necessário. Este não é mais o caso dos aplicativos incorporados. Neste exemplo, usamos a tecnologia GraalVM Native Image para compilar código Java em um aplicativo nativo. A compilação de imagem nativa do GraalVM oferece uma solução atraente para enfrentar os desafios de tempo de inicialização e consumo de memória em aplicativos Java, especialmente em ambientes com recursos limitados, como sistemas embarcados. Ao compilar aplicações Java antecipadamente em executáveis nativos, o GraalVM reduz significativamente o tempo de inicialização e a sobrecarga de memória em comparação com a compilação tradicional Just-In-Time (JIT).
O GraalVM do MicroDoc tem a capacidade única de gerar binários para dispositivos embarcados. No momento em que este tutorial foi escrito, GraalVM suporta processadores ARM e x86 de 32 e 64 bits.
Para compilar nossa aplicação Java antecipadamente visando o PLC56, podemos usar o GraalVM do MicroDoc e configurar algumas opções do compilador no arquivo61.
25
Você encontrará mais informações sobre o processo de compilação cruzada e depuração no seguinte artigo:Construindo e depurando imagens nativas Java do MicroDoc GraalVM Embedded
Para construir o aplicativo, você pode simplesmente usar o seguinte comando:
38
A seguir iniciamos o simulador PLCnext. O simulador é fornecido como uma imagem qemu. O simulador nos cumprimentará com a seguinte linha:
47
Os binários gerados podem ser copiados para o CP com o comando73que abre um shell seguro para o PLC e transfere o binário para o sistema de destino. Você pode iniciar o aplicativo usando o seguinte comando:
55
Usando o cliente PLCnext cockpit também podemos dar uma olhada no uso atual de memória e armazenamento:
No entanto, também estamos interessados na inicialização e no consumo de memória de nosso aplicativo único em comparação com a execução do aplicativo em um Java Runtime Environment como OpenJDK. Assim, medimos ambos os valores conforme mostrado na tabela a seguir:
Tempo de inicialização (menos é melhor), Uso de memória (menos é melhor)
Imagem nativa do GraalVM: 0,413s, 87MB
OpenJDK: 13 segundos, 128 MB
GraalVM Native Image oferece desempenho significativamente melhorado em termos de tempo de inicialização e uso de memória em comparação com OpenJDK, demonstrando sua eficácia na otimização do consumo de recursos para implantação eficiente de aplicativos.
Resumo
Usar Java no nível de controle como um PLC traz vários benefícios. Em primeiro lugar, não há corte tecnológico entre o nível de supervisão e o nível de controlo. A mesma força de trabalho pode implementar aplicações e beneficiar-se do ecossistema Java e das ferramentas disponíveis. Em segundo lugar, o GraalVM é capaz de compilar código Java como aplicativos nativos em dispositivos embarcados, como processadores ARM e x86 de 32 e 64 bits. Assim, seus desenvolvedores não precisam se preocupar com a arquitetura subjacente e podem implementar sua aplicação em uma linguagem orientada a objetos de alto nível. Terceiro, graças ao suporte de contêiner do PLCnext da Phoenix Contact, temos acesso às interfaces do PLC diretamente no mesmo componente de hardware e podemos quebrar as hierarquias rígidas nas aplicações atuais das indústrias de manufatura.
Observação:
O Makers Blog mostra aplicativos e histórias de usuários de membros da comunidade que não foram testados ou revisados pela Phoenix Contact. Use-os por sua própria conta e risco.
Como construir uma roda LiteRT Python para o AXC F2152 Guia passo a passo:Instalando o Node-RED no PLCnext usando Podman
Tecnologia industrial
- Guia passo a passo para fiação de disjuntores tandem para circuitos de 120 V e 240 V
- Como a automação afeta a indústria de manufatura
- Como a mobilidade contextual pode aumentar a produtividade da cadeia de suprimentos
- Compreendendo o processo de fabricação de carcaças de fundição de investimento
- Diretrizes críticas de design e produção para moldagem por inserção
- Fabricando painéis:visualize a produção em tempo real
- Cinco maneiras de reduzir a escassez de mão de obra em sua loja
- Estrela para Delta e Delta para Estrela. Transformação Y-Δ
- Dissipador de calor com led:o que é e por que é importante?
- Portas inteligentes e contêineres conectados:como a tecnologia IoT está transformando a remessa