Considerare le seguenti limitazioni per la lettura di un file CSV:
oSono supportati solo i file CSV con codifica ASCII.
Non viene verificato se la codifica del file è effettivamente ASCII. Se il file contiene caratteri al di fuori dell'intervallo del set del codice caratteri ASCII, i valori resi dall'applicazione non sono validi.
oI valori letti dal file vengono memorizzati come valori STRING nell'applicazione e vale anche per i valori numerici. Prima di poter essere elaborati, i valori devono essere convertiti nel tipo dati appropriato. Per ottenere questo risultato, utilizzare le funzioni di conversione STRING_TO_. Le funzioni di conversione richiedono una sintassi specifica dei valori STRING in base al tipo dati di destinazione. Considerare questi requisiti quando si creano i file per semplificare l'elaborazione dei valori letti.
oLe operazioni sui file sono processi che richiedono tempo. Per evitare di influenzare funzioni di controllo critiche dal punto di vista del tempo nell'applicazione, creare un task separato con priorità inferiore per questi processi. Per ulteriori informazioni sulla gestione dei task, consultare il capitolo Watchdog di task e sistema nella Guida di programmazione del controller.
oIl parametro di timeout i_timTimeout consente di monitorare l'operazione di lettura. Se il valore specificato per il timeout viene superato durante l'esecuzione del blocco funzione FB_CsvRead, l'operazione di lettura viene annullata e il blocco funzione genera un errore. Per selezionare un valore appropriato per il parameteo del timeout, considerare che l'operazione di lettura impiega diversi cicli del task. Perciò, calcolare il prodotto del numero di cicli del task richiesti e l'intervallo del task per specificare il valore minimo del parametro di timeout.
oIl numero di cicli dipende, oltre che dalla dimensione del file da leggere, dalla dimensione del blocco in elaborazione che può essere specificata dal parametro Gc_uiCsvReadProcessingBlockSize nel GPL. L'analisi del contenuto del file è suddivisa in diverse operazioni di scrittura per ridurre il carico di un singolo ciclo del task. Durante ogni operazione di lettura, viene elaborato un blocco dati e, se richiesto, memorizzato nel buffer. Maggiori sono le dimensioni del blocco di elaborazione, meno cicli sono richiesti per leggere il file. Tuttavia, una maggiore dimensione del blocco aumenta il tempo di esecuzione di questa operazione di scrittura.
oIl codice carattere specificato come delimitatore non è supportato come parte di un valore.
oNon elaborare i dati del buffer forniti da i_stTableReadValues.pbyTable finché l'uscita q_xBusy del blocco funzione indica TRUE.
oNon accedere contemporaneamente allo stesso file con blocchi funzione diversi. Usare l'uscita q_xBusy per bloccare l'esecuzione dei vari blocchi funzione.