我正在使用python和OpenOPC连接到SCADA服务器。我的标签读好了 除了随机读取数量(30到50之间)后,我得到了 超时错误。
File"test7.py", line 12 in <module>
value=opc.read(group='mygroup')
File "C:\OpenOPC\src\OpenOPC.py" line 619, in read
return list(results)
File "C:\OpenOPC\src\OpenOPC.py" line 537, in iread
raise TimeoutError, 'Callback:Timeout waiting for data'
OpenOPC.TimeoutError:Callback: Timeout waiting for data
是否有任何有OpenOPC经验的人可能知道如何恢复 在错误上,或忽略错误并继续。我不介意失踪 只要程序没有崩溃,奇数值。
#!C:\Python27\python.exe
import OpenOPC
opc = OpenOPC.client()
import datetime, threading, time
opc.connect('Citect.OPC.1')
tags = ['Loop_3_SP']
opc.read(tags, group='mygroup', update=1)
while True:
value = opc.read(group='mygroup')
print value
time.sleep(10)
答案 0 :(得分:1)
你可以通过这样的try catch块包围你的代码:
#!C:\Python27\python.exe
import OpenOPC
opc = OpenOPC.client()
import datetime, threading, time
opc.connect('Citect.OPC.1')
tags = ['Loop_3_SP']
opc.read(tags, group='mygroup', update=1)
while True:
try:
value = opc.read(group='mygroup')
print value
except OpenOPC.TimeoutError:
print "TimeoutError occured"
time.sleep(10)
这应该捕获错误并且只打印它发生的错误。如果你不想在TimeoutError的情况下发生任何事情,只需用户pass
而不是print语句。