【问题标题】:Is it required to use an OPC Server to Communicate with Controllogix?是否需要使用 OPC 服务器与 Controllogix 通信?
【发布时间】:2018-02-10 01:16:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: plc opc opc-ua


    【解决方案1】:

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

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

    只是想给你另一种选择。 DDE、NetDDE、FastDDE、OPC、DCOM、Suitelink ......这些都很好,但主要是为了冒险而付费。作为一个程序员,为了和我的硬件对话而付出如此多的钱似乎很荒谬,恕我直言。很抱歉的咆哮。玩得开心!

    更新 - 还想推荐以下用 python 编写的开源项目:

    https://github.com/dmroeder/pylogix

    我用它编写了与 CompactLogix 和 ControlLogix 通信的小程序。 (甚至来自/来自 RaspberryPi!)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        https://github.com/dmroeder/pylogix

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

            Ethernet/IP 应该也是可以的,但问题是没有明确的规范,甚至不同的 AB 型号都讲不同的 Ethernet/IP 方言! , 编程也远比 Modbus 复杂。

            【讨论】:

              【解决方案6】:

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

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

              OPC-UA 使它更通用一点,但 OPC-UA 在设置通信时仍然需要解决一系列问题。

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

              毕竟您必须了解如何在 OPC 服务器上设置您的 PLC,有通道、设备、命名空间等。您需要将 OPC 客户端指向一些 opc.tcp://:

              如果您已经走到这一步,您就差不多完成了,我假设您的 OPC 服务器正在运行并且此时已配置标签。您可以使用 OPC-UA API 进行读取。它可以只返回值,或者您可以返回带有标签健康、时间戳和一堆其他数据的对象。取决于实施。之后你就可以订阅、写作……任何你需要的东西。

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

              【讨论】:

              • 好的,谢谢您的信息。我加入了 OPC 基金会,并一直在尝试修改他们提供的 .NET 示例以满足我的需要。这是艰难的事情
              • OPC UA 本身不会从 PLC 读取数据,您的 OPC Server 还必须使用其他协议,例如 Modbus 或 Ethernet/IP 来获取数据。正如你所说,这是艰难的事情。
              猜你喜欢
              • 1970-01-01
              • 2020-12-23
              • 2021-02-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-06-06
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多