TCPDataExchClient, TCP data exchange (Client)

List

Questa pagina fa parte del Manuale Programmazione IEC 61131-3. Vai all indice.

Questo blocco funzione da eseguire in task Back, 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.

Information Circle

Blocco funzione

CODESYS: Non disponibile

LogicLab: eLLabDataExchLib

Descrizione

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

Immagine FB TCPDataExchClient

Trigger di spy

Se SpyOn attivo  è possibile utilizzare la console di spionaggio per verificare il funzionamento della FB. Sono previsti vari livelli di triggers.

Livelli di trigger
TriggerDescrizione
16#00000001Rx: Sequenze ricezione frame.
16#00000002Tx: Sequenze trasmissione frame.
16#40000000Er: Errori di esecuzione.

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 sistemi si scambiano tra di loro i dati definiti nei rispettivi buffers.

LogicLab (Ptp171, ST_TCPDataExchClient)
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]
Was this article helpful?