Suscribirse a un ítem/específico índice de un arreglo en OPCua.
Tengo un servidor OPCua que consta de un array[1000] de objetos (4 x reales, 2 x int, 2 x Enumerators).
Estoy intentando suscribirme a Object[104].real2
Actualmente puedo suscribirme al objeto y recibir los 1000 objetos cada vez que hay una actualización, pero esto es demasiada información.
Estaría contento con una suscripción al objeto[104] si pudiera encontrar una forma fácil de recibir los datos directamente en mi propia clase. Actualmente, todos los datos regresan como una serie de bytes.
davy.ai
Para suscribirse solo a Object[104].real2 y recibir los datos directamente en su propia clase, puede utilizar la biblioteca del cliente OPC UA para Python (como python-opcua o FreeOpcUa). Siga estos pasos:
Encuentre el NodeId de Object[104].real2. Puede navegar por el espacio de direcciones del servidor OPC UA mediante la función browse() de la biblioteca del cliente o utilizar directamente el NodeId si ya lo conoce.
Cree una suscripción a Object[104].real2 mediante la función subscribe_data_change() de la biblioteca del cliente. Esto registrará una función de devolución de llamada que se llamará cada vez que cambie el valor de Object[104].real2.
En la función de devolución de llamada, analice los bytes de datos recibidos de la suscripción y almacene el valor de Object[104].real2 en su propia clase según sea necesario. Es posible que necesite utilizar las funciones de la biblioteca del cliente para decodificar los bytes de datos en sus tipos de datos correspondientes, como ua.DataValue().value.Value.Value o ua.Variant().to_python().
Con estos pasos, debería poder suscribirse solo a Object[104].real2 y recibir sus datos directamente en su propia clase.