Merker "Empfangen beendet" auswerten
Die Funktion liefert den Wert des Merkers "Empfangen beendet". Er is TRUE wenn das Endezeichen an der Kommunikationsschnittstelle empfangen wurde, die durch Port festgelegt wurde.
Eingang
Legt die Kommunikationsschnittstellen fest (je nach SPS-Typ):
COM-Schnittstelle z.B. SYS_COM0_PORT
Ethernet-Schnittstelle z.B. SYS_ETHERNET_USER_CONNECTION_1
MCU/SCU z.B. 16#xx01 (xx = Steckplatznummer) in COM01
Ausgang
Wird auf TRUE gesetzt, wenn das Endezeichen empfangen wurde. Der Endcode wird im entsprechenden Systemregister unter COM-Schnittstellen-Einstellungen angegeben.
Auswertung des Merkers "Empfangen beendet"
Wenn für die angegebene Zeit keine weiteren Bytes empfangen werden oder der Befehl ClearReceiveBuffer ausgeführt wird, wird der Ausgang IsDone auf TRUE gesetzt. Weiterer Datenempfang ist unmöglich. Mit F159_MTRN oder ClearReceiveBuffer wird der Merker "IsDone" auf FALSE gesetzt. Diese Funktion kann für FP7 oder MCU auch für den Zeitüberschreitungs-Modus verwendet werden. Der Merker "Empfangen beendet" kann mit den folgenden Befehle oder Systemvariablen ausgewertet werden:
IsReceptionDone
IsReceptionDoneByTimeOut
sys_bIsComPort1ReceptionDone, sys_bIsComPort2ReceptionDone, sys_bIsToolPortReceptionDone (je nach Kommunikationsschnittstelle)
Das Empfangsende lässt sich auch durch Auswertung des Empfangspufferinhalts feststellen. Die Anzahl der empfangenen Bytes kann sich innerhalb eines Zyklus ändern. Zum Beispiel, wenn die Anzahl der empfangenen Bytes mehr als einmal gelesen wurde, existieren eventuell verschiedene Status innerhalb eines Zyklus.
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
iPort: INT:=0;
bIsDone: BOOL:=FALSE;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,IsReceptionDone!,,5,0,14,3,,?DPort?CIsDone);
B(B_VARIN,,iPort,3,1,5,3,);
B(B_VAROUT,,bIsDone,14,1,16,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
bIsDone:=IsReceptionDone(Port := iPort);