Apache NiFi
Apache NiFi 允许围绕数据流(data-stream)这一概念来创建处理数据的系统。
Apache PLC4X 同时提供 Source 和 Sink 处理器,用于从 PLC 中读取数据或向其写入数据。
PLC4X 同时支持 NiFi 的两代产品,分别由两组独立的模块提供:
| NiFi 版本 | 模块 | nar 构件 |
|---|---|---|
| NiFi 1.x | plc4j/integrations/apache-nifi/nifi-1 | plc4j-nifi-plc4x-nar |
| NiFi 2.x | plc4j/integrations/apache-nifi/nifi-2 | plc4j-nifi-2-plc4x-nar |
设置 NiFi
请使用你所运行的 NiFi 版本所要求的 Java 版本——NiFi 1.x 可运行于 Java 8、11、17 或 21,NiFi 2.x 则要求 Java 21 或更高版本。
一旦你通过 nifi.sh run 或 run-nifi.bat 启动了 NiFi,其 Web 界面应可通过以下地址访问:http://localhost:8080/nifi/
| Web 界面可能需要几秒钟才会显示……因此如果浏览器中出现错误,请稍等片刻让它完成启动。 |
|---|
在 NiFi 中启用 PLC4X 处理器
要在 Apache NiFi 中启用 Apache PLC4X 支持,你只需将我们的 nar 归档文件复制到 NiFi 安装目录的 lib 目录中即可。
你可以自行从 plc4x-extras 仓库构建 nar,然后从对应的 nar 模块的 target 目录中获取:
- NiFi 1.x:
plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/target - NiFi 2.x:
plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/target
或者你也可以从 Maven 中央仓库下载已发布的版本:plc4j-nifi-plc4x-nar / plc4j-nifi-2-plc4x-nar

在 NiFi 中使用 PLC4X 源处理器
将一个 PLC4X 源处理器添加到画布上:点击 Add processor 按钮,然后将其拖拽到画布中。

此时会弹出一个窗口,其中列出了所有可用的处理器。
在搜索框中输入 PLC4X,选中 Plc4xSourceProcessor,然后点击 Add(我想你也可以双击该处理器)

| 如果你点击某个处理器,要看出它已被选中可能有点困难,因为选中状态没有高亮显示。不过,你可以通过底部显示的名称来确认当前选中了哪个处理器。 |
|---|
新的处理器添加到画布后,你需要对它进行配置。双击它(或者右键点击并选择 Configure)即可打开配置窗口。
在这里你需要提供一个 PLC4X connection string 和一个 PLC resource address String。
PLC connection String 就是一条普通的 PLC4X 连接字符串。关于如何使用所支持的各种连接类型,请参阅相关文档 ](https://plc4x.apache.org/plc4x/latest/users/protocols/index.html)
PLC resource address String 是一个以 ; 分隔的 name-value-pairs 列表,其中每个 name 都被赋予一个 plc4x addrress。
| 关于你所使用的驱动对应的地址字符串的格式,请查阅该驱动的文档 ](https://plc4x.apache.org/plc4x/latest/users/protocols/index.html) |
|---|
示例:
PLC connection String: s7://192.168.23.30
PLC resource address String: time-value=%DB2:8:TIME;string-value=%DB2:30.0:STRING(10)
在保存处理器之前,还需要设置一项。请切换到 Scheduling 标签页,并将 Run Schedule 设置为 1 或 2 秒。

如果不这样做,NiFi 将不断向 PLC 发送请求,以我的 S7 为例,它很快就会开始拒绝接受新连接。
顶部仍会显示 Invalid,但这与您的输入无关,更多的是因为该处理器会产生两个数据流:SUCCESS 和 FAILURE。接下来需要将它们连接起来。
完成后,点击 Apply。
但在执行此操作之前,我们需要添加一个可以连接它们的对象。
因此,我们只需在画布上再添加一个处理器:使用 LogMessage 处理器。它会将每一条数据都记录到 NiFi 日志系统中。
由于 LogMessage 处理器在每条日志消息被记录时都会生成一个事件流,我们需要将其配置为自动终止该关系。方法是双击该处理器并选择 Settings 标签页。然后在 Automatically Terminate Relationships 部分中勾选标记为 SUCCESS 的复选框,最后点击 Apply。

现在我们可以连接这两个处理器。
当鼠标悬停在 Plc4xSourceProcessor 上时,是否注意到了 arrow-icon?点击它并开始拖动。您会发现现在有一个连接,只需将其拖到日志处理器上即可。当在那里释放连接时,两个处理器就连接在一起了。
释放鼠标后,会弹出一个窗口,允许您配置该连接。通常可以选择要连接哪些数据流。
在本例中,我们只需将 SUCCESS 和 FAILURE 数据流连接到日志处理器。

完成后,您的流配置就全部完成了。

最后要做的是启动这些处理器。目前它们处于停止状态(可通过红色方块图标看出)。
方法是右键单击这两个处理器并选择 Start。
现在您应该能在 PLC4X Source 的 Out 上看到不断增加的数字,以及在 Logging Processor 的 In 上看到相应的数字。

启用调试
为了能够调试 PLC4X,请编辑 bin/nifi.sh(在 Mac 和 Linux 上)并取消注释以下行:
BOOTSTRAP_DEBUG_PARAMS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000"对于 Windows,你需要手动添加:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000的 run-nifi.bat 文件 JAVA_ARGS 中。
如果您希望 NiFi 在启动时暂停,以确保捕捉到整个执行过程,只需将 suspend=n 改为 suspend=y。这样 NiFi 会一直暂停,直到有远程调试会话连接为止。 |
|---|
评论
登录后参与评论
KnowForge