我是Apache PLC4X项目的发起人,所以我想我可能有资格在这里为您提供帮助。
PLC4X 本身不是网关,但您可以使用它来构建网关。将其视为使用各种协议与各种 PLC 通信的通用驱动程序。我们已经实现了一个定义了许多通用操作的 API:
- 阅读
- 写
- 订阅
- 浏览(尚未实现)
- 调用函数(尚未实现)
这样你就可以实现一个独立于最终使用的协议的程序。这样可以轻松地与各种不同的硬件进行通信,并且可以迁移现有硬件而无需更改软件。
如果您正在寻找 100% 实现给定 PLC 本地协议的所有功能的东西,那么 PLC4X 也不是您想要的。
目前 PLC4X 在 Java 上得到最好的支持。通常,您需要的只是 Java 8 或更新的 VM。如果您想使用我们的被动模式驱动程序以及未来的现场总线驱动程序,例如 ProfiNet 和 EtherCat,您还需要 libpcap。
现在我们也在努力提供其他语言的驱动程序:
- Go(可能会以最快的速度成熟,因为这是我目前 90-100% 的时间都在做的事情)
- C(可能会慢慢成熟,因为 C 真的不好玩,我在 Go 上投入了更多时间)
- Python(PLC4X 社区正在努力开发的一项举措)
- C++(由于缺乏贡献者,计划目前停滞不前)
- C#(由于缺乏贡献者,计划目前停滞不前)
关于您的问题 3,我有点不确定,因为两者是完全不同的东西。如果您只处于传统 SCADA 系统和兼容 PLC 的世界中,那么我根本看不到使用 PLC4X 的意义。当您想将现代 IT 系统引入包含传统 PLC 的系统时,PLC4X 表现出色。最新一代的 PLC 有时已经支持 MQTT,在这种情况下,我也没有看到使用 PLC4X 的优势。不幸的是,在接下来的 10 到 20 年里,我们将不得不在车间使用大量机器,这些机器被认为是“遗留”,使用遗留协议。
如果您现在想做最先进的机器学习、预测性维护、黄金批次分析……(所有酷炫的工业 4.0 流行语),PLC4X 目前可能是您弥合两者之间差距的最佳和最便宜的选择这个传统的 PLC 世界和现代 IT 系统。
希望我能够回答您的问题。