Skip to main content

RMPSendMessage

该功能块用于向任何模块实例发送消息。实例的地址必须已知。

变量的行为 xExecute, xDone, xBusy, 和 xError 符合《图书馆设计指南》。本文档是 CODESYS 标准安装。

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

请注意,一旦对方的RMPService 中消息的接收被确认,该功能块的工作就成功完成。这并不一定意味着消息已经到达实际的接收器模块接口。

mdData,将传输要发送的数据。 udiReceiverID 定义接收者的ID。rmp 定义本地 RMPService 实例。

. tValidity 定义消息的有效期。检查以下事项:
  • 消息发送之前的持续时间不得超过 tValidity (否则将创建错误消息)。

  • 消息被对方接收者收到的持续时间,不得超过 tValidity (否则该消息将被删除)。

. 可能会出现以下错误并会返回 uiErrorID:
  • 发送缓冲区已满;建议稍后再发送。

  • 该消息不会从发送缓冲区中删除。原因可能是传输缓慢、连接中断或对方的接收缓冲区已满。

  • 消息发送到的应用程序未连接到该应用程序。在这种情况下,不可能传输数据。