c - Comunicación dúplex entre Cliente y servidor open62541(OPC-UA)

CorePress2024-01-16  9

Me gustaría establecer una comunicación de datos bidireccional entre el cliente y el servidor. El siguiente ejemplo explica lo que intento lograr.

Ej: el cliente envía una solicitud para leer el valor de los dos ID de nodo (estos ID de nodo son numéricos) cada segundo. Luego, en el programa cliente suma estos números y se los entrega al usuario. Luego, después de 60 segundos, el servidor le dice al cliente que multiplique el número. Entonces, ahora cada segundo el cliente multiplica los valores de los ID de los nodos. Luego, después de 60 segundos, vuelve a la suma. Puedo solicitar los datos del servidor a través del cliente, pero estoy tratando de descubrir cómo hacer que el servidor solicite datos del cliente.

Editar: Me gustaría agregar información nueva a mi pregunta original. La razón por la ques para que la publicación sea más clara. La siguiente imagen describe lo que estoy tratando de lograr. En la imagen de arriba, el proveedor se puede visualizar como un método de servidor y el consumidor se puede visualizar como un método de cliente. Ahora, si el consumidor de seguridad2 (cliente2) está conectado al proveedor de seguridad2 (servidor2), cómo pasar los datos recibidos del proveedor de seguridad2 al proveedor de seguridad1 (ya que el cliente solo puede conectarse a un único servidor). ¿Las funciones de open62541 permiten lo siguiente? flujo de datos: proveedor de seguridad 2-->consumidor de seguridad2--> proveedor de seguridad1? En caso afirmativo, ¿puede darnos un ejemplo? Gracias

OPC UA permite a un cliente leer o escribir datos desde un servidor al que se conecta, nada más. En tu diagrama necesitas un servidor y un cliente de cada lado y dos conexiones independientes, pero OPC UA nunca solucionará cómo se intercambian los datos entre esas dos conexiones, eso lo debe hacer otro software que debes programar y no relacionado con OPC. UA

- de 56

1 de abril de 2021 a las 21:54

OPC UA es sólo un protocolo de comunicación, nunca resolverá la lógica operativa de su sistema, eso generalmente lo realiza el PLC de la máquina, no OPC UA

- de 56

1 de abril de 2021 a las 21:57



------------------------------------

En realidad, no es así como funciona OPC UA.

En su lugar, su cliente podría monitorear el atributo Valor de algún Nodo Variable en el servidor y luego comportarse de cierta manera según el valor actual.

8

¿Es posible una red peer to peer en OPCUA? Por ejemplo: dos clientes conectados al mismo servidor intercambiando enformación?

-Gopala Krishna

20/03/2021 a las 15:39

Probablemente no en el sentido que piensas, pero pueden compartir información indirectamente, p. ambos clientes pueden leer/escribir en el mismo VariableNode.

- Kevin Herron

20/03/2021 a las 16:03

Sí, lo tengo. ¿Puede el servidor escribir valor en su nodo? O deberíamos hacer que el nodo sea escribible y luego cambiarlo.¿Cuál es el valor del lado del cliente? ¿Cómo se hace normalmente en las industrias?

-Gopala Krishna

20/03/2021 a las 16:07

Sí, por supuesto que el servidor también puede escribir el valor en el nodo. Probablemente sea lo más común. Estás haciendo preguntas sobre el uso de OPC UA de formas que no son comunes.

- Kevin Herron

20/03/2021 a las 17:46

pero una vez que ejecutamosSi se aplica la siguiente declaración ´UA_StatusCode retval = UA_Server_run(server, &running)´, no podremos actualizar el valor del nodo, ¿estoy en lo cierto? Solo podemos escribir en el nodo antes de llamar a ´UA_Server_run´ como se muestra en este enlace de ejemplo

-Gopala Krishna

20/03/2021 a las 20:30



------------------------------------

El protocolo OPC UA hace lo que especifican sus documentos y lo que pides no es posible.

Pero puedes hacer que el cliente lea tanto los valores como el multiplicador y haga las operaciones que quieras en el lado del cliente, aparte de OPC UUn

5

¿Es posible una red peer to peer en OPCUA? Por ejemplo: ¿Dos clientes conectados al mismo servidor intercambiando información?

-Gopala Krishna

20/03/2021 a las 15:39

No, el servidor es pasivo, solo responde a las solicitudes de los clientes. Así funcionan todos los protocolos que funcionan en modo Solicitud-Respuestark.. Si desea un protocolo en el que dos clientes intercambien información, busque MQTT

- de 56

20/03/2021 a las 18:53

Hola, tengo una pregunta más, necesito tu sugerencia. Supongamos que en la industria tenemos un robot de recogida y colocación y hay un escáner de seguridad debajo. Si una persona se acerca demasiado al robot, el escáner debe seleccionar el señal y debe apagar el suministro de energía al robot. En este caso, ¿el robot y el escáner deben diseñarse como servidores? ¿O podemos tener un único servidor tanto para el robot como para el escáner?

- Gopalakrishna

22/03/2021 a las 22:46

Las normas internacionales IEC establecen que los sistemas de seguridad deben funcionar a través de sistemas electromecánicos cableados, nunca a través de comunicaciones digitales. El incumplimiento de las normas de seguridad ha llevado a personas a la cárcel. Me parece que primero deberías consultar a un ingeniero eléctrico antes de pensar en protocolos de comunicación.

- de 56

23/03/2021 a las 19:31

Hola,He editado la pregunta. ¿Puedes echarle un vistazo?

-Gopala Krishna

1 de abril de 2021 a las 16:24

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare