SEND_RECV_MSG: Enviar o recibir mensajes definidos por el usuario

Descripción de la función

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.

Representación gráfica

Descripciones de parámetros específicos de SEND_RECV_MSG

Entrada

Tipo

Comentario

QuantityToSend

UINT

QuantityToSend es el número de bytes que se van a enviar.

Limitación del controlador:

  • M258/LMC058: 1050 bytes

  • M241/M251/M262: 252 bytes

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:

  • M258/LMC058: 1050 bytes

  • M241/M251/M262: 252 bytes

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.

Los parámetros de entrada y salida que son comunes para todos los bloques de funciones de bibliotecas PLCCommunication se describen en otras partes del texto.

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:

NOTA: En este ejemplo no hay caracteres de inicio y fin. La condición de fin de tramas recibidas es un timeout de 250 ms.

Ejemplo

Esta POU permite solo el envío del mensaje definido por el usuario “hello” en la línea serie 1:

NOTA: Un flanco ascendente en la variable Start inicia la conversión de una dirección y el envío del mensaje.