Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Tecnologia industrial

Aplicação Java no PLCnext Control



Com o Java 9, uma nova ferramenta chamada jlink foi introduzido. Ele combina módulos e cria uma imagem de tempo de execução completa. Por um lado, todo o ARM JDK de 32 bits pode ser executado em um PLCnext Control. Mas com jlink e módulos é possível reduzir os recursos necessários para sua aplicação Java. Ele cria um pacote com apenas as partes necessárias do JDK necessárias para seu aplicativo.




Pré-requisitos










Os binários do OpenJDK para muitas plataformas podem ser encontrados, por exemplo, no AdoptOpenJDK. Para este tutorial, escolhemos o Linux arm32 jdk-12.0.2+10 para o controlador e seu pendente para um sistema host Windows x64. Estamos usando o seguinte local dos JDKs:




C:
---Java
    |
    +---jdk-12.0.2
    |       ...
    |
    ---jdk-12-ARM-32bit
            ...




Criar um módulo de aplicativo






Neste exemplo, estamos apenas imprimindo um Hello World na consola. Para usar jlink temos que colocar este pequeno aplicativo em um módulo. Meu ponto de partida no terminal é uma pasta chamada “HelloWorld” e uma pasta src com a seguinte estrutura.




HelloWorld
---src
    ---de.plcnext.hello
        |   module-info.java
        |
        ---de
            ---plcnext
                ---hello
                        HelloWorld.java





Este é nosso pequeno exemplo de código no arquivo HelloWorld.java:




package de.plcnext.hello;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello PLCnext world!");
    }
}





E o module-info.java é necessário para criar o módulo:




module de.pxc.hello { }





Depois de criar a pasta de origem, compilamos nosso projeto. Para isso usamos o seguinte comando no terminal.




C:Javajdk-12.0.2binjavac.exe -d .modulesde.plcnext.hello .srcde.plcnext.hellodeplcnexthelloHelloWorld.java .srcde.plcnext.hellomodule-info.java





Uma pasta de módulos e classes java são criadas:




HelloWorld
---modules
    ---de.plcnext.hello
        |   module-info.class
        |
        ---de
            ---plcnext
                ---hello
                        HelloWorld.class





Para testar nosso módulo no sistema host, podemos executá-lo com o seguinte comando:




C:Javajdk-12.0.2binjava.exe --module-path .modules -m de.plcnext.hello/de.plcnext.hello.HelloWorld





Isso deve gerar Hello PLCnext world! .




Como usar o jlink






Agora queremos colocar isso em nosso dispositivo sem todo o JDK de 300 MB. Para isso, estamos usando o jlink sem nenhum parâmetro adicional na primeira etapa. Mas primeiro precisamos de mais uma informação, quais módulos adicionais são necessários. Isso vamos descobrir analisando nosso módulo com jdeps.




C:Javajdk-12.0.2binjdeps.exe --module-path ".modules" --add-modules "de.plcnext.hello"





Isso nos diz que precisamos de java.base adicionalmente ao nosso módulo. Como module-path escolhemos o caminho para nosso aplicativo e o caminho para os jmods de nossa plataforma de destino JDK. Neste caso C:Javajdk-12-ARM-32bitjmods .





Agora nossa chamada jlink se parece com isso:




C:Javajdk-12.0.2binjlink.exe --module-path ".modules;C:Javajdk-12-ARM-32bitjmods" --add-modules "de.plcnext.hello,java.base" --output HelloWorldjre









O resultado é um HelloWorldjre pasta com apenas cerca de 45 MB. Copiamos isso para o nosso controlador. No caso deste exemplo para /opt/plcnext/projects/java/ . Precisamos tornar o arquivo “java” na pasta binária HelloWorldjre executável via chmod +x java e inicie nosso módulo




./java -m de.plcnext.hello/de.plcnext.hello.HelloWorld





Ele deve executar o aplicativo e a saída como antes de Hello PLCnext world! . Ao usar alguns parâmetros adicionais do jlink, você pode reduzir ainda mais o pacote (neste exemplo, até 28 MB) usando --strip-debug , --no-header-files , --no-man-pages e --compress=2 . Onde estão os cofres de compressão mais, mas podem prejudicar o desempenho no final.


Tecnologia industrial

  1. Circuitos de controle
  2. Operadores Java
  3. Interface Java
  4. Java try-with-resources
  5. Anotações Java
  6. Java 10 - Compartilhamento de dados de classe
  7. 5 vantagens do controle remoto de produção
  8. Gerenciando um dispositivo PLCnext Control via SNMP
  9. Como criar um aplicativo de console PLCnext simples em C#
  10. Clustermangement no PLCnext?