SEND_RECV_MSGSEND_RECV_MSG: Senden und/oder Empfangen benutzerdefinierter Nachrichten
Der Funktionsbaustein SEND_RECV_MSG sendet und empfängt benutzerdefinierte Nachrichten. Der Baustein sendet eine Nachricht über das ausgewählte Medium (z. B. eine serielle Leitung) und wartet dann auf eine Antwort. Es ist auch möglich, Nachrichten zu senden, ohne auf eine Antwort zu warten, oder ohne Senden einer Nachricht eine Nachricht zu empfangen.
Diese Funktion sollte mit einem ASCII-Manager verwendet werden. Die Verwendung mit einem Modbus-Manager ist ebenfalls möglich, wenn Sie einen Request senden möchten, der nicht in der Kommunikationsbibliothek implementiert ist. In diesem Fall müssen Sie den Request selbst erstellen.
Beschreibung der SEND_RECV_MSG-spezifischen Parameter
Eingang |
Typ |
Kommentar |
---|---|---|
QuantityToSend |
UINT |
QuantityToSend ist die Anzahl der zu sendenden Bytes. Steuerungsspezifische Beschränkung: oM258/LMC058: 1050 Bytes oM241/M251: 252 Bytes |
BufferToSend |
POINTER TO BYTE |
BufferToSend ist die Adresse des Puffers (Byte-Array), in dem die zu sendende Nachricht gespeichert ist. Die Standardfunktion ADR muss zum Definieren des zugehörigen Zeigers verwendet werden. (siehe nachstehendes Beispiel). Bei 0 führt die Funktion nur einen Empfang durch. |
SizeRecvBuffer |
UINT |
SizeRecvBuffer ist die verfügbare Größe des Empfangspuffers (in Byte). Die Größe der empfangenen Daten (in Byte) ist in der internen Eigenschaft der Funktionsbausteininstanz (interne Variable) verfügbar: <Instanzname>.NbRecvBytes. Steuerungsspezifische Beschränkung: oM258/LMC058: 1050 Bytes oM241/M251: 252 Bytes |
BufferToRecv |
POINTER TO BYTE |
BufferToRecv ist die Adresse des Puffers (Array von SizeRecvBuffer-Bytes), in dem die empfangene Nachricht gespeichert wird. Die Standardfunktion ADR muss zum Definieren des zugehörigen Zeigers verwendet werden. (siehe nachstehendes Beispiel). Bei 0 führt die Funktion eine Nur-Senden-Operation durch. |
Bei Nur-Senden-Operationen ist der Datenaustausch abgeschlossen (Busy wird auf 0 zurückgesetzt), wenn alle Daten (einschließlich eventueller Start- und Stoppzeichen) an die Verbindung gesendet wurden.
Bei einer Senden/Empfangen- oder Nur-Empfangen-Operation empfängt das System Zeichen bis zur Endbedingung. Wenn die Endbedingung erreicht wird, ist der Datenaustausch abgeschlossen (Busy wird auf 0 zurückgesetzt). Die empfangenen Zeichen werden dann bis Erreichen der Zeichenanzahl sizeRecvBuffer in den Empfangspuffer kopiert, die Größe der empfangenen Daten (in Byte) ist in der Eigenschaft der Funktionsbausteininstanz (interne Variable) verfügbar: <Instanzname>.NbRecvBytes. Der sizeRecvBuffer-Eingang stellt keine Endbedingung dar.
Die Start- und Endbedingungen für benutzerdefinierte Nachrichten werden im Konfigurationsdialogfeld des ASCII-Managers konfiguriert:
HINWEIS: Dieses Beispiel enthält keine Start- und Endzeichen. Die Endbedingung für den Frame-Empfang ist ein Timeout von 250 ms.
Diese POU ermöglicht die Nur-Senden-Operation für die benutzerdefinierte Nachricht „hello“ über die serielle Leitung 1:
HINWEIS: Eine steigende Flanke an der Variablen Start startet die Konvertierung einer Adresse und den Versand der Nachricht.