2017-09-01 118 views
1

我想知道是否只需与PLC进行通信,如读取和写入标签,我是否需要使用OPC-UA服务器附带的所有其他繁重工作?是否需要使用OPC服务器与Controllogix通信?

我试过在Python上写一个简单的服务器与PLC通信,但是在请求PLC的信息时我拒绝了。

Controllogix PLC我试图与Ethernet/IP进行通信,所以为什么没有简单的服务器/客户端脚本工作?通常需要准确地与Allen Bradley PLCPLC's进行沟通?

回答

2

与PLC通信需要相当多的时间。

每个供应商都有一个驱动程序,有固件兼容性考虑因素。不同的协议来思考。

OPC-UA使其更具通用性,但OPC-UA在设置通信时仍有一系列的问题需要解决。

我所使用的大多数OPC产品都需要调整其安全性以允许进行匿名通信。这样做通常是不好的做法。 (网络入侵将能够读取/写入您的自动化层)如果您正在寻找简单的通信,则需要关闭证书签名和一些加密业务。 (同样,这不是一个好的做法,但对于学习来说没问题)

毕竟,您必须了解如何在OPC服务器上设置PLC,这里有通道,设备,命名空间等。将OPC客户端连接到某些opc.tcp://:

如果您已经完成了这么多工作,那么我假设您的OPC服务器正在运行并且此时已配置了标签。您可以使用您的OPC-UA API进行读取。它可以仅返回值,或者可以通过标记健康状况,时间戳和一堆其他数据返回对象。取决于实施。之后,你可以做订阅,写道......你需要的任何东西。

TLDR:不需要OPC服务器,但可能是最简单的方法。关闭安全。 (但在将控制层暴露于网络之前将其重新打开)

+0

好的,谢谢你的信息。我加入了OPC基金会,一直试图修改他们提供的.NET样本以满足我的需求。这是件棘手的事情 – jameson1128

+0

OPC UA不会从PLC自身读取数据,您的OPC服务器还必须使用其他协议(例如Modbus或Ethernet/IP)来获取数据。正如你所说的是艰难的东西。 –

1

取决于几个因素,如果您希望编程简单,您可以选择Modbus/TCP我认为一些AB PLC不需要额外的硬件就可以支持它。但是,如果你想要一些具有更高安全性的东西,例如工业用途,那么OPC UA将是更好的选择,但编程的复杂性远远高于Modbus,即使使用OPC Foundation或其他库。可以选择使用商用或免费(如果有)OPC UA服务器来保存工作,那么您只需要对客户端进行编程。

以太网/ IP也应该是可能的,但问题是没有明确的规范,甚至不同的AB模型谈论不同的以太网/ IP方言! ,与Modbus相比,编程要复杂得多。

0

我对这个讨论稍微迟了一点,但有一些商业工具可以使这个更容易一些。当你说你正在使用python的时候,想到的就是Cogent的数据中心。这当然不是那里最便宜的工具,但它们已经完成了PLC/PC通信安全性的所有重要工作。

0

如果试图使用Python读取CLX数据,有几个开源实现可以为您节省大量工作。像这样的:

https://github.com/dmroeder/pylogix

如果使用.NET和Visual Studio,您可以使用AdvancedHMI

0

能够阅读和ControlLogix平台通过其通信驱动程序的RSLinx完成写OPC标签。 RSLinx充当OPC服务器,它需要配置为与PLC通信并在同一局域网上的联网PC上运行。 RSLinx中的几种口味可供选择(用于WAN/VLAN也),但本质上这就是你需要跟AB公司PLC的

1

我也有点晚了这一谈话的通信驱动程序。如果您有兴趣编写您自己的解决方案并且不想使用任何商用标准,那么AdvancedHMI是一个以VB.NET编写的“主要”开源解决方案,该解决方案100%免费,并提供与许多不同PLC的通信,包括ControlLogix平台。既然我看到你正在用Python进行编程,你可能也有兴趣知道该项目在Linux操作系统下的Mono下工作。我用它在EthernetIP和ModbusTCP之间编写网关,并从OEM设备串行拉取数据,并将此数据推送到CLX PLC。

该论坛充满了许多有用的提示,并且非常活跃并受到支持。

只是想给你另一种选择。 DDE,NetDDE,FastDDE,OPC,DCOM,Suitelink ....这些都很好,但主要是付费玩冒险。作为一名程序员,为了与我的硬件,恕我直言联系,必须支付如此多的金钱似乎是荒谬的。对不起,咆哮。玩的开心!