0

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

@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()

4

1 回答 1

0

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

于 2021-09-11T07:15:52.773 回答