DataStreamExch, exchanges data between two I/O streams

Home / Knowledge Base / Manualistica / Programmazione IEC 61131-3 / Gestione networking / DataStreamExch, exchanges data between two I/O streams

Questo blocco funzione esegue lo scambio dati tra due streams di comunicazione. Definendo uno stream come socket TCP e l'altro come seriale è possibile realizzare un convertitore Ethernet/Seriale.

In FpA ed FpB occorre indicare i file pointer degli streams di comunicazione. Il FB riceve i dati da uno stream e li invia sull'altro. Per il trasferimento dei dati viene allocato dinamicamente un buffer di memoria che può raggiungere al massimo la dimensione definita in DBMax (Si consiglia 2048 bytes).

Se non c'è comunicazione tra gli streams dopo il tempo definito in DBLife (Si consiglia 5 secondi) il buffer di memoria viene disallocato liberando risorse di sistema. Se valore impostato è 0 il buffer non viene mai disallocato.

Function block
CODESYS: Non disponibile
LogicLab: eLLabNetworkLib

Enable (BOOL) Abilitazione blocco funzione.

FpA (FILEP) Flusso dati stream di comunicazione.

FpB (FILEP) Flusso dati stream di comunicazione.

DBMax (UINT) Dimensione massima allocazione buffer dati (Bytes). Valore massimo 4096.

DBLife (REAL) Tempo di vita buffer dati (S).

Enabled (BOOL) Blocco funzione abilitato.

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

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.
Semplice convertitore Ethernet/Seriale, accetta una connessione TCP su porta 2000, i dati ricevuti dalla connessione TCP sono inviati in uscita sulla porta seriale COM0 e viceversa.

LogicLab (Ptp119)
PROGRAM FBD_DataStreamExch_v1
VAR
    Sp : SysSerialPort; (* Serial port management *)
    Sk : SysTCPServer; (* Socket server *)
    FP : FILEP; (* File pointer *)
    DExch : DataStreamExch_v1; (* Data exchange *)
END_VAR

LogicLab (Ptp119)

Ti è stato utile questo articolo ?