Accueil > Forum > contrôleurs SlimLine e Netsyst (LogicLab) > Comment utiliser la SDCard pour enregistrer les fichiers journaux
- Ce sujet a 19 réponses, 10 participants et a été mis à jour pour la dernière fois 4 années, 11 mois da Sergio Bertana.
-
auteurPost
-
Août 4, 2011 à 8: 44 am #35074AnonymeInvité
Je viens de mettre à jour le firmware sur le module CPU SlimLine avec la nouvelle version prenant en charge le système de fichiers. J'essaie de créer un programme simple qui enregistre les données dans un fichier journal SDCard, mais je n'arrive pas à le faire fonctionner. Pouvez-vous me donner quelques informations?
Août 4, 2011 à 8: 46 am #36879Sergio BertanaAdministrateur du forumLe système d'exploitation du SlimLine à partir de la version SFW167C100 (pour la mise à jour, voir QFP), prend en charge le système de fichiers. Deux répertoires sont gérés Stockage (A partir de 100 Kb) situé sur la mémoire EEPROM présente sur le module CPU, SDCard (Max 512 Mo) présent sur la carte SD qui doit être insérée dans le module CPU. Pour accéder aux répertoires il faut effectuer le formatage, commande Format par Telnet. Pour la liste complète des commandes Telnet, reportez-vous à manuel de référence, les informations de connexion par défaut pour Telnet et Ftp pour l'administrateur sont Nom d'utilisateur: Administrateur, Mot de passe AdministrateurConformément à la commande Format, il est nécessaire de définir le nombre de fichiers acceptés pour chaque répertoire, jusqu'à un maximum de 12 fichiers au total. Le premier paramètre fait référence aux fichiers dans le stockage, le second aux fichiers dans la carte SD (s'il n'est pas présent, insérez 0). Exemple, pour avoir 2 fichiers sur le stockage et 4 sur SDCard nous donnerons la commande Format 2, 4, si la commande est exécutée correctement, elle renverra le message Formater Ok, Stockage: Fichiers 2, SDCard: Fichiers 4En vous connectant au SlimLine avec un client FTP (exemple Filezilla), il sera possible de visualiser l'arborescence des répertoires et d'accéder en lecture et écriture, création, suppression, édition des fichiers qu'ils contiennent (voir capture d'écran).
Août 4, 2011 à 10: 16 am #36880Sergio BertanaAdministrateur du forumEn ce qui concerne votre besoin d'écrire un fichier journal sur SDCard, j'ai créé un simple programme LogicLab (Télécharger) qui enregistre un fichier nommé CLog.txt, avec 50 enregistrements de journal de la valeur de tension acquise à partir d'une entrée analogique.
Le fichier contient des enregistrements enregistrés au format CSV afin d'être facilement importés dans Excel, chaque enregistrement contient 5 champs séparés par ";" (Exemple: 01;12;12;03;01.8;). Le 1er champ est un enregistrement progressif de 0 à 49. Le 2e, 3e, 4e champ indique l'heure, les minutes, les secondes de l'enregistrement. Le 5ème champ montre la valeur de tension acquise en volts.
L'écriture de l'enregistrement du journal est effectuée par ce programme en ST (liste), qui "remplit" le tableau LogRecord avec une chaîne ascii log (5 champs séparés par ";"). La fonction SysVarsnprintf écrit la valeur suivie du code de terminaison "0", puis il faut commencer à écrire la valeur suivante à la position du tableau où l'écriture précédente a placé le code de terminaison.
Terminé l'enregistrement du journal, avec la fonction Sysfseek, le positionnement est effectué sur le fichier en position d'écriture, et avec la fonction Sysfwrite l'écriture est faite.
June 25, 2012 à 10: 32 am #37297MichelePartecipanteUo un SlimLine et je voudrais utiliser la SDCARD comme enregistreur de données, j'ai vu sur ce sujet que nous parlons de carte SD max 512MB. Cette limite est-elle due à l'utilisation de la carte SD comme flash SPI ou puis-je également utiliser une carte SD d'une taille supérieure à 512?
Merci comme toujours pour le précieux soutien de ce forum et félicitations pour la gestion efficace de la même chose.
June 25, 2012 à 11: 58 am #37298Sergio BertanaAdministrateur du forumGestion du système de fichiers sur le module CPU SlimLine ARM7 est limité, donc une limite a été imposée sur la taille maximale de la carte SD qui peut être gérée. Des cartes SD d'une taille maximale de 2 Go peuvent être utilisées mais dans tous les cas, la taille maximale de la zone mémoire gérée par le système de fichiers est de 512 Mo.
Septembre 9, 2014 à 2: pm 02 #38407oscarPartecipanteMerci pour le conseil, j'ai essayé de suivre ces étapes mais j'ai rencontré les problèmes suivants. J'ai exécuté la commande Format 4, 0 comme indiqué dans ce message, mais j'ai reçu un message d'erreur, puis j'ai couru la commande Format de stockage, 4 comme Manuel de commande Telnet à travers Toolly. J'ai lu la commande Stockage de Dir:
Répertoire de "Stockage"
Espace pour le (s) fichier (s) 4 de 67254 chaque octetJ'ai ensuite essayé de me connecter avec FileZilla, configuré selon les paramètres que vous suggérez, la connexion est correctement établie avec le serveur, mais en réponse j'obtiens le message que l'automate n'a pas de dossier à rendre disponible. Avec l'explorateur, le ftp reste "suspendu" sans réponses. J'ai envoyé le programme proposé, en modifiant
IF (SysClock1000 = Pulse) ALORS RETOUR; END_IF;
Pulse: = SysClock1000; (* Impulsion de base de temps *)
Fp: = Sysfopen ('Stockage / CLog.txt', 'a'); (* Ouvrez le fichier en mode «ajouter». *)In
Heure: = SysTime;
WHILE SysTime - Heure <60000 DO END_WHILE; (* pour écrire une ligne dans le journal toutes les minutes *)
Fp: = Sysfopen ('Stockage / CLog.txt', 'a'); (* Pointeur de fichier *)Le reste reste inchangé. L'écriture 'Storage / CLog.txt', 'a' apparaît en rouge dans l'éditeur ST. J'exécute le programme dans la tâche Back, dans la tâche lente, j'ai d'autres programmes qui fonctionnent correctement.
À ce stade, l'automate se fige, l'état passe à NOT RUN, j'ai essayé d'envoyer un programme qui fonctionnait auparavant mais la connexion USB a été perdue. J'ai éteint et remis sous tension l'automate, la LED RUN commence à clignoter avec une séquence fixe. Après une série de tentatives de redémarrage et d'envoi de programmes, j'ai pu le redémarrer avec un ancien programme. Je me suis arrêté ici.
Se pourrait-il que l'espace dans lequel déposer le fichier ne soit pas correctement disponible? Pouvez-vous me dire ce que j'ai pu faire de mal?
Septembre 9, 2014 à 2: pm 45 #38408Sergio BertanaAdministrateur du forumEssayons de répondre à vos problèmes dans l'ordre. La commande Format d'une certaine version du système d'exploitation a été modifiée, vous devez maintenant indiquer le répertoire que vous souhaitez formater et le nombre de fichiers que vous souhaitez laisser l'espace. Donc votre commande Format de stockage, 4 formater le répertoire de stockage pour contenir les fichiers 4 qui diviseront l'espace disponible (tel que rapporté par la commande DirJe ne comprends pas pourquoi le client FTP ne se connecte pas, vous ne me dites pas quel système d'exploitation vous utilisez, avec Total Commander et avec l'explorateur Windows 7 que j'utilise habituellement je n'ai jamais eu de problèmes (Sujet) vérifiez éventuellement si vous disposez de la dernière version du système d'exploitation. L'erreur que vous avez commise est très grave… vous ne pouvez jamais arrêter un programme automate en boucle fermée. WHILE (SysTime-Time) <60000 DO END_WHILE; Ceci fait intervenir le chien de garde du système et réinitialise l'exécution qui se referme dans la boucle infinie et est réinitialisée à nouveau. Cela bloque toutes les ressources système, y compris les communications (Sujet). Comment en sortir… après un certain nombre de redémarrages, le système s'arrête en veille et il est donc à nouveau possible de reprendre la connexion et de charger un nouveau programme.
Septembre 9, 2014 à 4: pm 30 #38409Sergio BertanaAdministrateur du forumComment résoudre correctement le timing, dans le forum, vous trouverez d'innombrables exemples d'utilisation de l'heure système, voici comment vous pouvez le faire.
SI ((SysGetSysTime (TRUE) -Time)> 60000000) ALORS
Heure: = SysGetSysTime (TRUE); (* Tampon temporel (uS) *)
Fp: = Sysfopen ('Stockage / CLog.txt', 'a'); (* Ouvrez le fichier en mode «ajouter». *)… Autres instructions de programme
END_IF;Note: la variable Temps doit être de type UDINT.
Octobre 7, 2014 à 9: pm 03 #38452LuisPartecipanteBonjour, je voulais faire un enregistreur de données avec un automate SlimLine pour enregistrer les valeurs de 4 entrées analogiques toutes les 10 secondes au format CSV avec la date (année, mois, jour, heure, minute, seconde) et créer un fichier pour chaque jour. J'ai besoin d'un peu d'aide.
Octobre 8, 2014 à 8: 24 am #38453Sergio BertanaAdministrateur du forumSi vous téléchargez le programme que vous trouvez dans l'un des articles de ce sujet, vous avez déjà un bon point de départ. Cependant, à partir du programme de l'article précédent, j'ai préparé un programme qui réalise ce dont vous avez besoin, voici l'impression du programme WriteLog.
Comme vous pouvez le voir, j'ai défini un tableau de chaînes pour la définition des jours hebdomadaires, il est donc possible d'écrire un fichier CSV pour chaque jour (le fichier aura le nom du jour). Lorsque le jour est modifié, le fichier du même jour est supprimé (c'est le fichier de la semaine précédente) et un nouveau fichier du jour est créé avec les nouvelles données. Cela vous donne une semaine pour télécharger par FTP les fichiers journaux stockés.
J'ai créé l'enregistrement du journal au format 2014-10-08 09:25:58;02.8;02.8;02.8;02.8, comme vous pouvez le voir, le champ date / heure est suivi des 4 valeurs analogiques. Dans mon exemple, j'effectue une seule acquisition analogique pour les 4 canaux mais je vous laisse faire les 4 acquisitions et les ramener dans le disque.
Je pense qu'avec cet exemple de l'exemple précédent, vous disposez de toutes les informations pour créer votre DataLogger. Voici la programme source.
Octobre 25, 2014 à 6: 34 am #38476AnonymeinactifL'exemple présenté dans le post précédent correspond très bien au problème auquel je dois faire face, la seule objection est que je souhaite stocker des données pendant une période supérieure à une semaine. Dans l'un des articles précédents, j'ai lu ça SlimLine peut gérer jusqu'à 512 Mo de mémoire sur SDCard avec jusqu'à 64 fichiers.
Devoir stocker un fichier journal composé de 7 valeurs REAL (5 signaux 4-20mA et 2 valeurs lues par protocole Modbus) plus le champ de données au format CSV, combien d'espace en termes de mémoire occupe chaque enregistrement à historiser?
En supposant stocker un enregistrement toutes les 10 secondes, serait-il possible de créer des fichiers avec les valeurs d'une semaine entière (ou même d'un mois) et pas seulement pour un seul jour comme dans l'exemple?
Une autre possibilité de voir ça SlimLine est accessible via le client FTP, il serait possible de programmer un programme sur un PC qui lit automatiquement les fichiers journaux depuis le SlimLine et les sauvegarder sur un serveur, augmentant ainsi considérablement la possibilité de se connecter?
Octobre 25, 2014 à 7: 23 am #38477Sergio BertanaAdministrateur du forumJ'ai supposé un enregistrement de journal avec les données dont vous avez besoin (date / heure; 7 valeurs REAL), l'enregistrement est du type:
25/10/2014 00:00:00;120.5;75.8;1200.0;145.76;1560.6;456.8;985.75
Comme vous pouvez le voir, il y a 64 octets que nous arrondissons à 70. En considérant un journal toutes les 10 secondes, nous aurons 360 enregistrements / heure (égal à 25 Ko). Même en supposant un journal continu 24 heures sur 24 et 31 jours par mois, nous aurons 267840 enregistrements chaque mois avec une quantité de données égale à 18 Mo. En formatant la SDCard pour contenir les 12 mois, nous aurons 44 Mo de données disponibles pour chaque fichier comme indiqué par la commande:
Format SDCard 12
Es-tu sûr? (Y, n)
Format Ok, Fichiers: 12, FSize: 44738688, Heure: 54.290 (mS)En ce qui concerne la solution que vous proposez de lire à partir d’un PC via une connexion FTP, les fichiers de SlimLine, Je dirais que c'est une excellente solution pour assurer une sauvegarde efficace des données dans le stockage d'entreprise. Si vous optez pour cette solution, je garderais les fichiers sur SlimLine plus petit (je ferais donc un stockage quotidien) et le serveur central peut télécharger chaque jour le fichier de la veille ayant SlimLine un poumon de 7 jours.
Mars 22, 2016 à 4: pm 17 #39475AlbertoPartecipanteAprès avoir inséré la SDCard dans l'automate, je l'ai formatée directement sur l'automate avec les procédures illustrées et je l'ai utilisée pour écrire des fichiers de données, tout va bien.
Mais maintenant, je voudrais copier les fichiers sur un PC mais inséré dans le lecteur, il est vide, en pratique le PC ne voit pas les fichiers stockés. Qu'ai-je oublié? Les fichiers sont sûrement présents sur la carte SD.
Mars 23, 2016 à 8: 24 am #39476Sergio BertanaAdministrateur du forumVous avez tout fait correctement SlimLine pour garantir la non-corruption des données lorsque le système est soudainement arrêté, il utilise un système de fichiers propriétaire qui n'est pas reconnu par le PC.
Donc, pour transférer des données de la carte SD vers le PC et / ou vice versa, vous devez utiliser un client FTP (Sujet) vous pouvez également utiliser l'Explorateur Windows (Capture d'écran).
Juin 17, 2016 à 8: pm 05 #39633AntonioPartecipanteAvoir mis à niveau un ancien processeur slimline modèle A à la dernière version du firmware (167) disponible J'ai complètement perdu le dossier System que je ne peux en aucun cas ajouter (en FTP avec filezilla avec gestion des ressources, etc.) il me donne toujours accès refusé ou opération non autorisée.
Aussi me connecter avec Toolly et essayer de formater (même les deux seuls dossiers présents Stockage et SDCard) me donne un mauvais paramètre (clairement la commande n'est pas mauvaise).
Existe-t-il un moyen de restaurer l'intégralité du système de fichiers?
-
auteurPost
- Vous devez être connecté pour répondre à ce sujet.