DevIOArchivesCSV
Introduction
DevIOArchivesCSV est un module d'archive qui permet l'export des données historiques DevIO au format CSV (Comma-Separated Values). Ce module génère des fichiers CSV configurables avec en-têtes personnalisables, formatage des données par type, et gestion flexible des fichiers de sortie (quotidiens, par session, ou par nombre d'enregistrements).
Le module offre une solution simple et universelle pour l'export de données DevIO vers des outils d'analyse, tableurs (Excel, LibreOffice), ou systèmes tiers compatibles CSV.
Architecture et fonctionnement
Composants principaux
- Thread d'archivage : Collecte périodique des données DevIO
- Mutex de synchronisation : Protection des accès concurrents aux données
- Gestionnaire de fichiers : Création et rotation des fichiers CSV
- Formatage des types : Conversion des types DevIO vers format CSV
- Configuration INI : Paramètres et liste des variables à archiver
Processus d'archivage
- Initialisation : Lecture du fichier
DevIOArchivesCSV.ini - Collecte : Réception des données DevIO via l'API d'archivage
- Mise en tampon : Stockage temporaire avec synchronisation mutex
- Écriture périodique : Export CSV selon la période configurée
- Rotation des fichiers : Gestion quotidienne ou par nombre d'enregistrements
- Formatage : Conversion des types de données avec options personnalisées
Gestion des fichiers
Fichiers quotidiens (-DAILY)
- Un fichier par jour :
CSV20241201.csv - Rotation automatique à minuit
- En-tête ajouté uniquement au nouveau fichier
Fichiers par session
- Un fichier par démarrage :
CSV20241201143052.csv - Horodatage complet (AAAAMMJJHHMMSS)
- Pas de limite de taille
Fichiers par nombre d'enregistrements
- Rotation selon le nombre de lignes configuré
- Fichiers numérotés séquentiellement
- Gestion automatique des en-têtes
Configuration
Fichier DevIOArchivesCSV.ini
Le module utilise un fichier de configuration INI situé dans le répertoire DevIO.
Structure du fichier
Arguments: -PERIOD 60 -FOLDER "C:\DevIO\Archives" -HEAD -DAILY -LOG -STATE -SEPCOMMA -DATE 1 -TIME 1
-M Temperature -H "Température (°C)" -D 2 -T "Chaud" -F "Froid"
-M Pressure -H "Pression (bar)" -D 3
-M FlowRate -H "Débit (m³/h)" -D 1
-M Status -H "État" -T "Actif" -F "Inactif"
-M Counter -H "Compteur"
Arguments de configuration
Arguments globaux
| Argument | Description | Exemple | Valeur par défaut |
|---|---|---|---|
-PERIOD |
Période d'archivage en secondes | -PERIOD 60 |
5 |
-FOLDER |
Répertoire de stockage des fichiers CSV | -FOLDER "C:\Archives" |
%DevIO%\History |
-HEAD |
Génération d'en-têtes de colonnes | -HEAD |
Non activé |
-DAILY |
Fichiers quotidiens (optionnel: heure de rotation) | -DAILY ou -DAILY 6 |
Non activé |
-LOG |
Journalisation détaillée | -LOG |
Non activé |
-STATE |
Inclusion des états des données | -STATE |
Non activé |
-SEPCOMMA |
Utiliser la virgule comme séparateur décimal | -SEPCOMMA |
Point (.) |
-DATE |
Format de date (0=aucune, 1=incluse) | -DATE 1 |
0 |
-TIME |
Format d'heure (0=aucune, 1=incluse) | -TIME 1 |
0 |
Arguments par variable (-M)
| Argument | Description | Exemple | Obligatoire |
|---|---|---|---|
-M |
Nom de la variable DevIO | -M Temperature |
Oui |
-H |
En-tête personnalisé de colonne | -H "Température (°C)" |
Non |
-D |
Nombre de décimales pour les réels | -D 2 |
Non (auto) |
-T |
Texte pour valeur booléenne TRUE | -T "Actif" |
Non |
-F |
Texte pour valeur booléenne FALSE | -F "Inactif" |
Non |
Exemples de configuration
Configuration basique
Arguments: -PERIOD 300 -FOLDER "C:\DevIO\CSV" -HEAD -DAILY -LOG
-M Temp_01 -H "Température capteur 1" -D 1
-M Temp_02 -H "Température capteur 2" -D 1
-M Pressure -H "Pression" -D 2
-M Status -H "État système" -T "OK" -F "Défaut"
Configuration avancée
Arguments: -PERIOD 60 -FOLDER "\\server\archives\devio" -HEAD -DAILY 6 -LOG -STATE -SEPCOMMA -DATE 1 -TIME 1
-M Temperature_Amb -H "T° Ambiante (°C)" -D 2 -T "Chaud" -F "Froid"
-M Temperature_Eau -H "T° Eau (°C)" -D 2
-M Pression_Reseau -H "P Réseau (bar)" -D 3
-M Debit_Principal -H "Débit (m³/h)" -D 1
-M Compteur_Volume -H "Volume total (m³)" -D 0
-M Alarme_Generale -H "Alarme" -T "ALARME" -F "OK"
-M Mode_Fonct -H "Mode" -T "AUTO" -F "MANUEL"
Configuration pour analyse Excel
Arguments: -PERIOD 900 -FOLDER "C:\Users\Operator\Desktop\DevIO_Export" -HEAD -SEPCOMMA -DATE 1 -TIME 1
-M Production_Rate -H "Taux de production (%)" -D 1
-M Energy_Consumption -H "Consommation (kWh)" -D 2
-M Quality_Index -H "Indice qualité" -D 0
-M Downtime_Minutes -H "Arrêt (min)" -D 0
-M Operator_Count -H "Nb opérateurs"
Formats de données supportés
Types numériques
| Type DevIO | Format CSV | Exemple | Décimales |
|---|---|---|---|
BOOL |
Texte ou 0/1 | "Actif" / "Inactif" |
Non |
BYTE |
Entier 0-255 | 142 |
Configurable |
CHAR |
Entier signé | -25 |
Configurable |
SHORT |
Entier 16 bits | 1250 |
Configurable |
INT |
Entier 32 bits | 125000 |
Configurable |
LONG |
Entier 64 bits | 9876543210 |
Configurable |
FLOAT |
Réel simple précision | 25.67 |
Configurable |
DOUBLE |
Réel double précision | 123.456789 |
Configurable |
STRING |
Chaîne de caractères | "État normal" |
Non applicable |
Gestion des décimales
- Automatique : Selon le type de données
- Configurable : Paramètre
-D(0 à 15 décimales) - Séparateur décimal : Point (
.) ou virgule (,) selon-SEPCOMMA
États des données
Avec l'option -STATE, chaque valeur peut inclure son état :
- DEVIO_OK : Donnée valide
- Erreur de communication : Valeur précédente ou vide
- Hors limites : Indication de dépassement
- Non initialisée : Première lecture
Structure des fichiers CSV générés
Format avec en-têtes
Date;Heure;Température (°C);Pression (bar);État;Débit (m³/h)
2024-12-01;14:30:00;25,67;3,456;Actif;125,8
2024-12-01;14:35:00;26,12;3,445;Actif;127,2
2024-12-01;14:40:00;25,89;3,467;Inactif;0,0
Format sans en-têtes
2024-12-01;14:30:00;25,67;3,456;1;125,8
2024-12-01;14:35:00;26,12;3,445;1;127,2
2024-12-01;14:40:00;25,89;3,467;0;0,0
Format minimal (valeurs seules)
25,67;3,456;1;125,8
26,12;3,445;1;127,2
25,89;3,467;0;0,0
Configuration via DevIO Studio
1. Activation du module
- Ouvrir le projet avec DevIO Studio
- Aller dans Configuration → Archives
- Ajouter une nouvelle archive de type CSV
- Configurer les paramètres de base
2. Paramètres de base
Nom de l'archive : CSV_Export
Type : DevIOArchivesCSV
Période : 300 secondes
Répertoire : C:\DevIO\Archives\CSV
En-têtes : Activé
Fichiers quotidiens : Activé
3. Configuration des variables
Dans le fichier DevIOArchivesCSV.ini :
Arguments: -PERIOD 300 -FOLDER "C:\DevIO\Archives\CSV" -HEAD -DAILY -LOG
-M %NomVariable1% -H "Description colonne 1" -D 2
-M %NomVariable2% -H "Description colonne 2" -D 1
-M %NomVariable3% -H "Description colonne 3" -T "Marche" -F "Arrêt"
Gestion des fichiers et rotation
Stratégies de rotation
Quotidienne (-DAILY)
- Nom :
CSV20241201.csv - Rotation : Minuit (ou heure spécifiée)
- Avantage : Un fichier par jour, facile à gérer
Par session
- Nom :
CSV20241201143052.csv(AAAAMMJJHHMMSS) - Rotation : À chaque démarrage DevIO
- Avantage : Traçabilité des sessions
Par nombre d'enregistrements
- Nom :
CSV20241201_001.csv,CSV20241201_002.csv - Rotation : Selon limite configurée
- Avantage : Fichiers de taille contrôlée
Gestion des fichiers temporaires
En cas de conflit d'accès, le module crée des fichiers temporaires :
CSV20241201143052_1733058672.csv
Répertoires réseau
Support des chemins UNC :
Arguments: -FOLDER "\\serveur\partage\devio\csv"
Intégration avec outils externes
Microsoft Excel
Import direct
- Données → Obtenir des données → À partir d'un fichier → Texte/CSV
- Sélectionner le fichier CSV généré
- Configurer le séparateur (
;par défaut) - Définir les types de colonnes
Actualisation automatique
- Créer une connexion de données vers le répertoire CSV
- Configurer l'actualisation automatique
- Utiliser des tableaux croisés dynamiques pour l'analyse
LibreOffice Calc
Import avec assistant
- Fichier → Ouvrir → Sélectionner le fichier CSV
- Assistant d'importation :
- Séparateur : Point-virgule (
;) - Encodage : UTF-8
- Séparateur décimal : Virgule (
,) si-SEPCOMMA
Power BI
Connexion CSV
let
Source = Csv.Document(File.Contents("C:\DevIO\Archives\CSV\CSV20241201.csv"),[Delimiter=";", Columns=5, Encoding=1252]),
#"En-têtes promus" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"Date", type date}, {"Heure", type time}, {"Température (°C)", type number}, {"Pression (bar)", type number}, {"État", type text}})
in
#"Type modifié"
Scripts Python
Lecture avec pandas
import pandas as pd
import glob
import os
# Lecture d'un fichier CSV DevIO
df = pd.read_csv('CSV20241201.csv',
sep=';',
decimal=',',
encoding='utf-8')
# Lecture de tous les fichiers CSV du répertoire
csv_files = glob.glob('C:/DevIO/Archives/CSV/CSV*.csv')
dataframes = []
for file in csv_files:
df = pd.read_csv(file, sep=';', decimal=',', encoding='utf-8')
df['Fichier'] = os.path.basename(file)
dataframes.append(df)
# Concaténation de tous les fichiers
combined_df = pd.concat(dataframes, ignore_index=True)
# Analyse des données
print(combined_df.describe())
print(combined_df.groupby('État').mean())
Monitoring et journalisation
Fichiers de log
Avec l'option -LOG, le module génère des logs détaillés :
C:\DevIO\log\DevioArchivesCSV1733058672.log
Contenu des logs
File DevioArchivesCSV1733058672.log created on Mon Dec 01 14:30:00 2024
Period to archive: 300s
Storage folder: C:\DevIO\Archives\CSV
5 data to archive
Added mnemonic "Temperature" at position 0 (Header = Température (°C))
Added mnemonic "Pressure" at position 1 (Header = Pression (bar))
Create Thread for writing CSV values success
Init DLL CSV archives success
Receive 1st record during period
Values written in file: C:\DevIO\Archives\CSV\CSV20241201.csv
Messages d'erreur courants
| Message | Cause | Solution |
|---|---|---|
Impossible to open file |
Droits d'accès insuffisants | Vérifier les permissions du répertoire |
Period ignored (min = 5s) |
Période trop courte | Utiliser une période ≥ 5 secondes |
NO Data to archive |
Aucune variable configurée | Ajouter des lignes -M dans le fichier INI |
Mnemonic already saved |
Variable dupliquée | Supprimer les doublons dans le fichier INI |
Optimisation des performances
Paramètres recommandés
Haute fréquence (< 60s)
Arguments: -PERIOD 30 -FOLDER "D:\FastCSV" -LOG
Archive quotidienne (> 300s)
Arguments: -PERIOD 900 -FOLDER "\\archive\devio" -HEAD -DAILY -SEPCOMMA -DATE 1 -TIME 1
Analyse temps réel (60-300s)
Arguments: -PERIOD 60 -FOLDER "C:\DevIO\Realtime" -HEAD -STATE
Limites techniques
- Variables maximum : 256 par fichier CSV
- Enregistrements maximum : 65535 par fichier
- Période minimum : 5 secondes
- Longueur nom variable : 64 caractères
- Décimales maximum : 15
FAQ et dépannage
Q : Les fichiers CSV ne sont pas créés ?
R : Vérifier :
- Droits d'écriture sur le répertoire de destination
- Existence du fichier DevIOArchivesCSV.ini
- Syntaxe des arguments dans le fichier INI
- Logs d'erreur dans le répertoire log\
Q : Les données ne s'affichent pas correctement dans Excel ?
R : Configurer :
- Séparateur décimal avec -SEPCOMMA pour Excel français
- En-têtes avec -HEAD pour identifier les colonnes
- Encodage UTF-8 lors de l'import Excel
Q : Performance dégradée avec beaucoup de variables ?
R : Optimiser :
- Augmenter la période d'archivage (-PERIOD)
- Réduire le nombre de variables archivées
- Utiliser un répertoire sur disque rapide (SSD)
- Désactiver la journalisation détaillée (-LOG)
Q : Fichiers CSV corrompus ou incomplets ?
R : Vérifier : - Espace disque disponible suffisant - Stabilité du réseau (si répertoire distant) - Absence de processus concurrent accédant aux fichiers - Intégrité du système de fichiers
Q : Format de date/heure incorrect ?
R : Utiliser :
- -DATE 1 et -TIME 1 pour inclure horodatage
- Format automatique selon la locale système
- Séparateurs appropriés pour l'outil de lecture
Annexes et références utiles
Formats de fichiers CSV
- RFC 4180 : Spécification CSV standard
- ISO 8601 : Format de date et heure
- UTF-8 : Encodage de caractères recommandé
Outils d'analyse compatibles
- Microsoft Excel : Tableur avec import CSV natif
- LibreOffice Calc : Alternative open source à Excel
- Power BI : Outil de visualisation Microsoft
- Tableau : Plateforme d'analyse de données
- Python pandas : Bibliothèque d'analyse de données
- R : Langage statistique avec support CSV