Skip to main content

RMPSendMessage

Este bloque de funciones sirve para enviar mensajes a cualquier instancia de módulo. La dirección de la instancia debe ser conocida.

El comportamiento de las variables xExecute, xDone, xBusy, y xError cumple con las "Directrices para el diseño de bibliotecas". Este documento es parte del CODESYS instalación estándar.

FUNCTION_BLOCK RMPSendMessage

FUNCTION_BLOCK RMPSendMessage EXTENDS CBM.ETRIG
VAR_IN_OUT
    mdData: ARRAY[0..63] OF BYTE;
END_VAR
VAR_INPUT
    itfrmp: IRMPService;
    xExecute: BOOL;
    udiReceiverID: UDINT;
    uiSenderModuleID: UINT;
    tValidity: TIME := t#1s;
END_VAR
VAR_OUTPUT
    xDone: BOOL;
    xBusy: BOOL;
    xError: BOOL;
    uiErrorID: UINT;
END_VAR

Tenga en cuenta que el trabajo del bloque de funciones finaliza con éxito tan pronto como se confirma la recepción del mensaje en el RMPService del lado opuesto. Esto no significa necesariamente que el mensaje haya llegado a la interfaz del módulo receptor real.

En mdData, se transferirán los datos a enviar. udiReceiverID define el ID del receptor.rmp define la instancia local de RMPService.

. tValidity define el período de validación del mensaje. Se comprueban las siguientes cosas:
  • La duración hasta que se envíe el mensaje no debe exceder tValidity (de lo contrario, se creará un mensaje de error).

  • La duración hasta que el mensaje sea recogido por el receptor del lado opuesto, no debe exceder tValidity (de lo contrario, el mensaje será eliminado).

. Los siguientes errores pueden ocurrir y serán devueltos en uiErrorID:
  • El búfer de envío está lleno; se recomienda enviar de nuevo en una fecha posterior.

  • El mensaje no se eliminará del búfer de envío. Las razones pueden ser una transferencia lenta, una conexión interrumpida o un búfer de recepción lleno en el lado opuesto.

  • La aplicación a la que se envía el mensaje no está conectada a esta aplicación. En este caso no es posible una transferencia de los datos.