如何使用ApacheNIFI读取Modubus TCP/IP数据?

如何使用ApacheNIFI读取Modubus TCP/IP数据?,tcp,apache-nifi,dataflow,modbus-tcp,plc4x,Tcp,Apache Nifi,Dataflow,Modbus Tcp,Plc4x,我有Modbus TCP/IP中的数据。我必须使用ApacheNIFI读取可用数据。我不知道到底应该使用哪个处理器(例如GetTCP、ListenTCP、Plc4xSourceProcessor)。你能帮我吗?Apache NiFi是否可行?我不知道Modbus TCP/IP是什么,但基本上可以归结为您希望NiFi是客户端还是服务器 ListenTCP创建一个TCP服务器,该服务器正在等待某个客户端建立连接并开始发送数据。最常见的情况是像syslog这样的日志转发系统,它可以配置为通过TCP将日

我有Modbus TCP/IP中的数据。我必须使用ApacheNIFI读取可用数据。我不知道到底应该使用哪个处理器(例如GetTCP、ListenTCP、Plc4xSourceProcessor)。你能帮我吗?Apache NiFi是否可行?

我不知道Modbus TCP/IP是什么,但基本上可以归结为您希望NiFi是客户端还是服务器

ListenTCP创建一个TCP服务器,该服务器正在等待某个客户端建立连接并开始发送数据。最常见的情况是像syslog这样的日志转发系统,它可以配置为通过TCP将日志转发到主机/端口

GetTCP是一个连接到某个主机/端口(即服务器)并开始读取数据的客户机


Plc4xSourceProcessor不是正式的Apache NiFi代码的一部分,但从快速查看来看,它更像是一个类似于GetTCP的客户端处理器,因为您给它一个连接字符串,告诉它连接到哪里。

Plc4xSourceProcessor就是您要找的。ApachePLC4X项目提供了使用各种协议访问PLC的驱动程序。其中之一是Modbus协议。因此,如果您使用Plc4xSourceProcessor并配置modbus连接字符串并列出要收集的地址,那么您将能够这样做

几天前,我碰巧在我们的网站上编写了PLC4X NiFi集成文档:

我认为这会有帮助


克里斯

非常感谢你的回复,布莱恩。这句话的意思是什么?“GetTCP是一个连接到某个主机/端口(即服务器)并开始读取数据的客户端。”。可以给我一些关于GetTCP的教程或示例吗?这会更有帮助。我正在解释客户端和服务器之间的区别。。。服务器等待客户端启动连接。GetTCP是一个客户端,因为它会启动到服务器的连接,而服务器正在等待连接。感谢您在@Christofer发表的精彩文章。现在,我被modbus协议的“PLC连接字符串”和“PLC资源地址字符串”的语法所困扰。这种语法100%取决于连接类型。。。因此,如果您使用的是Modbus,请尝试下另一页:但通常连接字符串应为“modbus://1.2.3.4“(使用正确的IP)然后是您喜欢的格式的地址字符串,如该页所述。我正在用WinModbus模拟modbus协议。我在Apache Nifi的“Plc4xSourceProcessor”中的配置,PLC连接字符串-modbus://localhost:502 和PLC资源地址字符串-{test1:{40001}。我犯了这样的错误“未能正确初始化处理器。如果仍计划运行,NiFi将尝试初始化处理器,并在“管理屈服持续时间”过后再次运行处理器。失败是由于org.apache.plc4x.java.api.exceptions.PlcRuntimeException:无效地址格式:org.apache.plc4x.java.api.exceptions.PlcRuntimeException:无效地址格式“我认为问题可能是纯数字格式是最近添加的……我建议使用0.8.0-SNAPSHOT版本。或者使用”保持寄存器:1“作为地址。