es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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:

    1. Cree un cliente OPC UA y conéctese al servidor OPC UA. Puede utilizar las funciones integradas en la biblioteca del cliente para ello, como Client() y connect().
    2. 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.

    3. 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.

    4. 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.

Comments are closed.