是否需要使用 OPC 服务器与 Controllogix 通信?
Is it required to use an OPC Server to Communicate with Controllogix?
我想知道如果只是与 PLC
通信,比如读写标签,我是否需要 OPC-UA
服务器附带的所有其他繁重工作?
我曾尝试在 Python
中编写一个与 PLC 通信的简单服务器,但在从 PLC
请求信息时我被拒绝了。
我尝试与之通信的 Controllogix
PLC 使用 Ethernet/IP
进行通信,那么为什么简单的 server/client 脚本不起作用?一般来说,与 Allen Bradley PLC
或 PLC's
沟通到底需要什么?
与 PLC 通信需要相当多的东西。
每个厂商都有驱动,有固件兼容性的考虑。需要考虑不同的协议。
OPC-UA 使其更通用一些,但在设置通信时 OPC-UA 仍然有一系列问题需要解决。
我使用过的大多数 OPC 产品都需要调整其安全性以允许匿名通信。这样做通常是不好的做法。 (网络入侵将能够 read/write 到您的自动化层)如果您正在寻找简单的通信,则需要关闭证书签名和一些加密业务。 (同样,这不是一个好的练习,但可以学习)
毕竟您必须了解您的 PLC 在 OPC 服务器上的设置方式,还有通道、设备、名称空间等。您会将 OPC 客户端指向某些 opc.tcp: //:
如果你到这里就差不多完成了,我假设你的 OPC 服务器是 运行 并且此时已经配置了标签。您可以使用 OPC-UA API 进行读取。它可以 return 只是值,或者你可以得到一个带有标签健康、时间戳和一堆其他数据的对象。取决于实施。之后,您可以订阅、写作……任何您需要的东西。
TLDR:不需要 OPC 服务器,但可能是最简单的方法。关闭安全。 (但在将您的控制层暴露到网络之前将其重新打开)
取决于几个因素,如果你想要一些简单的程序,你可以选择Modbus/TCP我认为一些 AB PLC 支持它而无需额外的硬件。
然而,如果您想要更安全的东西,例如用于工业用途,那么 OPC UA 将是更好的选择,但编程的复杂性远高于 Modbus,即使使用 OPC Foundation 或其他库。可以选择使用商业或免费(如果有)OPC UA 服务器来节省工作,那么您只需要对客户端进行编程。
用Ethernet/IP应该也可以,但问题是没有明确的规范,甚至不同的AB机型说的Ethernet/IP方言也不一样! ,它的编程也比 Modbus 复杂得多。
我来晚了一点,但有一些商业工具可以让这更容易一些。当您说您正在使用 python 时,我想到的是 Cogent 的数据中心。它当然不是最便宜的工具,但他们已经完成了 PLC/PC 通信和安全的所有繁重工作。
如果尝试使用 Python 读取 CLX 数据,有几种开源实现可以为您节省大量工作。比如这样:
https://github.com/dmroeder/pylogix
如果你使用.NET和Visual Studio,你可以使用AdvancedHMI
要能够读取和写入 OPC 标签到 ControlLogix 平台是通过其通信驱动程序 RSLinx 完成的。 RSLinx 充当 OPC 服务器,需要将其配置为与同一 LAN 上的联网 PC 上的 PLC 和 运行 通信。有几种类型的 RSLinx 可用(也适用于 WAN/VLAN),但本质上这是您需要与 AB PLC 对话的通信驱动程序
我也来晚了这次谈话。如果您有兴趣编写自己的解决方案并且不想使用任何商用标准,AdvancedHMI 是一个 "mostly" 开源解决方案,用 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 通信的小程序。 (甚至 to/from 一个 RaspberryPi!)
我想知道如果只是与 PLC
通信,比如读写标签,我是否需要 OPC-UA
服务器附带的所有其他繁重工作?
我曾尝试在 Python
中编写一个与 PLC 通信的简单服务器,但在从 PLC
请求信息时我被拒绝了。
我尝试与之通信的 Controllogix
PLC 使用 Ethernet/IP
进行通信,那么为什么简单的 server/client 脚本不起作用?一般来说,与 Allen Bradley PLC
或 PLC's
沟通到底需要什么?
与 PLC 通信需要相当多的东西。
每个厂商都有驱动,有固件兼容性的考虑。需要考虑不同的协议。
OPC-UA 使其更通用一些,但在设置通信时 OPC-UA 仍然有一系列问题需要解决。
我使用过的大多数 OPC 产品都需要调整其安全性以允许匿名通信。这样做通常是不好的做法。 (网络入侵将能够 read/write 到您的自动化层)如果您正在寻找简单的通信,则需要关闭证书签名和一些加密业务。 (同样,这不是一个好的练习,但可以学习)
毕竟您必须了解您的 PLC 在 OPC 服务器上的设置方式,还有通道、设备、名称空间等。您会将 OPC 客户端指向某些 opc.tcp: //:
如果你到这里就差不多完成了,我假设你的 OPC 服务器是 运行 并且此时已经配置了标签。您可以使用 OPC-UA API 进行读取。它可以 return 只是值,或者你可以得到一个带有标签健康、时间戳和一堆其他数据的对象。取决于实施。之后,您可以订阅、写作……任何您需要的东西。
TLDR:不需要 OPC 服务器,但可能是最简单的方法。关闭安全。 (但在将您的控制层暴露到网络之前将其重新打开)
取决于几个因素,如果你想要一些简单的程序,你可以选择Modbus/TCP我认为一些 AB PLC 支持它而无需额外的硬件。
然而,如果您想要更安全的东西,例如用于工业用途,那么 OPC UA 将是更好的选择,但编程的复杂性远高于 Modbus,即使使用 OPC Foundation 或其他库。可以选择使用商业或免费(如果有)OPC UA 服务器来节省工作,那么您只需要对客户端进行编程。
用Ethernet/IP应该也可以,但问题是没有明确的规范,甚至不同的AB机型说的Ethernet/IP方言也不一样! ,它的编程也比 Modbus 复杂得多。
我来晚了一点,但有一些商业工具可以让这更容易一些。当您说您正在使用 python 时,我想到的是 Cogent 的数据中心。它当然不是最便宜的工具,但他们已经完成了 PLC/PC 通信和安全的所有繁重工作。
如果尝试使用 Python 读取 CLX 数据,有几种开源实现可以为您节省大量工作。比如这样:
https://github.com/dmroeder/pylogix
如果你使用.NET和Visual Studio,你可以使用AdvancedHMI
要能够读取和写入 OPC 标签到 ControlLogix 平台是通过其通信驱动程序 RSLinx 完成的。 RSLinx 充当 OPC 服务器,需要将其配置为与同一 LAN 上的联网 PC 上的 PLC 和 运行 通信。有几种类型的 RSLinx 可用(也适用于 WAN/VLAN),但本质上这是您需要与 AB PLC 对话的通信驱动程序
我也来晚了这次谈话。如果您有兴趣编写自己的解决方案并且不想使用任何商用标准,AdvancedHMI 是一个 "mostly" 开源解决方案,用 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 通信的小程序。 (甚至 to/from 一个 RaspberryPi!)