par Carolyn Ivans | Mis à jour le : 06/22/2016 | Commentaires : 7
Vous avez besoin d'ajouter de la mémoire externe pour vos données, à votre centrale de mesure en utilisant des cartes mémoire flash. Mais connaissez-vous l'instruction CRBasic à utiliser pour le faire ? Dans cet article, je vais vous aider à choisir l'instruction la plus adaptée à votre application. Dans un prochain article, je discuterais de certaines questions plus complexes et vous donnerez des conseils et des astuces.
Si vous n'êtes pas familier avec les cartes mémoire, vous trouverez peut-être utile de relire l'article du blog "Pourquoi utiliser et comment choisir une carte mémoire".
Il y a deux instructions de base qui sont couramment utilisésafin d'écrire les données des tables d'une centrale de mesure sur une carte mémoire :
Ces instructions sont ajoutées entre les instructions DataTable()et EndTable(), comme cela est indiqué dans les exemples plus loin dans cet article. Notez que vous ne pouvez pas utiliser à la fois CardOut() and TableFile() Option 64 dans la même table de données. Vous devez choisir quelle instruction est le mieux pour vous. Alors, pourquoi y a t-il deux instructions pour stocker des données sur une carte ? Y-at-il une méthode meilleure que l'autre?
Avant de répondre à ces questions, il est important de comprendre que la taille maximale d'un fichier stocké sur une centrale de mesure est de 2 Go. En effet, le datalogger supporte nativement des entiers signés de 4 octets. Ce type de données peut représenter un nombre aussi grand que 231, ou en termes d'octets, soit environ 2 Go. Par conséquent, 2 Go est la longueur maximale de fichier, qui peut être représenté dans la table de répertoire de la centrale de mesure, et par conséquent, qui est la taille maximale du fichier.
Partially because of this file size limitation, and also due to the high cost of large memory cards, Campbell Scientific dataloggers did not support memory cards larger than 2 GB prior to operating system (OS) 25 in the CR1000 or CR3000. However, as demands for high-frequency data and greater data storage grew, support for cards up to 16 GB was added to the datalogger operating system.
Le support pour les cartes de plus de 2 Go présenté une énigme. Comment pouvons-nous écrire plus de 2 Go de données sur une carte si la taille maximale d'un fichier final de stockage est de 2 Go ? La solution a été fournie par l'ajout d'une nouvelle option (Option 64) à l'instruction TableFile(), qui permet de stocker plus de fichier à partir du même tableau de données. Par conséquent, de nombreux petits fichiers peuvent être créés à partir de la même table de données, permettant ainsi le stockage final jusqu'à 16 Go de données d'un tableau de données.
Donc, avant OS 25, seule l'instruction CardOut() était disponible pour stocker des données sur une carte, et un seul fichier peut être créé pour chaque table de données. Cependant, avec OS 25 et plus tard, TableFile() Option 64 est également disponible pour stocker plus d'un fichier pour une table de données sur une carte.
Un avantage de l'instruction CardOut() est qu'il est très simple de l'ajouter à votre programme. Plus d'informations sur l'instruction CardOut() sont disponibles dans les fichiers d'aide éditeur CRBasic.
Dans de nombreuses applications, cependant, l'instruction TableFile() avec l'Option 64 présente plusieurs avantages par rapport à l'instruction CardOut(). Ces avantages comprennent :
Public batt_volt
DataTable (Test,1,1000)
DataInterval (0,15,Sec,10)
CardOut (0,-1)
Sample (1,batt_volt,FP2)
EndTable
BeginProg
Scan (1,Sec,0,0)
Battery (batt_volt)
CallTable Test
NextScan
EndProg
Public batt_volt, OutStat As Boolean, LastFileName As String * 32
DataTable (Test,1,1000)
DataInterval (0,15,Sec,10)
TableFile ("CRD:Test_",8,10,0,1,Min,OutStat,LastFileName)
Sample (1,batt_volt,FP2)
EndTable
BeginProg
Scan (1,Sec,0,0)
Battery (batt_volt)
CallTable Test
NextScan
EndProg
Recommandé pour vous : Pour en apprendre d'avantage sur l'instruction TableFile() avec l'Option 64, consulter “la note technique ''A Better Way to Write High-Frequency Data to 16 GB and Smaller CF Cards”. |
Les fichiers CardOut() sont ouverts pour l'écriture aussi longtemps que l'instruction CardOut() est en cours d'exécution et sont donc toujours disponibles pour la collecte de données à distance. Avec TableFile() Option 64, le fichier le plus récent est ouvert et disponible pour la collecte à distance. Aprèsle fichier est fermé, les données ne sont accessibles que par la première récupération du fichier (par exemple, via le fichier utilitaire de contrôle, FTP, e-mail ou copie des fichiers de la carte).
Pour les deux instructions CardOut() et TableFile() Option 64, les fichiers ouverts sur la carte deviennent une extension de la mémoire de la table. A n'importe quel moment toutes les données sont récupérées via l'utilitaire Collect ou Custom Collect de LoggerNet, PC400 ou RTDAQ, la SRAM interne est recherchée d'abord, puis la carte. Si un fichier se trouve sur la carte avec le même nom et le fichier en-tête que la table de données dans la mémoire interne, les données de la carte sont ajoutées à ce fichier.
Note: Pour être considérés comme identiques, le fichier doit avoir été créé sur la même centrale de mesure en utilisant le même programme.
Recommandé pour vous : Pour de plus amples informations, Lire l'article du blog "How to Programmatically Access Stored Data Values". |
J'espère que cet article vous a aidé à comprendre combien il est facile d'ajouter une instruction CardOut() ou TableFile() à un programme CRBasic qui dirigera votre enregistreur pour stocker des données sur une carte mémoire. (Pour plus de détails sur chacune de ces instructions, consultez les fichiers d'aide de l'éditeur CRBasic.) Dans un prochain article, je vais répondre à certaines questions sur les cartes plus complexes et vous donner des conseils.
Si vous avez des questions sur les cartes mémoire, n'hésitez pas à les poster ci-dessous.
Commentaires
ReadyDAQ | 07/29/2016 at 10:59 PM
Great tips.Learned a lot from this blog about data logger software.Thanks for sharing.
flipper66 | 04/11/2017 at 02:08 PM
Is there any way to programatically determine the amount of free space on a CARD ?
Carolyn | 04/11/2017 at 03:09 PM
Yes there is, using Tablename.Fieldname syntax to read CardBytesFree from the Status Table, as shown below:
Public Card_Bytes_Free as Long 'declare a variable to store the card bytes free
BeginProg
Scan (1,Sec,0,0)
Card_Bytes_Free = Status.CardBytesFree 'read the card bytes free from the Status Table
Nikki | 04/17/2018 at 07:34 AM
Thank you for the explanantion!
Is it true that u can store a maximum of 30 data tables on a microSD card? (CR6-datalogger)
Carolyn | 04/20/2018 at 05:02 PM
You can store many more than thirty files on a micro SD card. The number of files is limited by the amount of memory available on the card, not the number of tables.
Pascal | 01/17/2023 at 12:03 PM
Hi
I write two data tables "System" und "Sensors" with CardOut() to a 2GB SD Card.
When i check the "Table Fill Times" I see 4 Tables System + CRD:System and Sensors + CRD:Sensors. The Sensors for example will last 19 Days and the CRD:Sensors will last about 10000 days. Do I get it right that the Sensor Table Data will be transfered (after 19 days ?) to the CRD:Sensors Table on the card wich is actualy the extension of the Sensor Table on the logger memory?
At least this is what I get out of this Article. Is that correct?
Thank You.
Carolyn | 01/17/2023 at 05:32 PM
Thanks for your question. When CardOut() is used to stored data to a card, data are copied directly from the CPU to the card in ~ 1Kb blocks. The amount of time it takes to generate 1 Kb of data depends on the number of values being written to the data table each time a record is written, the data types of those values (low resolution, or high resolution) and how frequently data are written to the table. Table Fill Times indicates the point in time where data on the card will begin to ring. In otherwords, if Table Fill Times indicates a table will fill in 19 days, that means that in ~ 19 days, the oldest records stored on the card will start being overwritten by new records. For the best technical support, please visit https://www.campbellsci.com/support for additional information.
Please log in or register to comment.