Voici comment les cartes mémoire enregistrent-elles les données
Vous avez peut-être identifié le besoin d’ajouter à votre data logger un stockage de données externe avec des cartes mémoire flash. Mais savez-vous quelle instruction CRBasic utiliser pour cela ? Dans cet article, je vais vous aider à choisir l’instruction la plus adaptée à votre application.
Comment les cartes mémoire enregistrent-elles les données ?
Deux instructions CRBasic sont généralement utilisées pour demander au data logger d’écrire les données de stockage finales sur une carte mémoire :
L’instruction CardOut()
Le TableFile() avec l’introduction de l’option 64.
Ces instructions sont ajoutées entre les instructions DataTable() et EndTable(), comme le montrent les exemples présentés plus loin dans cet article. Notez qu’il n’est pas possible d’utiliser à la fois l’option CardOut() et TableFile() 64 dans la même table de données. Vous devez choisir l’instruction qui correspond le mieux à vos besoins. Alors pourquoi existe-t-il deux instructions pour le stockage des données sur une carte ? Une méthode est-elle meilleure que l’autre ?
Avant de répondre à ces questions, il est important de comprendre que la taille maximale d’un fichier stocké sur un data logger est de 2 Go. En effet, le data logger prend en charge de manière native les entiers 4-byte signés. Ce type de données peut représenter un nombre aussi grand que 231, ou en termes d’octets, environ 2 Go. Ainsi, 2 Go est la longueur maximale de fichier qui peut être représentée dans la table de directory du data logger et, par conséquent, c’est sa taille maximale de fichier.
En partie à cause de cette limitation de la taille des fichiers, et aussi à cause du coût élevé des grandes cartes mémoire, les data loggers de Campbell Scientific ne supportaient pas les cartes mémoire de plus de 2 Go avant le système d’exploitation (OS) 25 dans les CR1000 ou CR3000. Toutefois, la demande de données à haute fréquence et l’augmentation de la capacité de stockage des données ayant augmenté, la prise en charge de cartes jusqu’à 16 Go a été ajoutée au système d’exploitation du data logger.
La prise en charge des cartes de plus de 2 Go a posé un problème. Comment peut-on écrire plus de 2 Go de données sur une carte si la taille maximale d’un fichier de stockage final est de 2 Go ? La solution a été apportée en ajoutant une nouvelle option (Option 64) à l’instruction TableFile(), qui permet de créer plus d’un fichier de données de stockage final à partir de la même table de données. Il est ainsi possible de créer de nombreux petits fichiers à partir d’une même table de données, ce qui permet de stocker jusqu’à 16 Go de données finales à partir d’une seule table de données.
Ainsi, avant OS 25, seule l’instruction CardOut() était disponible pour stocker des données sur une carte, et un seul fichier pouvait être créé par table de données. Toutefois, à partir de l’OS 25, l’option TableFile() 64 est également disponible pour stocker plus d’un fichier pour une table de données donnée sur une carte.
Une méthode d’écriture de données sur une carte est-elle meilleure que l’autre ?
Un avantage de l’instruction CardOut() est qu’elle est très facile à ajouter au programme. Vous trouverez de plus amples informations sur l’instruction CardOut() dans les fichiers d’aide du CRBasic Editor.
Dans de nombreuses applications, cependant, l’instruction TableFile() avec l’option 64 présente plusieurs avantages par rapport à l’instruction CardOut(). Ces avantages sont les suivants :
La possibilité d’écrire plusieurs petits fichiers à partir de la même table de données, de sorte que la mémoire d’une seule table peut dépasser 2 Go. L’instruction TableFile() contrôle la taille de ses fichiers de sortie grâce aux paramètres NumRecs, TimeIntoInterval et Interval.
Des temps de compilation plus rapides lorsque des fichiers de petite taille sont spécifiés.
Récupération facile des fichiers fermés via l’utilitaire de contrôle des fichiers, le FTP ou le courrier électronique.
Les dossiers fermés sont des dossiers sûrs. Lorsqu’un fichier est ouvert à l’écriture, il peut être corrompu en cas de coupure de courant ou d’interruption de l’écriture pour une raison quelconque. L’option TableFile() 64 ferme les fichiers à l’heure prévue ou à l’intervalle d’enregistrement. Une fois fermés, ces fichiers sont à l’abri de ce type de corruption.
Collecte et accès aux données
Les fichiers CardOut() sont ouverts à l’écriture tant que l’instruction CardOut() est exécutée et sont donc toujours disponibles pour la collecte de données à distance. Avec l’option TableFile() 64, le fichier le plus récent est ouvert et disponible pour une collecte à distance. Après la fermeture d’un fichier, il n’est possible d’accéder aux données qu’en récupérant d’abord le fichier (par exemple, via l’utilitaire de contrôle des fichiers, le FTP, l’e-févrierl ou la copie des fichiers de la carte).
Pour les instructions CardOut() et TableFile() Option 64, les fichiers ouverts sur la carte deviennent une extension de la mémoire de la table. Chaque fois que des données sont récupérées via les utilitaires Collect ou Custom Collect de LoggerNet, PC400 ou RTDAQ, la SRAM interne est recherchée en premier, puis la carte. Si un fichier portant le même nom et le même en-tête que le fichier de la table de données de la mémoire interne est trouvé sur la carte, les données de la carte sont ajoutées à ce fichier.
Remarque : pour être considéré comme identique, le fichier doit avoir été créé sur le même data logger en utilisant le même programme.
Les données de la carte mémoire peuvent être visualisées à l’aide du logiciel de support du data logger, tel que l’application client View Pro du progiciel LoggerNet. Il est également possible d’accéder aux données de la carte mémoire par le biais du programme du data logger en utilisant une syntaxe d’accès aux tables de données telle que TableName.FieldName. (Veuillez vous référer au fichier d’aide de l’éditeur CRBasic).