是否需要使用OPC服务器与Controllogix通信?

时间:2017-09-01 01:55:57

标签: plc opc opc-ua

我想知道如果只是简单地与PLC进行通信,比如读写标签,我是否需要OPC-UA服务器附带的所有其他繁重工作?

我尝试在Python中编写一个与PLC通信的简单服务器,但在从PLC请求信息时我被拒绝了。

我尝试与之通信的Controllogix PLC使用Ethernet/IP进行通信,那么为什么简单的服务器/客户端脚本不起作用?通常需要什么才能与Allen Bradley PLCPLC's进行沟通?

6 个答案:

答案 0 :(得分:2)

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

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

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

我使用过的大部分OPC产品都需要调整其安全性以允许匿名通信。这样做通常是不好的做法。 (网络入侵将能够读/写您的自动化层)如果您正在寻找简单的通信,则需要关闭证书签名和一些加密业务。 (再一次,这不是一个好习惯,但可以学习)

毕竟你必须知道如何在OPC服务器上设置PLC,有通道,设备,命名空间等。你会将OPC客户端指向某个opc.tcp://:< / p>

如果你到目前为止已经差不多完成了,我假设您的OPC服务器正在运行并且此时已配置了标签。您可以使用OPC-UA API进行读取。它只能返回值,或者您可以使用标记运行状况,时间戳和一堆其他数据来返回对象。取决于实施。之后,您可以进行订阅,写作......无论您需要什么。

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

答案 1 :(得分:1)

取决于几个因素,如果你想要一些简单的程序,你可以选择Modbus / TCP我认为一些AB PLC支持它而无需额外的硬件。

但是,如果您想要更安全的东西,例如工业用途,那么OPC UA将是更好的选择,但编程的复杂性远远高于Modbus,即使使用OPC Foundation或其他库也是如此。可以选择使用商业或免费(如果有)OPC UA服务器来保存工作,那么您只需要对客户端进行编程。

使用以太网/ IP也应该是可能的,但问题是没有明确的规范,甚至不同的AB型号都会说不同的以太网/ IP方言! ,它的编程也比Modbus复杂得多。

答案 2 :(得分:1)

我对这次谈话也有点迟了。如果您有兴趣编写自己的解决方案并且不想使用任何商业标准,则AdvancedHMI主要是&#34;主要是&#34;用VB.NET编写的开源解决方案,100%免费,并提供与许多不同PLC(包括ControlLogix平台)的通信。由于我发现您使用Python编程,您可能也有兴趣知道该项目在Linux OS上的Mono下工作。我用它来编写EthernetIP和ModbusTCP之间的网关,并从OEM设备串行提取数据并将这些数据推送到CLX PLC。

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

https://github.com/dmroeder/pylogix

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

答案 5 :(得分:0)

能够通过其通信驱动程序RSLinx读取和写入ControlLogix平台的OPC标签。 RSLinx充当OPC服务器,需要配置为与PLC通信并在同一LAN上的联网PC上运行。有几种RSLinx可用(对于WAN / VLAN也是如此),但实际上这是您需要与AB PLC交谈的通信驱动程序