Schneider Electric SoMachine - FileFormatUtility Mode d'emploi

Ajouter à Mes manuels
104 Des pages
Schneider Electric SoMachine - FileFormatUtility Mode d'emploi | Fixfr
SoMachine
EIO0000002531 06/2017
SoMachine
FileFormatUtility
Guide de la bibliothèque
EIO0000002531.00
06/2017
www.schneider-electric.com
Le présent document comprend des descriptions générales et/ou des caractéristiques techniques
des produits mentionnés. Il ne peut pas être utilisé pour définir ou déterminer l'adéquation ou la
fiabilité de ces produits pour des applications utilisateur spécifiques. Il incombe à chaque utilisateur
ou intégrateur de réaliser l'analyse de risques complète et appropriée, l'évaluation et le test des
produits pour ce qui est de l'application à utiliser et de l'exécution de cette application. Ni la société
Schneider Electric ni aucune de ses sociétés affiliées ou filiales ne peuvent être tenues pour
responsables de la mauvaise utilisation des informations contenues dans le présent document. Si
vous avez des suggestions, des améliorations ou des corrections à apporter à cette publication,
veuillez nous en informer.
Vous acceptez de ne pas reproduire, excepté pour votre propre usage à titre non commercial, tout
ou partie de ce document et sur quelque support que ce soit sans l'accord écrit de Schneider
Electric. Vous acceptez également de ne pas créer de liens hypertextes vers ce document ou son
contenu. Schneider Electric ne concède aucun droit ni licence pour l'utilisation personnelle et non
commerciale du document ou de son contenu, sinon une licence non exclusive pour une
consultation « en l'état », à vos propres risques. Tous les autres droits sont réservés.
Toutes les réglementations locales, régionales et nationales pertinentes doivent être respectées
lors de l'installation et de l'utilisation de ce produit. Pour des raisons de sécurité et afin de garantir
la conformité aux données système documentées, seul le fabricant est habilité à effectuer des
réparations sur les composants.
Lorsque des équipements sont utilisés pour des applications présentant des exigences techniques
de sécurité, suivez les instructions appropriées.
La non-utilisation du logiciel Schneider Electric ou d'un logiciel approuvé avec nos produits
matériels peut entraîner des blessures, des dommages ou un fonctionnement incorrect.
Le non-respect de cette consigne peut entraîner des lésions corporelles ou des dommages
matériels.
© 2017 Schneider Electric. Tous droits réservés.
2
EIO0000002531 06/2017
Table des matières
Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . .
A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . .
Partie I Informations générales . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1 Présentation de la bibliothèque . . . . . . . . . . . . . . . . . . .
Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 2 Entrées et sorties communes . . . . . . . . . . . . . . . . . . . . .
Comportement des blocs fonction avec l'entrée i_xExecute . . . . . .
Partie II Types d'unités de données . . . . . . . . . . . . . . . . . . . .
Chapitre 3 Énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ET_XmlItemType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ET_CsvReadMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ET_ModeFileOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ET_Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 4 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_XmlItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_XmlUserDefinedHeader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_CsvTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_CsvFileInformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_CsvWarnValueTruncated. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_CsvReadParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_CsvWriteParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 5 Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie III Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 6 Liste des constantes globales. . . . . . . . . . . . . . . . . . . . .
Liste des constantes globales (GCL). . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 7 Liste des paramètres globaux. . . . . . . . . . . . . . . . . . . . .
GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie IV Fonctions globales . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 8 Fonctions globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FC_EtResultToString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000002531 06/2017
5
9
15
17
17
21
21
23
25
26
27
28
29
33
34
36
37
38
40
41
42
43
43
45
47
47
49
49
51
53
53
3
Partie V Unités organisationnelles de programme (POU) XML
Chapitre 9 Blocs fonction XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.1 FB_XmlRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description fonctionnelle du bloc FB_XmlRead. . . . . . . . . . . . . . . . . .
Remarques concernant le bloc FB_XmlRead . . . . . . . . . . . . . . . . . . .
Dépannage du bloc FB_XmlRead . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemple de bloc FB_XmlRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2 FB_XmlWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description fonctionnelle du bloc FB_XmlWrite. . . . . . . . . . . . . . . . .
Remarques concernant le bloc FB_XmlWrite . . . . . . . . . . . . . . . . . .
Dépannage du bloc FB_XmlWrite . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemple de bloc FB_XmlWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 10 Fonctions XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1 FC_XmlGetElementValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description fonctionnelle du bloc FC_XmlGetElementValue . . . . . .
Remarques concernant le bloc FC_XmlGetElementValue . . . . . . .
10.2 FC_XmlSetElementValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description fonctionnelle du bloc FC_XmlSetElementValue . . . . . .
Remarques concernant le bloc FC_XmlSetElementValue . . . . . . .
Partie VI Unités organisationnelles de programme (POU) CSV
Chapitre 11 Blocs fonction CSV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1 FB_CsvRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description fonctionnelle du bloc FB_CsvRead. . . . . . . . . . . . . . . . . .
Remarques concernant le bloc FB_CsvRead . . . . . . . . . . . . . . . . . . .
Dépannage du bloc FB_CsvRead . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemple de bloc FB_CsvRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2 FB_CsvWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description fonctionnelle du bloc FB_CsvWrite. . . . . . . . . . . . . . . . .
Remarques concernant le bloc FB_CsvWrite . . . . . . . . . . . . . . . . . .
Dépannage du bloc FB_CsvWrite . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemple de bloc FB_CsvWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
55
57
58
59
62
63
64
66
67
69
70
71
73
74
75
76
77
78
79
81
83
84
85
88
89
90
93
94
96
97
98
101
103
EIO0000002531 06/2017
Consignes de sécurité
Informations importantes
AVIS
Lisez attentivement ces instructions et examinez le matériel pour vous familiariser avec l'appareil
avant de tenter de l'installer, de le faire fonctionner, de le réparer ou d'assurer sa maintenance.
Les messages spéciaux suivants que vous trouverez dans cette documentation ou sur l'appareil
ont pour but de vous mettre en garde contre des risques potentiels ou d'attirer votre attention sur
des informations qui clarifient ou simplifient une procédure.
EIO0000002531 06/2017
5
REMARQUE IMPORTANTE
L'installation, l'utilisation, la réparation et la maintenance des équipements électriques doivent être
assurées par du personnel qualifié uniquement. Schneider Electric décline toute responsabilité
quant aux conséquences de l'utilisation de ce matériel.
Une personne qualifiée est une personne disposant de compétences et de connaissances dans le
domaine de la construction, du fonctionnement et de l'installation des équipements électriques, et
ayant suivi une formation en sécurité leur permettant d'identifier et d'éviter les risques encourus.
AVANT DE COMMENCER
N'utilisez pas ce produit sur les machines non pourvues de protection efficace du point de fonctionnement. L'absence de ce type de protection sur une machine présente un risque de blessures
graves pour l'opérateur.
AVERTISSEMENT
EQUIPEMENT NON PROTEGE


N'utilisez pas ce logiciel ni les automatismes associés sur des appareils non équipés de
protection du point de fonctionnement.
N'accédez pas aux machines pendant leur fonctionnement.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Cet automatisme et le logiciel associé permettent de commander des processus industriels divers.
Le type ou le modèle d'automatisme approprié pour chaque application dépendra de facteurs tels
que la fonction de commande requise, le degré de protection exigé, les méthodes de production,
des conditions inhabituelles, la législation, etc. Dans certaines applications, plusieurs processeurs
seront nécessaires, notamment lorsque la redondance de sauvegarde est requise.
Vous seul, en tant que constructeur de machine ou intégrateur de système, pouvez connaître
toutes les conditions et facteurs présents lors de la configuration, de l'exploitation et de la
maintenance de la machine, et êtes donc en mesure de déterminer les équipements automatisés,
ainsi que les sécurités et verrouillages associés qui peuvent être utilisés correctement. Lors du
choix de l'automatisme et du système de commande, ainsi que du logiciel associé pour une
application particulière, vous devez respecter les normes et réglementations locales et nationales
en vigueur. Le document National Safety Council's Accident Prevention Manual (reconnu aux
Etats-Unis) fournit également de nombreuses informations utiles.
Dans certaines applications, telles que les machines d'emballage, une protection supplémentaire,
comme celle du point de fonctionnement, doit être fournie pour l'opérateur. Elle est nécessaire si
les mains ou d'autres parties du corps de l'opérateur peuvent entrer dans la zone de point de
pincement ou d'autres zones dangereuses, risquant ainsi de provoquer des blessures graves. Les
produits logiciels seuls, ne peuvent en aucun cas protéger les opérateurs contre d'éventuelles
blessures. C'est pourquoi le logiciel ne doit pas remplacer la protection de point de fonctionnement
ou s'y substituer.
6
EIO0000002531 06/2017
Avant de mettre l'équipement en service, assurez-vous que les dispositifs de sécurité et de
verrouillage mécaniques et/ou électriques appropriés liés à la protection du point de fonctionnement ont été installés et sont opérationnels. Tous les dispositifs de sécurité et de verrouillage
liés à la protection du point de fonctionnement doivent être coordonnés avec la programmation des
équipements et logiciels d'automatisation associés.
NOTE : La coordination des dispositifs de sécurité et de verrouillage mécaniques/électriques du
point de fonctionnement n'entre pas dans le cadre de cette bibliothèque de blocs fonction, du
Guide utilisateur système ou de toute autre mise en œuvre référencée dans la documentation.
DEMARRAGE ET TEST
Avant toute utilisation de l'équipement de commande électrique et des automatismes en vue d'un
fonctionnement normal après installation, un technicien qualifié doit procéder à un test de
démarrage afin de vérifier que l'équipement fonctionne correctement. Il est essentiel de planifier
une telle vérification et d'accorder suffisamment de temps pour la réalisation de ce test dans sa
totalité.
AVERTISSEMENT
RISQUES INHERENTS AU FONCTIONNEMENT DE L'EQUIPEMENT



Assurez-vous que toutes les procédures d'installation et de configuration ont été respectées.
Avant de réaliser les tests de fonctionnement, retirez tous les blocs ou autres cales
temporaires utilisés pour le transport de tous les dispositifs composant le système.
Enlevez les outils, les instruments de mesure et les débris éventuels présents sur
l'équipement.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Effectuez tous les tests de démarrage recommandés dans la documentation de l'équipement.
Conservez toute la documentation de l'équipement pour référence ultérieure.
Les tests logiciels doivent être réalisés à la fois en environnement simulé et réel.
Vérifiez que le système entier est exempt de tout court-circuit et mise à la terre temporaire non
installée conformément aux réglementations locales (conformément au National Electrical Code
des Etats-Unis, par exemple). Si des tests diélectriques sont nécessaires, suivez les recommandations figurant dans la documentation de l'équipement afin d'éviter de l'endommager
accidentellement.
Avant de mettre l'équipement sous tension :
 Enlevez les outils, les instruments de mesure et les débris éventuels présents sur l'équipement.
 Fermez le capot du boîtier de l'équipement.
 Retirez toutes les mises à la terre temporaires des câbles d'alimentation entrants.
 Effectuez tous les tests de démarrage recommandés par le fabricant.
EIO0000002531 06/2017
7
FONCTIONNEMENT ET REGLAGES
Les précautions suivantes sont extraites du document NEMA Standards Publication ICS 7.1-1995
(la version anglaise prévaut) :
 Malgré le soin apporté à la conception et à la fabrication de l'équipement ou au choix et à
l'évaluation des composants, des risques subsistent en cas d'utilisation inappropriée de
l'équipement.
 Il arrive parfois que l'équipement soit déréglé accidentellement, entraînant ainsi un fonctionnement non satisfaisant ou non sécurisé. Respectez toujours les instructions du fabricant pour
effectuer les réglages fonctionnels. Les personnes ayant accès à ces réglages doivent
connaître les instructions du fabricant de l'équipement et les machines utilisées avec
l'équipement électrique.
 Seuls ces réglages fonctionnels, requis par l'opérateur, doivent lui être accessibles. L'accès aux
autres commandes doit être limité afin d'empêcher les changements non autorisés des
caractéristiques de fonctionnement.
8
EIO0000002531 06/2017
A propos de ce manuel
Présentation
Objectif du document
Ce document décrit la bibliothèque FileFormatUtility.
La bibliothèque FileFormatUtility contient des fonctions qui simplifient l'accès à certains formats de
fichiers.
Les formats pris en charge sont les suivants :
XML (eXtensible Markup Language)
 CSV (Comma Separated Values)

La bibliothèque FileFormatUtility est prise en charge par les contrôleurs suivants :
Modicon M241 Logic Controller
Modicon M251 Logic Controller
Modicon M258 Logic Controller
Modicon LMC078 Motion Controller
Modicon LMC058 Motion Controller





Champ d'application
Ce document a été actualisé pour le lancement de SoMachine V4.3.
Les caractéristiques techniques des équipements décrits dans ce document sont également
fournies en ligne. Pour accéder à ces informations en ligne :
Etape
Action
1
Accédez à la page d'accueil de Schneider Electric www.schneider-electric.com.
2
Dans la zone Search, saisissez la référence d'un produit ou le nom d'une gamme de produits.
 N'insérez pas d'espaces dans la référence ou la gamme de produits.
 Pour obtenir des informations sur un ensemble de modules similaires, utilisez des
astérisques (*).
3
Si vous avez saisi une référence, accédez aux résultats de recherche Product Datasheets et
cliquez sur la référence qui vous intéresse.
Si vous avez saisi une gamme de produits, accédez aux résultats de recherche Product Ranges
et cliquez sur la gamme de produits qui vous intéresse.
4
Si plusieurs références s'affichent dans les résultats de recherche Products, cliquez sur la
référence qui vous intéresse.
5
Selon la taille de l'écran, vous serez peut-être amené à faire défiler la page pour consulter la fiche
technique.
6
Pour enregistrer ou imprimer une fiche technique au format .pdf, cliquez sur Download XXX
product datasheet.
EIO0000002531 06/2017
9
Les caractéristiques présentées dans ce manuel devraient être identiques à celles fournies en
ligne. Toutefois, en application de notre politique d'amélioration continue, nous pouvons être
amenés à réviser le contenu du document afin de le rendre plus clair et plus précis. Si vous
constatez une différence entre le manuel et les informations fournies en ligne, utilisez ces
dernières en priorité.
Information spécifique au produit
AVERTISSEMENT
PERTE DE CONTROLE





Le concepteur d'un système de commande doit envisager les modes de défaillance possibles
des chemins de commande et, pour certaines fonctions de commande critiques, prévoir un
moyen d'atteindre un état sécurisé en cas de défaillance d'un chemin, et après cette
défaillance. Par exemple, l'arrêt d'urgence, l'arrêt en cas de surcourse, la coupure de courant
et le redémarrage sont des fonctions de commande cruciales.
Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de
commande critiques.
Les chemins de commande système peuvent inclure les liaisons de communication. Soyez
particulièrement attentif aux implications des retards de transmission imprévus ou des pannes
de liaison.
Respectez toutes les réglementations de prévention des accidents ainsi que les consignes de
sécurité locales.1
Chaque implémentation de cet équipement doit être testée individuellement et entièrement
pour s'assurer du fonctionnement correct avant la mise en service.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
1
Pour plus d'informations, consultez le document NEMA ICS 1.1 (dernière édition), « Safety
Guidelines for the Application, Installation, and Maintenance of Solid State Control » (Directives de
sécurité pour l'application, l'installation et la maintenance de commande statique) et le document
NEMA ICS 7.1 (dernière édition), « Safety Standards for Construction and Guide for Selection,
Installation, and Operation of Adjustable-Speed Drive Systems » (Normes de sécurité relatives à
la construction et manuel de sélection, installation et opération de variateurs de vitesse) ou son
équivalent en vigueur dans votre pays.
Avant de tenter de fournir une solution (machine ou processus) pour une application spécifique en
utilisant les POU trouvés dans la bibliothèque, vous devez tenir compte de la réalisation et de
l'exécution des bonnes pratiques. La liste non exhaustive de ces pratiques liées à cette
bibliothèque inclut l'analyse des risques, la sécurité fonctionnelle, la compatibilité des composants,
les tests et la validation du système.
10
EIO0000002531 06/2017
AVERTISSEMENT
MAUVAISE UTILISATION DES POU






Effectuez une analyse de la sécurité de l'application et des appareils installés.
Assurez-vous que les POU sont compatibles avec les appareils du système et n'ont pas
d'effets inattendus sur le bon fonctionnement du système.
Utilisez les paramètres appropriés, notamment les valeurs limites, et observez l'usure de la
machine et son comportement à l'arrêt.
Vérifiez que les capteurs et déclencheurs sont compatibles avec les POU sélectionnés.
Testez de manière approfondie toutes les fonctions durant la vérification et la mise en service
dans tous les modes de fonctionnement.
Indiquez des méthodes indépendantes pour les fonctions de commande critiques (arrêt
d'urgence, conditions de dépassement des valeurs limites, etc.) en fonction d'une analyse de
la sécurité, des règles correspondantes et des réglementations.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
AVERTISSEMENT
FONCTIONNEMENT IMPREVU DE L’EQUIPEMENT


N'utilisez que le logiciel approuvé par Schneider Electric pour faire fonctionner cet
équipement.
Mettez à jour votre programme d'application chaque fois que vous modifiez la configuration
matérielle physique.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Les transferts incomplets, qu'il s'agisse de fichiers de données, d'application et/ou de micrologiciel,
peuvent avoir des conséquences graves sur votre machine ou votre contrôleur. En cas coupure
de courant (volontaire ou non) ou d'interruption de la communication pendant un transfert de
fichier, votre machine peut devenir inopérante ou votre application peut tenter d'utiliser un fichier
de données endommagé. Si une interruption survient, relancez le transfert. Veillez à inclure
l'impact des fichiers de données endommagés dans votre analyse des risques.
EIO0000002531 06/2017
11
AVERTISSEMENT
FONCTIONNEMENT IMPREVU DE L'EQUIPEMENT, PERTE DE DONNEES OU FICHIER
ENDOMMAGE



N'interrompez pas un transfert de données en cours.
Si le transfert est interrompu pour une raison quelconque, relancez-le.
Ne mettez pas votre machine en service tant que le transfert de fichier n'est pas terminé, sauf
si vous avez pris en compte les fichiers endommagés dans votre analyse des risques et si
vous avez mis en place des mesures appropriées pour prévenir les conséquences potentiellement graves dues à des échecs de transfert.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Les POU fournis avec cette bibliothèque utilisent des variables de type POINTER TO en interne.
Ces pointeurs ne sont affectés qu'au début de l'exécution du POU concerné. C'est-à-dire qu'ils ne
sont pas réaffectés tant que le bloc fonction indique Busy.
ATTENTION
POINTEUR INCORRECT
N'utilisez pas la commande « Changement en ligne » ou l'option « Se connecter avec
changement en ligne » tant que l'un des blocs fonction de cette bibliothèque indique Busy dans
votre application en cours d'exécution.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
Documents à consulter
12
Titre du document
Référence
SoMachine - Fonctions et bibliothèques - Guide de
l'utilisateur
EIO0000000735 (ENG) ;
EIO0000000792 (FRE) ;
EIO0000000793 (GER) ;
EIO0000000795 (SPA) ;
EIO0000000794 (ITA) ;
EIO0000000796 (CHS)
SoMachine - Guide de programmation
EIO0000000067 (ENG) ;
EIO0000000069 (FRE) ;
EIO0000000068 (GER) ;
EIO0000000071 (SPA) ;
EIO0000000070 (ITA) ;
EIO0000000072 (CHS)
EIO0000002531 06/2017
Vous pouvez télécharger ces publications ainsi que d'autres informations techniques sur notre site
Web : http://www.schneider-electric.com/en/download.
Terminologie utilisée dans les normes
Les termes techniques, la terminologie, les symboles et les descriptions correspondantes
employés dans ce manuel ou figurant dans ou sur les produits proviennent généralement des
normes internationales.
Dans les domaines des systèmes de sécurité fonctionnelle, des variateurs et de l'automatisme en
général, les termes employés sont sécurité, fonction de sécurité, état sécurisé, défaut, réinitialisation du défaut, dysfonctionnement, panne, erreur, message d'erreur, dangereux, etc.
Entre autres, les normes concernées sont les suivantes :
Norme
Description
EN 61131-2:2007
Automates programmables - Partie 2 : exigences et essais des équipements
ISO 13849-1:2008
Sécurité des machines - Parties des systèmes de commande relatives à la
sécurité Principes généraux de conception
EN 61496-1:2013
Sécurité des machines - Équipements de protection électro-sensibles Partie 1 : prescriptions générales et essais
ISO 12100:2010
Sécurité des machines - Principes généraux de conception - Appréciation du
risque et réduction du risque
EN 60204-1:2006
Sécurité des machines - Équipement électrique des machines - Partie 1 : règles
générales
EN 1088:2008
ISO 14119:2013
Sécurité des machines - Dispositifs de verrouillage associés à des protecteurs
- Principes de conception et de choix
ISO 13850:2006
Sécurité des machines - Fonction d'arrêt d'urgence - Principes de conception
EN/IEC 62061:2005
Sécurité des machines - Sécurité fonctionnelle des systèmes de commande
électrique, électronique et électronique programmable relatifs à la sécurité
IEC 61508-1:2010
Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques
programmables relatifs à la sécurité - Exigences générales
IEC 61508-2:2010
Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques
programmables relatifs à la sécurité - Exigences pour les systèmes
électriques/électroniques/électroniques programmables relatifs à la sécurité
IEC 61508-3:2010
Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques
programmables relatifs à la sécurité - Exigences concernant les logiciels
IEC 61784-3:2008
Communications numériques pour les systèmes de mesure et de commande Bus de terrain de sécurité fonctionnelle
2006/42/EC
Directive Machines
2014/30/EU
Directive sur la compatibilité électromagnétique
2014/35/EU
Directive sur les basses tensions
EIO0000002531 06/2017
13
De plus, des termes peuvent être utilisés dans le présent document car ils proviennent d'autres
normes telles que :
Norme
Description
Série IEC 60034
Machines électriques rotatives
Série IEC 61800
Entraînements électriques de puissance à vitesse variable
Série IEC 61158
Communications numériques pour les systèmes de mesure et de commande Bus de terrain utilisés dans les systèmes de commande industriels
Enfin, le terme zone de fonctionnement utilisé dans le contexte de la description de dangers
spécifiques a la même signification que les termes zone dangereuse ou zone de danger employés
dans la directive Machines (2006/42/EC) et la norme ISO 12100:2010.
NOTE : Les normes susmentionnées peuvent s'appliquer ou pas aux produits cités dans la
présente documentation. Pour plus d'informations sur chacune des normes applicables aux
produits décrits dans le présent document, consultez les tableaux de caractéristiques de ces
références de produit.
14
EIO0000002531 06/2017
SoMachine
Informations générales
EIO0000002531 06/2017
Partie I
Informations générales
Informations générales
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
1
Présentation de la bibliothèque
17
2
Entrées et sorties communes
21
EIO0000002531 06/2017
15
Informations générales
16
EIO0000002531 06/2017
SoMachine
Description
EIO0000002531 06/2017
Chapitre 1
Présentation de la bibliothèque
Présentation de la bibliothèque
Informations générales
Présentation de la bibliothèque
La bibliothèque FileFormatUtility contient des fonctions qui simplifient l'accès à certains formats de
fichiers.
Les formats pris en charge sont les suivants :
 XML (eXtensible Markup Language)
 CSV (Comma-Separated Values)
Caractéristiques de la bibliothèque
Le tableau suivant indique les caractéristiques de la bibliothèque :
Caractéristique
Valeur
Titre de la bibliothèque
FileFormatUtility
Société
Schneider Electric
Catégorie
 Util
 Application/Util
Composant
FileFormatUtility
Espace de noms par défaut
FFU
Attribut du modèle de langage
qualified-access-only (voir SoMachine, Fonctions et bibliothèques - Guide de
Bibliothèque post-compatible
Oui (FCL (voir SoMachine, Fonctions et bibliothèques - Guide de l'utilisateur))
EIO0000002531 06/2017
l'utilisateur)
17
Description
NOTE : Cette bibliothèque est paramétrée en Uniquement accès qualifié . Cela signifie que l'on ne
peut accéder aux POU, aux structures de données, aux énumérations, et aux constantes qu'en
utilisant l'espace de nom de la bibliothèque. L'espace de noms par défaut de la bibliothèque est
FFU.
Présentation des POU
Bloc fonction
Utilisation
FB_XmlRead (voir page 58)
Lit un fichier XML.
FB_XmlWrite (voir page 66)
Crée un fichier XML.
FC_XmlGetElementValue (voir page 74)
Lit la valeur d'un élément de la mémoire tampon
(XmlItems).
FC_XmlSetElementValue (voir page 77)
Modifie la valeur d'un élément de la mémoire tampon
(XmlItems).
FB_CsvRead (voir page 84)
Lit les valeurs d'un fichier CSV.
FB_CsvWrite (voir page 93)
Ecrit des valeurs dans un fichier CSV nouveau ou
existant.
Présentation des structures dans l'interface propre au module
18
Structure
Utilisation
ST_XmlItem (voir page 34)
Décrit un élément ou un attribut lu ou écrit dans un
fichier XML.
ST_XmlUserDefinedHeader (voir page 36)
Permet de définir un en-tête, qui est écrit au début
d'un fichier XML récemment créé.
ST_CsvTable (voir page 37)
Transmet la mémoire tampon fournie par l'application
au bloc fonction correspondant.
ST_CsvFileInformation (voir page 38)
Fournit des informations sur le dernier fichier CSV
traité par le bloc fonction FB_CsvRead.
ST_CsvWarnValueTruncated (voir page 40)
Le cas échéant, fournit des informations sur la
première valeur tronquée pendant l'exécution du bloc
fonction FB_CsvRead.
ST_CsvReadParameter (voir page 41)
Indique le contenu à lire dans le fichier CSV à l'aide
du bloc fonction FB_CsvRead.
ST_CsvWriteParameter (voir page 42)
Fournit le paramètre de l'opération d'écriture
exécutée par le bloc fonction FB_CsvWrite.
EIO0000002531 06/2017
Description
Présentation des énumérations
Énumération
Utilisation
ET_XmlItemType (voir page 26)
Indique le type d'un élément XML.
ET_CsvReadMode (voir page 27)
Indique le contenu à lire dans le fichier CSV à l'aide
du bloc fonction FB_CsvRead.
ET_ModeFileOpen (voir page 28)
Indique le mode d'ouverture d'un fichier.
ET_Result (voir page 29)
Contient les valeurs possibles indiquant le résultat
des opérations exécutées par les POU de la
bibliothèque.
EIO0000002531 06/2017
19
Description
20
EIO0000002531 06/2017
SoMachine
Entrées et sorties communes
EIO0000002531 06/2017
Chapitre 2
Entrées et sorties communes
Entrées et sorties communes
Comportement des blocs fonction avec l'entrée i_xExecute
Informations générales
Un front montant sur l'entrée i_xExecute lance l'exécution du bloc fonction. Le bloc fonction
poursuit son exécution et la sortie q_xBusy prend la valeur TRUE. Un front montant sur l'entrée
i_xExecute est ignoré pendant l'exécution du bloc fonction.
A la fin de l'exécution, les sorties q_xDone ou q_xError restent sur TRUE jusqu'à ce que l'entrée
i_xExecute prenne la valeur FALSE. Si l'entrée est remise à zéro avant la fin de l'exécution, les
sorties q_xDone ou q_xError prennent la valeur TRUE pendant un cycle.
Exemple
EIO0000002531 06/2017
21
Entrées et sorties communes
22
EIO0000002531 06/2017
SoMachine
Types d'unités de données
EIO0000002531 06/2017
Partie II
Types d'unités de données
Types d'unités de données
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
3
Énumérations
25
4
Structures
33
5
Alias
43
EIO0000002531 06/2017
23
Types d'unités de données
24
EIO0000002531 06/2017
SoMachine
Énumérations
EIO0000002531 06/2017
Chapitre 3
Énumérations
Énumérations
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
ET_XmlItemType
26
ET_CsvReadMode
27
ET_ModeFileOpen
28
ET_Result
29
EIO0000002531 06/2017
25
Énumérations
ET_XmlItemType
Présentation
Type :
Énumération
Disponible à partir de la version :
V1.0.8.0
Description
L'énumération ET_XmlItemType indique le type d'un élément XML.
Éléments de l'énumération
Nom
Valeur
(INT)
Description
NotSet
0
Aucun type n'a été indiqué pour l'élément XML.
Element
1
L'élément est de type élément.
Attribute
2
L'élément est de type attribut.
Utilisé par

26
ST_XmlItem
EIO0000002531 06/2017
Énumérations
ET_CsvReadMode
Présentation
Type :
Énumération
Disponible à partir de la version :
V1.0.8.0
Description
L'énumération ET_CsvReadMode définit le contenu à lire dans le fichier CSV à l'aide du bloc
fonction FB_CsvRead.
Éléments de l'énumération
Nom
Valeur
(INT)
Description
AllValues
0
Les valeurs du fichier CSV sont toutes lues.
OneRow
1
Une ligne (un enregistrement) est lue dans le fichier CSV.
OneColumn
2
Une colonne est lue dans le fichier CSV.
OneValue
3
Une valeur est lue dans le fichier CSV.
GetFileInformation
4
Seules les informations sur le contenu du fichier sont récupérées.
Aucune valeur n'est lue.
Utilisé par

FB_CsvRead
EIO0000002531 06/2017
27
Énumérations
ET_ModeFileOpen
Présentation
Type :
Énumération
Disponible à partir de la version :
V1.0.8.0
Description
L'énumération ET_ModeFileOpen indique le mode d'ouverture d'un fichier.
Éléments de l'énumération
Nom
Valeur
(INT)
Description
NotSet
0
Aucun mode n'a été sélectionné.
Append
1
Un fichier existant est ouvert et le contenu indiqué est ajouté.
Si le fichier n'existe pas, le bloc fonction renvoie une erreur.
AppendPlus
2
Comme pour Append, un fichier existant est ouvert et le contenu indiqué est
ajouté. Par contre, avec AppendPlus, si le fichier n'existe pas, un nouveau
fichier est créé.
Create
3
Un fichier est créé et le contenu indiqué y est écrit.
Si le fichier existe déjà, le bloc fonction renvoie une erreur.
CreatePlus
4
Comme pour Create, un fichier est créé et le contenu indiqué y est écrit. Par
contre, avec CreatePlus, si le fichier existe déjà, son contenu est remplacé.
Utilisé par

28
FB_CsvWrite
EIO0000002531 06/2017
Énumérations
ET_Result
Présentation
Type :
Énumération
Disponible à partir de la version :
V1.0.8.0
Description
L'énumération ET_Result contient les valeurs possibles qui donnent le résultat des opérations
exécutées par les POU de la bibliothèque.
Éléments de l'énumération
Nom
Valeur
(UDINT)
Description
Idle
0
Le bloc fonction est prêt à être exécuté.
Informations d'état, indiquées par q_etResult si q_xDone = TRUE
OK
1
Le bloc fonction a été exécuté.
Informations d'état, indiquées par q_etResult si q_xError = FALSE et q_xBusy = TRUE
CheckingInputs
10
Vérification en cours des entrées.
Initializing
15
Initialisation en cours d'une ressource interne.
OpeningFile
17
Ouverture en cours du fichier.
AnalyzingFile
20
Analyse en cours du fichier.
ReadingFile
24
Lecture en cours du fichier.
WritingFile
25
Ecriture en cours du fichier.
ClosingFile
30
Fermeture en cours du fichier.
GetFileSize
35
Récupération en cours de la taille du fichier.
Informations d'erreur, indiquées par q_etResult si q_xError = TRUE
FilePathInvalid
100
La syntaxe du chemin d'accès au fichier n'est pas valide.
XPathExpressionInvalid
102
L'expression XPath (langage XML Path) indiquée a une syntaxe
non valide ou n'est pas prise en charge.
FileInvalid
103
Le contenu du fichier à lire n'est pas pris en charge.
Timeout
104
Le délai d'exécution a expiré.
FileOpenFailed
110
Une erreur a été détectée lors de l'ouverture du fichier.
FileWriteFailed
111
Une erreur a été détectée lors de l'écriture dans le fichier.
FileCloseFailed
112
Une erreur a été détectée lors de la fermeture du fichier.
EIO0000002531 06/2017
29
Énumérations
Nom
Valeur
(UDINT)
Description
FileAlreadyExists
113
Le fichier indiqué pour l'opération d'écriture existe déjà. Il ne peut
pas être remplacé.
FileNotExists
114
Le fichier indiqué pour l'opération d'écriture n'existe pas.
Impossible d'ajouter des données.
GetFileSizeFailed
115
Une erreur a été détectée lors de la récupération de la taille du
fichier.
NumOfParentsExceeded
120
Le niveau d'imbrication de la structure XML est supérieur au
paramètre Gc_udiXmlMaxNumOfParents défini dans la liste
des paramètres globaux (voir page 49).
BufferFull
140
La mémoire tampon servant à stocker les éléments lus n'est pas
suffisamment grande.
AdditionalContentInvalid
150
Le pointeur pbyAdditionalContent (voir page 36) est égal
à 0 alors que la valeur de udiNumBytesToWrite est
supérieure à 0.
ElementNotFound
160
Aucun élément correspondant à l'expression XPath n'a été
trouvé.
XmlStructureInconsistent
165
Les relations parent-enfant entre les éléments du tableau
XmlItems sont incohérentes.
XmlItemTypeInvalid
167
Un élément du tableau XmlItems est de type non valide.
ParsingFailed
169
Une erreur interne a été détectée lors de l'analyse du fichier.
FileInconsistent
170
La structure du fichier XML analysé est incohérente. Une balise
au moins n'est pas fermée correctement.
TableReadValuesInvalid
171
Les dimensions fournies pour la table de stockage des valeurs
lues ne sont pas valides.
Consultez la section ST_CsvTable (voir page 37).
TableWriteValuesInvalid
172
Les dimensions fournies pour la table contenant les valeurs à
écrire ne sont pas valides.
Consultez la section ST_CsvTable (voir page 37).
TableInvalid
175
Le pointeur pbyAdditionalContent (voir page 36) vers la
mémoire tampon fournie par l'application doit être différent de 0.
ReadParameterInvalid
181
Les paramètres contrôlant l'opération de lecture ne sont pas
valides.
Consultez la section ST_CsvReadParameter (voir page 41).
WriteParameterInvalid
182
Les paramètres contrôlant l'opération d'écriture ne sont pas
valides.
Consultez la section ST_CsvWriteParameter (voir page 42).
FileReadFailed
190
Une erreur interne a été détectée lors de la lecture du fichier.
TableTooSmall
200
La table ne dispose pas de suffisamment de cellules pour
stocker les valeurs à lire dans le fichier.
30
EIO0000002531 06/2017
Énumérations
Nom
Valeur
(UDINT)
Description
ValueNotFound
210
La valeur définie par la ligne et la colonne n'existe pas dans le
fichier CSV.
FilePathTooLong
215
Le chemin d'accès au fichier indiqué, hors extension, se situe en
dehors de la plage valide. Impossible d'ajouter l'extension de
fichier par défaut.
Le chemin d'accès sans extension est limité à 255 caractères,
moins la longueur de l'extension de fichier par défaut.
FilenameTooLong
216
Le nom de fichier indiqué, avec extension, dépasse la longueur
maximale de 126 caractères.
FilenameInvalid
217
Le nom de fichier indiqué n'est pas valide.
FirstItemNoElement
220
Le premier élément du tableau XmlItems (voir page 34) n'est
pas de type élément.
FirstItemInvalidParentIndex
221
La valeur diParentIndex du premier élément du tableau
XmlItems (voir page 34) n'est pas égale à -1.
XpathRootElementDoesNotMatch
222
Le nom du premier élément du tableau XmlItems (voir page 34)
ne correspond pas à l'élément racine indiqué dans l'expression
XPath.
XpathExpressionNotSupported
230
L'expression XPath indiquée n'est pas prise en charge par cette
fonction.
UnexpectedProgramBehaviour
999
Une erreur interne a été détectée. Contactez votre service
d'assistance Schneider Electric.
Utilisé par




FB_XmlRead
FB_XmlWrite
FB_CsvRead
FB_CsvWrite
EIO0000002531 06/2017
31
Énumérations
32
EIO0000002531 06/2017
SoMachine
Structures
EIO0000002531 06/2017
Chapitre 4
Structures
Structures
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
ST_XmlItem
34
ST_XmlUserDefinedHeader
36
ST_CsvTable
37
ST_CsvFileInformation
38
ST_CsvWarnValueTruncated
40
ST_CsvReadParameter
41
ST_CsvWriteParameter
42
EIO0000002531 06/2017
33
Structures
ST_XmlItem
Présentation
Type :
Structure
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Description
La structure ST_XmlItem permet de décrire un élément ou un attribut lu ou écrit dans un fichier
XML.
Éléments de la structure
Nom
Type de données
Description
diParentIndex
DINT
Index dans le tableau désignant la position
du parent de l'élément XML (reportez-vous à
la section Exemple de relations
hiérarchiques indiquées par uiParentIndex
(voir page 35)).
Si la valeur est -1, l'élément est un élément
racine.
sName
STRING[GPL.Gc_uiXmlLengthO
fString]
Nom de l'élément ou de l'attribut.
sValue
STRING[GPL.Gc_uiXmlLengthO
fString]
Valeur de l'élément ou de l'attribut.
etType
ET_XmlItemType (voir page 26)
Type de l'élément XML.
uiNumOfAttributes ULINT
Cette valeur varie en fonction du type de
l'élément XML :
 Avec un élément de type élément, la
valeur indique le nombre d'attributs
associés.
 Avec un élément de type attribut, la
valeur indique le numéro séquentiel.
Utilisé par


34
FB_XmlRead
FB_XmlWrite
EIO0000002531 06/2017
Structures
Exemple de relations hiérarchiques indiquées par uiParentIndex
L'exemple suivant illustre la corrélation entre le paramètre uiParentIndex de la mémoire
tampon de type XmlItems fournie par l'application et la structure hiérarchique dans le document
XML.
Document XML
Mémoire tampon de type XmlItems fournie par l'application
<?xml version="1.0" encoding="ASCII"?>
<AAA>
<BBB />
<CCC />
<DDD>
<EEE />
</DDD>
</AAA>
Elément
Index de parent
Explication
AAA
–1
AAA est l'élément racine. Il n'a pas de parent.
BBB
0
CCC
0
AAA est l'élément parent. Il est stocké dans le
tableau à l'index 0.
DDD
2
CCC est l'élément parent. Il est stocké dans le
tableau à l'index 2.
EEE
3
DDD est l'élément parent. Il est stocké dans le
tableau à l'index 3.
EIO0000002531 06/2017
35
Structures
ST_XmlUserDefinedHeader
Présentation
Type :
Structure
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Description
La structure ST_XmlUserDefinedHeader permet de définir un en-tête qui est écrit dans le fichier
XML.
Éléments de la structure
Nom
Type de données
Description
sUserComment
STRING[255]
Saisissez un texte qui sera converti en commentaire
XML. Ce texte est écrit au début du fichier XML.
pbyAdditionalContent
POINTER TO BYTE
Pointeur vers la mémoire tampon fournie par
l'application, qui renferme le contenu à écrire au
début du fichier XML en plus du commentaire.
udiNumBytesToWrite
UDINT
Indique la taille du contenu à ajouter, en octets.
Utilisé par

36
FB_XmlWrite
EIO0000002531 06/2017
Structures
ST_CsvTable
Présentation
Type :
Structure
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Description
La structure ST_CsvTable permet de transmettre la mémoire tampon fournie par l'application au
bloc fonction correspondant.
Éléments de la structure
Nom
Type de
données
Description
pbyTable
POINTER TO
BYTE
Pointeur vers la mémoire tampon (tableau ARRAY à double
entrée de type STRING) fournie par l'application.
uiNumOfRows
UINT
Nombre de lignes (enregistrements) de la table.
uiNumOfColumns
UINT
Nombre de valeurs par ligne (enregistrement) dans la table.
udiSizeOfTable
UDINT
Taille totale de la table, en octets.
NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire,
utilisez l'opérateur arithmétique SIZEOF en association avec la mémoire tampon cible pour
déterminer la valeur de udiSizeOfTable.
EIO0000002531 06/2017
37
Structures
Exemple
L'exemple suivant explique comme affecter des valeurs à cette structure :
PROGRAM POU
VAR
g_asCsvTable:ARRAY[0..c_uiNumOfRows-1,0..c_uiNumOfColumns-1] OF
STRING(c_uiLengthOfValue);
stCsvTable: FFU.ST_CsvTable;
END_VAR
VAR CONSTANT
c_uiNumOfRows :UINT:= 100;
c_uiNumOfColumns :UINT:= 10;
c_uiLengthOfValue :UINT:= 40;
END_VAR
stCsvTable.pbyTable := ADR(g_asCsvTable);
stCsvTable.uiNumOfRows := c_uiNumOfRows;
stCsvTable.uiNumOfColumns := c_uiNumOfColumns;
stCsvTable.udiSizeOfTable := SIZEOF(g_asCsvTable);
Utilisé par


FB_XmlRead
FB_XmlWrite
ST_CsvFileInformation
Présentation
Type :
Structure
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Description
La structure ST_CsvFileInformation fournit des informations sur le dernier fichier CSV traité
par le bloc fonction FB_CsvRead (voir page 84).
38
EIO0000002531 06/2017
Structures
Éléments de la structure
Nom
Type de
données
Description
udiFileSize
UDINT
Taille du fichier CSV, en octets.
udiNumOfValues
UDINT
Nombre de valeurs dans le fichier CSV.
udiNumOfRows
UDINT
Nombre de lignes (enregistrements) dans le fichier CSV.
udiNumOfColumns
UDINT
Nombre de colonnes (valeurs par enregistrement) dans
le fichier CSV.
xTableInconsistent
BOOL
Renvoie TRUE si le nombre de colonnes détecté diffère
pour deux lignes au moins.
Utilisé par

FB_CsvRead
EIO0000002531 06/2017
39
Structures
ST_CsvWarnValueTruncated
Présentation
Type :
Structure
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Description
La structure ST_CsvWarnValueTruncated fournit des informations sur la première valeur
tronquée pendant l'exécution du bloc fonction FB_CsvRead.
Éléments de la structure
Nom
Type de
données
Description
xValueTruncated
BOOL
Renvoie TRUE si au moins une valeur a été
tronquée.
udiRow
UDINT
Numéro de la ligne contenant la première valeur
tronquée.
udiColumn
UDINT
Numéro de la colonne contenant la première valeur
tronquée.
Utilisé par

40
FB_CsvRead
EIO0000002531 06/2017
Structures
ST_CsvReadParameter
Présentation
Type :
Structure
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Description
La structure ST_CsvReadParameter permet d'indiquer le contenu à lire dans le fichier CSV à
l'aide du bloc fonction FB_CsvRead.
Éléments de la structure
Nom
Type de
données
Description
sDelimiter
STRING[5]
Code de caractère du séparateur servant à délimiter
deux valeurs.
etReadMode
ET_ReadMode
Indique le contenu à lire dans le fichier CSV.
udiNumOfRow
UDINT
Numéro de la ligne à lire.
Cette valeur est pertinente pour :
 ET_ReadMode.OneRow
 ET_ReadMode.OneValue
udiNumOfColumn
UDINT
Consultez la section ET_CSVReadMode (voir page 27).
Numéro de la colonne à lire.
Cette valeur est pertinente pour :
 ET_ReadMode.OneColumn
 ET_ReadMode.OneValue
Consultez la section ET_CSVReadMode (voir page 27).
Utilisé par

FB_CsvRead
EIO0000002531 06/2017
41
Structures
ST_CsvWriteParameter
Présentation
Type :
Structure
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Description
La structure ST_CsvWriteParameter permet de configurer l'opération d'écriture exécutée par le
bloc fonction FB_CsvWrite.
Éléments de la structure
Nom
Type de
données
Description
sDelimiter
STRING[5]
Code de caractère du séparateur inséré entre deux valeurs.
etModeFileOpen
ET_ModeFileOp Mode d'écriture utilisé lors de l'ouverture ou de la création du
en (voir page 28) fichier CSV.
udiNumOfRow
UDINT
Nombre de lignes à écrire.
Lorsque la valeur est égale à 0, les lignes définies par le
paramètre i_stBufferWriteValues.uiNumOfRows sont
écrites dans le fichier.
udiNumOfColumn
UDINT
Nombre de colonnes par ligne à écrire.
Lorsque la valeur est égale à 0, les colonnes définies par le
paramètre i_stBufferWriteValues.uiNumOfColumns
sont écrites dans le fichier.
Utilisé par

42
FB_CsvWrite
EIO0000002531 06/2017
SoMachine
Alias
EIO0000002531 06/2017
Chapitre 5
Alias
Alias
Alias
Présentation
Type :
ALIAS (DUT)
Disponible à partir de la version :
V1.0.8.0
Hérite de :
–
Description
Un alias est un type de données complexe, qui est utilisé dans cette bibliothèque.
XmlItems
Nom
Type de données
XmlItems
ARRAY[0..GPL.Gc_ud Le type d'unité de données XmlItems permet de stocker
iXmlMaxNbOfElements les éléments lus ou écrits dans un fichier XML. Utilisez-le
] of (ST_XmlElement) pour déclarer la mémoire tampon fournie par l'application.
Ce type est associé aux blocs fonction FB_XmlRed et
FB_XmlWrite.
EIO0000002531 06/2017
Description
43
Alias
44
EIO0000002531 06/2017
SoMachine
Variables globales
EIO0000002531 06/2017
Partie III
Variables globales
Variables globales
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
6
Liste des constantes globales
47
7
Liste des paramètres globaux
49
EIO0000002531 06/2017
45
Variables globales
46
EIO0000002531 06/2017
SoMachine
Liste des constantes globales
EIO0000002531 06/2017
Chapitre 6
Liste des constantes globales
Liste des constantes globales
Liste des constantes globales (GCL)
Présentation
Type :
Constantes globales
Disponible à partir de la version :
V1.0.8.0
Description
La liste des constantes globales contient les constantes globales de la bibliothèque
FileFormatUtility.
Constantes globales
Variable
Type de données
Gc_sLibraryVersion
STRING[80]
1
Valeur
Description
1
Vx.x.x.0
Version de bibliothèque
Cette valeur varie selon la version de la bibliothèque.
EIO0000002531 06/2017
47
Liste des constantes globales
48
EIO0000002531 06/2017
SoMachine
Liste des paramètres globaux
EIO0000002531 06/2017
Chapitre 7
Liste des paramètres globaux
Liste des paramètres globaux
GPL
Présentation
Type :
Paramètres globaux
Disponible à partir de la version :
V1.0.8.0
Description
La liste des paramètres globaux (GPL) contient les constantes globales utilisées par certains
composants de la bibliothèque. Il est possible de modifier un à un les paramètres pour chaque
application dans laquelle la bibliothèque est utilisée. Les modifications doivent être apportées dans
le gestionnaire de bibliothèques du projet référençant la bibliothèque.
EIO0000002531 06/2017
49
Liste des paramètres globaux
Paramètres globaux
Variable
Type de Valeur par
données défaut
Plage
Gc_udiXmlMaxNumOfItems
UDINT
1 000
1…2 147 483 Définit la taille de la mémoire
647
tampon contenant les éléments
(avec leurs attributs) lus ou à
écrire dans un fichier XML.
La valeur correspond à la
somme des éléments et des
attributs pouvant être stockés
dans la mémoire tampon.
Gc_uiXmlLengthOfString
UINT
40
1…254
Définit la longueur maximale
des éléments de type STRING
dans la structure (voir page 34)
ST_XmlItem.
Gc_udiXmlMaxNumOfParents
UDINT
20
1…10 000
Définit le niveau d'imbrication
maximal de la structure XML.
Utilisée en interne, la valeur
sert à déterminer l'index du
parent.
Gc_uiXmlWriteProcessingBlockSize
UINT
5 000
500…65 535
Définit la taille de la mémoire
tampon provisoire (en octets)
utilisée pour traiter le contenu
du fichier XML lors d'une
opération d'écriture.
Gc_uiCsvReadProcessingBlockSize
UINT
1 000
100…65 535
Définit la taille de la mémoire
tampon provisoire (en octets)
utilisée pour traiter les valeurs
du fichier CSV lors d'une
opération de lecture.
Gc_uiCsvWriteProcessingBlockSize
UINT
1 000
100…65 535
Définit la taille de la mémoire
tampon provisoire (en octets)
utilisée pour traiter les valeurs
du fichier CSV lors d'une
opération d'écriture.
50
Description
EIO0000002531 06/2017
SoMachine
Fonctions globales
EIO0000002531 06/2017
Partie IV
Fonctions globales
Fonctions globales
EIO0000002531 06/2017
51
Fonctions globales
52
EIO0000002531 06/2017
SoMachine
Fonctions globales
EIO0000002531 06/2017
Chapitre 8
Fonctions globales
Fonctions globales
FC_EtResultToString
Présentation
Type :
Fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
–
Met en œuvre :
–
Tâche
Convertir un élément d'énumération de type ET_Result en une variable de type STRING.
Description fonctionnelle
La fonction FC_EtResultToString permet de convertir un élément d'énumération de type
ET_Result en une variable de type STRING.
Interface
Entrée
Type de données
Description
i_etResult
ET_Result
Énumération avec le résultat.
Valeur retournée
Type de données
Description
STRING(80)
ET_Result converti en texte.
EIO0000002531 06/2017
53
Fonctions globales
54
EIO0000002531 06/2017
SoMachine
Unités organisationnelles de programme (POU) XML
EIO0000002531 06/2017
Partie V
Unités organisationnelles de programme (POU) XML
Unités organisationnelles de programme (POU) XML
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
9
10
EIO0000002531 06/2017
Titre du chapitre
Page
Blocs fonction XML
57
Fonctions XML
73
55
Unités organisationnelles de programme (POU) XML
56
EIO0000002531 06/2017
SoMachine
Blocs fonction XML
EIO0000002531 06/2017
Chapitre 9
Blocs fonction XML
Blocs fonction XML
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
9.1
FB_XmlRead
58
9.2
FB_XmlWrite
66
EIO0000002531 06/2017
57
Blocs fonction XML
Sous-chapitre 9.1
FB_XmlRead
FB_XmlRead
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
58
Page
Description fonctionnelle du bloc FB_XmlRead
59
Remarques concernant le bloc FB_XmlRead
62
Dépannage du bloc FB_XmlRead
63
Exemple de bloc FB_XmlRead
64
EIO0000002531 06/2017
Blocs fonction XML
Description fonctionnelle du bloc FB_XmlRead
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Met en œuvre :
-
Description fonctionnelle
Le bloc fonction FB_XmlRead permet de lire (analyser) un fichier XML stocké dans le système de
fichiers du contrôleur ou dans la mémoire étendue (une carte SD, par exemple). Pour obtenir des
informations sur le système de fichiers, reportez-vous au chapitre Organisation de la mémoire
Flash du guide de programmation de votre contrôleur.
Le contenu du fichier XML, à savoir les éléments XML ainsi que leurs attributs et valeurs, est
stocké dans un tableau de type XmlItems, dans la mémoire du contrôleur dédiée aux
applications. Vous devez déclarer ce tableau et l'affecter à l'entrée associée i_refXmlItems au
niveau du bloc fonction. Le contenu du tableau est effacé au début de chaque opération de lecture.
Le paramètre Gc_udiXmlMaxNumOfItems de la liste GPL (voir page 50) indique le nombre
d'éléments (éléments + attributs) pouvant être stockés dans le tableau.
Les noms et les valeurs des éléments et attributs sont stockés dans des champs de type STRING.
Vous pouvez définir la longueur de ces champs STRINGs avec le paramètre global Gc_uiXmlLengthOfString. Lorsque la valeur à lire dans le fichier dépasse cette longueur, la valeur
d'origine est tronquée. Dès qu'une valeur au moins est tronquée, l'information est communiquée
par la sortie q_xWarnValueTruncated.
NOTE : La sortie q_xWarnValueTruncated est valide à condition que la sortie q_xDone soit sur
TRUE.
EIO0000002531 06/2017
59
Blocs fonction XML
La structure hiérarchique des éléments du fichier XML est indiquée par le paramètre
uiParentIndex pour chaque élément du tableau correspondant au type XmlItems. Pour plus
d'informations, reportez-vous à la sectionExemple de relations hiérarchiques indiquées par
(voir page 35)uiParentIndex.
Interface
Entrée
Type de données
Description
i_xExecute
BOOL
Le bloc fonction exécute l'opération de lecture concernant
le fichier XML indiqué sur un front montant de cette
entrée.
Reportez-vous également au chapitre Comportement des
blocs fonction avec l'entrée i_xExecute (voir page 21).
i_sFilePath
STRING[255]
Chemin d'accès au fichier XML qui doit être lu.
Lorsque le nom de fichier est indiqué sans extension, le
bloc fonction ajoute l'extension .xml.
i_sXPathItemToRead
STRING[255]
Expression XPath pour l'adressage des éléments à lire
dans le fichier XML.
Valeur par défaut : '//*'
i_xReadElementsOnly
BOOL
Si cette entrée a la valeur TRUE, les noms d'éléments et
leurs valeurs sont lus et stockés dans la mémoire tampon
de l'application.
Si cette entrée a la valeur FALSE, les attributs et leurs
valeurs sont également lus et stockés dans la mémoire
tampon de l'application.
i_refXmlItems
REFERENCE TO XmlItems Mémoire tampon fournie par l'application pour le
stockage des éléments lus dans le fichier XML indiqué.
La mémoire tampon est effacée à chaque exécution du
bloc fonction.
Sortie
Type de données
Description
q_xDone
BOOL
Si cette sortie est TRUE, l'exécution s'est effectuée
correctement.
q_xBusy
BOOL
Si cette sortie est TRUE, le bloc fonction est en cours
d'exécution.
q_xError
BOOL
Si cette sortie est TRUE, une erreur a été détectée. Pour plus
d'informations, reportez-vous à q_etResult et
q_etResultMsg.
q_etResult
ET_Result
Fournit des informations de diagnostic et d'état sous la forme
d'une valeur numérique.
q_xBusy = True, la valeur indique l'état.
Si q_xDone ou q_xError = True, la valeur indique le résultat.
60
EIO0000002531 06/2017
Blocs fonction XML
Sortie
Type de données
Description
q_sResultMsg
STRING[80]
Fournit des informations de diagnostic et d'état sous la forme
d'un message textuel.
q_udiNumOfItemsRead
UDINT
Nombre total d'éléments et d'attributs lus dans le fichier XML.
q_xWarnValueTruncated
BOOL
Si cette sortie prend la valeur TRUE, une valeur au moins a été
tronquée.
NOTE : La sortie est mise à jour en même temps que q_xDone.
Pour plus d'informations sur les signaux des entrées et sorties basiques, reportez-vous au chapitre
Comportement des blocs fonction avec l'entrée i_xExecute (voir page 21).
Expressions XPath définissant le contenu à lire
Pour lire un élément ou un groupe d'éléments dans le fichier XML, utilisez la syntaxe du langage
XPath (XML Path). Le contenu à lire est défini par l'entrée i_XpathItemToRead.
NOTE : Le bloc fonction FB_XmlRead prend en charge une partie des fonctions fournies par les
expressions XPath.
Le tableau suivant répertorie les expressions XPath prises en charge :
Expression XPath
Description
//*
Sélectionne tous les éléments du document.
/
Indique un chemin d'accès absolu à un élément.
/…/child::*
Sélectionne tous les éléments enfants du nœud.
/…/descendant::*
Sélectionne tous les éléments descendants du nœud.
/…/<nom_élément>
Sélectionne tous les éléments du nœud qui correspondent au
nom indiqué.
/…/<nom_élément>[<n>]
Sélectionne le nème élément du nœud qui correspond au nom
indiqué.
/…/<nom_élément>[@<attribut>]
Sélectionne tous les éléments du nœud qui correspondent au
nom et à l'attribut indiqués.
/…/<nom_élément>[@<attribut>=<valeur>]
Sélectionne tous les éléments du nœud qui correspondent au
nom et à la paire attribut/valeur indiqués.
NOTE : Les prédicats, ou expressions entre crochets ([]), peuvent être suivis d'une barre oblique
(/) et d'un nom d'élément pour identifier l'élément enfant suivant.
Exemple : /…/<nom_élément>[<n>]/<nom_élément>
EIO0000002531 06/2017
61
Blocs fonction XML
Remarques concernant le bloc FB_XmlRead
Observations
Les contraintes suivantes s'appliquent lors de la lecture d'un fichier XML :
Seuls les fichiers XML codés en ASCII sont pris en charge.
 Les espaces vides sont interprétés comme des valeurs, contrairement aux tabulations.
 Les sauts de ligne dans les valeurs ne sont pas pris en charge. Les caractères situés avant ce
signe de ponctuation dans une valeur sont pris en compte lors de l'analyse.
 Seuls les noms d'éléments et leurs attributs (avec les valeurs correspondantes) sont lus, puis
stockés dans la mémoire tampon fournie par l'application. Par conséquent, l'analyseur XML ne
détecte pas les autres objets XML, tels que les commentaires et les déclarations DOCTYPE.
 Les objets CDATA ne sont pas pris en charge. Le contenu des objets CDATA est interprété
comme une valeur de l'élément ouvert.



62
Les valeurs lues dans le fichier sont stockées en tant que valeurs STRING dans l'application.
Ce principe s'applique également aux valeurs numériques. Avant de pouvoir être traitées, les
valeurs doivent être converties pour correspondre au type de données approprié. L'utilisation
des fonctions de conversion STRING_TO_ est alors recommandée. Dans ce cas, les valeurs
STRING doivent respecter une syntaxe spécifique, qui dépend du type de données cible. Pour
faciliter le traitement des valeurs lues, merci de tenir compte de ces exigences lorsque vous
créez des fichiers.
L'analyse du fichier XML prend du temps. Elle se déroule en parallèle de la tâche appelant le
bloc fonction. C'est pourquoi la durée d'analyse est incluse dans le temps d'exécution de la
tâche. Ce temps d'exécution s'allonge donc pour un cycle lorsque le bloc fonction FB_XmlRead
est en cours d'exécution. En fonction de la taille du fichier et du contrôleur, le cycle de la tâche
peut durer plusieurs secondes. Pour éviter que l'analyse d'un fichier XML bloque d'autres
processus, créez une tâche distincte d'une priorité inférieure (>24) pour cette fonction. Voyez
également s'il est possible de désactiver l'horloge de surveillance de cette tâche pour éviter des
exceptions associées en cours d'analyse. Pour plus d'informations, reportez-vous au chapitre
Horloges de surveillance du système et des tâches du guide de programmation de votre
contrôleur.
EIO0000002531 06/2017
Blocs fonction XML
Dépannage du bloc FB_XmlRead
Dépannage
Le tableau suivant présente quelques problèmes généraux avec leurs solutions :
Problème
Cause
Solution
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FilePathInvalid.
 Le fichier indiqué ou son
 Vérifiez que le fichier figure bien dans le répertoire
répertoire ne sont pas
disponibles.
 La syntaxe du chemin
indiqué. Si le chemin d'accès pointe vers la
mémoire étendue (une carte SD, par exemple),
vérifiez que celle-ci est disponible.
d'accès au fichier n'est pas  Vérifiez que la syntaxe employée est prise en
charge par votre contrôleur.
valide.
Par exemple, le séparateur autorisé varie en
fonction du contrôleur ('\' ou '/').
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FileInvalid.
 Le fichier comporte des
caractères autres que
ASCII.
 Une balise de fermeture
inattendue a été détectée
lors de l'analyse.
L'exécution se termine par la
 L'expression XPath saisie
détection d'une erreur et
n'est pas valide ou n'est
renvoie le résultat
pas prise en charge.
XPathExpressionInvalid.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
NumOfParentsExceeded.
 Le niveau d'imbrication
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
BufferFull.
 Le nombre d'éléments à
des éléments à lire dans le
fichier XML est supérieur à
celui défini.
 Vérifiez que le fichier contient exclusivement des
caractères ASCII.
 Vérifiez la validité du fichier XML : chaque balise
d'ouverture doit être fermée et les éléments
doivent être correctement imbriqués.
NOTE : Les noms d'élément prennent en compte
les majuscules et les minuscules.
 Vérifiez la validité de la syntaxe de l'expression
XPath.
 Vérifiez que l'expression est prise en charge par le
bloc fonction (voir page 61).
 Augmentez la valeur du paramètre
Gc_udiXmlMaxNumOfParents de la liste GPL
(voir page 50).
 Evitez d'utiliser des fichiers avec des structures
XML à niveau d'imbrication trop détaillé.
EIO0000002531 06/2017
lire dans le fichier XML
dépasse la taille de la
mémoire tampon fournie
par l'application.
 Augmentez la taille de la mémoire tampon à l'aide
du paramètre Gc_XmlMaxNumOfItems de la liste
GPL (voir page 50).
 Scindez l'opération de lecture en plusieurs blocs.
Utilisez l'expression XPath qui convient pour
limiter le nombre d'éléments à lire par bloc.
63
Blocs fonction XML
Problème
Cause
Solution
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
ElementNotFound.
 L'élément défini par
 Vérifiez l'absence de faute de frappe dans
l'expression XPath ne
figure pas dans le fichier.
 La déclaration du chemin
d'accès dans l'expression
XPath ne respecte pas la
structure utilisée dans le
fichier XML.
l'élément défini.
 Vérifiez que la déclaration du chemin d'accès
respecte la structure attendue dans le fichier XML.
 Vérifiez que le fichier XML défini à l'aide du
paramètre i_sFilePath (voir page 60) est le
bon.
 L'expression XPath
contient une faute de
frappe.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FileInconsistent.
 Une balise au moins n'est
 Vérifiez la validité du fichier XML : chaque balise
pas fermée alors que la fin
du fichier est atteinte.
d'ouverture doit être fermée et les éléments
doivent être correctement imbriqués.
Exemple de bloc FB_XmlRead
Présentation
L'exemple suivant illustre la manière dont les éléments lus dans un fichier XML sont stockés dans
la mémoire tampon fournie par l'application, en vue de leur traitement.
Exemple de fichier XML
<?xml version="1.0" encoding="ASCII"?>
<!--This is the user comment.-->
<!DOCTYPE AAA SYSTEM "example.dtd">
<AAA>
<BBB>1st bbb</BBB>
<BBB>2nd bbb</BBB>
<CCC id="1">
<DDD id="1" activate="TRUE">ddd</DDD>
</CCC>
</AAA>
NOTE : Le commentaire et la déclaration du type de document (DTD) aux lignes 2 et 3 ne sont pas
lus. Ces informations ne seront pas disponibles dans l'application.
64
EIO0000002531 06/2017
Blocs fonction XML
Exemple de programme
PROGRAM SR_Example
VAR
fbRead :FFU.FB_XmlRead;
astXmlItems :FFU.XmlItems;
xCmdRead :BOOL;
END_VAR
fbRead
i_xExecute := xCmdRead,
i_sFilePath := '/sd0/Example.xml',
i_sXPathItemsToRead := ,
i_xReadElementsOnly := ,
i_refXmlItems := astXmlItems,
q_xDone => ,
q_xBusy => ,
q_xError => ,
etResult => ,
q_sResultMsg => ,
q_udiNumOfItems => ,
q_xWarnValueTruncated => ) ;
Mémoire tampon
La mémoire tampon fournie par l'application de type XmlItems contient les éléments et les
attributs lus dans le fichier XML.
Dans cet exemple, la sortie q_udiNumOfItems a la valeur 8.
Index de
tableau
uiParentIndex
sName
sValue
etType
uiNumOfAttributes
0
-1
AAA
–
1
0
1
0
BBB
1st bbb
1
0
2
0
BBB
2nd bbb
1
0
3
2
CCC
–
1
1
4
3
id
1
2
1
5
3
DDD
ddd
1
2
6
5
id
1
2
1
7
5
activate
TRUE
2
2
EIO0000002531 06/2017
65
Blocs fonction XML
Sous-chapitre 9.2
FB_XmlWrite
FB_XmlWrite
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
66
Page
Description fonctionnelle du bloc FB_XmlWrite
67
Remarques concernant le bloc FB_XmlWrite
69
Dépannage du bloc FB_XmlWrite
70
Exemple de bloc FB_XmlWrite
71
EIO0000002531 06/2017
Blocs fonction XML
Description fonctionnelle du bloc FB_XmlWrite
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Met en œuvre :
-
Description fonctionnelle
Le bloc fonction FB_XmlWrite permet de créer ou d'écraser un fichier XML stocké dans le
système de fichiers du contrôleur ou dans la mémoire étendue (une carte SD, par exemple). Pour
obtenir des informations sur le système de fichiers, reportez-vous au chapitre Organisation de la
mémoire Flash du guide de programmation de votre contrôleur.
Les éléments du tableau de type XmlItems stockés dans la mémoire du contrôleur dédiée aux
applications sont ensuite écrits dans le fichier qui vient d'être créé.
Le code de caractère LF (0A hex) est utilisé comme saut de ligne dans le fichier créé.
Le prologue <?xml version="1.0" encoding="ASCII"?> est inséré en première ligne de
chaque fichier créé par le bloc fonction.
Les éléments XML fournis dans le tableau de type XmlItems, ainsi que leurs attributs et valeurs,
sont écrits après le prologue dans le fichier. La structure ou l'imbrication des éléments sont définies
par le paramètre uiParentIndex, qui fait partie de la structure ST_XmlItem. Pour plus
d'informations, reportez-vous à la section Exemple de relations hiérarchiques indiquées par
(voir page 35)uiParentIndex.
EIO0000002531 06/2017
67
Blocs fonction XML
Le bloc fonction FB_XmlWrite fournit l'entrée i_sRootElement permettant de définir un
élément racine. Cela s'avère utile lorsque le tableau qui fournit les éléments contient zéro ou
plusieurs éléments racine :
 Scénario sans élément racine : autorisé à condition que les valeurs des paramètres
uiParentIndex du tableau soient toutes égales à 0.
 Scénario avec plusieurs éléments racine : possible si seul un groupe d'éléments enfants a été
lu précédemment dans le fichier.
Hormis ces deux scénarios exceptionnels, la structure définie doit être cohérente. Dans le cas
contraire, le bloc fonction annule l'opération d'écriture et le fichier est ignoré.
Le paramètre uiParentIndex ne s'applique pas avec des éléments de type attribut. Les attributs
sont affectés à l'élément de type élément supérieur suivant dans le tableau.
La structure i_stUserDefinedHeader vous permet de définir un contenu supplémentaire, qui
sera écrit entre le prologue et le premier élément dans le fichier XML. Il peut s'agir, par exemple,
d'un commentaire (syntaxe XML) et/ou d'une déclaration DOCTYPE (DTD).
L'entrée i_xOverwriteFile vous permet d'indiquer si un fichier existant doit être remplacé ou
non. Si l'entrée a la valeur FALSE et si le fichier indiqué existe déjà, le bloc fonction ne s'exécute
pas et une erreur est renvoyée.
Interface
Entrée
Type de données
Description
i_xExecute
BOOL
Le bloc fonction exécute l'opération de lecture concernant le
fichier XML indiqué sur un front montant de cette entrée.
Reportez-vous également au chapitre Comportement des
blocs fonction avec l'entrée i_xExecute (voir page 21).
i_sFilePath
STRING[255]
Chemin d'accès au fichier XML.
Lorsque le nom de fichier est indiqué sans extension, le bloc
fonction ajoute l'extension .xml.
i_xOverwriteFile
BOOL
Indique si un fichier existant doit être remplacé ou non. Pour
autoriser le remplacement, réglez cette entrée sur TRUE.
i_sRootElement
WSTRING[GPL.Gc_u Elément racine créé lorsque le tableau respectant la structure
iXmlLengthOfWStri XmlElements contient plusieurs éléments racine.
ng]
i_stUserDefinedHeader ST_XmlUserDefined La structure renferme un contenu défini par l'utilisateur, qui
HeaderAscii
doit être écrit au début du nouveau fichier XML.
i_timTimeout
TIME
L'exécution du bloc fonction est annulée à l'issue de ce délai.
Si la valeur est T#0s, la valeur par défaut T#2s est appliquée.
i_refXmlItems
REFERENCE TO
XmlItems
Mémoire tampon fournie par l'application et dans laquelle est
stocké le contenu à écrire dans le fichier XML.
68
EIO0000002531 06/2017
Blocs fonction XML
Sortie
Type de données
Description
q_xDone
BOOL
Si cette sortie est TRUE, l'exécution s'est effectuée correctement.
q_xBusy
BOOL
Si cette sortie est TRUE, le bloc fonction est en cours d'exécution.
q_xError
BOOL
Si cette sortie est TRUE, une erreur a été détectée. Pour plus
d'informations, reportez-vous à q_etResult et q_etResultMsg.
q_etResult
ET_Result
Fournit des informations de diagnostic et d'état sous la forme d'une valeur
numérique.
q_xBusy = True, la valeur indique l'état.
Si q_xDone ou q_xError = True, la valeur indique le résultat.
q_sResultMsg
STRING[80]
Fournit des informations de diagnostic et d'état sous la forme d'un message
textuel.
Remarques concernant le bloc FB_XmlWrite
Observations
Les contraintes suivantes s'appliquent lors de l'écriture dans un fichier XML :
Les opérations sur les fichiers prennent du temps. Pour éviter de compromettre des fonctions
de contrôle n'acceptant aucun retard, créez une tâche distincte d'une priorité inférieure pour ces
processus. Voyez également s'il est possible de désactiver l'horloge de surveillance de cette
tâche pour éviter des exceptions associées en cours d'analyse. Pour plus d'informations sur la
gestion des tâches, reportez-vous au chapitre Horloges de surveillance du système et des
tâches du guide de programmation de votre contrôleur.
 Le paramètre de délai i_timTimeout permet de contrôler l'opération réalisée sur le fichier. Si
le bloc fonction est toujours en cours d'exécution à l'issue de ce délai, l'opération d'écriture est
annulée et le bloc renvoie une erreur. Pour savoir quelle valeur attribuer au paramètre de délai,
gardez à l'esprit que l'opération sur le fichier s'étale sur plusieurs cycles de tâche. La valeur
minimale sera donc égale au nombre de cycles de tâche requis, multiplié par l'intervalle entre
les tâches.
 Le nombre de cycles dépend de la quantité de données à écrire et de la taille du bloc de
traitement, qui peut être définie avec le paramètre Gc_uiXmlWriteProccessingBlockSize
dans la liste GPL (voir page 49). Pour diminuer la charge par cycle de tâche, le processus de
création du fichier est scindé en plusieurs opérations d'écriture. Lors de chacune d'elles, un bloc
de données est traité et écrit dans le fichier. Plus le bloc de traitement est grand, moins vous
avez besoin de cycles pour créer le fichier et y écrire du contenu. Par contre, le temps
d'exécution de chaque opération d'écriture est plus long.

EIO0000002531 06/2017
69
Blocs fonction XML
Dépannage du bloc FB_XmlWrite
Dépannage
Le tableau suivant présente quelques problèmes généraux avec leurs solutions :
Problème
Cause
L'exécution se termine par la
 Le répertoire spécifié n'est pas
détection d'une erreur et renvoie le
disponible.
résultat FilePathInvalid.
 La syntaxe du chemin d'accès
au fichier n'est pas valide.
Solution
 Vérifiez que le répertoire existe.
Si le chemin d'accès pointe vers
la mémoire étendue (une carte
SD, par exemple), vérifiez que
celle-ci est disponible.
 Vérifiez que la syntaxe
employée est prise en charge
par votre contrôleur.
Par exemple, le séparateur
autorisé varie en fonction du
contrôleur ('\' ou '/').
 Le fichier indiqué existe déjà et
L'exécution se termine par la
détection d'une erreur et renvoie le
l'entrée i_xOverwriteFile
résultat FileAlreadyExists.
est FALSE.
 Indiquez un autre nom du
fichier.
 Si le fichier existant peut être
remplacé, réglez l'entrée
i_xOverwriteFile sur
TRUE.
 Le paramètre uiParentIndex
L'exécution se termine par la
détection d'une erreur et renvoie le
de la mémoire tampon
résultat
contenant les éléments XML
XmlStructureInconsistent.
(voir page 35) comporte une
valeur qui empêche la création
d'un fichier XML valide.
 La valeur du paramètre
uiParentIndex du premier
élément est différente de -1.
L'exécution se termine par la
 Le délai indiqué est trop court.
détection d'une erreur et renvoie le
résultat Timeout.
 Vérifiez que les valeurs du
paramètre uiParentIndex
(voir page 34) sont cohérentes.
NOTE : Reportez-vous à la sortie
q_sResultMsg pour en savoir
plus sur le paramètre non valide.
 Augmentez le paramètre de
délai en fonction du nombre de
cycles nécessaires pour créer
le fichier. Tenez compte
également de l'intervalle entre
les tâches.
 Augmentez la taille du bloc de
traitement par opération
d'écriture pour limiter le nombre
d'appels de bloc fonction
nécessaires pour créer le
fichier.
70
EIO0000002531 06/2017
Blocs fonction XML
Exemple de bloc FB_XmlWrite
Présentation
L'exemple suivant illustre le processus d'écriture dans le fichier XML des éléments et attributs de
la mémoire tampon fournie par l'application. Un exemple est également fourni pour les autres
contenus.
Mémoire tampon
La mémoire tampon fournie par l'application de type XmlItems comporte les éléments à écrire
dans le fichier XML.
Index de
tableau
uiParentIndex
sName
sValue
etType
uiNumOfAttributes
0
-1
AAA
–
1
0
1
0
BBB
1st bbb
1
0
2
0
BBB
2nd bbb
1
0
3
2
CCC
–
1
1
4
–
id
1
2
1
5
3
DDD
ddd
1
2
6
–
id
1
2
1
7
–
activate
TRUE
2
2
EIO0000002531 06/2017
71
Blocs fonction XML
Exemple de programme
PROGRAM SR_Example
VAR
fbWrite :FFU.FB_XmlWrite;
astXmlItems :FFU.XmlItems;
xCmdWrite :BOOL;
sComment :STRING(255) := 'This is the user comment.';
sExternalDTD :STRING := '<!DOCTYPE AAA SYSTEM "example.dtd">';
stHeader :FFU.ST_XmlUserDefinedHeader;
END_VAR
stHeader.sUserComment := sComment;
stHeader.pbyAdditionalContent := ADR(sExternalDTD);
stHeader.sUserComment := Standard.LEN(sExternalDTD);
fbWrite(
i_xExecute := xCmdWrite,
i_sFilePath := '/sd0/Example.xml',
i_xOverwriteFile := ,
i_sRootElement := ,
i_refXmlItems := astXmlItems,
i_stUserDefinedHeader := stHeader,
i_timTimeout := ,
q_xDone => ,
q_xBusy => ,
q_xError => ,
q_etResult => ,
q_sResultMsg => );
Exemple de fichier XML
<?xml version="1.0" encoding="ASCII"?>
<!--This is the user comment.-->
<!DOCTYPE AAA SYSTEM "example.dtd">
<AAA>
<BBB>1st bbb</BBB>
<BBB>2nd bbb</BBB>
<CCC id="1">
<DDD id="1" activate="TRUE">ddd</DDD>
</CCC>
</AAA>
72
EIO0000002531 06/2017
SoMachine
Fonctions XML
EIO0000002531 06/2017
Chapitre 10
Fonctions XML
Fonctions XML
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
10.1
FC_XmlGetElementValue
74
10.2
FC_XmlSetElementValue
77
EIO0000002531 06/2017
73
Fonctions XML
Sous-chapitre 10.1
FC_XmlGetElementValue
FC_XmlGetElementValue
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
74
Page
Description fonctionnelle du bloc FC_XmlGetElementValue
75
Remarques concernant le bloc FC_XmlGetElementValue
76
EIO0000002531 06/2017
Fonctions XML
Description fonctionnelle du bloc FC_XmlGetElementValue
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Met en œuvre :
-
Description fonctionnelle
La fonction FC_XmlGetElementValue permet de lire la valeur de l'élément XML indiqué dans la
mémoire tampon de type XmlItems.
La valeur de retour est TRUE si la fonction a été exécutée avec succès. Si cette valeur est FALSE,
évaluez la sortie q_etResult.
Interface
Entrée
Type de données
Description
i_refXmlItems
REFERENCE TO XmlItems Mémoire tampon fournie par l'application et dans laquelle
sont stockés les éléments et les attributs lus ou écrits dans
un fichier XML.
i_sXpathToElement
STRING[255]
Expression XPath permettant d'indiquer l'élément qui doit
être lu.
Sortie
Type de données
Description
q_etResult
ET_Result
Fournit des informations de diagnostic sous la forme d'une
valeur numérique.
q_sElementValue
STRING[Gc_uiXmlLength Fournit la valeur de l'élément indiqué.
OfString]
EIO0000002531 06/2017
75
Fonctions XML
Expressions XPath définissant le contenu à lire
Pour définir l'élément dont la valeur doit être lue, utilisez la syntaxe du langage XPath (XML Path).
Les relations parent-enfant entre les différents éléments de la mémoire tampon sont définies par
le paramètre diParentIndex, qui désigne l'index de l'élément parent dans le tableau.
NOTE : La fonction FC_XmlGetElementValue prend en charge une partie des fonctions fournies
par les expressions XPath.
Le tableau répertorie les expressions XPath prises en charge :
Expression XPath
Description
/…/<nom_élément>
Sélectionne l'élément du nœud qui correspond au nom indiqué.
/…/<nom_élément>[<n>]
Sélectionne le nème élément du nœud qui correspond au nom
indiqué.
/…/<nom_élément>[@<attribut>]
Sélectionne l'élément du nœud qui correspond au nom et à
l'attribut indiqués.
/…/<nom_élément>[@<attribut>=<valeur>]
Sélectionne l'élément du nœud qui correspond au nom et à la
paire attribut/valeur indiqués.
Les prédicats, ou expressions entre crochets ([]), peuvent être suivis d'une barre oblique (/) et
d'un nom d'élément pour identifier l'élément enfant suivant.
Exemple : /…/<nom_élément>[<n>]/<nom_élément>
Remarques concernant le bloc FC_XmlGetElementValue
Remarques sur la lecture de valeurs XML
Les contraintes suivantes s'appliquent :
Les opérations d'exécution de la fonction ou de recherche d'élément dans la mémoire tampon
XmlItems peuvent durer plusieurs millisecondes. Pour éviter que cette fonction ne bloque
d'autres processus, créez une tâche distincte d'une priorité basse (>24). Voyez également s'il
est possible de désactiver l'horloge de surveillance de cette tâche pour éviter des exceptions
associées en cours d'analyse. Pour plus d'informations, reportez-vous au chapitre Horloges de
surveillance du système et des tâches du guide de programmation de votre contrôleur.
 Selon la taille de la mémoire tampon XmlItems et la position à laquelle l'élément est stocké, la
fonction peut prendre plus ou moins de temps à s'exécuter d'un appel à l'autre. Pensez-y au
moment de mettre en service l'application.
 La fonction traite un seul et unique élément. Lorsque la mémoire tampon comporte plusieurs
éléments correspondant à l'expression XPath, le premier élément trouvé est traité.

76
EIO0000002531 06/2017
Fonctions XML
Sous-chapitre 10.2
FC_XmlSetElementValue
FC_XmlSetElementValue
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Description fonctionnelle du bloc FC_XmlSetElementValue
78
Remarques concernant le bloc FC_XmlSetElementValue
79
EIO0000002531 06/2017
77
Fonctions XML
Description fonctionnelle du bloc FC_XmlSetElementValue
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Met en œuvre :
-
Description fonctionnelle
La fonction FC_XmlSetElementValue sert à modifier la valeur de l'élément XML indiqué dans la
mémoire tampon de type XmlItems.
La valeur de retour est TRUE si la fonction a été exécutée avec succès. Si cette valeur est FALSE,
évaluez la sortie q_etResult.
Interface
78
Entrée
Type de données
i_refXmlItems
Description
REFERENCE TO XmlItems Mémoire tampon fournie par l'application et
dans laquelle sont stockés les éléments et
les attributs lus ou écrits dans un fichier
XML.
i_sXpathToElement
STRING[255]
i_sElementValue
STRING[Gc_uiXmlLength Valeur à définir pour l'élément indiqué.
OfString]
Expression XPath permettant d'indiquer
l'élément qui doit être lu.
Sortie
Type de données
Description
q_etResult
ET_Result
Fournit des informations de diagnostic sous
la forme d'une valeur numérique.
EIO0000002531 06/2017
Fonctions XML
Expressions XPath définissant le contenu à définir
Pour définir l'élément dont la valeur doit être définie, utilisez la syntaxe du langage XPath
(XML Path). Les relations parent-enfant entre les différents éléments de la mémoire tampon sont
définies par le paramètre diParentIndex, qui désigne l'index de l'élément parent dans le
tableau.
NOTE : La fonction FC_XmlSetElementValue prend en charge une partie des fonctions fournies
par les expressions XPath.
Le tableau répertorie les expressions XPath prises en charge :
Expression XPath
Description
/…/<nom_élément>
Sélectionne l'élément du nœud qui correspond au nom indiqué.
/…/<nom_élément>[<n>]
Sélectionne le nème élément du nœud qui correspond au nom
indiqué.
/…/<nom_élément>[@<attribut>]
Sélectionne l'élément du nœud qui correspond au nom et à
l'attribut indiqués.
/…/<nom_élément>[@<attribut>=<valeur>] Sélectionne l'élément du nœud qui correspond au nom et à la
paire attribut/valeur indiqués.
Les prédicats, ou expressions entre crochets ([]), peuvent être suivis d'une barre oblique (/) et
d'un nom d'élément pour identifier l'élément enfant suivant.
Exemple : /…/<nom_élément>[<n>]/<nom_élément>
Remarques concernant le bloc FC_XmlSetElementValue
Remarques sur la définition de valeurs XML
Les contraintes suivantes s'appliquent :
Les opérations d'exécution de la fonction ou de recherche d'élément dans la mémoire tampon
XmlItems peuvent durer plusieurs millisecondes. Pour éviter que cette fonction ne bloque
d'autres processus, créez une tâche distincte d'une priorité basse (>24). Voyez également s'il
est possible de désactiver l'horloge de surveillance de cette tâche pour éviter des exceptions
associées en cours d'analyse. Pour plus d'informations, reportez-vous au chapitre Horloges de
surveillance du système et des tâches du guide de programmation de votre contrôleur.
 Selon la taille de la mémoire tampon XmlItems et la position à laquelle l'élément est stocké, la
fonction peut prendre plus ou moins de temps à s'exécuter d'un appel à l'autre. Pensez-y au
moment de mettre en service l'application.
 La fonction traite un seul et unique élément. Lorsque la mémoire tampon comporte plusieurs
éléments correspondant à l'expression XPath, le premier élément trouvé est traité.

EIO0000002531 06/2017
79
Fonctions XML
80
EIO0000002531 06/2017
SoMachine
Unités organisationnelles de programme (POU) CSV
EIO0000002531 06/2017
Partie VI
Unités organisationnelles de programme (POU) CSV
Unités organisationnelles de programme (POU) CSV
EIO0000002531 06/2017
81
Unités organisationnelles de programme (POU) CSV
82
EIO0000002531 06/2017
SoMachine
Blocs fonction CSV
EIO0000002531 06/2017
Chapitre 11
Blocs fonction CSV
Blocs fonction CSV
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
11.1
FB_CsvRead
84
11.2
FB_CsvWrite
93
EIO0000002531 06/2017
83
Blocs fonction CSV
Sous-chapitre 11.1
FB_CsvRead
FB_CsvRead
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
84
Page
Description fonctionnelle du bloc FB_CsvRead
85
Remarques concernant le bloc FB_CsvRead
88
Dépannage du bloc FB_CsvRead
89
Exemple de bloc FB_CsvRead
90
EIO0000002531 06/2017
Blocs fonction CSV
Description fonctionnelle du bloc FB_CsvRead
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Met en œuvre :
-
Description fonctionnelle
Le bloc fonction FB_CsvRead permet de lire un fichier CSV stocké dans le système de fichiers du
contrôleur ou dans la mémoire étendue (une carte SD, par exemple). Pour obtenir des informations
sur le système de fichiers, reportez-vous au chapitre Organisation de la mémoire Flash du guide
de programmation de votre contrôleur.
Le fichier CSV à lire contient un certain nombre de valeurs (colonnes) organisées sous forme
d'enregistrements (lignes). Les valeurs sont délimitées par un séparateur spécifique. Les
enregistrements sont séparés par un saut de ligne.
Le bloc fonction se base sur le code de séparateur indiqué pour identifier les différentes valeurs
lors de la lecture du contenu du fichier. Le code de caractère du saut de ligne varie selon le
système d'exploitation dans lequel le fichier a été créé. Le bloc fonction prend en charge les trois
codes de saut de ligne les plus courants (ASCII). Ce caractère est détecté pendant la lecture du
contenu du fichier.
Les caractères de saut de ligne (ASCII) suivants sont pris en charge :

CRLF (0D0A hex) : utilisé avec les systèmes d'exploitation Windows et MS-DOS.
LF (0A hex) : utilisé avec les systèmes d'exploitation Unix, Linux, Mac OS X et Android.

CR (0D hex) : utilisé avec les systèmes d'exploitation Mac OS X version 9 ou ultérieure.

EIO0000002531 06/2017
85
Blocs fonction CSV
Les valeurs lues dans le fichier sont stockées dans la mémoire tampon de lecture fournie par
l'application, sous forme de variables STRING. Cette mémoire tampon de lecture doit être
déclarée dans l'application en tant que ARRAY STRING à double entrée. L'entrée
i_stTableReadValues permet de fournir les dimensions du tableau et le pointeur
correspondant au bloc fonction. Pour plus d'informations, reportez-vous à la structure
ST_CsvTable (voir page 37).
Pour que le contenu s'affiche correctement dans l'application, le fichier à lire ne doit comporter que
des caractères ASCII. Un indicateur d'ordre des octets (BOM), désignant le type de codage, est
autorisé au début du fichier. Les fichiers ASCII ne comportent pas cet indicateur. Le bloc fonction
vérifie la présence d'un indicateur BOM dans le fichier.
Si le fichier contient l'un des indicateurs BOM suivants, l'exécution du bloc fonction est annulée et
une erreur est renvoyée :
FE FF hex, FF EF hex ou EF BB BF hex
Déterminez la quantité de données à lire à l'aide de l'entrée i_stReadParameter. Vous pouvez
lire l'intégralité du fichier, ou encore sélectionner un enregistrement (ligne), une colonne ou une
valeur spécifique à lire. Vous avez également la possibilité de lire uniquement les informations de
fichier fournies par la sortie q_stFileInformation.
Interface
Entrée
Type de données
Description
i_xExecute
BOOL
Le bloc fonction exécute l'opération de lecture concernant le
fichier CSV indiqué sur un front montant de cette entrée.
Reportez-vous également au chapitre Comportement des
blocs fonction avec l'entrée i_xExecute (voir page 21).
i_sFilePath
STRING[255]
Chemin d'accès au fichier CSV.
Lorsque le nom de fichier est indiqué sans extension, le bloc
fonction ajoute l'extension .csv.
i_stReadParameter
ST_CsvReadParameter
Indique le contenu à lire dans le fichier.
i_timTimeout
TIME
L'exécution du bloc fonction est annulée à l'issue de ce
délai.
Si la valeur est T#0s, la valeur par défaut T#2s est
appliquée.
i_stTableReadValues
ST_CsvTable
Structure permettant de transmettre au bloc fonction la
mémoire tampon fournie par l'application (reportez-vous à
la structure (voir page 37) ST_CsvTable).
86
EIO0000002531 06/2017
Blocs fonction CSV
Sortie
Type de données
Description
q_xDone
BOOL
Si cette sortie est TRUE, l'exécution s'est effectuée
correctement.
q_xBusy
BOOL
Si cette sortie est TRUE, le bloc fonction est en cours
d'exécution.
q_xError
BOOL
Si cette sortie est TRUE, une erreur a été détectée. Pour plus
d'informations, reportez-vous à q_etResult et
q_etResultMsg.
q_etResult
ET_Result
Fournit des informations de diagnostic et d'état sous la forme
d'une valeur numérique.
q_xBusy = True, la valeur indique l'état.
Si q_xDone ou q_xError = True, la valeur indique le
résultat.
q_sResultMsg
STRING[80]
Fournit des informations de diagnostic et d'état sous la forme
d'un message textuel.
q_stFileInformation
ST_CsvFileInfo
La structure contient des informations sur le dernier fichier
traité.
q_stWarnValueTruncated
ST_CsvWarnValueT Fournit des informations sur la première valeur tronquée, le
runcated
cas échéant.
NOTE : La sortie est mise à jour en même temps que
q_xDone.
Pour plus d'informations sur les signaux des entrées et sorties basiques, reportez-vous au chapitre
Comportement des blocs fonction avec l'entrée i_xExecute (voir page 21).
EIO0000002531 06/2017
87
Blocs fonction CSV
Remarques concernant le bloc FB_CsvRead
Observations
Les contraintes suivantes s'appliquent lors de la lecture d'un fichier CSV :
Seuls les fichiers CSV codés en ASCII sont pris en charge.
Le système ne vérifie pas si le fichier est bien au format ASCII. Lorsque le fichier contient des
caractères autres que ASCII, les valeurs renvoyées par l'application ne sont pas valides.
 Les valeurs lues dans le fichier sont stockées en tant que valeurs STRING dans l'application.
Ce principe s'applique également aux valeurs numériques. Avant de pouvoir être traitées, les
valeurs doivent être converties pour correspondre au type de données approprié. L'utilisation
des fonctions de conversion STRING_TO_ est alors recommandée. Dans ce cas, les valeurs
STRING doivent respecter une syntaxe spécifique, qui dépend du type de données cible. Pour
faciliter le traitement des valeurs lues, merci de tenir compte de ces exigences lorsque vous
créez des fichiers.
 Les opérations sur les fichiers prennent du temps. Pour éviter de compromettre des fonctions
de contrôle n'acceptant aucun retard, créez une tâche distincte d'une priorité inférieure pour ces
processus. Voyez également s'il est possible de désactiver l'horloge de surveillance de cette
tâche pour éviter des exceptions associées en cours d'analyse. Pour plus d'informations sur la
gestion des tâches, reportez-vous au chapitre Horloges de surveillance du système et des
tâches du guide de programmation de votre contrôleur.
 Le paramètre de délai i_timTimeout permet de contrôler l'opération de lecture. Si le bloc
fonction FB_CsvRead est toujours en cours d'exécution à l'issue de ce délai, l'opération de
lecture est annulée et le bloc génère une erreur. Pour savoir quelle valeur attribuer au
paramètre de délai, gardez à l'esprit que l'opération de lecture s'étale sur plusieurs cycles de
tâche. La valeur minimale sera donc égale au nombre de cycles de tâche requis, multiplié par
l'intervalle entre les tâches.
 Le nombre de cycles dépend de la taille du fichier à lire et de la taille du bloc de traitement, qui
peut être définie avec le paramètre Gc_uiCsvReadProccessingBlockSize dans la liste
GPL (voir page 49). Pour diminuer la charge par cycle de tâche, le processus d'analyse du
contenu du fichier est scindé en plusieurs opérations de lecture. Lors de chacune d'elles, un
bloc de données est traité et éventuellement stocké dans la mémoire tampon (si cette demande
a été formulée). Plus le bloc de traitement est grand, moins vous avez besoin de cycles pour
lire le fichier. Par contre, le temps d'exécution de chaque opération de lecture est plus long.
 Le code de caractère défini comme séparateur ne doit pas être inclus dans la valeur.

88
EIO0000002531 06/2017
Blocs fonction CSV
Dépannage du bloc FB_CsvRead
Dépannage
Le tableau suivant présente quelques problèmes généraux avec leurs solutions :
Problème
Cause
L'exécution se termine par la
 Le répertoire spécifié n'est
détection d'une erreur et renvoie le
pas disponible.
résultat FilePathInvalid.
 La syntaxe du chemin
d'accès au fichier n'est pas
valide.
Solution
 Vérifiez que le répertoire existe. Si le chemin
d'accès pointe vers la mémoire étendue
(une carte SD, par exemple), vérifiez que
celle-ci est disponible.
 Vérifiez que la syntaxe employée est prise
en charge par votre contrôleur.
Par exemple, le séparateur autorisé varie en
fonction du contrôleur ('\' ou '/').
 Le pointeur vers la mémoire  Vérifiez l'affectation du paramètre
L'exécution se termine par la
détection d'une erreur et renvoie le
tampon de lecture n'est pas
pbyTable dans la structure
résultat TableInvalid.
affecté.
i_stTableReadValues (voir page 37).
L'exécution se termine par la
 Les dimensions de la
 Vérifiez l'affectation du paramètre dans la
détection d'une erreur et renvoie le
mémoire tampon (table)
structure i_stTableReadValues
résultat
indiquée sont incohérentes.
(voir page 37).
TableReadValuesInvalid.
 Les paramètres du mode de  Vérifiez que la valeur choisie pour
L'exécution se termine par la
détection d'une erreur et renvoie le
lecture sont incohérents.
etReadMode est prise en charge par
résultat
ET_CsvReadMode (voir page 27).
 Aucun caractère de
ReadParameterInvalid.
séparateur n'a été défini.
 Si etReadMode = OneRow, la valeur
uiNumOfRow doit être différente de 0.
 Si etReadMode = OneColumn, la valeur
uiNumOfColumn doit être différente de 0.
 Si etReadMode = OneValue, les valeurs
uiNumOfRow et uiNumOfColumn doivent
être différentes de 0.
 La valeur sDelimiter ne doit pas être
vide.
L'exécution se termine par la
 Le délai indiqué est trop
détection d'une erreur et renvoie le
court.
résultat Timeout.
 Augmentez le paramètre de délai en
fonction du nombre de cycles nécessaires
pour lire le fichier. Tenez compte également
de l'intervalle entre les tâches.
 Augmentez la taille du bloc de traitement par
opération de lecture pour limiter le nombre
d'appels de bloc fonction nécessaires pour
lire le fichier.
EIO0000002531 06/2017
89
Blocs fonction CSV
Exemple de bloc FB_CsvRead
Présentation
L'exemple suivant illustre la manière dont les valeurs lues dans un fichier CSV sont stockées dans
la mémoire tampon fournie par l'application, en vue de leur traitement.
Exemple de fichier CSV
Contenu du fichier example.csv avec le point-virgule (;) comme séparateur :
PNo;PName;PValue;PUnit;Description
1;Velo_Max;1500;rpm;maximum velocity of the motor
2;Velo_Min;100;rpm;minimum velocity of the motor
3;Velo_ManMode_Slow;150;rpm;velocity manual mode slow move
4;Velo_ManMode_Fast;600;rpm;velocity manual mode fast move
90
EIO0000002531 06/2017
Blocs fonction CSV
Exemple de programme
PROGRAM SR_Example
VAR
fbRead :FFU.FB_CsvRead;
xCmdRead :BOOL;
sCsvTable:ARRAY[0..c_uiNumOfRows-1,0..c_uiNumOfColumns1] OF STRING(c_uiLengthOfValue);
stCsvTable: FFU.ST_CsvTable;
END_VAR
VAR CONSTANT
c_uiNumOfRows :UINT:= 8;
c_uiNumOfColumns :UINT:= 7;
c_uiLengthOfValue :UINT:= 20;
END_VAR
fbRead.i_stBufferReadValues.pbyTable := ADR(g_asCsvTable);
fbRead.i_stBufferReadValues.uiNumOfRows := c_uiNumOfRows;
fbRead.i_stBufferReadValues.uiNumOfColumns := c_uiNumOfColumns;
fbRead.i_stBufferReadValues.udiSizeOfTable := SIZEOF(asCsvTable);
fbRead.i_stReadParameter.sDelimiter :=
fbRead.i_stReadParameter.etReadMode :=
fbRead.i_stReadParameter.uiNumOfRow :=
fbRead.i_stReadParameter.uiNumOfColumn
';';
FFU.ET_CsvReadMode.AllValues;
0;
:= 0;
fbRead(
i_xExecute:= xCmdRead,
i_sFilePath:= '/sd0/Example.csv',
i_stBufferReadValues:= ,
i_stReadParameter:= ,
i_timTimeout:= ,
q_xDone=> ,
q_xBusy=> ,
q_xError=> ,
q_etResult=> ,
q_sResultMsg=> ,
q_stFileInformation=> ,
q_stCsvWarnValueTruncated=> ,
xValueTruncated=> );
EIO0000002531 06/2017
91
Blocs fonction CSV
Mémoire tampon
La mémoire tampon fournie par l'application contient les éléments lus dans le fichier CSV :
Index de
tableau
0
1
2
3
4
5
6
0
PNo
PName
PValue
PUnit
Description
–
–
1
0
Velo_Max
1500
rpm
maximum velocity of
–
–
2
1
Velo_Min
100
rpm
minimum velocity of
–
–
3
2
Velo_Man_Slow
150
rpm
velocity manual mode
–
–
4
3
Velo_Man_Fast
600
rpm
velocity manual mode
–
–
5
–
–
–
–
–
–
–
6
–
–
–
–
–
–
–
7
–
–
–
–
–
–
–
NOTE : Les valeurs de la colonne Description ont été tronquées lors de la lecture du fichier, car
les valeurs de type STRINGs dans la mémoire tampon de lecture sont limitées à 20 caractères. La
sortie q_stWarnValueTruncated du bloc fonction indique que la valeur à la ligne 2 et à la
colonne 5 a été tronquée.
92
EIO0000002531 06/2017
Blocs fonction CSV
Sous-chapitre 11.2
FB_CsvWrite
FB_CsvWrite
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Description fonctionnelle du bloc FB_CsvWrite
94
Remarques concernant le bloc FB_CsvWrite
96
Dépannage du bloc FB_CsvWrite
97
Exemple de bloc FB_CsvWrite
98
EIO0000002531 06/2017
93
Blocs fonction CSV
Description fonctionnelle du bloc FB_CsvWrite
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Met en œuvre :
-
Description fonctionnelle
Le bloc fonction FB_CsvWrite permet d'écrire des valeurs dans un fichier CSV stocké dans le
système de fichiers du contrôleur ou dans la mémoire étendue (une carte SD, par exemple). Il peut
également être utilisé pour créer un fichier. Pour obtenir des informations sur le système de
fichiers, reportez-vous au chapitre Organisation de la mémoire Flash du guide de programmation
de votre contrôleur.
Les données à écrire dans le fichier sont stockées dans la mémoire tampon fournie par
l'application sous forme de variables STRING. Cette mémoire tampon doit être déclarée dans
l'application en tant que ARRAY STRING à double entrée. L'entrée i_stTableWriteValues
permet de fournir les dimensions du tableau et le pointeur correspondant au bloc fonction. Pour
plus d'informations, reportez-vous à la structure ST_CsvTable (voir page 37).
Le tableau à double entrée est une structure de table composée de lignes et de colonnes, où
chaque ligne représente un enregistrement. Le nombre de colonnes correspond au nombre
maximal de valeurs possibles pour un enregistrement.
L'entrée i_stWriteParameter fournit le paramètre permettant de contrôler l'opération
d'écriture. Le paramètre sDelimiter permet de définir le code de caractère du séparateur inséré
entre les valeurs du fichier. Le paramètre etModeFileOpen permet d'indiquer si les données
doivent être ajoutées dans un fichier existant ou dans un nouveau fichier à créer. Définissez la
quantité de données à écrire à l'aide des paramètres uiNumOfRows et uiNumOfColumns.
94
EIO0000002531 06/2017
Blocs fonction CSV
Le code de caractère LF (0A hex) est inséré pour ajouter un saut de ligne entre
deux enregistrements.
Interface
Entrée
Type de données
Description
i_xExecute
BOOL
Le bloc fonction ouvre ou crée le fichier CSV
indiqué et y écrit le contenu spécifié sur un
front montant de cette entrée.
i_sFilePath
STRING[255]
Chemin d'accès au fichier CSV.
Lorsque le nom de fichier est indiqué sans
extension, le bloc fonction ajoute l'extension
.csv.
i_stWriteParameter
ST_WriteParameter
Indique le mode d'ouverture du fichier CSV
et le contenu qui doit y être écrit.
i_timTimeout
TIME
L'exécution du bloc fonction est annulée à
l'issue de ce délai.
Si la valeur est T#0s, la valeur par défaut
T#2s est appliquée.
i_stTableWriteValues
ST_CsvTable
Structure permettant de transmettre au bloc
fonction la mémoire tampon fournie par
l'application (reportez-vous à la structure
(voir page 37) ST_CsvTable).
Sortie
Type de données
Description
q_xDone
BOOL
Si cette sortie est TRUE, l'exécution s'est
effectuée correctement.
q_xBusy
BOOL
Si cette sortie est TRUE, le bloc fonction est
en cours d'exécution.
q_xError
BOOL
Si cette sortie est TRUE, une erreur a été
détectée. Pour plus d'informations,
reportez-vous à q_etResult et
q_etResultMsg.
q_etResult
ET_Result
Fournit des informations de diagnostic et
d'état sous la forme d'une valeur numérique.
q_xBusy = True, la valeur indique l'état.
Si q_xDone ou q_xError = True, la valeur
indique le résultat.
q_sResultMsg
STRING[80]
Fournit des informations de diagnostic et
d'état sous la forme d'un message textuel.
q_udiFileSize
UDINT
Fournit la taille du fichier traité récemment,
en octets.
EIO0000002531 06/2017
95
Blocs fonction CSV
Remarques concernant le bloc FB_CsvWrite
Observations
Les contraintes suivantes s'appliquent lors de l'écriture dans un fichier CSV :
Les opérations sur les fichiers prennent du temps. Pour éviter de compromettre des fonctions
de contrôle n'acceptant aucun retard, créez une tâche distincte d'une priorité inférieure pour ces
processus. Voyez également s'il est possible de désactiver l'horloge de surveillance de cette
tâche pour éviter des exceptions associées en cours d'analyse. Pour plus d'informations sur la
gestion des tâches, reportez-vous au chapitre Horloges de surveillance du système et des
tâches du guide de programmation de votre contrôleur.
 Le paramètre de délai i_timTimeout permet de contrôler l'opération réalisée sur le fichier. Si
le bloc fonction est toujours en cours d'exécution à l'issue de ce délai, l'opération d'écriture est
annulée et le bloc renvoie une erreur. Pour savoir quelle valeur attribuer au paramètre de délai,
gardez à l'esprit que l'opération sur le fichier s'étale sur plusieurs cycles de tâche. La valeur
minimale sera donc égale au nombre de cycles de tâche requis, multiplié par l'intervalle entre
les tâches.
 Le nombre de cycles dépend de la quantité de données à écrire et de la taille du bloc de
traitement, qui peut être définie avec le paramètre Gc_uiCsvWriteProccessinBlockSize
dans la liste GPL (voir page 49). Pour diminuer la charge par cycle de tâche, le processus
d'écriture dans le fichier est scindé en plusieurs opérations d'écriture. Lors de chacune d'elles,
un bloc de données est traité et écrit dans le fichier. Plus le bloc de traitement est grand, moins
vous avez besoin de cycles pour créer le fichier et y écrire du contenu. Par contre, le temps
d'exécution de chaque opération d'écriture est plus long.

96
EIO0000002531 06/2017
Blocs fonction CSV
Dépannage du bloc FB_CsvWrite
Dépannage
Le tableau suivant présente quelques problèmes généraux avec leurs solutions :
Problème
Cause
Solution
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FilePathInvalid.
 Le répertoire spécifié
 Vérifiez que le répertoire existe. Si le chemin d'accès
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FileAlreadyExists.
 Le fichier indiqué
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
TableInvalid.
 Le pointeur vers la
n'est pas disponible.
 La syntaxe du chemin
pointe vers la mémoire étendue (une carte SD, par
exemple), vérifiez que celle-ci est disponible.
d'accès au fichier n'est  Vérifiez que la syntaxe employée est prise en charge
pas valide.
par votre contrôleur.
Par exemple, le séparateur autorisé varie en fonction
 Le fichier indiqué
du contrôleur ('\' ou '/').
n'existe pas au chemin
spécifié.
 Sélectionnez la valeur AppendPlus pour le
paramètre etModeFileOpen (voir page 28).
existe déjà, mais ne
peut pas être écrasé
(paramètre
etModeFileOpen
(voir page 28)).
mémoire tampon de
lecture n'est pas
affecté.
 Indiquez un autre nom du fichier.
 Si le fichier existant peut être remplacé, sélectionnez
la valeur CreatePlus pour le paramètre
etModeFileOpen (voir page 28).
 Vérifiez l'affectation du paramètre pbyTable dans la
structure i_stTableWriteValues (voir page 37).
L'exécution se termine par la
 Les dimensions du
détection d'une erreur et
tableau CSV indiqué
renvoie le résultat
sont incohérentes.
TableWriteValuesInvalid
.
 Vérifiez l'affectation du paramètre dans la structure
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
WriteParameterInvalid.
 Vérifiez que la valeur choisie pour
 Les paramètres du
mode d'écriture sont
incohérents.
 Aucun caractère de
séparateur n'a été
défini.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat Timeout.
 Le délai indiqué est
trop court.
i_stTableWriteValues (voir page 37).
etModeFileOpen est prise en charge par
etModeFileOpen (voir page 28).
 La valeur sDelimiter ne doit pas être vide.
 Augmentez le paramètre de délai en fonction du
nombre de cycles nécessaires pour créer le fichier.
Tenez compte également de l'intervalle entre les
tâches.
 Augmentez la taille du bloc de traitement par
opération d'écriture pour limiter le nombre d'appels
de bloc fonction nécessaires pour créer le fichier.
EIO0000002531 06/2017
97
Blocs fonction CSV
Exemple de bloc FB_CsvWrite
Présentation
L'exemple suivant montre comment implémenter le bloc fonction FB_CsvWrite pour écrire des
données dans un fichier CSV existant.
Mémoire tampon
La mémoire tampon fournie par l'application comporte les éléments à écrire dans le fichier CSV :
Index de
tableau
0
1
2
3
4
5
6
0
2017-02-24
09:30:10
OpMode
Machine AutoMode
–
–
–
1
2017-02-24
09:35:27
Error
Module1 ErrorID
16#A123
–
–
–
2
2017-02-24
09:35:27
State
Machine ErrorStop
–
–
–
3
–
–
–
–
–
–
–
4
–
–
–
–
–
–
–
5
–
–
–
–
–
–
–
6
–
–
–
–
–
–
–
7
–
–
–
––
–
–
–
Exemple de programme
PROGRAM SR_Example
VAR
fbWrite :FFU.FB_CsvWrite;
xCmdWrite :BOOL;
asCsvTable:ARRAY[0..c_uiNumOfRows-1,0..c_uiNumOfColumns1] OF STRING(c_uiLengthOfValue);
stCsvTable: FFU.ST_CsvTable;
END_VAR
VAR CONSTANT
c_uiNumOfRows :UINT:= 8;
c_uiNumOfColumns :UINT:= 7;
c_uiLengthOfValue :UINT:= 80;
END_VAR
fbWrite.i_stTableWriteValues.pbyTable := ADR(asCsvTable);
fbWrite.i_stTableWriteValues.uiNumOfRows := c_uiNumOfRows;
98
EIO0000002531 06/2017
Blocs fonction CSV
fbWrite.i_stTableWriteValues.uiNumOfColumns := c_uiNumOfColumns;
fbWrite.i_stTableWriteValues.udiSizeOfTable := SIZEOF(asCsvTable);
fbWrite.i_stWriteParameter.sDelimiter := ';';
fbWrite.i_stWriteParameter.etModeFileOpen := FFU.ET_ModeFileOpen.Append
;
fbWrite.i_stWriteParameter.uiNumOfRows := 3;
fbWrite.i_stWriteParameter.uiNumOfColumns := c_uiNumOfColumns;
fbWrite(
i_xExecute:= xCmdWrite,
i_sFilePath:= '/sd0/Example.csv',
i_stWriteParameter:= ,
i_timTimeout:= ,
i_stTableWriteValues:= ,
q_xDone=> ,
q_xBusy=> ,
q_xError=> ,
q_etResult=> ,
q_sResultMsg=> ,
q_stFileInformation=> );
Exemple de fichier CSV
Contenu du fichier example.csv après ajout des données :
Date;Time;Eventype;Event;;;;
2017-02-24;09:27:36;OpMode;Machine - Power on;;;;
2017-02-24;09:27:54;OpMode;Machine - Manual Mode;;;;
2017-02-24;09:28:32;OpMode;Machine - Homing;;;;
2017-02-24;09:29:44;State;Machine - All Modules Homed;;;;
2017-02-24;09:30:10;OpMode;Machine - AutoMode;;;;
2017-02-24;09:35:27;Error;Module1 - ErrorID 16#A123;;;;
2017-02-24;09:35:27;State;Machine - ErrorStop;;;;
EIO0000002531 06/2017
99
Blocs fonction CSV
100
EIO0000002531 06/2017
SoMachine
Glossaire
EIO0000002531 06/2017
Glossaire
A
application
Programme comprenant des données de configuration, des symboles et de la documentation.
B
bus d'extension
Bus de communication électronique entre des modules d'E/S d'extension et un contrôleur.
C
configuration
Agencement et interconnexions des composants matériels au sein d'un système, ainsi que les
paramètres matériels et logiciels qui déterminent les caractéristiques de fonctionnement du
système.
contrôleur
Automatise des processus industriels. On parle également de contrôleur logique programmable
(PLC) ou de contrôleur programmable.
E
E/S
Entrée/sortie
P
programme
Composant d'une application constitué de code source compilé qu'il est possible d'installer dans
la mémoire d'un contrôleur logique.
EIO0000002531 06/2017
101
Glossaire
102
EIO0000002531 06/2017
SoMachine
Index
EIO0000002531 06/2017
Index
A
alias, 43
E
entrées et sorties communes
comportement des blocs fonction avec
l'entrée i_xExecute, 21
ET_CsvReadMode, 27
AllValues, 27
GetFileInformation, 27
OneColumn, 27
OneRow, 27
OneValue, 27
ET_ModeFileOpen, 28
Append, 28
AppendPlus, 28
Create, 28
CreatePlus, 28
NotSet, 28
EIO0000002531 06/2017
ET_Result, 29
AdditionalContentInvalid, 30
AnalyzingFile, 29
BufferFull, 30
CheckingInputs, 29
ClosingFile, 29
ElementNotFound, 30
FileAlreadyExists, 30
FileCloseFailed, 29
FileFormatUtility, 29
FileInconsistent, 30
FileInvalid, 29
FilenameInvalid, 31
FilenameTooLong, 31
FileNotExists, 30
FileOpenFailed, 29
FilePathInvalid, 29
FilePathTooLong, 31
FileReadFailed, 30
FileWriteFailed, 29
FirstItemInvalidParentIndex, 31
FirstItemNoElement, 31
GetFileSize, 29
GetFileSizeFailed, 30
Idle, 29
Initializing, 29
NumOfParentsExceeded, 30
OK, 29
OpeningFile, 29
ParsingFailed, 30
ReadingFile, 29
ReadParameterInvalid, 30
TableInvalid, 30
TableReadValuesInvalid, 30
TableTooSmall, 30
TableWriteValuesInvalid, 30
Timeout, 29
UnexpectedProgramBehaviour, 31
ValueNotFound, 31
WriteParameterInvalid, 30
WritingFile, 29
103
Index
XmlItemTypeInvalid, 30
XmlStructureInconsistent, 30
XPathExpressionInvalid, 29
XpathExpressionNotSupported, 31
XpathRootElementDoesNotMatch, 31
ET_XmlItemType, 26
Attribute, 26
Element, 26
NotSet, 26
F
FB_CsvRead, 84
FB_CsvRead, dépannage, 89
FB_CsvRead, description fonctionnelle, 85
FB_CsvRead, exemple, 90
FB_CsvRead, remarques, 88
FB_CsvWrite, 93
FB_CsvWrite, dépannage, 97
FB_CsvWrite, description fonctionnelle, 94
FB_CsvWrite, exemple, 98
FB_CsvWrite, remarques, 96
FB_XmlRead, 58
FB_XmlRead example, 64
FB_XmlRead, dépannage, 63
FB_XmlRead, description fonctionnelle, 59
FB_XmlRead, remarques, 62
FB_XmlWrite, 66, 67, 71
FB_XmlWrite, dépannage, 70
FB_XmlWrite, remarques, 69
FC_EtResultToString, 53
FC_XmlGetElementValue, 74
FC_XmlGetElementValue, description fonctionnelle, 75
FC_XmlGetElementValue, remarques, 76
FC_XmlSetElementValue, 77
FC_XmlSetElementValue, description fonctionnelle, 78
FC_XmlSetElementValue, remarques, 79
FileFormatUtility, 17
GCL (liste des constantes globales), 47
GPL, 49
104
G
GCL (liste des constantes globales)
FileFormatUtility, 47
GPL
FileFormatUtility, 49
S
ST_CsvFileInformation, 38
ST_CsvReadParameter, 41
ST_CsvTable, 37
ST_CsvWarnValueTruncated, 40
ST_CsvWriteParameter, 42
ST_XmlItem, 34
ST_XmlUserDefinedHeader, 36
X
XmlItems, 43
EIO0000002531 06/2017

Manuels associés