FB_CsvRead Descrizione funzionale

Panoramica

Tipo:

Blocco funzione

Disponibile a partire da:

V1.0.8.0

Ereditato da:

-

Implementa:

-

G-SE-0060080.1.gif-high.gif

 

 

Descrizione funzionale

Il blocco funzione FB_CsvRead consente di leggere un file CSV ubicato nel file system del controller, oppure nella memoria estesa (ad esempio, una scheda di memoria SD). Per informazioni sul file system, consultare il capitolo Organizzazione della memoria flash nella Guida di programmazione del controller.

Il file CSV da leggere contiene diversi valori (colonne) disposti in singoli record (righe). I valori sono separati da un delimitatore specifico. I record sono separati da un'interruzione di linea.

In base al codice carattere specificato per il delimitatore, il blocco funzione identifica i singoli valori durante la lettura del contenuto del file. Il codice carattere dell'interruzione di linea dipende dal sistema operativo in cui è stato creato il file. l blocco funzione supporta i tre codici carattere di interruzione linea più utilizzati (ASCII). Rileva il carattere di interruzione linea utilizzato durante la lettura del contenuto del file.

Sono supportati i seguenti caratteri di interruzione linea (ASCII):

oCRLF (0D0A hex): utilizzato su sistemi operativi come Windows e MS-DOS.

oLF (0A hex): utilizzato su sistemi operativi come Unix, Linux, Mac OS X e Android.

oCR (0D hex): utilizzato su sistemi operativi come Mac OS X versione 9 o precedenti.

I valori letti dal file specificato vengono memorizzati nel buffer di lettura fornito dall'applicazione in variabili di tipo STRING. Dichiarare il buffer di lettura nell'applicazione come ARRAY bidimensionale di tipo STRING. Utilizzare l'ingresso i_stTableReadValues per fornire le dimensioni dell'array e il puntatore all'array a tale blocco funzione. Per ulteriori informazioni, consultare la struttura ST_CsvTable.

Quando si esegue il blocco funzione, l'ingresso i_stTableReadValues.pbyTable viene memorizzato internamente per un ulteriore uso. Se viene rilevato un evento di modifica online durante l'esecuzione del blocco funzione (q_xBusy = TRUE), le variabili utilizzate internamente vengono aggiornate con il valore corrente dell'ingresso.

NOTA: Non riassegnare i_stTableReadValues.pbyTable a un'altra area di memoria durante l'esecuzione del blocco funzione.

Il file da leggere deve contenere solo caratteri ASCII per garantire un corretta visualizzazione del contenuto del file nell'applicazione. I file possono contenere un BOM (byte order mark) all'inizio che indica la codifica del file elaborato. I file con codifica ASCII non contengono alcun BOM. Il blocco funzione verifica la presenza di BOM nel file specificato.

Nel caso in cui il file contenga uno dei seguenti BOM, l'esecuzione del blocco funzione è annullata e viene indicato un errore:

FE FF hex, FF EF hex, oppure EF BB BF hex

Utilizzare l'ingresso i_stReadParameter per determinare la quantità di dati da leggere. È possibile leggere l'intero contenuto del file. È inoltre possibile selezionare un singolo record (riga), una singola colonna o un singolo valore da leggere. Inoltre, è possibile scegliere di leggere solo le informazioni sul file fornite dall'uscita q_stFileInformation.

NOTA: La funzione cancella l'array prima dell'operazione di lettura.

Interfaccia

Ingresso

Tipo di dati

Descrizione

i_xExecute

BOOL

Il blocco funzione esegue l'operazione di lettura con il file specificato CSV su un fronte di salita di questo ingresso.

Consultare inoltre il capitolo Comportamento dei blocchi funzione con l'ingresso i_xExecute.

i_sFilePath

STRING[255]

Percorso del file CSV.

Se si specifica un nome di file senza estensione, il blocco funzione aggiunge l'estensione .csv.

i_stReadParameter

ST_CsvReadParameter

Specifica il contenuto da leggere dal file.

Vedere ST_CsvReadParameter.

i_timTimeout

TIME

Alla scadenza del tempo, l'esecuzione viene annullata.

Se il valore è T#0s, viene applicato il valore predefinito T#2s.

i_stTableReadValues

ST_CsvTable

Struttura per passare il buffer fornito dall'applicazione al blocco funzione (consultare la struttura ST_CsvTable).

Uscita

Tipo di dati

Descrizione

q_xDone

BOOL

Se questa uscita è impostata a TRUE, l'esecuzione è stata completata correttamente.

q_xBusy

BOOL

Se questa uscita è impostata a TRUE, l'esecuzione del blocco funzione è in corso.

q_xError

BOOL

Se questa uscita è impostata su TRUE, è stato rilevato un errore. Per informazioni, consultare q_etResult e q_etResultMsg.

q_etResult

ET_Result

Fornisce informazioni su stato e diagnostica come valore numerico.

Se q_xBusy = TRUE, il valore indica lo stato.

Se q_xDone o q_xError = TRUE, il valore indica il risultato.

q_sResultMsg

STRING[80]

Fornisce ulteriori informazioni su stato e diagnostica come messaggio di testo.

q_stFileInformation

ST_CsvFileInfo

La struttura contiene informazioni sull'ultimo file elaborato

q_stWarnValueTruncated

ST_CsvWarnValueTruncated

Fornisce informazioni sul primo valore troncato, se disponibile.

NOTA: L'uscita viene aggiornata insieme con q_xDone.

Per ulteriori informazioni sul comportamento del segnale degli ingressi e delle uscite di base, consultare il capitolo Comportamento dei blocchi funzione con l'ingresso i_xExecute.

Uso di variabili di tipo POINTER TO …  o REFERENCE TO …

Il blocco funzione fornisce ingressi e/o ingressi/uscite di tipo POINTER TO… o REFENCE TO…. Utilizzando questo tipo di puntatore o riferimento, il blocco funzione accede all'area di memoria indirizzata. In caso di evento di modifica online, può accadere che le aree di memoria vengano spostate in nuovi indirizzi e che di conseguenza un puntatore o un riferimento non siano più validi. Per evitare errori associati a puntatori non validi, occorre aggiornare ciclicamente le variabili di tipo POINTER TO… o REFERENCE TO… , o almeno all'inizio del ciclo nel quale vengono usate.