优秀的编程知识分享平台

网站首页 > 技术文章 正文

Apache PLC4X:工业物联网适配器,允许统一访问任何类型的PLC

nanyue 2025-02-06 15:59:20 技术文章 6 ℃

#挑战30天在头条写日记#



Apache PLC4X 致力于创建一组库,用于以统一的方式与工业级可编程逻辑控制器 (PLC) 进行通信。我们计划将库用于:

  1. Java
  2. Go
  3. C (未准备好使用)
  4. Python (未准备好使用)
  5. C# (.Net) (尚未准备好使用 - 已放弃)

PLC4X 还与其他 Apache 项目集成,例如:

  • Apache Calcite
  • Apache Camel
  • Apache Kafka-Connect
  • Apache Karaf
  • Apache NiFi

并带来独立(Java)实用程序,例如:

  • OPC-UA 服务器:使您能够使用带有 OPC-UA 的 PLC4X 与传统设备进行通信。
  • PLC4X 服务器:使您能够与中央 PLC4X 服务器通信,然后中央 PLC4X 服务器通过 PLC4X 与设备通信。

它还提供了在应用程序内部使用的 (Java) 工具:

  • 连接缓存:用于重用和共享 PLC 连接的框架的新实现
  • 连接池:我们框架的旧实现,用于重用和共享 PLC 连接
  • OPM:Object-Plc-Mapping:允许将 PLC 字段绑定到类似于 JPA 的 java POJO 中的属性
  • Scraper:用于进行计划和重复数据收集的实用程序。

入门

根据编程语言的不同,用法也会有所不同,因此请访问 PLC4X 网站上的入门指南查找所选语言。

Java

注意:目前支持构建 Apache PLC4X 所有部分的 Java 版本至少为 Java 11(目前在 Java 19 中,Apache Kafka 集成模块被排除在构建之外,因为它所需的插件与该版本不兼容)

请参阅网站上的 PLC4J 用户指南,开始在 Java 应用程序中使用 PLC4X: https:
//plc4x.apache.org/users/getting-started/plc4j.html

开发

环境

目前,该项目配置为需要以下软件:

  1. Java 11 JDK:用于一般运行 Maven 以及编译JAVA_HOME配置为指向它的 Java 和 Scala 模块。
  2. Git(即使在源代码发行版上工作时)
  3. (可选,用于运行所有测试)libpcap/Npcap 用于 Java 中的原始套接字测试或使用passive-mode驱动程序
  4. (可选,用于构建网站)Graphviz:用于生成文档中的图表

警告:代码生成使用的实用程序需要一些额外的 VM 设置。从根目录运行构建时,.mvn/jvm.config会自动应用 中的设置。仅构建子模块时,设置 vm args: 非常重要--add-exports
jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports
jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports
jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports
jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports
jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED。例如,在 Intellij 中,在 IDE 设置中设置这些设置:Preferences | 构建、执行、部署 | 构建工具| Maven | 运行器:JVM 选项。

更详细的描述可以在我们的网站上找到:

https://plc4x.apache.org/developers/preparing/index.html

为了构建PLC4C我们还需要:

所有需求均由构建本身检索

为了构建PLC4Go我们还需要:

所有需求均由构建本身检索

为了构建PLC4Py我们还需要:

  1. Python 3.7 或更高版本
  2. Python pyenv

为了构建PLC4Net我们还需要:

  1. 点网 SDK 6.0

通过此设置,您将能够构建 PLC4X 的 Java 部分。

在进行完整构建时,我们会自动运行先决条件检查,如果未满足所有要求,则构建失败并给出解释。

使用 Docker 构建

如果你不想在普通系统上设置环境,并且已经安装了 Docker,那么你也可以在 Docker 容器中构建所有内容:

   docker compose up

这将构建一个本地 Docker 容器,能够构建 PLC4X 的所有部分,并将运行该容器内本地目录的 Maven 构建。

默认构建将运行本地发布构建,因此它也可用于确保发布时的可重现构建。

默认情况下它将在本地存储文件:

  • 下载的 Maven 工件将转到out/.repository
  • 部署的工件将转到out/.local-snapshots-dir

这样做的原因是,否则这些工件将与源发布工件一起打包,从而产生 12GB 或更多的 zip 存档。但是,将其保存在主target目录中将使构建在每次mvn clean运行 a 时删除本地存储库。然而,该out目录默认从程序集描述符中排除,因此它不包含在源 zim 中。

入门

您的系统上必须至少安装 Java 11 并连接到 Maven Central(用于下载外部第三方依赖项)。构建需要 Maven 3.6,因此请确保它已安装并在您的系统上可用。

注意:当前使用 Java 19 时,Apache Kafka 集成模块被排除在构建之外,因为它所需的插件之一已被证明与此版本不兼容。

注意:存储库中安装了一个方便的 Maven-Wrapper,使用时,它会自动下载并安装 Maven。如果您想使用它,请使用./mvnw或mvnw代替普通mvn命令。

注意:从 resources-zip 运行时,mvnw可能无法在Mac或上执行Linux。通过在目录中运行以下命令可以轻松修复此问题。

$ chmod +x mvnw

注意:如果您正在使用Windows系统,请在以下构建命令中使用mvnw.cmd代替。./mvnw

构建 PLC4X Java jar 并将其安装在本地 Maven 存储库中

./mvnw install

您现在可以构建使用 PLC4X 的 Java 应用程序。PLC4X 示例是一个很好的起点,可以在plc4j/examples 目录中找到。

Go可以通过启用配置文件来构建驱动程序with-go:

./mvnw -P with-go install 

C# / .Net目前正处于实施状态work in progress。为了能够构建该C# / .Net模块,您当前需要激活: with-dotnet配置文件。

./mvnw -P with-dotnet install

Python 实现目前处于某种不干净的状态,仍然需要重构。为了能够构建 Python 模块,您当前需要激活: with-sandbox和with-python配置文件。

./mvnw -P with-sandbox,with-python install

为了构建一切,以下命令应该起作用:

./mvnw -P with-c,with-go,with-python,with-sandbox install

项目地址:
https://github.com/apache/plc4x

Tags:

最近发表
标签列表