TCPDataExchServer, schimb de date TCP (Server)

Listă

Această pagină face parte din Manual de programare IEC 61131-3. Mergeți la index.

Acest bloc funcțional de la rulați în sarcina Înapoi, gestionează schimbul de date prin rețeaua TCP, acționând ca un server, acceptând conexiuni de la nodurile client gestionate de FB TCPDataExchClient. Activarea FB ascultă serverul pe portul definit în Port, serverul acceptă numărul simultan de conexiuni de la clienți definiți în Connections. În DEDefs este necesar să se definească adresa matricei de structuri TCPDEXCHNODEDEFS care identifică nodurile slave care se pot conecta la server.

Managementul comunicațiilor va fi gestionat prin variabilele din structura de date. Când un client se conectează, acesta este căutat în matricea indicată de DEDefs il NodeID a mesajului primit și a celor două sisteme „se leagă” de schimbul de date, bitul Active va fi activat.

Pentru a trimite date către sistemul client, bitul trebuie activat TxData, bitul este resetat automat la sfârșitul transmisiei. Dacă bitul este activ AutoTxD la modificarea datelor din bufferul Tx, datele sunt trimise automat către client. La primirea datelor de la un client vom avea bitul RxOk activ pentru o buclă.

Cercul de informații

Blocarea funcției

CODESYS: Indisponibil

LogicLab: eLLabDataExchLib

Descriere

Enable (BOOL) Comanda de activare a serverului.
SpyOn (BOOL) Dacă este activ, vă permite să spionați funcționarea FB.
Port (UINT) Port TCP pe care să ascultați serverul.
Connections (UDINT) Numărul de conexiuni de la FB TCPDataExchClient proiecte contemporane.
DEDefs (@TCPDEXCHNODEDEFS) Adresa de alocare a matricei de structură TCPDEXCHNODEDEFS definirea nodurilor clientului.
Enabled (BOOL) Blocarea funcției este activată.
Fault (BOOL) Activ pentru o buclă dacă eroare de gestionare.

Image FB TCPDataExchServer

Declanșatorul spionului

Se SpyOn activ, puteți utiliza consola spion pentru a verifica funcționarea FB. Există diferite niveluri de declanșatoare.

Niveluri de declanșare
trăgaciDescriere
16 # 00000001Rx: Secvențe de recepție a cadrelor.
16 # 00000002Tx: Secvențe de transmitere a cadrelor.
16 # 40000000Er: Erori de execuție.

Exemple

Cum se utilizează exemplele.
Programul gestionează schimbul de date acționând ca un server care ascultă portul 10000, este posibil să vă conectați la dispozitivele client 2 (a se vedea exemplul programului din acest articol) și schimb de date între ele. Sistemele client vor trebui să trimită date care se identifică cu numerele de noduri 1 și 2.

LogicLab (Ptp171, ST_TCPDataExchServer)
PROGRAM ST_TCPDataExchServer
VAR
    C1RxBuffer : ARRAY[0..7] OF UINT; (* Rx buffer (Client 1) *)
    C1TxBuffer : ARRAY[0..7] OF UINT; (* Tx buffer (Client 1) *)
    C2RxBuffer : ARRAY[0..7] OF UINT; (* Rx buffer (Client 2) *)
    C2TxBuffer : ARRAY[0..7] OF UINT; (* Tx buffer (Client 2) *)
    DEDefs : ARRAY[0..1] OF TCPDEXCHNODEDEFS; (* Data exchange node definitions *)
    TCPServer : TCPDataExchServer; (* TCP data exchange server *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_TCPDataExchServer"
// *****************************************************************************
// The program instantiates a "TCPDataExchServer" FB. Up to 2 connections are
// accepted.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // Program initializations.

    IF (SysFirstLoop) THEN

        // Set the client 1 definitions.

        DEDefs[0].NodeID:=1; //Node ID
        DEDefs[0].AutoTxD:=TRUE; //Automatic Tx data send
        DEDefs[0].RxBuffer:=ADR(C1RxBuffer); //Rx buffer address
        DEDefs[0].RxLength:=SIZEOF(C1RxBuffer); //Rx buffer length
        DEDefs[0].TxBuffer:=ADR(C1TxBuffer); //Tx buffer address
        DEDefs[0].TxLength:=SIZEOF(C1TxBuffer); //Tx buffer length
        DEDefs[0].TxHeartbeat:=10; //Tx heartbeat time (S)

        // Set the client 2 definitions.

        DEDefs[1].NodeID:=2; //Node ID
        DEDefs[1].AutoTxD:=TRUE; //Automatic Tx data send
        DEDefs[1].RxBuffer:=ADR(C2RxBuffer); //Rx buffer address
        DEDefs[1].RxLength:=SIZEOF(C2RxBuffer); //Rx buffer length
        DEDefs[1].TxBuffer:=ADR(C2TxBuffer); //Tx buffer address
        DEDefs[1].TxLength:=SIZEOF(C2TxBuffer); //Tx buffer length
        DEDefs[1].TxHeartbeat:=10; //Tx heartbeat time (S)

        // Server configuration.

        TCPServer.SpyOn:=TRUE; //Spy command
        TCPServer.Port:=10000; //Peer port
        TCPServer.Connections:=2; //Accepted connections
        TCPServer.DEDefs:=ADR(DEDefs); //Data exchange definitions
    END_IF;

    // -------------------------------------------------------------------------
    // DATA EXCHANGE SERVER
    // -------------------------------------------------------------------------
    // Manage data exchange server.

    TCPServer(Enable:=TRUE); //Manage the server

// [End of file]
A fost util acest articol?