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.

No se pueden enviar múltiples solicitudes Modbus en la misma conexión TCP.

Estoy utilizando la biblioteca POCO C++ para sockets y conexiones TCP.

Cuando abro y cierro la conexión para cada solicitud, todo es normal:

Poco::Net::SocketAddress sa("192.168.2.55", 502);
Poco::Net::StreamSocket socket;

socket.connect(sa);
socket.sendBytes(/set coil 5 to 1/, 12);
socket.close();

socket.connect(sa);
socket.sendBytes(/set coil 6 to 1/, 12);
socket.close();

socket.connect(sa);
socket.sendBytes(/set coil 7 to 1/, 12);
socket.close();

Las bobinas 5, 6 y 7 se establecen a 1 normalmente.

Pero cuando envío las 3 solicitudes sobre la misma conexión TCP, solo se toma la primera:

Poco::Net::SocketAddress sa("192.168.2.55", 502);
Poco::Net::StreamSocket socket;

socket.connect(sa);

socket.sendBytes(/set coil 5 to 1/, 12);
socket.sendBytes(/set coil 6 to 1/, 12);
socket.sendBytes(/set coil 7 to 1/, 12);

socket.close();

Solo se establece a 1 la bobina número 5.

¿Cuál es mejor?
¿Y qué puedo hacer para que funcione la segunda opción?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es mejor abrir y cerrar la conexión para cada solicitud. Esto asegura que cada solicitud se envíe y reciba correctamente. Para hacer que el segundo ejemplo funcione, puede utilizar el método Poco::Net::Socket::sendUrgent() para enviar las solicitudes a través de la misma conexión.

Comments are closed.