Passa al contenuto principale

TCPDataExchClient, TCP data exchange (Client)

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.

Approfondimenti
  • In questo topic un caso di utilizzo libreria per lo scambio dati in configurazione client e server.
  • In questo topic informazioni su scambio dati tra sistemi via connessione LTE.

Descrizione​

Immagine FB TCPDataExchClient

ParametroTipoDescrizione
EnableBOOLComando attivazione server.
SpyOnBOOLSe attivo permette di spiare il funzionamento della FB.
SAddress@STRINGIndirizzo IP o URL del server a cui connettersi.
SPortUINTPorta TCP a cui connettersi sul server.
DEDefs@TCPDEXCHNODEDEFSIndirizzo allocazione array struttura TCPDEXCHNODEDEFS di definizione nodo.
EnabledBOOLBlocco funzione abilitato.
FaultBOOLAttivo per un loop se errore gestione

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]