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

Java-приложение на PLCnext Control

В Java 9 появился новый инструмент под названием jlink. был представлен. Он объединяет модули и создает полноценный образ среды выполнения. С одной стороны, весь 32-битный ARM JDK может работать на PLCnext Control. Но с jlink и модулей можно сократить ресурсы, необходимые для вашего Java-приложения. Он создает пакет только с теми частями JDK, которые необходимы для вашего приложения.

Предпосылки

Бинарные файлы OpenJDK для многих платформ можно найти, например. на AdoptOpenJDK. Для этого руководства мы выбрали Linux arm32 jdk-12.0.2+10. для контроллера и его подвески для хост-системы Windows x64. Мы используем следующее расположение JDK:

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

Создать модуль приложения

В этом примере мы просто печатаем Hello World на консоли. Чтобы использовать jlink мы должны поместить это маленькое приложение в модуль. Моей отправной точкой в ​​терминале является папка «HelloWorld» и папка src со следующей структурой.

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

Это наш небольшой пример кода в файле HelloWorld.java:

package de.plcnext.hello;

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

И модуль-info.java необходим для создания модуля:

module de.pxc.hello { }

После создания исходной папки компилируем наш проект. Для этого мы используем следующую команду на терминале.

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

Папка модулей и классы Java созданы:

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

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

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

Это должно вывести Hello PLCnext world! .

Как использовать jlink

Теперь мы хотим получить это на нашем устройстве без целых 300 МБ JDK. Для этого мы используем jlink без каких-либо дополнительных параметров на первом шаге. Но для начала нам нужна еще одна информация, какие дополнительные модули нужны. Это мы узнаем, проанализировав наш модуль с помощью jdeps.

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

Это говорит нам, что нам нужно java.base дополнительно к нашему модулю. Как module-path мы выбираем путь к нашему приложению и путь к jmods нашей целевой платформы JDK. В этом случае C:Javajdk-12-ARM-32bitjmods .

Теперь наш вызов jlink выглядит так:

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

Результатом является HelloWorldjre папка размером всего около 45 МБ. Мы копируем это в наш контроллер. В этом примере на /opt/plcnext/projects/java/ . Нам нужно сделать файл «java» в бинарной папке HelloWorldjre исполняемым через chmod +x java и запускаем наш модуль

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

Приложение должно запускаться и выводиться, как раньше Hello PLCnext world! . Используя некоторые дополнительные параметры jlink, вы можете еще больше сократить пакет (в этом примере до 28 МБ), используя --strip-debug , --no-header-files , --no-man-pages и --compress=2 . Где сжатие больше всего безопасно, но может снизить производительность в конце.


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

  1. Цепи управления
  2. Операторы Java
  3. Java-интерфейс
  4. Java-проба с ресурсами
  5. Java-аннотации
  6. Java 10 — совместное использование данных классов
  7. 5 преимуществ дистанционного управления производством
  8. Управление устройством PLCnext Control через SNMP
  9. Как создать простое консольное приложение PLCnext на C#
  10. Управление кластером на PLCnext?