我正在寻找一种简单的方法,即使有可能,也可以使该应用程序可以在ROCKWELL PLC中读取/写入标签。

我需要一个简单的窗口,使我可以键入PLC IP(它们都已连接到网络),以便可以连接到设备,装载所有PLC当前标签的容器以及读取和/或读取数据的能力。写入这些标签。

我认为自己是PLC和Java编程的初学者,所以我想知道大家是否可以以某种方式帮助我。我之所以说JAVA是因为我对编程语言了解不多,但是是否还有另一种更好用的语言(如VBA)并不重要。

GUI并不是这里真正的问题,而是连接到设备并操纵它的变量。

最佳答案

如果您知道罗克韦尔ControlLogix PLC中的标签名称,则可以使用https://github.com/pjkundert/cpppo从Python程序(从Windows,Mac或Linux主机)快速读取和写入它们的值。要安装它,请运行,安装Python 2或3,然后运行:

pip install cpppo pytz


假设您的罗克韦尔ControlLogix PLC位于本地网络中的域名“ controller”(或者,只需使用下面host = "192.168.1.2"中的IP地址),并且它包含一个名为scada的标签,该标签包含11个或更多的数组CIP类型INT的元素:

from __future__ import print_function
from cpppo.history import timestamp
from cpppo.server.enip import client

host = "controller" # Or, simply use an IP address, eg: 192.168.1.2
tags = [ "scada[0-10]", "scada[1]=99", "scada[0-10]" ]

with client.connector( host=host ) as conn:
    for index,descr,op,reply,status,value in conn.pipeline(
            operations=client.parse_operations( tags ), depth=2 ):
        print( "%s: %20s: %s" % ( timestamp(), descr, value ))


假设标签scada存在,您将看到类似以下内容:

2015-05-25 14:35:15.891: Single Read  Tag  scada[0-10]: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2015-05-25 14:35:15.897: Single Write Tag  scada[1-1]: True
2015-05-25 14:35:15.915: Single Read  Tag  scada[0-10]: [0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0]


如果您周围没有罗克韦尔ControlLogix PLC,则可以通过运行以下命令模拟一个(至少用于读取/写入Tag数据):

python -m cpppo.server.enip --print -v scada=INT[100]

关于java - 简单的APP即可将数据读写到ROCKWELL PLC(1756-A10/A),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25294373/

10-12 02:54