我想知道如果只是简单地与PLC通信,比如读写标签,我是否需要OPC-UA服务器附带的所有其他繁重工作?
我试过写一个简单的服务器……
与PLC通信需要相当多的时间。
每个供应商都有一个驱动程序,有固件兼容性考虑。要考虑不同的协议。
OPC-UA使其更通用,但OPC-UA在设置通信时仍有一系列工作要做。
我使用过的大多数OPC产品都需要调整其安全性以允许匿名通信。这样做通常是不好的做法。 (网络入侵将能够读/写您的自动化层)如果您正在寻找简单的通信,则需要关闭证书签名和一些加密业务。 (再次,这不是一个好习惯,但可以学习)
毕竟,您必须了解PLC在OPC服务器上的设置方式,还有通道,设备,命名空间等。您可以将OPC客户端指向某个opc.tcp://:
如果你到目前为止已经差不多完成了,我假设你的OPC服务器正在运行并且此时配置了标签。您可以使用OPC-UA API进行读取。它只能返回值,或者您可以使用标记运行状况,时间戳和一堆其他数据来返回对象。取决于实施。之后你可以做订阅,写...你需要的任何其他东西。
TLDR:不需要OPC服务器,但可能是最简单的方法。关闭安全性。 (但在将控制层暴露给网之前将其重新打开)
取决于几个因素,如果你想要一些简单的程序,你可以选择Modbus / TCP我认为一些AB PLC支持它没有额外的硬件。
但是,如果您想要更安全的东西,例如工业用途,那么OPC UA将是更好的选择,但编程的复杂性远高于Modbus,即使使用OPC Foundation或其他库也是如此。可以选择使用商业或免费(如果有)OPC UA服务器来保存工作,然后您只需要对客户端进行编程。
使用以太网/ IP也应该是可能的,但问题在于没有明确的规范,甚至不同的AB模型也会使用不同的以太网/ IP方言! ,它比Modbus编程要复杂得多。
能够通过其通信驱动程序RSLinx读取和写入ControlLogix平台的OPC标签。 RSLinx充当OPC服务器,需要配置为与PLC通信并在同一LAN上的联网PC上运行。有几种RSLinx可用(对于WAN / VLAN也是如此),但实质上这是与AB PLC通信所需的通信驱动程序
我对这次谈话也有点迟了。如果您对编写自己的解决方案感兴趣并且不想使用任何商用标准,AdvancedHMI是一个用VB.NET编写的“大多数”开源解决方案,它是100%免费的,并提供与许多不同PLC的通信,包括ControlLogix平台。由于我发现您使用Python编程,您可能也有兴趣知道该项目在Linux OS上的Mono下工作。我用它来编写EthernetIP和ModbusTCP之间的网关,并从OEM设备串行提取数据并将这些数据推送到CLX PLC。
该论坛充满了许多有用的提示,非常活跃和支持。
只是想给你另一种选择。 DDE,NetDDE,FastDDE,OPC,DCOM,Suitelink ....这些都很好,但主要是付费冒险。作为一名程序员,为了与我的硬件,恕我直言,只需要支付这么多钱,这似乎很荒谬。对不起,咆哮。玩得开心!
如果尝试使用Python读取CLX数据,有几个开源实现将为您节省大量工作。比如这样:
https://github.com/dmroeder/pylogix
如果使用.NET和Visual Studio,则可以使用AdvancedHMI
我讨论的时间有点晚,但是有一些商业工具使这更容易一些。当你说你正在使用python时,我想到的是Cogent的数据中心。它当然不是最便宜的工具,但它们已经完成了PLC / PC通信的所有繁重工作。安全。