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
:发送缓冲区已满;建议稍后再发送。
该消息不会从发送缓冲区中删除。原因可能是传输缓慢、连接中断或对方的接收缓冲区已满。
消息发送到的应用程序未连接到该应用程序。在这种情况下,不可能传输数据。