RMPSendMessage
Dieser Baustein wird verwendet, um einer beliebigen (aber durch seine ID bekannten) Modulinstanz eine Nachricht zu schicken.
Das Verhalten der Variablen xExecute
, xDone
, xBusy
and xError
ist entsprechend der „Guidelines for Library Design“. Dieses Dokument ist Bestandteil der CODESYS-Standardinstallation.
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
Man beachte, dass die Aufgabe des Bausteins erfolgreich erledigt ist, sobald der Empfang der Nachricht im RMPService der Gegenseite bestätigt ist. Das muss jedoch nicht bedeuten, dass die Nachricht beim eigentlichen Empfänger angekommen ist.
In mdData
werden die zu sendenden Daten übergeben. In udiReceiverID
steht der Empfänger und rmp
enthält die lokale RMPService-Instanz.
Die Zeitdauer, bis die Nachricht verschickt worden ist, darf
tValidity
nicht überschritten werden (ansonsten wird eine Fehlermeldung erzeugt).Die Zeitdauer, bis die Nachricht auf der Gegenseite vom Empfänger abgeholt wird, darf
tValidity
nicht überschreiten, sonst wird die Nachricht gelöscht.
uiErrorID
zurückgegeben:Sende-Buffer ist voll; es empfiehlt sich ein erneuter Sendeversuch zu einem späteren Zeitpunkt.
Die Nachricht wird nicht aus dem Sende-Buffer gelöscht. Ursachen dafür können eine zu langsame Übertragung, eine gestörte Verbindung oder ein voller Empfangspuffer auf der Gegenseite sein.
Die Applikation, an die die Nachricht gerichtet ist, ist nicht mit dieser Applikation verbunden. Dadruch ist eine Übertragung prinzipiell unmöglich.