UDPDataTxfer_v1, data transfer by UDP connection

  1. Home
  2. Knowledge Base
  3. Manualistica
  4. Programmazione IEC 61131-3
  5. Gestione networking
  6. UDPDataTxfer_v1, data transfer by UDP connection

Questo blocco funzione esegue il trasferimento di un blocco di memoria tra due sistemi utilizzando una connessione UDP su rete ethernet. Su un sistema andrà istanziato il FB configurato in modalità client (CSMode:=FALSE), mentre sull'altro sistema andrà istanziato il FB configurato in modalità server (CSMode:=TRUE). I parametri ServerIP e Port da impostare  solo sul sistema client indicano l'indirizzo IP e la porta del sistema server con cui avviene il trasferimento dati.

L'uscita Linked si attiva quando si è verificata la corretta connessione tra i due  sistemi, e per garantire che i due sistemi siano sempre correttamente interconnessi anche se non vi è variazione nei dati da trasmettere viene comunque inviato un pacchetto dati ogni tempo definito in Heartbeat.

Il parametro Timeout definisce il tempo massimo per il trasferimento dei dati, l'invio dei dati si conclude con la ricezione di un acknowledge da parte dell'altro sistema, un ciclo di invio dati e ricezione acknowledge richiede al minimo 2 loop di esecuzione programma. Se dopo l'invio non viene ricevuto acknowledge entro il tempo definito viene generato errore.

L'invio dei dati è automatico sulla variazione di uno qualsiasi dei bytes del buffer di trasmissione, RxDataOk si attiva per un loop ad ogni ricezione dati dall'altro sistema, TxDataSent si attiva per un loop al termine della trasmissione dei dati verso l'altro sistema.

Function block
CODESYS: Non disponibile
LogicLab: eLLabNetworkLib

Enable (BOOL) Comando abilitazione.

CSMode (BOOL) Client/Server mode. FALSE:Modalità UDP client, TRUE:Modalità UDP server.

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

LocalAdd (@STRING) Range indirizzi IP da cui è accettata la connessione. La connessione è accettata se indirizzo IP del peer in AND con il valore non viene modificato. Default '0.0.0.0': connessione accettata da tutti gli indirizzi IP.

ServerIP (@STRING) Indirizzo IP (o URL) del sistema server con cui scambiare dati. Occorre definirlo solo sul sistema configurato come client (CSMode:=FALSE).

Port (UINT) Numero porta UDP del sistema server con cui scambiare dati. Occorre definirlo solo sul sistema configurato come client (CSMode:=FALSE).

RxDBuffer (@BYTE) Indirizzo buffer dove devono essere trasferiti i dati ricevuti.

RxDSize (UDINT) Dimensione buffer dati ricevuti. Deve coincidere con il valore di TxDSize dell'altro sistema.

TxDBuffer (@BYTE) Indirizzo buffer dati da inviare. Ad ogni variazione del contenuto del buffer l'intero buffer è inviato all'altro sistema.

TxDSize (UDINT) Dimensione buffer dati da inviare. Deve coincidere con il valore di RxDSize dell'altro sistema.

Heartbeat (REAL) Tempo massimo in cui deve esserci uno scambio dati tra i due sistemi espresso in secondi. Se non vi è variazione nei dati da trasmettere ogni tempo definito il sistema client invia un pacchetto dati. Deve essere definito lo stesso valore in entrambi i sistemi.

Timeout (REAL) Tempo massimo ricezione acknowledge su invio dati espresso in secondi. Se a seguito di un invio dati nel tempo definito non viene ricevuto l'acknowledge si genera errore. Deve essere definito lo stesso valore in entrambi i sistemi.

Linked (BOOL) Si attiva se i due sistemi client e server sono correttamente interconnessi.

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

RxDataOk (BOOL) Attivo per un loop alla ricezione dati.

TxDataSent (BOOL) Attivo per un loop su trasmissione dati.

Errors (UDINT) Numero di errori, incrementato ad ogni nuovo errore, raggiunto valore massimo riparte da 0.

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 fornito un esempio di utilizzo in linguaggio FBD e ST, nei due esempi è gestito lo scambio dati su di uno stesso sistema utilizzando una connessione UDP in localhost (IP 127.0.0.1).

LogicLab (Ptp119)
PROGRAM FBD_UDPDataTxfer_v1
VAR
    CDataTxF : UDPDataTxfer_v1; (* UDP data transfer (Client) *)
    CRxDBuffer : ARRAY[ 0..3 ] OF BYTE; (* Rx data buffer (Client) *)
    CTxDBuffer : ARRAY[ 0..7 ] OF BYTE; (* Tx data buffer  (Client) *)
    SDataTxF : UDPDataTxfer_v1; (* UDP data transfer (Server) *)
    SRxDBuffer : ARRAY[ 0..3 ] OF BYTE; (* Rx data buffer (Server) *)
    STxDBuffer : ARRAY[ 0..7 ] OF BYTE; (* Tx data buffer (Server) *)
END_VAR

LogicLab (Ptp119)

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 22 Ottobre 2019