我有一个机器学习和高级控制应用的Python (TensorFlow + Gekko),我需要集成一个可编程逻辑控制器(PLC),提供数据采集和最终元素控制。我是否可以使用机架安装的Linux (首选)或Windows作为计算引擎,通过OPC (OLE for Process Control - Universal )传输数据?
在连接到分布式控制系统( DCS )时,我使用了一个/ IEC 62541客户端(和服务器)和一个Python包,例如爱默生DeltaV、霍尼韦尔Experion/ to 3000和横河DCS。我可以做同样的PLC功能块,如西门子Simatic S7-300?西门子拥有支持TensorFlow的较新的PLC,如SIMATICS7-1500 NPU (神经处理单元)模块,但外部服务器的需求有多种原因。S7-300支持IEC 61131标准和PROFINET标准(西门子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()发布于 2019-11-13 17:41:10
我有一个经验,ABB和谐OPC服务器也不支持'opcua‘。所以,我用的是'OpenOPC‘包,而不是约翰在评论中建议的'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)https://stackoverflow.com/questions/58752942
复制相似问题