Come registrano i dati le schede di memoria?

È possibile che abbiate individuato la necessità di aggiungere al vostro data logger un’archiviazione esterna dei dati con schede di memoria flash. Ma sapete quale istruzione CRBasic utilizzare per farlo? In questo articolo vi aiuterò a scegliere l’istruzione più adatta alla vostra applicazione.

Come fa a memorizzare i dati una scheda di memoria?

Ci sono due istruzioni CRBasic che sono comunemente usate per istruire il data logger a scrivere i dati di archiviazione finale su una scheda di memoria:

L’istruzione CardOut()
Il TableFile() con l’istruzione dell’opzione 64

Queste istruzioni vengono aggiunte tra le istruzioni DataTable() e EndTable() come mostrato negli esempi più avanti in questo articolo. Si noti che non è possibile utilizzare sia l’opzione CardOut() che TableFile() 64 nella stessa tabella dati. È necessario scegliere l’istruzione più adatta alle proprie esigenze. Allora, perché ci sono due istruzioni per memorizzare i dati su una carta? Un metodo è migliore dell’altro?

Prima di rispondere a queste domande, è importante capire che la dimensione massima di un file memorizzato su un data logger è di 2 GB. Questo perché il data logger supporta nativamente i numeri interi a 4 byte firmati. Questo tipo di dati può rappresentare un numero grande come 231, o in termini di byte, circa 2 GB. Quindi, 2 GB è la lunghezza massima del file che può essere rappresentata nella tabella delle directory del data logger e, di conseguenza, questa è la sua dimensione massima del file.

In parte a causa di questa limitazione delle dimensioni dei file, e anche a causa dell’elevato costo delle schede di memoria di grandi dimensioni, i data logger Campbell Scientific non supportavano schede di memoria più grandi di 2 GB prima del sistema operativo (OS) 25 nel CR1000 o CR3000. Tuttavia, con la crescita della richiesta di dati ad alta frequenza e di una maggiore capacità di memorizzazione dei dati, al sistema operativo dei data logger è stato aggiunto il supporto per schede fino a 16 GB.

Il supporto per schede più grandi di 2 GB presentava un enigma. Come si possono scrivere più di 2 GB di dati su una scheda se la dimensione massima di un file di archiviazione finale è di 2 GB? La soluzione è stata fornita attraverso l’aggiunta di una nuova opzione (Opzione 64) all’istruzione TableFile() che permette di creare più di un file di dati di archiviazione finale dalla stessa tabella dati. In questo modo è possibile creare molti piccoli file dalla stessa tabella dati, consentendo così fino a 16 GB di archiviazione dei dati finali da una sola tabella dati.

Quindi, prima di OS 25, solo l’istruzione CardOut() era disponibile per memorizzare i dati su una scheda, e solo un file poteva essere creato per ogni tabella dati. Tuttavia, con OS 25 e successivi, l’opzione TableFile() 64 è disponibile anche per memorizzare più di un file per una data tabella dati su una scheda.
Un metodo di scrittura dei dati su una carta è migliore dell’altro?

Un vantaggio dell’istruzione CardOut() è che è molto semplice da aggiungere al programma. Ulteriori informazioni sull’istruzione CardOut() sono disponibili nei file di aiuto di CRBasic Editor.

In molte applicazioni, tuttavia, l’istruzione TableFile() con l’opzione 64 ha diversi vantaggi rispetto all’istruzione CardOut(). Questi vantaggi includono:

Permettere la scrittura di più file di piccole dimensioni dalla stessa tabella di dati, in modo che la memoria per una singola tabella possa superare i 2 GB. L’istruzione TableFile() controlla la dimensione dei suoi file di output attraverso i parametri NumRecs, TimeIntoInterval e Interval.
Tempi di compilazione più rapidi quando sono specificate piccole dimensioni di file
Facile recupero dei file chiusi tramite l’utilità File Control, FTP o e-mail
I file chiusi sono file sicuri. Ogni volta che un file è aperto per la scrittura, può diventare corrotto se si verifica una perdita di potenza o se la scrittura è interrotta per qualsiasi motivo. L’opzione 64 di TableFile() chiude i file all’ora programmata o all’intervallo di registrazione. Una volta chiusi, questi file sono al sicuro da questo tipo di corruzione.

Raccolta e accesso ai dati

I file CardOut() sono aperti per la scrittura finché l’istruzione CardOut() è in esecuzione e sono, quindi, sempre disponibili per la raccolta dati remota. Con l’opzione TableFile() 64, il file più recente è aperto e disponibile per la raccolta remota. Dopo che un file è stato chiuso, si può accedere ai dati solo recuperando prima il file (per esempio, tramite l’Utilità di controllo dei file, FTP, e-mail o, copiando i file dalla scheda).

Sia per le istruzioni CardOut() che TableFile() Opzione 64, i file aperti sulla scheda diventano un’estensione della memoria della tabella. Ogni volta che i dati vengono recuperati tramite le utility Collect o Custom Collect di LoggerNet, PC400, o RTDAQ, viene cercata prima la SRAM interna, poi la scheda. Se sulla scheda viene trovato un file con lo stesso nome e l’intestazione del file della tabella dati nella memoria interna, i dati della scheda vengono aggiunti a quel file.

Nota: per essere considerato identico, il file deve essere stato creato sullo stesso data logger utilizzando lo stesso programma.

È possibile visualizzare i dati della scheda di memoria utilizzando il software di supporto del data logger, come l’applicazione client View Pro nel pacchetto software LoggerNet. È inoltre possibile accedere ai dati della scheda di memoria attraverso il programma data logger utilizzando la sintassi di accesso alla tabella dati come TableName.FieldName. (Fare riferimento al file di aiuto di CRBasic Editor).