Type de contribution : FAQ, ID de la contribution : 26106418, Date de la contribution : 12/10/2015
(4)
Évaluer

Comment, sur un PC avec WinCC flexible, utiliser un script pour sauvegarder et lire des informations dans un fichier texte ?

  • Contribution
  • Concerne le/les produits(s)
Les scripts VB permettent d'enregistrer sur un support USB n'importe quelles données disponibles sur le pupitre opérateur. Ce FAQ explique la programmation de ce genre de scripts.

Description
Pour enregistrer ou lire des informations dans un fichier texte, il doit être possible d'accéder au système de fichiers de Windows. L'accès se fait via un objet qui est affecté à une variable.

Notes

  • N'utilisez de scripts pour l'enregistrement de données que si les mécanismes standard de WinCC (enregistrement d'archives de données, etc.) ne sont pas suffisants pour votre application !
  • Le mécanisme présenté dépend du système d'exploitation de votre pupitre et du logiciel de configuration utilisé. Veuillez consulter les notes complémentaires à la fin de cet article pour la gestion d'autres configurations.

Contenu de l'article

  • Exemple pour enregistrer des informations dans un fichier texte ou dans un fichier csv
  • Exemple pour lire des informations depuis un fichier texte ou depuis un fichier csv
  • Téléchargement des deux codes source et du projet-exemple

Documentation des instructions VB-Script dans WinCC flexible
Vous trouverez des informations sur chaque instruction VB-Script dans l'aide en ligne de WinCC flexible dans l'onglet "Contenu" sous "WinCC flexible Information System > Travailler avec WinCC flexible > Référence".


Figure 01

Exemple pour enregistrer des informations dans un fichier texte ou dans un fichier csv
Le tableau suivant décrit comment vous pouvez enregistrer des informations depuis WinCC flexible dans un fichier texte ou csv.

Procédure
1

Créer un nouveau projet

  • Créez un nouveau projet en cliquant sur "Projet > Nouveau..." et sélectionnez "PC > WinCC flexible Runtime" comme type de pupitre.

 


Figure 02
2

Créer des variables

  • Ouvrez l'Editeur de variables via "Projet > Pupitre_opérateur_1 > Communication > Variables".
  • Ajoutez quatre variables internes avec les désignations suivantes :

    Variable

    Type de données

    1 bExtension Bool
    2 szMaterial String
    3 nPressure Int
    4 nTemperature Int
    Tableau 01 - Variables

 


Figure 03

Note
Seules des variables internes sont utilisées dans cet exemple. Vous pouvez, bien sûr, utiliser des variables en liaison avec un automate.
3 Insérer les objets
  • Insérez deux rectangles - cf. figure 03 -.
  • Insérez un champ E/S symbolique et trois champs d'E/S conventionnels.
  • Enrichissez la vue WinCC Flexible en ajoutant un bouton et neuf champs de texte.
  • Positionnez tous les objets comme le montre la figure 04 et entrez les textes suivants :
    "Valeurs process"
    "Pression:"
    "Température:"
    "Matériau:"
    "Fichier texte:"
    "mbar"
    "°C"
    "Paramètres"
    "Extension:"
  • Créez une liste de textes intitulée "Extension" avec les entrées suivantes :
    0 => ".txt"
    1 => ".csv"

 


Figure 04
4 Relier les scripts, liste de textes et variables
  • Créez un script intitulé "Write_data". Pour cela, dans l'arborescence du projet, cliquez sue "Scripts > Ajouter un script".
  • Reliez les variables suivantes ainsi que le script nouvellement créé aux objets correspondants :
    Variable/Script Objet Objet pour...
    nPressure Champ d'E/S Pression
    nTemperature Champ d'E/S Température
    szString_1 Champ d'E/S Matériau
    bExtension Champ d'E/S symbolique Extension
    Ecrire les données Bouton Enregistrer le fichier
    Tableau 02 - Connexions avec les différents objets
  • Reliez la liste de textes "Extension" avec le champ d'E/S symbolique.

 


Figure 05
5 Créer le script - Partie 1
  • Modifiez le script "Write_data" avec l'exemple de code décrit.

    Note:
    Pour plus d'information sur les différentes instructions VBScript, se reporter à l'Aide de WinCC Flexible.

Description du code source
Les variables déclarées dans la <ligne 10> ne sont valides qu'à l'intérieur du script. La variable "bExtension" en <ligne 13> est une variable globale qui peut être utilisée dans tous le projet WinCC flexible. Avec cette variable, le chemin incluant le nom de fichier et l'extension peut être sélectionné via le champ d'E/S symbolique.

L'instruction "On Error Resume Next" est nécessaire en cas d'erreur d'exécution du script. Dès qu'une erreur survient, la ligne suivant celle contenant l'erreur est exécutée.

L'instruction de la <ligne 23> permet de transférer l'objet qui accède au système de fichiers de Windows à la variable "fso". Le code source suivant contient la routine d'erreur en cas d'erreur d'exécution. Lorsqu'une erreur d'exécution survient, un message d'erreur est affiché dans une fenêtre de messages et le script est ensuite terminé.

Note
L'utilisation de "Scripting.FileSystemObject" ne permet pas d'accéder au système de fichiers de Windows CE. Si ce script est démarré sur un pupitre avec Windows CE, cela provoque une erreur d'exécution du script.

S'il n'existe pas déjà, le fichier texte correspondant est créé dans la <ligne 32>.


Figure 06
6 Créer le script - Partie 2
L'utilisation de la méthode "GetFile" de l'objet "fso" crée le fichier spécifié qui est retourné via le paramètre "path" (filespec). Ensuite, la routine d'erreur déjà mentionnée est exécutée si le fichier correspondant n'existe pas.
  • GetFile(filespec)

En <ligne 44>, la méthode "OpenAsTextStream" est utilisée pour ouvrir le fichier en lecture ou en écriture. Les deux paramètres de cette méthode sont optionnels, le premier paramètre spécifie le mode entrée/sortie, et le second spécifie le format dans lequel le fichier doit être ouvert

  • OpenAsTextStream([IO Mode[,Format]])

Si le fichier ne peut être ouvert, la routine d'erreur déjà décrite est exécutée pour terminer correctement le script.

La commande "WriteLine" effectue l'écriture du texte et des valeurs des variables dans le fichier correspondant. Le fichier est ensuite fermé avec la méthode "Close".

  • WriteLine([Line sequence])

L'instruction "Nothing" est nécessaire pour séparer les variables qui ont été affectées aux objets avec l'instruction "Set".

La dernière commande transfère un message système utilisateur au système de messagerie HMI.


Figure 07
7 Démarrer le Runtime"
  • Démarrez le runtime PC de WinCC Flexible.

    Note Démarrez le runtime WinCC flexible avec le Script Debugger pour déboguer le script.
  • Renseignez les différentes variables et entrez une désignation de matériau de votre choix.
  • Validez ensuite avec le bouton "Save data".
  • Dans le champ d'E/S symbolique, sélectionnez "csv" et cliquez de nouveau sur le bouton.
  • Fermez le Runtime WinCC flexible.

 


Figure 08
8 Ouvrir le fichier texte
  • Ouvrez le fichier texte avec l'extension ".txt".
  • Vous pouvez ensuite fermer le fichier.

Figure 09
  • Ouvrez le fichier avec l'extension ".csv" avec Excel par exemple.
  • Fermez l'application Excel.

Figure 10

Exemple pour lire des informations depuis un fichier texte ou un fichier csv
Le tableau suivant décrit comment lire des informations depuis un fichier texte ou csv pour les représenter dans WinCC flexible.

Cet exemple est basé sur l'exemple précédent. La configuration de l'exemple précédent n'est pas absolument nécessaire dans cet exemple. Néanmoins, des composants de celui-ci sont utilisés.

Procédure
1 Créez un nouveau projet - optionnel
Si vous utilisez le projet précédent, vous pouvez passer à l'étape 2.
  • Créez un nouveau projet en cliquant sur "Projet > Nouveau..." et sélectionnez "PC > WinCC flexible Runtime" comme type de pupitre.
2 Relier des variables
  • Ouvrez l'Editeur de variables via "Projet > Pupitre_opérateur_1 > Communication > Variables".
  • Ajoutez trois variables internes avec les désignations suivantes :

    Variable

    Type de données

    1 szString_1 String
    2 nValue_1 Int
    3 nValue_2 Int
    Tableau 03 - Variables

    Note
    Si vous n'utilisez pas le projet précédent, ajoutez aussi la variable "bExtension" du type Bool.

Figure 11
3 Insérer les objets
  • Insérez un rectangle - cf. figure 12 -.
  • Reliez - si ce n'est pas déjà fait - un champ d'E/S symbolique et trois champs d'E/S conventionnels.
  • Enrichissez la vue WinCC Flexible en ajoutant un bouton et quatre champs de texte.
  • Positionnez tous les objets comme le montre la figure 12 et entrez les textes suivants :
    "Value_1:"
    "Value_2:"
    "String_1:"
    "Text file:"
    "Propriétés" (si ce n'est pas déjà fait)
    "Extension:" (si ce n'est pas déjà fait)
  • Si ce n'est pas déjà fait, créez une liste de textes intitulée "Extension" avec les entrées suivantes :
    0 => ".txt"
    1 => ".csv"

Figure 12
4 Relier les scripts, liste de textes et variables
  • Créez un script intitulé "Read_data". Pour cela, dans l'arborescence du projet, cliquez sur "Scripts > Ajouter un script".
  • Reliez les variables suivantes ainsi que le script nouvellement créé aux objets correspondants :
    Variable/Script Objet Objet pour...
    nValue_1 Champ d'E/S Value_1
    nValue_2 Champ d'E/S Value_2
    szString_1 Champ d'E/S String_1
    bExtension*) Champ d'E/S symbolique Extension
    Read_data Bouton Lire les données
    Tableau 04 - Connexions avec les différents objets
    *)Le lien n'est nécessaire que si la configuration pour l'enregistrement dans un fichier n'a pas été créée.
  • Si ce n'est pas déjà fait, reliez la liste de textes "Extension" avec le champ d'E/S symbolique (cf. figure 05).

Figure 13
5 Créer le script - Partie 1
  • Modifiez le script "Read_data" avec l'exemple de code décrit.

    Note

    Pour plus d'information sur les différentes instructions VBScript, se reporter à l'Aide de WinCC Flexible.

Description du code source
Toutes les variables déclarées au sein du script ne sont valables qu'à l'intérieur de ce script. Via le champ d'E/S symbolique, le chemin incluant le nom de fichier et l'extension est sélectionnable par le biais de la variable "bExtension" dans le script en <ligne 17>.

L'instruction "On Error Resume Next" est nécessaire en cas d'erreur d'exécution du script. Dès qu'une erreur survient, la ligne suivant celle contenant l'erreur est exécutée.

L'instruction de la <ligne 27> permet de transférer l'objet qui accède au système de fichiers de Windows à la variable "fso". Le code source suivant contient la routine d'erreur en cas d'erreur d'exécution. Lorsqu'une erreur d'exécution survient, un message d'erreur est affiché dans une fenêtre de messages et le script est ensuite terminé.

Note
L'utilisation de "Scripting.FileSystemObject" ne permet pas d'accéder au système de fichiers de Windows CE. Si ce script est démarré sur un pupitre avec Windows CE, cela provoque une erreur d'exécution du script.

 


Figure 14
6 Créer le script - Partie 2
En utilisant le méthode "OpenTextFile" ,le fichier défini dans la variable du script "Path" est ouvert Tous les autres paramètres de cette méthode sont optionnels. Le premier paramètre indique le mode d'E/S. Le deuxième paramètre définit si un nouveau fichier est à créer ou s'il existe un fichier valable. Le dernier paramètre indique dans quel format le fichier doit être ouvert.
  • OpenTextFile(filename[,iomode[,Create[,Format]]])

Si le fichier ne peut être ouvert, la routine d'erreur déjà décrite est exécutée pour terminer correctement le script.

Avec la commande "Do-While-Loop", le fichier texte est lu ligne par ligne avec la méthode "Readline" de la variable "f" tant que la boucle est exécutée. La fonction "Split" sépare les lignes de texte (expression) lues dans le fichier après le délimiteur qui peut être spécifié optionnellement comme deuxième argument. Les contenus ainsi séparés sont placés dans un champ de données à une dimension. Les deux derniers arguments ne sont pas utilisés dans cet exemple.

  • Split(Expression[,delimiter[,Number[,Compare]]])

Des chaînes vides pouvant être présentes dans le fichier (cf. par exemple la figure 09), elles doivent être supprimées avec la fonction "Replace". Pour cela, les trois premiers paramètres doivent être renseignés. Le premier argument contient la suite de caractères (expression) dans laquelle le caractère (find) est recherché et remplacé par l'argument "replace with".

  • Replace(Expression, find, replace with [,Start[,Number[,Compare]]])


Figure 15
7 Créer le script - Partie 3
Dans le but de mémoriser la structure des données, toutes les données sont transférées dans un tableau à 2 dimensions (array) "HiField". Comme toutes les données de ce tableau ne sont pas nécessaires, ce ne sont que les données significatives qui sont transmises aux variables globales WinCC flexible.

Exemple -Structure et contenu de HiField(a, b):

Array

b
0 1 2
a 0 "material" "Steel" ""
1 "pressure" "12" "mbar"
2 "temperature" "56" "°C"
Tableau 05 - Exemple de contenu du tableau à 2 dimensions

Le fichier ouvert est clos en <ligne 62>. L'instruction "Nothing" est nécessaire pour séparer les variables qui ont été affectées aux objets avec l'instruction "Set".

La dernière commande transfère un message système utilisateur au système de messagerie HMI.

 


Figure 16
8 Démarrer le Runtime"
  • Démarrez le runtime PC de WinCC Flexible.

    Note Démarrez le runtime WinCC flexible avec le Script Debugger pour déboguer le script.
  • Validez ensuite avec le bouton "Read data".
  • Dans le champ d'E/S symbolique, sélectionnez "csv" et cliquez de nouveau sur le bouton.
  • Fermez le Runtime WinCC flexible.

 


Figure 17

Téléchargement du code source et du projet-exemple:
Le téléchargement contient les deux exemples de code source du projet exemple au format de fichier PDF.
Enregistrement nécessaire wincc_flexible_quellcodes_pc.zip (18,1 KB)

Le téléchargement contient l'exemple de projet décrit ci-dessus qui permet d'enregistrer ou de lire des données dans un fichier texte.
Enregistrement nécessaire read_write_data_from_or_into_a_file_pc.zip (1,8 MB)

Informations complémentaires
Vous trouverez des informations complémentaires sur l'enregistrement de fichiers texte avec des scripts dans les articles suivants :

  • Avec WinCC flexible et des pupitres sur base Windows: Article ID 26107211 ("Comment, sur un pupitre sur base Windows avec WinCC flexible, utiliser un script pour sauvegarder et lire des informations dans un fichier texte ?")
  • Avec WinCC (TIA Portal) et des pupitres sur base Windows: article ID 59604194("Comment, sur un pupitre Comfort Panel SIMATIC WinCC (TIA Portal) , utiliser un script pour sauvegarder et lire des informations dans un fichier texte ?")
  • Avec WinCC (TIA Portal) et PC : article ID 106501825("Comment, avec WinCC (TIA Portal), utiliser un script pour enregistrer des informations dans un fichier ?")

Environnement de développement et de test
Le tableau suivant liste les composants qui ont été utilisés pour créer cet article et vérifier le fonctionnement décrit ci-dessus.

Composants Nom et version du produit
Système d'exploitation Microsoft Windows XP SP2
Outils standard -
Outil d'ingénierie -
Logiciel IHM WinCC flexible 2005 SP1 HF7
Système de contrôle-commande WinCC flexible PC Runtime

Mots-clefs supplémentaires
enregistrer, charger, écrire, lire, fichier CSV, fichier TXT