我想知道,如果只是简单地与PLC进行通信,比如读写标记,是否需要OPC-UA服务器带来的所有其他繁重工作呢?
我试着用Python编写一个简单的服务器,与PLC对话,但当我向PLC请求信息时,我被拒绝了。
我试图与之通信的Controllogix PLC使用Ethernet/IP进行通信,那么为什么简单的服务器/客户端脚本不能工作呢?一般情况下,与艾伦·布拉德利( Allen )的PLC或PLC's通信需要什么?
发布于 2017-09-01 02:20:39
与PLC通信需要相当多的时间。
每个供应商都有一个驱动程序,有固件兼容性考虑。要考虑的是不同的协议。
OPC使其更加通用,但OPC在建立通信时仍然有一套需要解决的问题。
我使用过的大多数OPC产品,都需要调整它们的安全性,以允许匿名通信。这样做通常是不好的做法。(网络入侵将能够读取/写入您的自动化层)如果您要寻找简单的通信,则需要关闭证书签名和一些加密业务。(再说一次,这不是一个好的练习,而是可以学习的)
毕竟,您必须了解如何在OPC服务器上设置PLC,有通道、设备、名称空间等。您将把OPC客户端指向opc.tcp://:
如果您已经完成了这一步,我假设您的OPC服务器正在运行,并且在这一点上已经配置了标记。您可以使用OPC进行读取。它可以只返回值,也可以返回一个带有标记健康、时间戳和其他数据的对象。这取决于具体的实现。在此之后,您可以进行订阅,writes...whatever After您需要。
TLDR: OPC服务器不是必需的,但可能是最简单的方法。关掉保安。(但在将控制层暴露给网络之前,请将其打开)
发布于 2017-10-26 01:06:10
这次谈话我也迟到了一点。如果您对编写自己的解决方案感兴趣,并且不想使用任何商业上可用的标准,那么AdvancedHMI是一个用VB.NET编写的“大部分”开放源码解决方案,它是100%免费的,并为包括ControlLogix平台在内的许多不同的PLC提供通信。由于我看到您正在用Python编程,您可能还想知道这个项目在Linux上是在Mono环境下工作的。我使用它来编写EthernetIP和ModbusTCP之间的网关,并从OEM设备中串行地提取数据,并将这些数据推送给CLX。
该论坛充满了许多有用的提示,并非常积极和支持。
只是想给你另一个选择。NetDDE,FastDDE,OPC,DCOM,Suitelink.这些都很好,但主要是为了冒险。作为一名程序员,仅仅为了和我的硬件IMHO交谈,不得不支付这么多的钱似乎是荒谬的。对不起你的咆哮声。玩得开心!
更新--只是想建议用编写以下开放源码项目:
https://github.com/dmroeder/pylogix
我用它来编写与CompactLogix和ControlLogix通信的小程序。(甚至与RaspberryPi!)
发布于 2017-09-01 11:28:41
取决于几个因素,如果你想要一个简单的程序,你可以选择Modbus/TCP --我认为有些AB PLC支持它,而不需要额外的硬件。
但是,如果您想要更安全的东西(例如用于工业用途),那么OPC UA将是更好的选择,但是编程的复杂性远高于Modbus,甚至使用OPC Foundation或其他库。可以选择使用商业或免费(如果有的话) OPC UA服务器来节省工作,那么您只需要对客户端进行编程。
使用以太网/IP也应该是可能的,但问题是没有明确的规范,甚至不同的AB模型都有不同的以太网/IP方言!
https://stackoverflow.com/questions/45992350
复制相似问题