El bloque de funciones SEND_RECV_MSG envía y recibe mensajes definidos por el usuario. Envía un mensaje con el medio seleccionado (por ejemplo, una línea serie) y, a continuación, espera una respuesta. También es posible enviar sin esperar una respuesta o bien recibir un mensaje sin enviar uno.
Esta función debe utilizarse con un gestor ASCII. También se puede utilizar con un gestor Modbus si desea enviar una petición que no se ha implementado en la biblioteca de comunicación. En este caso, debe generar una petición usted mismo.
Entrada |
Tipo |
Comentario |
---|---|---|
QuantityToSend |
UINT |
QuantityToSend es el número de bytes que se van a enviar. Limitación del controlador:
|
BufferToSend |
POINTER TO BYTE |
BufferToSend es la dirección del búfer (matriz de bytes) en la que se almacena el mensaje que se va a enviar. La función estándar ADR debe utilizarse para definir el puntero asociado. Consulte el ejemplo siguiente. Si es 0, la función es de solo recepción. |
SizeRecvBuffer |
UINT |
SizeRecvBuffer es el tamaño disponible (en bytes) del búfer de recepción. El tamaño de los datos recibidos (en bytes) está disponible en la propiedad interna de la instancia del bloque de funciones (variable interna): <Nombre de la instancia>.NbRecvBytes. Limitación del controlador:
|
BufferToRecv |
POINTER TO BYTE |
BufferToRecv es la dirección del búfer (matriz de SizeRecvBuffer bytes) en la que se almacena el mensaje recibido. La función estándar ADR debe utilizarse para definir el puntero asociado. Consulte el ejemplo siguiente. Si es 0, la función es de solo envío. |
Para las operaciones de solo envío, se considera que el intercambio es completo (Busy restablecido en 0) cuando todos los datos (incluidos los posibles caracteres de inicio y detención) se han enviado a la línea.
Para una operación de envío/recepción o de solo recepción, el sistema recibe caracteres hasta la condición de fin. Cuando se alcanza la condición de fin, el intercambio finaliza (Busy restablecido en 0). A continuación, los caracteres recibidos se copian en el búfer de recepción hasta SizeRecvBuffer caracteres y el tamaño de los datos recibidos (en bytes) está disponible en la propiedad de la instancia del bloque de funciones (variable interna): <Nombre de la instancia>.NbRecvBytes. La entrada SizeRecvBuffer no representa una condición de fin.
Las condiciones de inicio y fin de los mensajes definidos por el usuario se configuran en el cuadro de diálogo de configuración del gestor ASCII: