Apache PLC4X 致力于创建一组库,用于以统一的方式与工业级可编程逻辑控制器 (PLC) 进行通信。我们计划将库用于:
- Java
- Go
- C (未准备好使用)
- Python (未准备好使用)
- 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
开发
环境
目前,该项目配置为需要以下软件:
- Java 11 JDK:用于一般运行 Maven 以及编译JAVA_HOME配置为指向它的 Java 和 Scala 模块。
- Git(即使在源代码发行版上工作时)
- (可选,用于运行所有测试)libpcap/Npcap 用于 Java 中的原始套接字测试或使用passive-mode驱动程序
- (可选,用于构建网站)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我们还需要:
- Python 3.7 或更高版本
- Python pyenv
为了构建PLC4Net我们还需要:
- 点网 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