TCPDataExchClient, TCP data exchange (Client)

  1. Home
  2. Knowledge Base
  3. Manualistica
  4. Programmazione IEC 61131-3
  5. Libreria scambio dati tra sistemi
  6. TCPDataExchClient, TCP data exchange (Client)

Questo blocco funzione gestisce lo scambio dati su rete TCP agendo come client connettendosi al sistema su cui è in esecuzione il FB TCPDataExchServer. Su attivazione l'FB si connette al server definito in SAddress alla porta definita in Sport. In DEDefs occorre definire l'indirizzo della struttura TCPDEXCHNODEDEFS che identifica il nodo slave nella connessione con il server.

La gestione della comunicazione andrà gestita tramite le variabili nella struttura dati. Se la connessione al server viene stabilita (Il NodeID corrisponde con uno di quelli accettati dal server) i due sistemi si “legano” per lo scambio dati ed il bit Active della struttura dati verrà attivato.

Per inviare i dati al sistema server occorre attivare il bit TxData, il bit è automaticamente resettato a fine trasmissione. Se è attivo il bit AutoTxD su variazione dei dati nel buffer Tx, i dati sono automaticamente inviati al server. Su ricezione dati da un server avremo il bit RxOk attivo per un loop.

Function block
CODESYS: Non disponibile
LogicLab: eLLabDataExchLib

Enable (BOOL) Comando attivazione server.

SpyOn (BOOL) Se attivo permette di spiare il funzionamento della FB.

SAddress (@STRING) Indirizzo IP o URL del server a cui connettersi.

SPort (UINT) Porta TCP a cui connettersi sul server.

DEDefs (@TCPDEXCHNODEDEFS) Indirizzo allocazione array struttura TCPDEXCHNODEDEFS di definizione nodo.

Enabled (BOOL) Blocco funzione abilitato.

Fault (BOOL) Attivo per un loop se errore gestione.

Trigger di spy

Se SpyOn attivo viene eseguita la funzione SysSpyData che permette di utilizzare la console di spionaggio per verificare il funzionamento della FB. Sono previsti vari livelli di triggers.

Errori

In caso di errore eseguendo immediatamente dopo la funzione SysGetLastError è possibile rilevare il codice di errore. Fare riferimento alla tabella seguente per la descrizione.

Esempi

Come utilizzare gli esempi.
Viene eseguito il FB client che si connette al FB server (Vedi esempio in questo articolo) in esecuzione sullo stesso sistema (127.0.0.1 o localhost).I due suistemi si scambiano tra di loro i dati definiti nei rispettivi buffers. Per eseguire l'esempio occorre importare la libreria eLLabDataExchLib nel progetto (Articolo).

LogicLab (Ptp171)
PROGRAM ST_TCPDataExchClient
VAR
    TxBuffer : ARRAY[0..7] OF UINT; (* Tx buffer address *)
    RxBuffer : ARRAY[0..7] OF UINT; (* Rx buffer address *)
    TCPClient : TCPDataExchClient; (* TCP data exchange client *)
    DEDefs : TCPDEXCHNODEDEFS; (* Data exchange node definitions *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_TCPDataExchClient"
// *****************************************************************************
// The program instantiates a "TCPDataExchClient" FB. It connects to a system
// on wich the FB server is active. To test the program execute the server and
// client on the same system. 
// -----------------------------------------------------------------------------

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

    IF (SysFirstLoop) THEN

        // Set the client definitions.

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

        // Client configuration.

        TCPClient.SpyOn:=TRUE; //Spy command
        TCPClient.SAddress:=ADR('127.0.0.1'); //Server address
        TCPClient.SPort:=10000; //Server port
        TCPClient.DEDefs:=ADR(DEDefs); //Client definitions
    END_IF;

    // -------------------------------------------------------------------------
    // DATA EXCHANGE CLIENT
    // -------------------------------------------------------------------------
    // Manage data exchange client.

    TCPClient(Enable:=TRUE); //Manage the client

// [End of file]

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 1 Aprile 2020