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

问题描述 投票:2回答:6

[我想知道是否只是为了与PLC通信,例如读写标签,我是否需要OPC-UA服务器随附的所有其他繁重工作?

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

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

plc opc opc-ua
6个回答
3
投票

与PLC通信需要很多时间。

每个供应商都有一个驱动程序,有固件兼容性注意事项。需要考虑的不同协议。

OPC-UA使它更具通用性,但是在建立通信时,OPC-UA仍然需要解决一些问题。

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

毕竟,您必须了解如何在OPC服务器上设置PLC的概念,其中包含通道,设备,名称空间等。您将把OPC客户端指向某些opc.tcp://:

如果到此为止,您差不多完成了,我假设您的OPC服务器正在运行,并且此时已配置了标签。您可以使用OPC-UA API进行读取。它可以只返回值,也可以返回带有标签运行状况,时间戳和大量其他数据的对象。取决于实现。之后,您可以进行订阅,写...任何您需要的内容。

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


1
投票

取决于几个因素,如果您想要简单的编程方法,则可以选择Modbus / TCP,我认为某些AB PLC无需额外的硬件即可支持它。

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

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


1
投票

我对这次谈话也有点晚了。如果您有兴趣编写自己的解决方案,并且不想使用任何市售标准,则AdvancedHMI是一种用VB.NET编写的“大部分”开源解决方案,它是100%免费的,并且可以与许多不同的PLC通信。 ControlLogix平台。由于我看到您使用Python进行编程,因此您可能还想知道该项目确实在Linux OS的Mono下运行。我已使用它在EthernetIP和ModbusTCP之间编写网关,并从OEM设备串行提取数据,并将此数据推送到CLX PLC。

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

只是尝试为您提供其他选择。 DDE,NetDDE,FastDDE,OPC,DCOM,Suitelink ....这些都很不错,但是大部分都是付费玩冒险游戏。作为程序员,仅为了与我的硬件恕我直言,就不得不支付如此多的钱似乎是荒谬的。对不起,咆哮。玩得开心!

Update-只想建议以下用python编写的开源项目:

https://github.com/dmroeder/pylogix

我已经使用它编写了一些用于与CompactLogix和ControlLogix通信的小程序。 (甚至是往返RaspberryPi!)


0
投票

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


0
投票

如果尝试使用Python读取CLX数据,则有几种开源实现可为您节省很多工作。像这样:

https://github.com/dmroeder/pylogix

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


0
投票

能够通过其通信驱动程序RSLinx完成向ControlLogix平台读写OPC标签的操作。 RSLinx充当OPC服务器,需要对其进行配置以与PLC通信并在同一LAN上的联网PC上运行。可以使用几种RSLinx(也适用于WAN / VLAN),但是本质上,这是您需要与AB PLC进行通信的通信驱动程序]

© www.soinside.com 2019 - 2024. All rights reserved.