是否有使用 OPA UA 传输数据的 IEC 61131 / IEC 61499 PLC 功能块?
Posted
技术标签:
【中文标题】是否有使用 OPA UA 传输数据的 IEC 61131 / IEC 61499 PLC 功能块?【英文标题】:Are there IEC 61131 / IEC 61499 PLC function blocks that use OPA UA to transport data? 【发布时间】:2019-11-07 16:20:03 【问题描述】:我有一个 Python (TensorFlow + Gekko) 中的机器学习和高级控制应用程序,我需要将它与提供数据采集和最终元素控制的可编程逻辑控制器 (PLC) 集成。我可以使用机架式 Linux(首选)或 Windows Server 作为计算引擎,通过 OPC-UA(用于过程控制的 OLE - 通用架构)进行数据传输吗?
在连接到艾默生 DeltaV、霍尼韦尔 Experion/TDC3000 和横河 DCS 等分布式控制系统 (DCS) 时,我在其他项目中使用了 Python OPC-UA / IEC 62541 Client (and Server) 和 Python MODBUS package。我可以对诸如 Siemens Simatic S7-300 等 PLC 功能块做同样的事情吗?西门子拥有支持 TensorFlow 的较新 PLC,例如 SIMATIC S7-1500 NPU(神经处理单元)模块,但出于多种原因需要外部服务器。 S7-300 支持 IEC 61131 标准和 PROFINET CBA 标准(西门子的 IEC 61499 标准)。
下面是我想用来与功能块通信的最小功能块。
from opcua import Client
client = Client("Matrikon.OPC.Simulation")
try:
client.connect()
root = client.get_root_node()
# Get a variable node using browse path
myvar = root.get_child(["0:Objects", "1:MyObject", "2:MyVariable"])
print('Variable is ', myvar)
finally:
client.disconnect()
【问题讨论】:
PLC 通常支持 MODBUS 或 OPC 数据传输。这是 Gekko 的一个示例:***.com/questions/57085640/… 我不确定它们是否是推送的功能块,或者 PLC 上是否有允许写入或读取的 MODBUS 或 OPC 服务器。 这是另一篇可能对***.com/questions/38601989/… 有所帮助的帖子,尽管它没有提到 IEC 标准。 【参考方案1】:我有一个经验,ABB Harmony OPC 服务器也不支持“opcua”。所以,我使用了“OpenOPC”包而不是像 John 在评论中建议的“opcua”。但是,我不确定 OPC 的特定品牌是否与“opcua”或“OpenOPC”兼容。
请查看我用于测试 OpenOPC 包的代码。
import OpenOPC
import time
import pywintypes
pywintypes.datatime = pywintypes.TimeType
opc = OpenOPC.client()
opc.servers()
opc.connect('Matrikon.OPC.Simulation.1')
tags = ['Random.Int1', 'Random.Real4']
while True:
try:
value = OPC.read(tags,group='Simulation Items',update=1)
print (value)
except OpenOPC.TimeoutError:
print ("TimeoutError ocured")
time.sleep(1)
【讨论】:
谢谢,看到另一个 OPC Python 包很有帮助。您是否也有将 OPC 连接到 PLC 的经验? 我的同事已经成功使用了OPTO22 PLC与python和Gekko。我不完全记得他们使用了哪个 OPC 连接。但是,我看到 OPTO22 手册中提到他们支持 OPC-UA。 我想我只需要阅读西门子文档,看看它是否符合 IEC 标准。感谢您提供有关 OPTO22 和其他 Python 代码的提示。你的代码在做 OPC DA 吗?以上是关于是否有使用 OPA UA 传输数据的 IEC 61131 / IEC 61499 PLC 功能块?的主要内容,如果未能解决你的问题,请参考以下文章