//TCP VERBINDUNG
VAR_INPUT
TCONREQ : BOOL; // STEIGENDE FLANKE FÜR VERBINDUNGSAUFBAU
TCONID : WORD; // VERBINDUNGS ID TCON
TCONConnect : UDT77; // VERBINDUNGSPARAMETER UDT77
TSENDREQ : BOOL; // STEIGENDE FLANKE FÜR SENDE DATEN
TSENDID : WORD; // VERBINDUNGS ID TSEND
TSENDLEN : INT; // LÄNGE DER DATEN
TRCVEN_R : BOOL;
TRCVID : WORD;
TRCVLEN : INT;
TDISCONREQ : BOOL;
TDISCONID : WORD;
END_VAR
VAR_OUTPUT
TCONDONE : BOOL; // 1 SOBALD VERBINDUNG STEHT
TCONBUSY : BOOL; // 1 WÄHREND DES VERBINDUNGSAUFBAUS
TCONERROR : BOOL; // 1 IM FEHLERFALL
TCONSTATUS : WORD; // RÜCKGABEWERT STATUS DER VERBINDUNG FB65
TSENDDONE : BOOL; // 1 SOBALD ALLE DATEN GESENDET
TSENDBUSY : BOOL; // 1 WÄHREND DATEN GESENDET WERDEN
TSENDERROR : BOOL; // 1 FALLS EIN FEHLER BEIM SENDEN AUFTRITT
TSENDSTATUS : WORD; // STATUS FB63
TRCVNDR : BOOL;
TRCVBUSY : BOOL;
TRCVERROR : BOOL;
TRCVSTATUS : WORD;
TRCVDATALEN : INT;
TDISCONDONE : BOOL;
TDISCONBUSY : BOOL;
TDISCONERROR : BOOL;
TDISCONSTATUS : WORD;
END_VAR
VAR
CONNECTED : BOOL;
END_VAR
BEGIN
TCONID := W#16#1;
TSENDID := W#16#1;
TRCVID := W#16#1;
TDISCONID := W#16#1;
// AUFRUF FB65 VERBINDUNG AUFBAUEN
TCON.DB_TCON(REQ := TCONREQ // IN: BOOL
,ID := TCONID // IN: WORD
,CONNECT := TCONConnect // INOUT: ANY
);
TCONDONE := DB_TCON.DONE; // OUT: BOOL
TCONBUSY := DB_TCON.BUSY; // OUT: BOOL
TCONERROR := DB_TCON.ERROR; // OUT: BOOL
TCONSTATUS := DB_TCON.STATUS; // OUT: WORD
IF TCONDONE THEN
TCONREQ := FALSE;
CONNECTED := TRUE;
END_IF;
IF CONNECTED THEN
// AUFRUF FB63 DATEN SENDEN
TSEND.DB_TSEND(REQ := TSENDREQ // IN: BOOL
,ID := TSENDID // IN: WORD
,LEN := TSENDLEN // IN: INT
,DATA := MW100 // INOUT: ANY
);
TSENDDONE := DB_TSEND.DONE; // OUT: BOOL
TSENDBUSY := DB_TSEND.BUSY; // OUT: BOOL
TSENDERROR := DB_TSEND.ERROR; // OUT: BOOL
TSENDSTATUS:= DB_TSEND.STATUS; // OUT: WORD
END_IF;
IF TSENDDONE THEN
TSENDREQ := FALSE;
END_IF;
// AUFRUF FB64 DATEN EMPFANGEN
TRCV.DB_TRCV(EN_R := TRCVEN_R // IN: BOOL
,ID := TRCVID // IN: WORD
,LEN := TRCVLEN // IN: INT
,DATA := MW102 // INOUT: ANY
);
TRCVNDR := DB_TRCV.NDR; // OUT: BOOL
TRCVBUSY := DB_TRCV.BUSY; // OUT: BOOL
TRCVERROR := DB_TRCV.ERROR; // OUT: BOOL
TRCVSTATUS := DB_TRCV.STATUS; // OUT: WORD
TRCVDATALEN:= DB_TRCV.RCVD_LEN; // OUT: INT
// AUFRUF FB66 VERBINDUNG BEENDEN
TDISCON.DB_TDISCON(REQ := TDISCONREQ// IN: BOOL
,ID := TDISCONID // IN: WORD
);
TDISCONDONE := DB_TDISCON.DONE; // OUT: BOOL
TDISCONBUSY := DB_TDISCON.BUSY; // OUT: BOOL
TDISCONERROR := DB_TDISCON.ERROR; // OUT: BOOL
TDISCONSTATUS:= DB_TDISCON.STATUS; // OUT: WORD
IF TDISCONDONE THEN
TDISCONREQ := FALSE;
CONNECTED := FALSE;
END_IF;
END_FUNCTION_BLOCK