我在Python(TensorFlow+Gekko)中有一个机器学习和高级控制应用程序,需要与提供数据采集和最终元件控制的可编程逻辑控制器(PLC)集成。我可以使用机架安装的Linux(首选)或Windows服务器作为计算引擎,通过OPC-UA(OLE for Process Control-Universal Architecture)传输数据吗?
在连接到分布式控制系统(DCS)时,我在其他项目中使用过aPython OPC-UA / IEC 62541 Client (and Server)和aPython MODBUS package,如艾默生·德尔塔夫(Emerson DeltaV)、霍尼韦尔Experion/TDC3000和横河DCS。我是否也可以使用PLC功能块,如西门子Simatic S7-300?西门子拥有支持TensorFlow的新型可编程逻辑控制器,如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()

最佳答案

我曾经有过这样的经历: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)

关于python - 是否有使用OPA UA传输数据的IEC 61131/IEC 61499 PLC功能块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58752942/

10-11 15:27