pyads:根据其他值更改读取PLC值



我想使用OnChange通知获得REAL变量的当前值,该值依赖于其他BOOL变量:

@plc.notification(pyads.PLCTYPE_BOOL)
def callback(handle, name, timestamp, value):
if value==True:
print(f"handle: {handle}")
print(f"name: {name}")
print(f"timestamp: {timestamp}")
print(f"value: {value}")
print(plc.read_by_name(f"GVL_MyValues.MyRealValue", plc_datatype=pyads.PLCTYPE_REAL))

然后我将这个回调添加到我不断变化的bool变量:

plc.add_device_notification(f'MAIN.MyBoolValue', 
pyads.NotificationAttrib(sizeof(pyads.PLCTYPE_BOOL)),
callback)

当MyBoolValue更改为True时,将打印除RealValue之外的所有内容。我是否必须配置其他内容,或者pyads在通知回调中不支持read_by_name()(我也尝试过symbol.read())?

由于怀疑回调中的read_by_name()不可能使用与回调相同的TC客户端。我使用第二个plc对象在回调中执行读取,作为解决方法。有关更多信息,请参阅https://github.com/stlehmann/pyads/issues/259

最新更新