Aller au contenu

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

  1. Initialisation : Lecture du fichier DevIOArchivesCSV.ini
  2. Collecte : Réception des données DevIO via l'API d'archivage
  3. Mise en tampon : Stockage temporaire avec synchronisation mutex
  4. Écriture périodique : Export CSV selon la période configurée
  5. Rotation des fichiers : Gestion quotidienne ou par nombre d'enregistrements
  6. 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

  1. Ouvrir le projet avec DevIO Studio
  2. Aller dans ConfigurationArchives
  3. Ajouter une nouvelle archive de type CSV
  4. 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

  1. DonnéesObtenir des donnéesÀ partir d'un fichierTexte/CSV
  2. Sélectionner le fichier CSV généré
  3. Configurer le séparateur (; par défaut)
  4. Définir les types de colonnes

Actualisation automatique

  1. Créer une connexion de données vers le répertoire CSV
  2. Configurer l'actualisation automatique
  3. Utiliser des tableaux croisés dynamiques pour l'analyse

LibreOffice Calc

Import avec assistant

  1. FichierOuvrir → Sélectionner le fichier CSV
  2. Assistant d'importation :
  3. Séparateur : Point-virgule (;)
  4. Encodage : UTF-8
  5. 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
- Répertoire sur disque rapide (SSD) - Pas d'en-têtes pour réduire la taille - Journalisation minimale

Archive quotidienne (> 300s)

Arguments: -PERIOD 900 -FOLDER "\\archive\devio" -HEAD -DAILY -SEPCOMMA -DATE 1 -TIME 1
- Fichiers quotidiens avec rotation - En-têtes pour faciliter l'analyse - Format Excel-compatible

Analyse temps réel (60-300s)

Arguments: -PERIOD 60 -FOLDER "C:\DevIO\Realtime" -HEAD -STATE
- États inclus pour diagnostic - Période équilibrée - Répertoire local rapide

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

Documentation technique