Schneider Electric EcoStruxure Machine Expert Mode d'emploi

Ajouter à Mes manuels
813 Des pages
Schneider Electric EcoStruxure Machine Expert Mode d'emploi | Fixfr
SQL Gateway
EIO0000002417 04/2020
EcoStruxure Machine Expert
Bibliothèques génériques
Guide Utilisateur
EIO0000004315.01
09/2021
www.schneider-electric.com
Table des matières
1 EcoStruxure Machine Expert - Fonctions de journalisation
des données - Guide de la bibliothèque DataLogging. . . . . . . . . . . .
2 EcoStruxure Machine Expert - FileFormatUtility
Guide de la bibliothèque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 EcoStruxure Machine Expert - PackML
Guide de bibliothèque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 EcoStruxure Machine Expert - PD_ETest
Guide de la bibliothèque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 EcoStruxure Machine Expert - Affichage et réglage de l'horodateur
SysTimeRtc et SysTimeCore - Guide de la bibliothèque. . . . . . . . . .
6 EcoStruxure Machine Expert - Fonctions diverses Toolbox
Guide de la bibliothèque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 EcoStruxure Machine Expert - Gestion d'un intervalle de tâche
cyclique - Toolbox_Advance - Guide de la bibliothèque. . . . . . . . . .
8 EcoStruxure Machine Expert - Twido Emulation Support
Guide de la bibliothèque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000004315.01 09/2021
Partie I
Partie II
Partie III
Partie IV
Partie V
Partie VI
Partie VII
Partie VIII
2
EcoStruxure Machine Expert
EIO0000002939 06/2019
EcoStruxure Machine Expert
Fonctions de journalisation des
données
Guide de la bibliothèque DataLogging
EIO0000002939.00
06/2019
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.
© 2019 Schneider Electric. Tous droits réservés.
2
EIO0000002939 06/2019
Table des matières
Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . .
A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1 Journalisation des données . . . . . . . . . . . . . . . . . . . . . .
Présentation de la journalisation des données . . . . . . . . . . . . . . . . . .
Configuration du journal des données. . . . . . . . . . . . . . . . . . . . . . . . .
Gestion des fichiers de journalisation des données . . . . . . . . . . . . . .
Informations supplémentaires sur le fichier de journalisation des
données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ajout des blocs fonction LogRecord et Dump . . . . . . . . . . . . . . . . . . .
Création d'une chaîne WSTRING . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Annexes
.........................................
Annexe A Représentation des fonctions et blocs fonction . . . . . . .
Différences entre une fonction et un bloc fonction . . . . . . . . . . . . . . .
Utilisation d'une fonction ou d'un bloc fonction en langage IL . . . . . . .
Utilisation d'une fonction ou d'un bloc fonction en langage ST . . . . . .
Glossaire
Index
EIO0000002939 06/2019
.........................................
.........................................
5
7
11
12
14
17
21
22
23
25
27
28
29
33
37
39
3
4
EIO0000002939 06/2019
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.
EIO0000002939 06/2019
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.
QUALIFICATION DU PERSONNEL
Une personne qualifiée est une personne qui a les qualifications suivantes :
Compétences et connaissances liées à la construction et à l'exploitation d'équipements
électriques et à l'installation.
 Connaissance de l'exploitation des fonctionnalités de la machine dans l'implémentation du
logiciel.
 A reçu une formation en sécurité permettant de reconnaître et d'éviter les dangers potentiels.

La personne qualifiée doit être capable de détecter d'éventuels dangers qui pourraient découler
du paramétrage, de modifications des valeurs de paramétrage et plus généralement des
équipements mécaniques, électriques ou électroniques. La personne qualifiée doit connaître les
normes, dispositions et régulations liées à la prévention des accidents de travail, et doit les
observer lors de la conception et de l'implémentation du système.
INSTRUCTIONS D'UTILISATION
Ce produit est une bibliothèque à utiliser avec un système de commande et des servoamplificateurs. La bibliothèque n'est conçue qu'en vue d'une utilisation telle que décrite dans la
présente documentation, appliquée au secteur industriel.
Observez en permanence les instructions applicables liées à la sécurité, les conditions spécifiques
et les données techniques.
Réalisez une analyse des risques en rapport avec l'utilisation spécifique avant d'utiliser ce produit.
Prenez les mesures de sécurité qui découlent des résultats.
Étant donné que ce produit est utilisé au sein d'un système qui l'englobe, vous devez assurer la
sécurité du personnel par la conception même du système global (la conception de la machine,
par exemple).
Aucune autre utilisation n'est prévue. Toute autre utilisation pourrait être dangereuse.
6
EIO0000002939 06/2019
A propos de ce manuel
Présentation
Objectif du document
Ce guide présente les fonctions de journalisation des données utilisables par les contrôleurs qui
prennent en charge les opérations de gestion de fichiers.
Champ d'application
Ce document a été actualisé pour le lancement d’EcoStruxureTM Machine Expert V1.1.
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 contrôle cruciales.
Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de
commande critique.
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.
EIO0000002939 06/2019
7
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.
AVERTISSEMENT
UTILISATION INCORRECTE DES UNITES ORGANISATIONNELLES DU PROGRAMME






Effectuez une analyse de la sécurité de l'application et des équipements installés.
Vérifiez que les POU sont compatibles avec les équipements 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 fonctionnement à 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.
8
EIO0000002939 06/2019
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
IEC 61131-2:2007
Automates programmables - Partie 2 : exigences et essais des équipements
ISO 13849-1:2015
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
ISO 14119:2013
Sécurité des machines - Dispositifs de verrouillage associés à des protecteurs Principes de conception et de choix
ISO 13850:2015
Sécurité des machines - Fonction d'arrêt d'urgence - Principes de conception
IEC 62061:2015
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é : prescriptions 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:2016
Réseaux de communication industriels - Profils - Partie 3 : Bus de terrain de sécurité
fonctionnelle - Règles générales et définitions de profils.
2006/42/EC
Directive Machines
2014/30/EU
Directive sur la compatibilité électromagnétique
2014/35/EU
Directive sur les basses tensions
EIO0000002939 06/2019
9
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.
10
EIO0000002939 06/2019
EcoStruxure Machine Expert
Journalisation des données
EIO0000002939 06/2019
Chapitre 1
Journalisation des données
Journalisation des données
Introduction
Ce document présente la fonctionnalité de journalisation des données utilisable par les automates
qui prennent en charge les opérations de gestion de fichiers.
Un journal des données est un fichier texte de chaînes définies par l'utilisateur contenant des
informations sur les données d'application relatives à un processus ou une machine. Il est stocké
sur l'automate. Vous pouvez le télécharger et l'ouvrir avec un éditeur de texte standard. Ces
informations incluents des valeurs de variables intégrées et le texte qui leur est associé.
L'indication de l'heure et de la date est une option supplémentaire.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Présentation de la journalisation des données
12
Configuration du journal des données
14
Gestion des fichiers de journalisation des données
17
Informations supplémentaires sur le fichier de journalisation des données
21
Ajout des blocs fonction LogRecord et Dump
22
Création d'une chaîne WSTRING
23
EIO0000002939 06/2019
11
Journalisation des données
Présentation de la journalisation des données
Présentation
Vous pouvez contrôler et analyser les données d'application en examinant le fichier de journalisation des données (.log).
Téléchargement de fichiers
depuis SoMachine,
le serveur Web du contrôleur
ou à la demande du client FTP
Application
du contrôleur
Mémoire
du contrôleur
Fichier journal
BF
Enregistrement
Fichier journal
Commande
de vidage
BF
Vidage
Mémoire tampon
du fichier journal
Journal des données x
Journal des données y
Journal des données z
Vidage
automatique
Nouveau
journal
de données
Forcer le vidage
de la mémoire tampon
JournalDonnées.log
Journal des données 1
Journal des données 2
Journal des données 3
Journal des données 4
Journal des données 5
Journal des données 6
…
La figure illustre une application composée de 2 blocs fonction, LogRecord et Dump. Le bloc
fonction LogRecord écrit les données dans la mémoire tampon qui les transfère, lors de son
vidage, au fichier de journalisation (.log) situé dans la mémoire du contrôleur. Le vidage de la
mémoire tampon est automatiquement déclenché lorsqu'elle est pleine à 80 %. Il peut être forcé à
l'aide de la fonction Dump. En tant que client FTP standard, un PC peut accéder au fichier de
journalisation des données dès lors que le contrôleur sert de serveur FTP. Vous pouvez également
télécharger le fichier depuis EcoStruxure Machine Expert ou le serveur Web du contrôleur.
NOTE : Seuls les contrôleurs disposant de fonctionnalités de gestion des fichiers peuvent prendre
en charge la journalisation des données. Reportez-vous au manuel de programmation de
l'automate pour savoir s'il prend en charge la gestion des fichiers. Le logiciel ne vérifie pas si votre
contrôleur est compatible avec les opérations de journalisation des données.
12
EIO0000002939 06/2019
Journalisation des données
Exemple de fichier de journalisation des données (.log)
Entries in File: 8; Last Entry: 8;
18/06/2009;14:12:33;cycle: 1182;
18/06/2009;14:12:35;cycle: 1292;
18/06/2009;14:12:38;cycle: 1450;
18/06/2009;14:12:40;cycle: 1514;
18/06/2009;14:12:41;cycle: 1585;
18/06/2009;14:12:43;cycle: 1656;
18/06/2009;14:14:20;cycle: 6346;
18/06/2009;14:14:26;cycle: 6636;
Procédure de mise en œuvre
Avant de commencer à écrire votre programme, vous devez d'abord déclarer et configurer les
fichiers de journalisation dans votre application.
EIO0000002939 06/2019
13
Journalisation des données
Configuration du journal des données
Ajouter un gestionnaire de journaux de données
Avant de configurer la journalisation des données, ajoutez un gestionnaire de journaux de
données à votre configuration :
Étape
14
Action
1
Dans l'arborescence Outils, sélectionnez le nœud Application, cliquez sur le signe plus vert, puis
sélectionnez Ajouter d'autres objets → Gestionnaire de journaux de données....
Résultat : la boîte de dialogue Add Data Log Manager s'ouvre.
2
Dans la boîte de dialogue Add Data Log Manager, cliquez sur Ajouter.
Résultat : un nœud Gestionnaire de journaux de données apparaît sous le nœud Application.
3
Sélectionnez le nœud Gestionnaire de journaux de données, cliquez sur le signe plus vert, puis
sélectionnez Journal de données....
Résultat : la boîte de dialogue Add DataLog s'ouvre.
4
Dans la zone de texte Data Logging File Name, saisissez le nom de fichier de votre journal de
données et cliquez sur Ajouter.
Résultat : le journal de données apparaît avec ce nom sous le nœud Gestionnaire de journaux de
données et l'écran de configuration s'ouvre dans la vue éditeur au milieu de l'écran EcoStruxure
Machine Expert Logic Builder.
Remarque : il est impossible de modifier le nom du journal de données ultérieurement.
5
Définissez les paramètres du journal de données (voir page 15).
6
Répétez les étapes 3 à 5 pour créer d'autres journaux de données.
EIO0000002939 06/2019
Journalisation des données
Ecran de configuration
Cet écran de configuration n'apparaît qu'une fois que vous avez ajouté un journal de données à
votre configuration :
EIO0000002939 06/2019
15
Journalisation des données
Paramètres de configuration
Paramètre
Description
Add Date
Ces options permettent d'inscrire la date et l'heure de chaque enregistrement. Par
exemple, une instance ajoutée le 10 juin 2009 à 14h:30 peut apparaître sous les
formes suivantes : 10/06/2009, 06/10/2009 ou 20090610 ... à 14:30 ou
02:30:00 pm, etc.
Add Time
Max number of entries
Cette option permet de définir le nombre maximum d'enregistrements contenus dans
le journal de données. La valeur doit être comprise entre 10 et 65 536. (Elle est
de 10 000 par défaut.)
Mode
Circular (par
défaut)
Lorsque la valeur Max number of entries est atteinte, les
nouveaux enregistrements remplacent les anciens. Vous
pouvez utiliser la première ligne du journal de données pour
connaître la position du dernier enregistrement. Les cas suivants
sont basés sur un fichier configuré pour un maximum de
10 enregistrements :
 Cas 1 : Entries in File: 8; Last Entry: 8
Explication : le nombre d'entrées dans le fichier est égal à la
valeur de Last Entry. Les enregistrements sont classés du
N°1 (le plus ancien) au N°8 (le plus récent).
 Cas 2 : Entries in File: 10; Last Entry: 5
Explication : le nombre d'entrées dans le fichier est supérieur
à la valeur de Last Entry. Le fichier est saturé et chaque
nouvel enregistrement replace le plus ancien. Les
10 enregistrements sont classés dans cet ordre (du plus
ancien au plus récent) : 6, 7, 8, 9, 10, 1, 2, 3, 4, 5
Stop when full
Lorsque la valeur Max number of entries est atteinte, la
tentative d'enregistrement suivante renvoie un message
d'erreur.
Internal Buffer Size
Configurez la taille de la mémoire tampon qui stocke les nouveaux enregistrements.
Vous pouvez entrer une valeur comprise entre 1 et celle configurée dans Max
number of entries. (Valeur par défaut : 10.)
Max characters per entry
(optimization)
Définissez la longueur maximale de chaque entrée. Les valeurs autorisées vont
de 10 à 255. (Valeur par défaut : 64.)
La longueur maximale inclut les séparateurs et les éventuelles informations de date
et heure. Des espaces supplémentaires sont ajoutés à la fin de la ligne pour obtenir
le nombre de caractères définis.
Separator between date, time
and record
Définissez le caractère à insérer entre les différents champs du journal des données.
Un séparateur supplémentaire est ajouté après l'enregistrement.
REMARQUE : pour chaque journal de données configuré, il existe une instance du bloc fonction LogRecord portant
le même nom que ce journal de données. Cette instance gère toutes les données internes et assure la journalisation
des données.
16
EIO0000002939 06/2019
Journalisation des données
Gestion des fichiers de journalisation des données
Introduction
Un bloc fonction (LogRecord) est fourni pour écrire des entrées de chaîne de texte dans le fichier
de journalisation des données. Ce bloc fonction stocke la chaîne d'entrée dans une mémoire
tampon interne. Lorsque celle-ci atteint 80 % de sa capacité, les chaînes sont envoyées vers le
fichier réel sur le contrôleur. En utilisant le bloc fonction Dump, vous pouvez forcer ce mécanisme.
Lorsque l'alimentation est coupée, vous risquez de perdre les données conservées dans la
mémoire tampon interne ou de rallonger la durée du cycle avant vidage.
AVIS
PERTE DE DONNÉES


Ne coupez pas l'alimentation du contrôleur tant que les informations de la mémoire tampon
interne n'ont pas été déplacées vers le système de fichiers réel.
Si les données enregistrées sont importantes pour l'application, configurez la taille de la
mémoire tampon interne sur 1.
Le non-respect de ces instructions peut provoquer des dommages matériels.
Ajout d’un enregistrement avec le bloc fonction LogRecord
Ce bloc fonction permet de journaliser une chaîne UNICODE dans un journal spécifique :
Paramètres d'entrée
Paramètre
Type
Commentaire
xExecute
BOOL
La fonction est exécutée sur le front montant de cette entrée.
REMARQUE : lorsque l'entrée xExecute est définie sur TRUE lors du premier
cycle de tâche en mode RUN après un redémarrage à froid ou à chaud, le front
montant n'est pas détecté.
wsRecord
WSTRING
Cette chaîne de texte UNICODE définie par l'utilisateur est écrite dans le fichier
de journalisation des données.
NOTE : Le type WSTRING (voir page 23) est disponible dans la bibliothèque
Standard64.lib, insérée automatiquement lorsque le gestionnaire des
journaux de données est ajouté à l'application.
EIO0000002939 06/2019
17
Journalisation des données
Paramètres de sortie
Paramètre
Type
Commentaire
xDone
BOOL
Cette sortie est définie sur TRUE lorsque l'enregistrement est sauvegardé dans la
mémoire tampon interne sans messages d'erreur.
xBusy
BOOL
Cette sortie reste sur TRUE tant que LogRecord est en cours d'exécution
(jusqu'à la fin du transfert vers la mémoire tampon).
xError
BOOL
Cette sortie est définie sur TRUE lorsque qu'une erreur survient (lorsque la
mémoire tampon interne est pleine, par exemple).
eError
ERROR
Cette sortie contient le code d'erreur lorsque la valeur de xError est TRUE :
 NO_ERROR
 INIT_ERROR
 DUMP_ERROR
 BUFFER_FULL_ERROR
 FILE_FULL_ERROR
 DUMP_INCOMPLETED
 INPUT_ERROR
 FILE_OPEN_ERROR
 FILE_SETPOINTER_ERROR
 FILE_WRITE_ERROR
 FILE_CLOSE_ERROR
NOTE : Si la chaîne dépasse la longueur définie, elle est tronquée.
Les sorties xDone et xError restent sur TRUE tant que xExecute prend la valeur TRUE. Si
xExecute est défini sur FALSE avant que xDone ou xError soit défini sur TRUE (xBusy prend
toujours la valeur TRUE), l'un de ces paramètres passe à la valeur TRUE lorsque le bloc fonction
est exécuté sur un seul cycle de contrôleur pour que l'application détecte cet achèvement :
1
1
Un cycle en tant que Ex prend la valeur FALSE.
Le bloc fonction LogRecord inclut une instance correspondant à chaque fichier de journalisation
des données configuré.
NOTE : La déclaration d'instance du bloc fonction étant automatique, il est inutile de déclarer
explicitement une instance de bloc fonction. Si vous déclarez explicitement une instance du bloc
fonction, un message s’affiche indiquant que la déclaration a été effectuée 2 fois (2 time variable
declaration) et le bloc fonction devient inopérant.
18
EIO0000002939 06/2019
Journalisation des données
Ajoutez le bloc fonction à votre unité organisationnelle de programme (POU) et définissez
l'instance du fichier de journalisation appropriée avec la fonction d'aide à la saisie (voir Ajout de
LogRecord (voir page 22)).
Forçage d’un enregistrement avec la méthode Dump
Vous pouvez utiliser la méthode Dump (une méthode peut être considérée comme une sousfonction d'un bloc fonction, en l'occurrence LogRecord) pour forcer les données d'application à
déplacer les enregistrements sauvegardés dans la mémoire tampon interne vers le fichier réel qui
se trouve dans le système de fichiers du contrôleur :
Paramètres
Entrée
Type
Commentaire
xExecute
BOOL
La fonction d'enregistrement est exécutée sur le front montant de cette entrée.
NOTE : Si xExecute est défini sur 1 lors du premier cycle de tâche du
contrôleur, le front montant n'est pas détecté.
Sortie
Type
Commentaire
xDone
BOOL
Cette sortie est définie sur TRUE lorsque les enregistrements sont sauvegardés
sans messages d'erreur.
xBusy
BOOL
Cette sortie reste sur TRUE tant que Dump est en cours d'exécution (jusqu'à la fin
de l'écriture du fichier).
xError
BOOL
Cette sortie est définie sur TRUE lorsque qu'une erreur est détectée (lorsque le
fichier de journalisation des données est plein, par exemple).
eError
ERROR
Cette sortie contient le code d'erreur lorsque la valeur de xError est TRUE :
 NO_ERROR
 INIT_ERROR
 DUMP_ERROR
 BUFFER_FULL_ERROR
 FILE_FULL_ERROR
 DUMP_INCOMPLETED
 INPUT_ERROR
 FILE_OPEN_ERROR
 FILE_SETPOINTER_ERROR
 FILE_WRITE_ERROR
 FILE_CLOSE_ERROR
EIO0000002939 06/2019
19
Journalisation des données
Reportez-vous à la section Ajout d'une méthode (voir page 22) pour plus d'informations sur la
mise en œuvre de la méthode DumpDump.
Enregistrement automatique dans le fichier de journalisation des données
Lorsque le bloc fonction LogRecord est utilisé et que la mémoire tampon interne est pleine à
80 %, le système déplace automatiquement les données contenues dans le tampon interne vers
le fichier de journalisation des données. Le bloc fonction Dump permet de forcer ce déplacement
sans attendre la limite de 80 %. Cette limite de 80 % permet de lancer le processus d'écriture avant
que la mémoire tampon soit pleine et lors de l'ajout d'une nouvelle chaîne.
Le tableau ci-après indique à quel stade s'effectue l'enregistrement dans le fichier pour une taille
de tampon configurée donnée (80 % de la taille de la mémoire tampon arrondie à l'entier inférieur
le plus proche) :
Taille du
tampon
Limite de
80 %
Commentaire
1
1
La sauvegarde dans le fichier de journalisation des données est activée dès
qu'un enregistrement est ajouté avec un emplacement supplémentaire
disponible pour un nouvel enregistrement lors de la sauvegarde.
La sauvegarde dans le fichier de journalisation des données est activée
lorsque la mémoire tampon est pleine à 80 % avec un emplacement
supplémentaire disponible pour un nouvel enregistrement arrivant au cours
de la sauvegarde.
2
1
3
2
4
3
5
4
6
4
7
5
8
6
La sauvegarde dans le fichier de journalisation des données est activée
lorsque la mémoire tampon est pleine à 80 % avec des emplacements
supplémentaires disponibles pour de nouveaux enregistrements arrivant au
cours de la sauvegarde.
...
Lors d'un enregistrement explicité (Dump) ou automatique (80 %), le fichier de journalisation des
données est fermé après la sauvegarde de chaque enregistrement (ou groupe d'enregistrements)
pour parer à une éventuelle coupure de courant externe.
20
EIO0000002939 06/2019
Journalisation des données
Informations supplémentaires sur le fichier de journalisation des données
Propriétés du journal des données
Vous pouvez accéder aux propriétés du journal des données après avoir configuré le bloc fonction.
Les propriétés LogRecord sont des variables supplémentaires (lecture seule) automatiquement
associées à l'instance LogRecord, qui fournissent des informations sur l'état du fichier de journalisation des données :
Variables
Type
Description
<Nom de fichier
journal>.NumberOfRecords
UDINT
Nombre d'enregistrements contenus dans le fichier de
journalisation des données.
<Nom de fichier
journal>.NumberOfBufferedRecords
UINT
Nombre d'enregistrements contenus dans la mémoire
tampon.
<Nom de fichier journal>.FileStatus
FILE_STATUS
Informations d'état sur le fichier de journalisation des
données (type FILE_STATUS) :
 0: OK
 1: FILE_FULL
 2: NO_WRITE_ACCESS
 3: FILE_NOT_EXISTS
<Nom de fichier journal>.DumpInProgress BOOL
TRUE lorsque les enregistrements mis en mémoire
tampon sont stockés dans le fichier de journalisation
des données.
Recommandation
Le bloc fonction LogRecord nécessite bien plus que quinze cycles d'intervalle après avoir été
activé (avec xExecute) pour pouvoir enregistrer un enregistrement dans le fichier journal. Par
conséquent, il est vivement recommandé d'utiliser ce bloc fonction dans une tâche FAST :
Type de tâche
Intervalle (ms)
Temps minimum nécessaire au stockage de
l'enregistrement
Cyclique
20
300 ms
Cyclique
1
15 ms : vivement recommandé
Evénement
EIO0000002939 06/2019
Nécessite 15 événements : pas recommandé
21
Journalisation des données
Ajout des blocs fonction LogRecord et Dump
Vue d'ensemble
Pour ajouter le bloc fonction LogRecord et la méthode Dump à votre projet, procédez comme suit :
Ajout de LogRecord
Ajoutez le bloc fonction LogRecord à votre projet :
Etape
Action
Commentaire
1
Insérez un bloc fonction LogRecord dans votre
POU avec Input Assistant ou en entrant
directement LogRecord.
Dans la boîte de dialogue Input Assistant, effectuez
les sélections suivantes :
 Catégories : Function Blocks (Libraries)
 Eléments : {} SEDL → LogRecord
(éléments en représentation structurée)
2
Cliquez sur OK ou appuyez sur ENTER.
Le bloc fonction LogRecord est désormais intégré à
votre projet.
3
Sélectionnez le fichier de journalisation des
données approprié comme nom d'instance
LogRecord.
Dans l'Aide à la saisie, sélectionnez le fichier de
journalisation des données approprié ou entrez son
nom.
4
Configurez les entrées et sorties comme
d'habitude.
Reportez-vous à la description des paramètres de ce
bloc fonction (voir page 17).
Ajout de la méthode Dump
Ajoutez la méthode Dump à votre projet :
Etape
22
Action
Commentaire
1
Insérez une méthode Dump dans votre POU avec
Input Assistant ou en entrant directement
LogRecord.Dump.
Dans la boîte de dialogue Input Assistant, effectuez
les sélections suivantes :
 Catégories : Function Blocks (Libraries)
 Items: SEDL → LogRecord → Dump
(éléments en représentation structurée)
2
Cliquez sur OK ou appuyez sur ENTER.
La méthode LogRecord.Dump est désormais
intégrée à votre projet.
3
Sélectionnez le fichier de journalisation des
données approprié comme nom d'instance
LogRecord.
Dans l'Input Assistant, sélectionnez le fichier de
journalisation des données approprié ou entrez son
nom.
4
Configurez les entrées et sorties comme
d'habitude.
Reportez-vous à la description des paramètres de ce
bloc fonction (voir page 19).
EIO0000002939 06/2019
Journalisation des données
Création d'une chaîne WSTRING
Vue d'ensemble
L'entrée wsRecord du bloc fonction LogRecord est du type WSTRING (wide string). Pour créer la
chaîne de journal, vous devez d'abord ajouter la bibliothèque Standard64 à votre application et
utiliser des fonctions de chaîne étendue.
Exemple
La figure ci-après illustre la création d'une chaîne WSTRING qui inclut une valeur de variable :
EIO0000002939 06/2019
23
Journalisation des données
24
EIO0000002939 06/2019
EcoStruxure Machine Expert
EIO0000002939 06/2019
Annexes
EIO0000002939 06/2019
25
26
EIO0000002939 06/2019
EcoStruxure Machine Expert
Représentation des fonctions et blocs fonction
EIO0000002939 06/2019
Annexe A
Représentation des fonctions et blocs fonction
Représentation des fonctions et blocs fonction
Présentation
Chaque fonction peut être représentée dans les langages suivants :
IL : (Instruction List) liste d'instructions
 ST : (Structured Text) littéral structuré
 LD : (Ladder Diagram) schéma à contacts
 FBD : Function Block Diagram (Langage à blocs fonction)
 CFC : Continuous Function Chart (Diagramme fonctionnel continu)

Ce chapitre fournit des exemples de représentations de fonctions et blocs fonction et explique
comment les utiliser dans les langages IL et ST.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Différences entre une fonction et un bloc fonction
28
Utilisation d'une fonction ou d'un bloc fonction en langage IL
29
Utilisation d'une fonction ou d'un bloc fonction en langage ST
33
EIO0000002939 06/2019
27
Représentation des fonctions et blocs fonction
Différences entre une fonction et un bloc fonction
Fonction
Une fonction :
est une POU (Program Organization Unit ou unité organisationnelle de programme) qui renvoie
un résultat immédiat ;
 est directement appelée par son nom (et non par une instance) ;
 ne conserve pas son état entre deux appels ;
 peut être utilisée en tant qu'opérande dans des expressions.

Exemples : opérateurs booléens (AND), calculs, conversions (BYTE_TO_INT)
Bloc fonction
Un bloc fonction :
 est une POU qui renvoie une ou plusieurs sorties ;
 doit être appelé par une instance (copie de bloc fonction avec nom et variables dédiées).
 Chaque instance conserve son état (sorties et variables internes) entre deux appels à partir
d'un bloc fonction ou d'un programme.
Exemples : temporisateurs, compteurs
Dans l'exemple, Timer_ON est une instance du bloc fonction TON :
28
EIO0000002939 06/2019
Représentation des fonctions et blocs fonction
Utilisation d'une fonction ou d'un bloc fonction en langage IL
Informations générales
Cette partie explique comment mettre en œuvre une fonction et un bloc fonction en langage IL.
Les fonctions IsFirstMastCycle et SetRTCDrift, ainsi que le bloc fonction TON, sont utilisés
à titre d'exemple pour illustrer les mises en œuvre.
Utilisation d'une fonction en langage IL
La procédure suivante explique comment insérer une fonction en langage IL :
Étape
1
Action
Ouvrez ou créez une POU en langage IL (Instruction List, ou liste d'instructions).
NOTE : La procédure de création d'une POU n'est pas détaillée ici. Pour plus d'informations,
reportez-vous à la section Ajout et appel de POU (voir EcoStruxure Machine Expert, Guide de
programmation).
2
Créez les variables nécessaires à la fonction.
3
Si la fonction possède une ou plusieurs entrées, chargez la première entrée en utilisant
l'instruction LD.
4
Insérez une nouvelle ligne en dessous et :
 saisissez le nom de la fonction dans la colonne de l'opérateur (champ de gauche), ou
 utilisez l'Aide à la saisie pour sélectionner la fonction (sélectionnez Insérer l'appel de module
dans le menu contextuel).
5
Si la fonction a plus d'une entrée et que l'assistant Aide à la saisie est utilisé, le nombre requis de
lignes est automatiquement créé avec ??? dans les champs situés à droite. Remplacez les ??? par
la valeur ou la variable appropriée compte tenu de l'ordre des entrées.
6
insérez une nouvelle ligne pour stocker le résultat de la fonction dans la variable appropriée :
saisissez l'instruction ST dans la colonne de l'opérateur (champ de gauche) et le nom de la variable
dans le champ de droite.
Pour illustrer la procédure, utilisons les fonctions IsFirstMastCycle (sans paramètre d'entrée)
et SetRTCDrift (avec paramètres d'entrée) représentées graphiquement ci-après :
Fonction
Représentation graphique
sans paramètre d'entrée :
IsFirstMastCycle
EIO0000002939 06/2019
29
Représentation des fonctions et blocs fonction
Fonction
Représentation graphique
avec paramètres d'entrée :
SetRTCDrift
En langage IL, le nom de la fonction est utilisé directement dans la colonne de l'opérateur :
Fonction
Représentation dans l'éditeur IL de POU
Exemple en IL d'une
fonction sans paramètre
d'entrée :
IsFirstMastCycle
Exemple IL d'une
fonction avec des
paramètres d'entrée :
SetRTCDrift
30
EIO0000002939 06/2019
Représentation des fonctions et blocs fonction
Utilisation d'un bloc fonction en langage IL
La procédure suivante explique comment insérer un bloc fonction en langage IL :
Étape Action
1
Ouvrez ou créez une POU en langage IL (Instruction List, ou liste d'instructions).
NOTE : La procédure de création d'une POU n'est pas détaillée ici. Pour plus d'informations,
reportez-vous à la section Ajout et appel de POU (voir EcoStruxure Machine Expert, Guide de
programmation).
2
Créez les variables nécessaires au bloc fonction (y compris le nom de l'instance).
3
L'appel de blocs fonction nécessite l'utilisation d'une instruction CAL :
 Utilisez l'Aide à la saisie pour sélectionner le bloc fonction (cliquez avec le bouton droit et
sélectionnez Insérer l'appel de module dans le menu contextuel).
 L'instruction CAL et les E/S nécessaires sont automatiquement créées.
Chaque paramètre (E/S) est une instruction :
 Les valeurs des entrées sont définies à l'aide de « := ».
 Les valeurs des sorties sont définies à l'aide de =>.
4
Dans le champ CAL de droite, remplacez les ??? par le nom de l'instance.
5
Remplacez les autres ??? par une variable ou une valeur immédiate appropriée.
Pour illustrer la procédure, utilisons le bloc fonction TON représenté graphiquement ci-après :
Bloc fonction
Représentation graphique
TON
En langage IL, le nom du bloc fonction est utilisé directement dans la colonne de l'opérateur :
EIO0000002939 06/2019
31
Représentation des fonctions et blocs fonction
Bloc fonction
Représentation dans l'éditeur IL de POU
TON
32
EIO0000002939 06/2019
Représentation des fonctions et blocs fonction
Utilisation d'une fonction ou d'un bloc fonction en langage ST
Informations générales
Cette partie décrit comment mettre en œuvre une fonction ou un bloc fonction en langage ST.
La fonction SetRTCDrift et le bloc fonction TON sont utilisés à titre d'exemple pour illustrer les
mises en œuvre.
Utilisation d'une fonction en langage ST
La procédure suivante explique comment insérer une fonction en langage ST :
Étape
Action
1
Ouvrez ou créez une POU en langage ST (Structured Text ou Littéral structuré).
NOTE : La procédure de création d'une POU n'est pas détaillée ici. Pour plus d'informations,
reportez-vous à la section Ajout et appel de POU (voir EcoStruxure Machine Expert, Guide de
programmation).
2
Créez les variables nécessaires à la fonction.
3
Utilisez la syntaxe générale dans l'éditeur ST de POU pour la représentation en langage ST d'une
fonction. La syntaxe générale est la suivante :
RésultatFonction:= NomFonction(VarEntrée1, VarEntrée2, … VarEntréex);
Pour illustrer la procédure, utilisons la fonction SetRTCDrift représentée graphiquement ciaprès :
Fonction
Représentation graphique
SetRTCDrift
EIO0000002939 06/2019
33
Représentation des fonctions et blocs fonction
La représentation en langage ST de cette fonction est la suivante :
Fonction
Représentation dans l'éditeur ST de POU
SetRTCDrift
PROGRAM MyProgram_ST
VAR myDrift: SINT(-29..29) := 5;
myDay: DAY_OF_WEEK := SUNDAY;
myHour: HOUR := 12;
myMinute: MINUTE;
myRTCAdjust: RTCDRIFT_ERROR;
END_VAR
myRTCAdjust:= SetRTCDrift(myDrift, myDay, myHour, myMinute);
Utilisation d'un bloc fonction en langage ST
La procédure suivante explique comment insérer un bloc fonction en langage ST :
Étape
Action
1
Ouvrez ou créez une POU en langage ST (Structured Text ou Littéral structuré).
NOTE : La procédure de création d'une POU n'est pas détaillée ici. Pour plus d'informations sur
l'ajout, la déclaration et l'appel de POU, reportez-vous à la documentation (voir EcoStruxure
Machine Expert, Guide de programmation) associée.
2
Créez les variables d'entrée, les variables de sortie et l'instance requises pour le bloc fonction :
 Les variables d'entrée sont les paramètres d'entrée requis par le bloc fonction.
 Les variables de sortie reçoivent la valeur renvoyée par le bloc fonction.
3
Utilisez la syntaxe générale dans l'éditeur ST de POU pour la représentation en langage ST d'un
bloc fonction. La syntaxe générale est la suivante :
FunctionBlock_InstanceName(Input1:=VarInput1, Input2:=VarInput2,...
Ouput1=>VarOutput1, Ouput2=>VarOutput2,...);
Pour illustrer la procédure, utilisons le bloc fonction TON représenté graphiquement ci-après :
Bloc fonction
Représentation graphique
TON
34
EIO0000002939 06/2019
Représentation des fonctions et blocs fonction
Le tableau suivant montre plusieurs exemples d'appel de bloc fonction en langage ST :
Bloc fonction
Représentation dans l'éditeur ST de POU
TON
EIO0000002939 06/2019
35
Représentation des fonctions et blocs fonction
36
EIO0000002939 06/2019
EcoStruxure Machine Expert
Glossaire
EIO0000002939 06/2019
Glossaire
C
CFC
Acronyme de continuous function chart (diagramme fonctionnel continu). Langage de
programmation graphique (extension de la norme IEC 61131-3) basé sur le langage de diagramme
à blocs fonction et qui fonctionne comme un diagramme de flux. Toutefois, il n'utilise pas de
réseaux et le positionnement libre des éléments graphiques est possible, ce qui permet les boucles
de retour. Pour chaque bloc, les entrées se situent à gauche et les sorties à droite. Vous pouvez
lier les sorties de blocs aux entrées d'autres blocs pour créer des expressions complexes.
F
FB
Acronyme de function block, bloc fonction. Mécanisme de programmation commode qui consolide
un groupe d'instructions de programmation visant à effectuer une action spécifique et normalisée
telle que le contrôle de vitesse, le contrôle d'intervalle ou le comptage. Un bloc fonction peut
comprendre des données de configuration, un ensemble de paramètres de fonctionnement interne
ou externe et généralement une ou plusieurs entrées et sorties de données.
I
IL
INT
Acronyme de instruction list, liste d'instructions. Un programme écrit en langage IL est composé
d'instructions textuelles qui sont exécutées séquentiellement par le contrôleur. Chaque instruction
comprend un numéro de ligne, un code d'instruction et un opérande (voir la norme IEC 61131-3).
Abréviation de integer, nombre entier codé sur 16 bits.
EIO0000002939 06/2019
37
Glossaire
L
langage en blocs fonctionnels
Un des 5 langages de programmation de logique ou de commande pris en charge par la norme
IEC 61131-3 pour les systèmes de commande. FBD est un langage de programmation orienté
graphique. Il fonctionne avec une liste de réseaux où chaque réseau contient une structure
graphique de zones et de lignes de connexion représentant une expression logique ou
arithmétique, un appel de bloc fonction ou une instruction de retour.
LD
Acronyme de ladder diagram, schéma à contacts. Représentation graphique des instructions d'un
programme de contrôleur, avec des symboles pour les contacts, les bobines et les blocs dans une
série de réseaux exécutés séquentiellement par un contrôleur (voir IEC 61131-3).
O
octet
Type codé sur 8 bits, de 00 à FF au format hexadécimal.
P
POU
Acronyme de program organization unit, unité organisationnelle de programme. Déclaration de
variables dans le code source et jeu d'instructions correspondant. Les POUs facilitent la
réutilisation modulaire de programmes logiciels, de fonctions et de blocs fonction. Une fois
déclarées, les POUs sont réutilisables.
S
ST
Acronyme de structured text, texte structuré. Langage composé d'instructions complexes et
d'instructions imbriquées (boucles d'itération, exécutions conditionnelles, fonctions). Le langage
ST est conforme à la norme IEC 61131-3.
V
variable
Unité de mémoire qui est adressée et modifiée par un programme.
38
EIO0000002939 06/2019
EcoStruxure Machine Expert
Index
EIO0000002939 06/2019
Index
B
Bloc fonction
Dump, 19
LogRecord, 17
D
Dump
Bloc fonction, 19
DumpInProgress
Variables, 21
E
ERROR
Type de paramètre de sortie, 18, 19
F
FILE_STATUS
Type, 21
FileStatus
Variables, 21
fonctions
différences entre une fonction et un bloc
fonction, 28
utilisation d'une fonction ou d'un bloc
fonction en langage IL, 29
utilisation d'une fonction ou d'un bloc
fonction en langage ST, 33
N
NumberOfBufferedRecords
Variables, 21
NumberOfRecords
Variables, 21
T
Type
FILE_STATUS, 21
Type de paramètre de sortie
ERROR, 18, 19
V
Variables
DumpInProgress, 21
FileStatus, 21
NumberOfBufferedRecords, 21
NumberOfRecords, 21
J
journalisation des données, 11
L
LogRecord
Bloc fonction, 17
EIO0000002939 06/2019
39
EcoStruxure Machine Expert
FileFormatUtility
Guide de la bibliothèque
EIO0000002786.03
03/2021
www.se.com
Mentions légales
La marque Schneider Electric et toutes les marques de commerce de Schneider
Electric SE et de ses filiales mentionnées dans ce guide sont la propriété de
Schneider Electric SE ou de ses filiales. Toutes les autres marques peuvent être des
marques de commerce de leurs propriétaires respectifs. Ce guide et son contenu
sont protégés par les lois sur la propriété intellectuelle applicables et sont fournis à
titre d'information uniquement. Aucune partie de ce guide ne peut être reproduite ou
transmise sous quelque forme ou par quelque moyen que ce soit (électronique,
mécanique, photocopie, enregistrement ou autre), à quelque fin que ce soit, sans
l'autorisation écrite préalable de Schneider Electric.
Schneider Electric n'accorde aucun droit ni aucune licence d'utilisation commerciale
de ce guide ou de son contenu, sauf dans le cadre d'une licence non exclusive et
personnelle, pour le consulter tel quel.
Les produits et équipements Schneider Electric doivent être installés, utilisés et
entretenus uniquement par le personnel qualifié.
Les normes, spécifications et conceptions sont susceptibles d'être modifiées à tout
moment. Les informations contenues dans ce guide peuvent faire l'objet de
modifications sans préavis.
Dans la mesure permise par la loi applicable, Schneider Electric et ses filiales
déclinent toute responsabilité en cas d'erreurs ou d'omissions dans le contenu
informatif du présent document ou pour toute conséquence résultant de l'utilisation
des informations qu'il contient.
© 2021 - Schneider Electric. Tous droits réservés.
FileFormatUtility
Table des matières
Consignes de sécurité ................................................................................7
QUALIFICATION DU PERSONNEL .......................................................7
INSTRUCTIONS D'UTILISATION ..........................................................8
Avant de commencer ............................................................................8
Démarrage et test .................................................................................9
Fonctionnement et réglages ................................................................10
A propos de ce manuel ............................................................................. 11
Informations générales ............................................................................17
Présentation de la bibliothèque..................................................................18
Informations générales........................................................................18
Entrées et sorties communes ....................................................................20
Fonctionnement des blocs fonction avec l'entrée i_xExecute..................20
Types d'unités de données ......................................................................21
Énumérations...........................................................................................22
ET_XmlItemType ................................................................................22
ET_CsvReadMode .............................................................................22
ET_JsonValueType .............................................................................23
ET_ModeFileOpen..............................................................................24
ET_Result ..........................................................................................25
Structures ................................................................................................29
ST_XmlItem .......................................................................................29
ST_XmlUserDefinedHeader ................................................................30
ST_CsvTable......................................................................................31
ST_CsvFileInformation........................................................................32
ST_CsvWarnValueTruncated...............................................................32
ST_CsvReadParameter ......................................................................33
ST_CsvWriteParameter ......................................................................33
Alias ........................................................................................................35
Alias ..................................................................................................35
Variables globales .....................................................................................36
Liste des constantes globales ....................................................................37
Liste des constantes globales (GCL) ....................................................37
Liste des paramètres globaux ....................................................................38
GPL ...................................................................................................38
Liste de variables globales ........................................................................40
Liste de variables globales (GVL) .........................................................40
Fonctions globales ....................................................................................41
Fonctions globales....................................................................................42
FC_EtResultToString ..........................................................................42
Gestion de fichiers génériques ...............................................................43
Gestion de fichiers génériques...................................................................44
FB_WriteFile ......................................................................................44
FB_WriteFile Description fonctionnelle............................................44
FB_WriteFile Règles et contraintes.................................................45
FB_WriteFile Dépannage...............................................................46
Unités organisationnelles de programme (POU) XML ........................47
Blocs fonction XML ...................................................................................48
EIO0000002786.03
3
FileFormatUtility
FB_XmlRead......................................................................................48
FB_XmlRead Description fonctionnelle ...........................................48
FB_XmlRead Règles et contraintes ................................................51
FB_XmlRead Dépannage .................................................................52
FB_XmlRead Exemple ..................................................................53
FB_XmlWrite ......................................................................................54
FB_XmlWrite Description fonctionnelle ...........................................54
FB_XmlWrite Règles et contraintes ................................................56
FB_XmlWrite Dépannage ..............................................................57
FB_XmlWrite Exemple ..................................................................58
FB_XmlItemsUtility .............................................................................59
Description fonctionnelle du bloc FB_XmlItemsUtility .......................59
AddAttribute (Méthode)..................................................................60
AddSubElement (Méthode)............................................................60
AppendElement (Méthode) ............................................................61
ClearSelection (Méthode) ..............................................................62
GetAttributeByName (Méthode) .....................................................62
InitializeXmlItems (Méthode) ..........................................................63
RemoveAttribute (Méthode) ...........................................................64
SelectElement (Méthode) ..............................................................64
SelectFirstChild (Méthode).............................................................66
SelectNext (Méthode)....................................................................67
SelectParent (Méthode).................................................................67
SetAttributeByName (Méthode)......................................................68
Propriétés de FB_XmlItemsUtility ...................................................69
Fonctions XML .........................................................................................70
FC_XmlGetElementValue....................................................................70
Description fonctionnelle du bloc FC_XmlGetElementValue .............70
FC_XmlGetElementValue Règles et contraintes ..............................71
FC_XmlSetElementValue ....................................................................71
Description fonctionnelle du bloc FC_XmlSetElementValue..............71
FC_XmlSetElementValue Règles et contraintes ................................73
Unités organisationnelles de programme (POU) CSV ........................74
Blocs fonction CSV ...................................................................................75
FB_CsvRead......................................................................................75
FB_CsvRead Description fonctionnelle ...........................................75
FB_CsvRead Règles et contraintes ................................................77
FB_CsvRead Dépannage ..............................................................78
FB_CsvRead Exemple ..................................................................79
FB_CsvWrite ......................................................................................80
FB_CsvWrite Description fonctionnelle ...........................................80
FB_CsvWrite Règles et contraintes ................................................82
FB_CsvWrite Dépannage ..............................................................83
FB_CsvWrite Exemple ..................................................................84
Unités organisationnelles de programme (POU) JSON .....................86
Blocs fonction JSON .................................................................................87
FB_CreateJsonFormattedString ..........................................................87
Description fonctionnelle du bloc FB_
CreateJsonFormattedString ...........................................................87
AddNameValuePair (méthode).......................................................87
AddNameValuePair<data type> (méthode) .....................................88
4
EIO0000002786.03
FileFormatUtility
AddNameValuePairArray (méthode)...............................................90
AddNameValuePairNull (méthode) .................................................90
AddNameValuePairObject (méthode) .............................................91
ArrayAdd<data type> (méthode) ....................................................92
ArrayAddArray (méthode) ..............................................................93
ArrayAddNull (méthode) ................................................................94
ArrayAddValue (méthode)..............................................................94
ArrayClose (méthode) ...................................................................95
Copy (Méthode) ............................................................................96
New (Méthode) .............................................................................96
ObjectClose (méthode)..................................................................97
ObjectOpen (méthode) ..................................................................97
Propriétés de FB_CreateJsonFormattedString ................................98
FB_CreateJsonFormattedString Exemple .......................................98
FB_JsonUtilities................................................................................ 102
FB_JsonUtilities Description fonctionnelle ..................................... 102
ArrayAddArray (Méthode) ............................................................ 102
ArrayAddObject (méthode) .......................................................... 103
ArrayAddValue (méthode)............................................................ 104
ArrayAddValueNULL (méthode) ................................................... 104
ArrayInsertArray (Méthode).......................................................... 105
ArrayInsertObject (méthode) ........................................................ 106
ArrayInsertValue (méthode) ......................................................... 106
ArrayInsertValueNULL (méthode)................................................. 107
ModifyNameOfSelected (méthode)............................................... 108
ModifyValueTypeOfSelected (méthode) ........................................ 108
ModifyValueTypeOfSelectedToNull (méthode)............................... 109
ObjectAddArray (méthode) .......................................................... 110
ObjectAddObject (méthode)......................................................... 110
ObjectAddValue (méthode) .......................................................... 111
ObjectAddValueNULL (méthode) ................................................. 112
ObjectInsertArray (Méthode) ........................................................ 112
ObjectInsertObject (méthode) ...................................................... 113
ObjectInsertValue (méthode) ....................................................... 114
ObjectInsertValueNULL (méthode) ............................................... 115
Parse (méthode) ......................................................................... 115
ParseAsync (méthode) ................................................................ 117
ParseFromFileAsync (méthode) ................................................... 119
RemoveSelected (méthode) ........................................................ 120
Select (méthode)......................................................................... 121
SelectElementOfArrayByIndex (méthode) ..................................... 122
SelectFirstElementOfArray (méthode) .......................................... 123
SelectFirstMemberOfObject (méthode)......................................... 123
SelectNext (méthode).................................................................. 124
SelectParent (méthode)............................................................... 124
Write (méthode) .......................................................................... 125
WriteAsync (méthode) ................................................................. 126
WriteToFileAsync (méthode) ........................................................ 128
Propriétés de FB_JsonUtilities ..................................................... 131
Index ......................................................................................................... 133
EIO0000002786.03
5
Consignes de sécurité
FileFormatUtility
Consignes de sécurité
Informations importantes
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.
La présence de ce symbole sur une étiquette “Danger” ou “Avertissement” signale un
risque d'électrocution qui provoquera des blessures physiques en cas de non-respect
des consignes de sécurité.
Ce symbole est le symbole d'alerte de sécurité. Il vous avertit d'un risque de blessures
corporelles. Respectez scrupuleusement les consignes de sécurité associées à ce
symbole pour éviter de vous blesser ou de mettre votre vie en danger.
!
DANGER
DANGER signale un risque qui, en cas de non-respect des consignes de sécurité, provoque
la mort ou des blessures graves.
!
AVERTISSEMENT
AVERTISSEMENT signale un risque qui, en cas de non-respect des consignes de sécurité,
peut provoquer la mort ou des blessures graves.
!
ATTENTION
ATTENTION signale un risque qui, en cas de non-respect des consignes de sécurité, peut
provoquer des blessures légères ou moyennement graves.
AVIS
AVIS indique des pratiques n'entraînant pas de risques corporels.
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.
QUALIFICATION DU PERSONNEL
Une personne qualifiée est une personne qui a les qualifications suivantes :
EIO0000002786.03
•
Compétences et connaissances liées à la construction et à l'exploitation
d'équipements électriques et à l'installation.
•
Connaissances et expérience en programmation de contrôle industriel.
7
FileFormatUtility
Consignes de sécurité
•
A reçu une formation en sécurité permettant de reconnaître et d'éviter les
dangers potentiels.
La personne qualifiée doit être capable de détecter d'éventuels dangers qui
pourraient découler du paramétrage, de modifications des valeurs de
paramétrage et plus généralement des équipements mécaniques, électriques ou
électroniques. La personne qualifiée doit connaître les normes, dispositions et
régulations liées à la prévention des accidents de travail, et doit les observer lors
de la conception et de l'implémentation du système.
INSTRUCTIONS D'UTILISATION
Ce produit est une bibliothèque à utiliser avec un système de commande et des
servo-amplificateurs. La bibliothèque n'est conçue qu'en vue d'une utilisation telle
que décrite dans la présente documentation, appliquée au secteur industriel.
Observez en permanence les instructions applicables liées à la sécurité, les
conditions spécifiques et les données techniques.
Réalisez une analyse des risques en rapport avec l'utilisation spécifique avant
d'utiliser ce produit. Prenez les mesures de sécurité qui découlent des résultats.
Étant donné que ce produit est utilisé au sein d'un système qui l'englobe, vous
devez assurer la sécurité du personnel par la conception même du système global
(la conception de la machine, par exemple).
Aucune autre utilisation n'est prévue. Toute autre utilisation pourrait être
dangereuse.
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.
8
EIO0000002786.03
Consignes de sécurité
FileFormatUtility
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.
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.
Démarrage 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 :
EIO0000002786.03
•
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.
9
FileFormatUtility
Consignes de sécurité
Fonctionnement et réglages
Les précautions suivantes sont extraites du document NEMA Standards
Publication ICS 7.1-1995 (la version anglaise prévaut) :
10
•
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.
EIO0000002786.03
A propos de ce manuel
FileFormatUtility
A propos de ce manuel
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)
•
JSON (JavaScript Object Notation)
Champ d'application
Ce document a été actualisé pour le lancement d'EcoStruxureTM Machine
Expert V2.0.
Les caractéristiques décrites dans le présent document, ainsi que celles décrites
dans les documents mentionnés dans la section Documents associés ci-dessous,
sont consultables en ligne. Pour accéder aux informations en ligne, allez sur la
page d'accueil de Schneider Electric www.se.com/ww/fr/download/.
Les caractéristiques décrites dans le présent document doivent ê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
document et les informations fournies en ligne, utilisez ces dernières en priorité.
Documents associés
Titre du document
Référence
EcoStruxure Machine Expert - Fonctions et
bibliothèques - Guide de l'utilisateur
EIO0000002829 (ENG);
EIO0000002830 (FRE);
EIO0000002831 (GER);
EIO0000002832 (ITA);
EIO0000002833 (SPA);
EIO0000002834 (CHS);
EcoStruxure Machine Expert - Guide de
programmation
EIO0000002854 (ENG);
EIO0000002855 (FRE);
EIO0000002856 (GER);
EIO0000002857 (ITA);
EIO0000002858 (SPA);
EIO0000002859 (CHS);
EIO0000002786.03
11
FileFormatUtility
A propos de ce manuel
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 contrôle cruciales.
•
Des canaux de commande séparés ou redondants doivent être prévus pour
les fonctions de commande critique.
•
Les liaisons de communication peuvent faire partie des canaux de
commande du système. 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 les documents suivants ou leurs équivalents
pour votre site d'installation : 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 NEMA ICS 7.1 (dernière édition), « Safety Standards for
Construction and Guide for Selection, Installation, and Operation of AdjustableSpeed Drive Systems » (Normes de sécurité relatives à la construction et manuel
de sélection, d'installation et d'exploitation de variateurs de vitesse).
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.
AVERTISSEMENT
UTILISATION INCORRECTE DES UNITES ORGANISATIONNELLES DU
PROGRAMME
•
Effectuez une analyse de la sécurité de l'application et des équipements
installés.
•
Vérifiez que les POU sont compatibles avec les équipements 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 fonctionnement à 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.
12
EIO0000002786.03
A propos de ce manuel
FileFormatUtility
AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT
•
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é. En cas d'interruption, relancez le transfert. Veillez à inclure l'impact
des fichiers de données endommagés dans votre analyse des risques.
AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT, PERTE DE DONNÉES
OU FICHIER ENDOMMAGÉ
•
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.
L'utilisation de cette bibliothèque comme outil de contrôle d'une machine
nécessite une attention et des dispositions particulières afin d'éviter des
conséquences involontaires dues à l'exploitation de la machine commandée, à
des changements d'état ou à l'altération de la mémoire de données ou des
éléments de fonctionnement de la machine.
AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT
•
Placer les instruments de l'opérateur du système de commande près de la
machine ou à un endroit qui permet d'avoir une vision parfaite de la
machine.
•
Protéger les commandes opérateur contre tout accès non autorisé.
•
Si le contrôle à distance est une caractéristique nécessaire de l'application,
veiller à ce qu'une personne qualifiée et compétente soit présente sur place
pour surveiller le fonctionnement contrôlé à distance.
•
Configurez et installez l'entrée Run/Stop (si elle est présente) ou un autre
moyen externe dans l'application, afin que le contrôle local du démarrage ou
de l'arrêt de l'équipement puisse être maintenu indépendamment des
commandes envoyées à distance à l'équipement.
Le non-respect de ces instructions peut provoquer la mort, des blessures
graves ou des dommages matériels.
Pour utiliser des blocs fonction pour la modification ou la création de fichiers vous
devez accéder au système de fichiers du contrôleur et également aux fichiers
créés et/ou utilisés par le système ou d’autres processus.
EIO0000002786.03
13
FileFormatUtility
A propos de ce manuel
AVIS
PERTE DE DONNÉES OU CORRUPTION DE FICHIER
•
Vérifiez le chemin d’accès au fichier fourni par le bloc fonction pour la
modification du fichier.
•
Vérifiez le mode sélectionné pour l’ouverture d’un fichier afin d’éviter la
suppression accidentelle du fichier.
•
Créez une sauvegarde du fichier que vous souhaitez modifier.
Le non-respect de ces instructions peut provoquer des dommages
matériels.
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.
14
EIO0000002786.03
A propos de ce manuel
FileFormatUtility
Entre autres, les normes concernées sont les suivantes :
Norme
Description
IEC 61131-2:2007
Automates programmables - Partie 2 : exigences et essais des
équipements
ISO 13849-1:2015
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
ISO 14119:2013
Sécurité des machines - Dispositifs de verrouillage associés à des
protecteurs - Principes de conception et de choix
ISO 13850:2015
Sécurité des machines - Fonction d'arrêt d'urgence - Principes de
conception
IEC 62061:2015
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é : prescriptions
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:2016
Réseaux de communication industriels - Profils - Partie 3 : Bus de terrain
de sécurité fonctionnelle - Règles générales et définitions de profils.
2006/42/EC
Directive Machines
2014/30/EU
Directive sur la compatibilité électromagnétique
2014/35/EU
Directive sur les basses tensions
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.
EIO0000002786.03
15
FileFormatUtility
Informations générales
Contenu de cette partie
Présentation de la bibliothèque .......................................................................18
Entrées et sorties communes ..........................................................................20
EIO0000002786.03
17
FileFormatUtility
Présentation de la bibliothèque
Présentation de la bibliothèque
Contenu de ce chapitre
Informations générales ..................................................................................18
Informations générales
Présentation de la bibliothèque
La bibliothèque FileFormatUtility implémente des fonctions qui simplifient l'accès
aux fichiers du système de fichiers du contrôleur. De plus, elle fournit un ensemble
de fonctions qui facilitent la création d’un texte STRING au format JavaScript
Object Notation (JSON).
Pour l’accès aux fichiers, les fonctions suivantes sont prises en charge :
•
Accès en lecture et en écriture simplifié aux fichiers de format XML
(eXtensible Markup Language), CSV (Comma-Separated Values) et JSON
(JavaScript Object Notation).
•
Accès général en écriture à un fichier du système de fichiers du contrôleur,
quel que soit le format.
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
accès qualifié uniquement (voir EcoStruxure
Machine Expert, Fonctions et bibliothèques,
Guide utilisateur)
Bibliothèque post-compatible
Oui (FCL (voir EcoStruxure Machine Expert,
Fonctions et bibliothèques, Guide utilisateur)
NOTE: Cette bibliothèque est paramétrée en Uniquement accès qualifié
(qualified-access-only). Cela signifie que l'on ne peut accéder aux POU (unité
organisationnelle de programme), aux structures de données, aux
énumérations et aux constantes qu'en utilisant l'espace de noms de la
bibliothèque. L'espace de noms par défaut de la bibliothèque est FFU.
Exemple de projet
Les exemples de projet CSV File Handling et XML File Handling sont fournis avec
la bibliothèque. Les exemples de projet indiquent comment implémenter les
composants de la bibliothèque FileFormatUtility.
18
EIO0000002786.03
Présentation de la bibliothèque
FileFormatUtility
L’exemple de projet est installé sur votre PC avec le logiciel de programmation.
Pour ouvrir l’exemple de projet, procédez comme suit :
Etape
EIO0000002786.03
Action
Commentaire
1
Dans EcoStruxure Machine Expert Logic
Builder, exécutez la commande Nouveau
projet.
–
2
Dans la boîte de dialogue Nouveau
projet, sélectionnez A partir de
l’exemple dans la liste Type de projet.
–
3
Sur le côté droit de la boîte de dialogue
Nouveau projet cliquez sur le bouton
Activer/désactiver le filtre.
Résultat : les exemples disponibles sont
répertoriés dans le menu déroulant.
4
Sélectionnez votre exemple dans le menu
déroulant.
–
5
Sélectionnez votre contrôleur dans la liste
Contrôleurs disponibles.
–
6
Entrez le nom du nouveau projet et
sélectionnez l’emplacement du fichier.
–
7
Cliquez sur le bouton OK.
Résultat : un nouveau projet est créé en
fonction de l’exemple sélectionné.
19
FileFormatUtility
Entrées et sorties communes
Entrées et sorties communes
Contenu de ce chapitre
Fonctionnement des blocs fonction avec l'entrée i_xExecute ............................20
Fonctionnement 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.
Des fronts montants supplémentaires sur l'entrée i_xExecute sont ignorés
pendant l'exécution du bloc fonctionnel.
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 cette entrée est réinitialisée
avant la fin de l'exécution, le bloc fonction continue de s'exécuter pour terminer le
traitement, puis les sorties q_xDone ou q_xError prennent la valeur TRUE
pendant un cycle.
Exemple
20
EIO0000002786.03
FileFormatUtility
Types d'unités de données
Contenu de cette partie
Énumérations ................................................................................................22
Structures......................................................................................................29
Alias..............................................................................................................35
EIO0000002786.03
21
FileFormatUtility
Énumérations
Énumérations
Contenu de ce chapitre
ET_XmlItemType...........................................................................................22
ET_CsvReadMode ........................................................................................22
ET_JsonValueType .......................................................................................23
ET_ModeFileOpen ........................................................................................24
ET_Result ....................................................................................................25
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
•
ST_XmlItem
ET_CsvReadMode
Présentation
Type :
Énumération
Disponible à partir de :
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.
22
EIO0000002786.03
Énumérations
FileFormatUtility
Éléments d'énumération
Nom
Valeur
(INT)
Description
AllValues
0
Les valeurs du fichier CSV sont toutes lues.
Le fichier doit être dimensionné dans les limites imposées par
le nombre d'enregistrements et le nombre de colonnes
indiqués sous uiNumOfRows et uiNumOfColumns dans la
structure ST_CsvTable.
OneRow
1
Une ligne (un enregistrement) est lue dans le fichier CSV.
Le numéro de ligne doit être indiqué à l'aide de udiNumOfRow
dans ST_CsvReadParameter. Le numéro de ligne peut être
supérieur à uiNumOfRows (structure ST_CsvTable). Le
nombre de colonnes du fichier doit être déterminé dans les
limites du paramètre uiNumOfColumn dans la structure
ST_ CsvTable.
OneColumn
2
Une colonne est lue dans le fichier CSV.
Le numéro de colonne doit être indiqué à l'aide de
udiNumOfColumn dans ST_CsvReadParameter. Le numéro
de colonne peut être supérieur à uiNumOfColumns (structure
ST_CsvTable). Le nombre de lignes du fichier doit être
déterminé dans les limites du paramètre uiNumOfRows dans
la structure ST_CsvTable.
OneValue
3
Une valeur est lue dans le fichier CSV.
Les numéros de ligne et de colonne doivent être précisés à
l'aide de udiNumOfRow et udiNumOfColumn dans
ST_ CsvReadParameter. Ces deux valeurs peuvent être
supérieures à uiNumOfRows et uiNumOfColumns dans
ST_ CsvTable.
GetFileInformation
4
Seules les informations sur le contenu du fichier sont
récupérées. Aucune valeur n'est lue.
L'intégralité du fichier est analysée pour déterminer le nombre
total de lignes et de colonnes. Il n'y a aucune restriction dans le
bloc fonction concernant le nombre de lignes ou le nombre de
colonnes du fichier.
Utilisé par
•
FB_CsvRead
ET_JsonValueType
Présentation
Type :
Énumération
Disponible à partir de :
V1.4.15.0
Description
Le paramètre d'énumération ET_JsonValueType indique le type de la valeur de
l'élément sélectionné.
EIO0000002786.03
23
FileFormatUtility
Énumérations
Éléments d'énumération
Nom
Valeur
(INT)
La valeur de l'élément sélectionné...
TypeString
1
... comprend un certain nombre de caractères et est
interprétée en tant que texte.
TypeNumber
2
... est interprétée en tant que nombre. Une conversion vers le
type de données numérique correspondant (INT ou REAL par
exemple) est prise en charge.
TypeBoolean
3
... représente un type booléen. La valeur est soit TRUE, soit
FALSE.
TypeNull
4
... est NULL.
TypeArray
5
... est un tableau.
TypeObject
6
... est un objet.
TypeStringTrunked
7
... est identique à TypeString, mais la valeur est tronquée en
fonction du paramètre global spécifiant la longueur maximale
(GPL.Gc_uiJsonMaxLengthOfValue, page 38).
TypeInvalid
8
... n'est pas valide.
Utilisé par
•
FB_JsonUtilities
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
•
24
FB_CsvWrite
EIO0000002786.03
Énumérations
FileFormatUtility
ET_Result
Présentation
Type :
Énumération
Disponible à partir de :
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
La fonction ou 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 ou la méthode a été correctement 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.
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, page 38.
BufferFull
140
La mémoire tampon servant à stocker les éléments lus n'est pas
suffisamment grande.
AdditionalContentInvalid
150
Le pointeur pbyAdditionalContent 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é.
EIO0000002786.03
25
FileFormatUtility
Énumérations
Nom
Valeur
(UDINT)
Description
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.
XmlItemsInvalid
168
La référence indiquée en i_refXmlItems n'est pas 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 ST_CsvTable.
TableWriteValuesInvalid
172
Les dimensions fournies pour la table contenant les valeurs à écrire ne
sont pas valides.
Consultez ST_CsvTable.
TableInvalid
175
Le pointeur pbyAdditionalContent vers le tampon fourni par l'application
ne doit pas être 0.
ReadParameterInvalid
181
Les paramètres contrôlant l'opération de lecture ne sont pas valides.
Consultez ST_CsvReadParameter.
WriteParameterInvalid
182
Les paramètres contrôlant l'opération d'écriture ne sont pas valides.
Consultez ST_CsvWriteParameter.
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.
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 n'est pas de type élément.
FirstItemInvalidParentIndex
221
La valeur diParentIndex du premier élément du tableau XmlItems n'est
pas égale à -1.
XpathRootElementDoesNotMatch
222
Le nom du premier élément du tableau XmlItems 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.
NoElementSelected
240
Aucun élément sélectionné pour le traitement des données XML.
InvalidInput
241
La valeur d'au moins une entrée de la fonction exécutée n'est pas valide.
AttributeNotFound
242
L'attribut des éléments sélectionnés est introuvable.
OnlineChangeDetected
243
L’exécution a été annulée car une connexion établie en même temps
qu’une modification en ligne de l’application a été détectée.
WrongLayerToAppendElement
244
AppendElement() n'est pas autorisé, car l'élément sélectionné est
l'élément racine.
AttributeAlreadyExistsForSelectedElement
245
L'attribut de l'élément sélectionné existe déjà.
DataTypeNotSupported
300
Le type de données de la variable attribuée à l'entrée ANY n'est pas pris
en charge.
NoObjectOpen
301
Il n’y a aucun objet ouvert dans l’objet STRING en cours de traitement.
NoArrayOpen
302
Il n’y a aucun objet ARRAY ouvert dans l’objet STRING en cours de
traitement.
26
EIO0000002786.03
Énumérations
FileFormatUtility
Nom
Valeur
(UDINT)
Description
NameValuePairCannotBeAdded
303
Une paire nom/valeur ne peut pas être ajoutée dans la position actuelle
de l’objet STRING qui est en cours de traitement.
MaxLengthOfStringReached
304
La longeur maximale de l’objet STRING au format JSON en cours de
traitement a été atteinte. La longueur maximale est définie par le
paramètre Gc_udiJsonMaxLengthOfString dans la liste des paramètres
globaux, page 38.
BufferTooSmall
305
La taille de la mémoire tampon est insuffisante pour la copie de l’objet
STRING en cours de traitement.
NumOfLevelsExceeded
306
Le nombre maximal de niveaux est atteint pour l’objet STRING au format
JSON en cours de traitement. Le nombre maximal de niveaux est défini
par le paramètre Gc_uiJsonMaxNumOfLevels dans la liste des
paramètres globaux, page 38.
BufferInvalid
400
Le pointeur sur la mémoire tampon n'est pas valide.
BufferSizeInvalid
401
La taille de la mémoire tampon ne doit pas être égale à 0.
UnexpectedToken
500
Le format JSON des données à analyser n'est pas valide et contient un
jeton non valide.
UnexpectedStartingToken
501
Le format JSON des données à analyser n'est pas valide et commence
par un jeton non valide.
UnexpectedEndingToken
502
Le format JSON des données à analyser n'est pas valide et se termine
par un jeton non valide.
SelectedHasNoParent
503
L'élément sélectionné n'a pas d'élément supérieur dans la hiérarchie.
L'élément sélectionné est l'élément racine.
MaxLengthOfNameReached
504
Les données à analyser comprennent un nom trop long. Augmentez le
paramètre global Gc_uiJsonMaxLengthOfName.
MaxLengthOfValueReached
505
Les données à analyser comprennent une valeur trop longue.
Augmentez le paramètre global Gc_uiJsonMaxLengthOfValue.
NoNextItem
506
L'élément sélectionné n'a pas d'élément suivant dans le même niveau
hiérarchique.
NameNotValid
507
Les données à analyser contiennent un nom qui n'est pas valide.
JPathExpressionInvalid
508
L'expression JPath indiquée n'est pas valide.
ParsingInProcess
509
L'analyse est en cours.
ItemNotFound
510
Elément introuvable dans les données JSON analysées.
JPathNotSupported
511
L'expression JPath n'est pas prise en charge.
SelectedIsNotArray
512
L'élément sélectionné n'est pas de type TypeArray.
SelectedIsNotObject
513
L'élément sélectionné n'est pas de type TypeObject.
NumOfItemsExceeded
515
Les données à analyser comportent un trop grand nombre d'éléments.
Augmentez le paramètre global Gc_udiJsonMaxNumOfItems.
ItemHasNoName
516
L'élément sélectionné n'a pas de nom (élément ARRAY par exemple).
ItemsHasNoValue
517
L'élément sélectionné n'a pas de valeur (élément de type TypeObject ou
TypeArray par exemple).
NoItemSelected
518
Aucun élément sélectionné. Sélectionnez un élément au préalable.
InternalError
519
Une erreur interne s'est produite. Essayez à nouveau.
ParseNotDone
520
Les données doivent être analysées préalablement à la sélection d'un
élément.
FileNotExist
521
Fichier introuvable.
RemoveFailed
522
Impossible de supprimer l'élément.
BadJsonValueType
523
Une erreur interne a été détectée. JsonValueType non pris en charge.
ParentIsNotArray
524
L'élément parent de l'élément sélectionné n'est pas de type TypeArray.
ParentIsNotObject
525
L'élément parent de l'élément sélectionné n'est pas de type TypeObject.
SelectedIsNotSimpleType
526
L'élément sélectionné doit être de type simple (TypeString, TypeNumber,
TypeBoolean, TypeNull).
EIO0000002786.03
27
FileFormatUtility
Énumérations
Nom
Valeur
(UDINT)
Description
WritingInProcess
527
Un processus d'écriture asynchrone est en cours.
InvalidEscapeCharacter
528
Un caractère d'échappement non valide se trouve dans la STRING.
StringValueTooBig
529
La STRING à ajouter est trop grande.
NOTE: Si nécessaire, des caractères spéciaux sont ajoutés
implicitement par la méthode. Cela peut augmenter la longueur de
la chaîne.
Augmentez GPL.Gc_uiJsonMaxLengthOfValue.
UnexpectedProgramBehaviour
999
Une erreur interne a été détectée. Contactez votre représentant local
Schneider Electric.
Utilisé par
28
•
FB_XmlRead
•
FB_XmlWrite
•
FB_CsvRead
•
FB_CsvWrite
•
FB_CreateJsonFormattedString
•
FB_WriteFile
•
FB_XmlItemsUtility
•
FB_JsonUtilities
EIO0000002786.03
Structures
FileFormatUtility
Structures
Contenu de ce chapitre
ST_XmlItem..................................................................................................29
ST_XmlUserDefinedHeader...........................................................................30
ST_CsvTable ................................................................................................31
ST_CsvFileInformation ..................................................................................32
ST_CsvWarnValueTruncated .........................................................................32
ST_CsvReadParameter.................................................................................33
ST_CsvWriteParameter .................................................................................33
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, page 30).
NOTE: La valeur -1 indique
l'élément racine, et elle est
réservée pour le tout premier
élément du tableau.
sName
STRING[GPL.Gc_
uiXmlLengthOfString]
Nom de l'élément ou de l'attribut.
sValue
STRING[GPL.Gc_
uiXmlLengthOfString]
Valeur de l'élément ou de l'attribut.
etType
ET_XmlItemType
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
•
EIO0000002786.03
XmlItems
29
FileFormatUtility
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>
Élé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
0
EEE
3
DDD est l'élément parent. Il est stocké dans le tableau à
l'index 3.
ST_XmlUserDefinedHeader
Présentation
Type :
Structure
Disponible à partir de :
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.
NOTE: Lorsqu'il n'y a pas de contenu supplémentaire à écrire,
udiNumBytesToWrite et pbyAdditionalContent peuvent être définis sur zéro.
Utilisé par
•
30
FB_XmlWrite
EIO0000002786.03
Structures
FileFormatUtility
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 éviter les violations d'accès à la mémoire dues à un pointeur non
valide, assurez-vous que le pointeur est correctement initialisé et lié. Utilisez
l'opérateur arithmétique SIZEOF en conjonction avec le tampon cible pour
déterminer la valeur de udiSizeOfTable.
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
EIO0000002786.03
•
FB_CsvRead
•
FB_CsvWrite
31
FileFormatUtility
Structures
ST_CsvFileInformation
Présentation
Type :
Structure
Disponible à partir de :
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.
É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
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
32
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.
EIO0000002786.03
Structures
FileFormatUtility
Utilisé par
•
FB_CsvRead
ST_CsvReadParameter
Présentation
Type :
Structure
Disponible à partir de :
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_
CSVReadMode
Indique le contenu à lire dans le fichier CSV.
NOTE: La fonction efface le tableau avant
l'opération de lecture.
Consultez ET_CSVReadMode.
udiNumOfRow
UDINT
Numéro de la ligne à lire.
Cette valeur est pertinente pour :
•
ET_ReadMode.OneRow
•
ET_ReadMode.OneValue
Consultez ET_CSVReadMode.
udiNumOfColumn
UDINT
Numéro de la colonne à lire.
Cette valeur est pertinente pour :
•
ET_ReadMode.OneColumn
•
ET_ReadMode.OneValue
Consultez ET_CSVReadMode.
Utilisé par
•
FB_CsvRead
ST_CsvWriteParameter
Présentation
EIO0000002786.03
Type :
Structure
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
33
FileFormatUtility
Structures
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_
ModeFileOpen
Mode d'écriture utilisé lors de l'ouverture ou de la
création du fichier CSV.
Consultez ET_ModeFileOpen.
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
•
34
FB_CsvWrite
EIO0000002786.03
Alias
FileFormatUtility
Alias
Contenu de ce chapitre
Alias.............................................................................................................35
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
Description
XmlItems
ARRAY[0..GPL.Gc_
udiXmlMaxNumOfItems] OFST_
XmlItem
Le type d'unité de données XmlItems permet de stocker les
éléments lus ou écrits dans un fichier XML. Utilisez-le pour
déclarer la mémoire tampon fournie par l'application. Ce type
est associé aux blocs fonction FB_XmlRead et FB_XmlWrite.
EIO0000002786.03
35
FileFormatUtility
Variables globales
Contenu de cette partie
Liste des constantes globales..........................................................................37
Liste des paramètres globaux..........................................................................38
Liste de variables globales ..............................................................................40
36
EIO0000002786.03
Liste des constantes globales
FileFormatUtility
Liste des constantes globales
Contenu de ce chapitre
Liste des constantes globales (GCL)...............................................................37
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
Gc_sLibraryVersion
1
EIO0000002786.03
Type de données
Valeur
Description
STRING[80]
Vx.x.x.01
Version de
bibliothèque
Cette valeur varie selon la version de la bibliothèque.
37
FileFormatUtility
Liste des paramètres globaux
Liste des paramètres globaux
Contenu de ce chapitre
GPL .............................................................................................................38
GPL
Présentation
Type :
Paramètres globaux
Disponible à partir de :
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.
Paramètres globaux
Variable
Type de
données
Valeur par
défaut
Plage
Description
Gc_udiXmlMaxNumOfItems
UDINT
1000
1 à 1000000000
Définit la taille de la mémoire 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, page 29
ST_ XmlItem.
Gc_udiXmlMaxNumOfParents
UDINT
20
1 à 10000
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
5000
500 à 65535
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
1000
100 à 65535
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
1000
100 à 65535
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.
Gc_udiJsonMaxLengthOfString
UDINT
10000
255...32766
Détermine la longueur maximale de l'objet
STRING au format JSON.
Gc_udiJsonMaxNumOfItems
UDINT
1000
1...2147483647
Détermine la taille du tampon interne qui
contient les éléments des données au format
JSON analysées. La valeur correspond à la
somme des éléments pouvant être stockés
dans la mémoire tampon.
Chaque objet, tableau, membre d'objet ou
élément de tableau est considéré comme un
élément.
38
EIO0000002786.03
Liste des paramètres globaux
FileFormatUtility
Variable
Type de
données
Valeur par
défaut
Plage
Description
Gc_uiJsonMaxLengthOfName
UINT
80
20...32766
Détermine la longueur maximale de la balise
de nom d’une paire nom/valeur dans des
données au format JSON.
Gc_uiJsonMaxLengthOfValue
UINT
80
20...32766
Détermine la longueur maximale de la balise
de valeur d’une paire nom/valeur dans des
données au format JSON.
Gc_uiJsonMaxNumOfLevels
UINT
100
10...1000
Détermine la profondeur maximale des
données au format JSON à laquelle il est
possible d'imbriquer des objets et des
tableaux les uns dans les autres.
Gc_udiJsonMaxNumOfBytesPerCycle
UDINT
500
1...2147483647
Détermine la profondeur maximale des
données au format JSON à laquelle il est
possible d'imbriquer des objets et des
tableaux les uns dans les autres.
Gc_uiJsonMaxLengthOfJPath
UINT
255
80 à 32766
Détermine la longueur maximale d'une
expression JPath pour adresser un élément.
EIO0000002786.03
39
FileFormatUtility
Liste de variables globales
Liste de variables globales
Contenu de ce chapitre
Liste de variables globales (GVL) ...................................................................40
Liste de variables globales (GVL)
Présentation
Type :
Variables globales
Disponible à partir de la version :
V1.0.0.0
Description
La liste des variables globales contient les variables globales de la bibliothèque.
Variables globales
Variable
Type de données
Valeur par défaut
Description
Gc_xOnlineChangeAllowed
BOOL
FALSE
Si TRUE, la détection des modifications en ligne est
correctement initialisée. Exécutez une modification
en ligne lorsque le POU est occupé uniquement si
Gc_xOnlineChangeAllowed = TRUE.
40
EIO0000002786.03
FileFormatUtility
Fonctions globales
Contenu de cette partie
Fonctions globales .........................................................................................42
EIO0000002786.03
41
FileFormatUtility
Fonctions globales
Fonctions globales
Contenu de ce chapitre
FC_EtResultToString.....................................................................................42
FC_EtResultToString
Présentation
Type :
Fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
–
Implémente :
–
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.
Type de données
Description
STRING(80)
ET_Result converti en texte.
Valeur retournée
Si i_etResult est indéterminable, la valeur de retour est :
Unknown Result: <Value of the input i_etResult>
42
EIO0000002786.03
FileFormatUtility
Gestion de fichiers génériques
Contenu de cette partie
Gestion de fichiers génériques ........................................................................44
EIO0000002786.03
43
FileFormatUtility
Gestion de fichiers génériques
Gestion de fichiers génériques
Contenu de ce chapitre
FB_WriteFile.................................................................................................44
FB_WriteFile
FB_WriteFile Description fonctionnelle
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.2.0.3
Hérite de :
-
Implémente :
-
Description fonctionnelle
Le bloc fonction FB_WriteFile permet d’ouvrir ou de créer un fichier dans le
système de fichiers du contrôleur ou dans la mémoire étendue (par exemple une
carte mémoire SD) et d’y écrire le contenu défini. 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 format du fichier et le
contenu à écrire n’ont aucune influence sur le bloc fonction.
La valeur de l’énumération, page 24 ET_ModeFileOpen permet d'indiquer si les
données doivent être ajoutées à un fichier existant ou à un nouveau fichier à
créer.
Le contenu à écrire dans ce fichier est fourni par un pointeur à la mémoire tampon
de l’application où les données sont stockées. La taille des données est définie en
octets et ne doit pas dépasser la taille de la mémoire tampon.
Interface
Entrée
Type de données
Description
i_xExecute
BOOL
Le bloc fonction ouvre ou crée le fichier
indiqué et y écrit le contenu spécifié
lors d’un front montant de cette entrée.
Reportez-vous également au chapitre
Comportement des blocs fonction avec
l'entrée i_xExecute, page 20.
44
i_sFilePath
STRING[255]
Chemin d'accès au fichier.
i_etModeFileOpen
ET_ModeFileOpen
Indique le mode d'ouverture du fichier
et le contenu à écrire dans le fichier.
i_timTimeout
TIME
L'exécution du bloc fonction est
annulée à l'issue de ce délai.
EIO0000002786.03
Gestion de fichiers génériques
FileFormatUtility
Entrée
Type de données
Description
Si la valeur est T#0s, la valeur par
défaut T#2s est appliquée.
i_pbyBuffer
POINTER TO BYTE
Pointeur vers la mémoire tampon
fournie par l'application, Il contient le
contenu à écrire dans le fichier.
i_udiSize
UDINT
Indique le nombre d’octets à écrire. La
valeur ne doit pas dépasser la taille du
tampon.
NOTE: Pour éviter les violations d'accès à la mémoire dues à un pointeur non
valide, assurez-vous que le pointeur est correctement initialisé et lié. Utilisez
l'opérateur arithmétique SIZEOF en conjonction avec le tampon cible pour
déterminer la valeur de udiSize.
Exemple :
fbWriteFile.i_pbyBuffer := ADR(abyBuffer);
fbWriteFile.i_udiSize := SIZEOF(abyBuffer);
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.
Utilisation de variables de type POINTER TO … ou REFERENCE
TO …
Le bloc fonction fournit des entrées et/ou des entrées/sorties de type POINTER
TO… ou REFERENCE TO…. En utilisant ce type de pointeur ou référence, le bloc
fonction a accès à la zone de mémoire adressée.
NOTE: En cas d'événement de modification en ligne, il peut arriver que des
zones de mémoire soient déplacées vers de nouveaux emplacements de
mémoire et, par conséquent, qu'un pointeur ou une référence ne soit plus
valide. Pour éviter les erreurs liées à des pointeurs non valides, les variables
de type POINTER TO… ou REFERENCE TO… doivent être mises à jour
régulièrement, au moins au début du cycle où elles sont utilisées.
FB_WriteFile Règles et contraintes
Règles et contraintes
Respectez les contraintes suivantes pour ouvrir ou créer des fichiers sur le
système de fichiers du contrôleur ou sur la mémoire étendue :
•
EIO0000002786.03
Ne modifiez pas les données de la mémoire tampon fournies via i_pbBuffer
jusqu’à ce que la sortie q_xBusy du bloc fonction indique TRUE.
45
FileFormatUtility
Gestion de fichiers génériques
•
N’accédez pas au même fichier avec différents blocs fonction en même
temps. Utilisez la sortie q_xBusy pour verrouiller l’exécution de différents
blocs fonction.
FB_WriteFile Dépannage
Dépannage
Le tableau suivant présente quelques problèmes généraux avec leurs solutions :
Problème
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FilePathInvalid.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FileAlreadyExists.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat Timeout.
Cause
•
Le répertoire spécifié
n'est pas disponible.
•
La syntaxe du chemin
d'accès au fichier n'est
pas valide.
•
Le fichier indiqué n'existe
pas au chemin spécifié.
•
L'extension(1) de fichier
du chemin d'accès
spécifié n'est pas prise
en charge.
•
Le fichier indiqué existe
déjà, mais le paramètre
i_etModeFileOpen
n’autorise pas son
remplacement.
La valeur spécifiée pour le
délai d'attente est insuffisante.
Solution
•
Vérifiez que le répertoire
existe. Si le chemin
d'accès pointe vers une
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 pris en charge
varie en fonction du
contrôleur ('\' ou '/').
•
Sélectionnez la valeur
AppendPlus pour le
paramètre
i_ etModeFileOpen.
•
Vérifiez que vous
n’utilisez pas de fichier
dont l’extension n’est pas
prise en charge.
•
Indiquez un autre nom du
fichier.
•
Si le fichier existant peut
être écrasé, sélectionnez
la valeur CreatePlus. pour
le paramètre
i_ etModeFileOpen.
Augmentez le paramètre de
délai en fonction du nombre de
cycles nécessaires pour créer
le fichier. Prévoyez également
le temps de cycle de la tâche.
(1) Les noms de fichiers avec les extensions .ap_, .app, .cf_, .cfg, .crc, .err, .frc, .log, .prj, .rcp,.rsi et
.urf ne sont pas pris en charge pour la création ou la modification de fichiers à l'aide du bloc fonction
FB_WriteFile.
46
EIO0000002786.03
FileFormatUtility
Unités organisationnelles de programme (POU) XML
Contenu de cette partie
Blocs fonction XML.........................................................................................48
Fonctions XML ...............................................................................................70
EIO0000002786.03
47
FileFormatUtility
Blocs fonction XML
Blocs fonction XML
Contenu de ce chapitre
FB_XmlRead ................................................................................................48
FB_XmlWrite ................................................................................................54
FB_XmlItemsUtility ........................................................................................59
FB_XmlRead
FB_XmlRead Description fonctionnelle
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Implémente :
-
Description fonctionnelle
Le bloc fonction FB_XmlRead permet de lire (d'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.
NOTE: Le contenu du tableau est effacé au début de chaque opération de
lecture.
Lors de l’exécution du bloc fonction, l’entrée i_refXmlItems est stockée en interne
pour une utilisation ultérieure. Si une modification en ligne est détectée lors de
l’exécution du bloc fonction (q_xBusy = TRUE), les variables utilisées en interne
sont mises à jour avec la valeur actuelle de l’entrée.
NOTE: Ne réattribuez pas i_refXmlItems à une autre variable lors de
l’exécution du bloc fonction.
Le paramètre Gc_udiXmlMaxNumOfItems de la liste GPL, page 38 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.
48
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
NOTE: La sortie q_xWarnValueTruncated est valide à condition que la sortie
q_xDone soit sur TRUE.
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 section Exemple de
relations hiérarchiques indiquées par uiParentIndex, page 30.
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, page 20.
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.
q_sResultMsg
EIO0000002786.03
STRING[80]
Fournit des informations de diagnostic
et d'état sous la forme d'un message
textuel.
49
FileFormatUtility
Blocs fonction XML
Sortie
Type de données
Description
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, reportezvous au chapitre Comportement des blocs fonction avec l'entrée i_xExecute, page
20.
Utilisation de variables de type POINTER TO … ou REFERENCE
TO …
Le bloc fonction fournit des entrées et/ou des entrées/sorties de type POINTER
TO… ou REFERENCE TO…. En utilisant ce type de pointeur ou référence, le bloc
fonction a accès à la zone de mémoire adressée.
NOTE: En cas d'événement de modification en ligne, il peut arriver que des
zones de mémoire soient déplacées vers de nouveaux emplacements de
mémoire et, par conséquent, qu'un pointeur ou une référence ne soit plus
valide. Pour éviter les erreurs liées à des pointeurs non valides, les variables
de type POINTER TO… ou REFERENCE TO… doivent être mises à jour
régulièrement, au moins au début du cycle où elles sont utilisées.
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 spécifié 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>
50
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
FB_XmlRead Règles et contraintes
Règles et contraintes
Respectez les contraintes suivantes pour lire un fichier XML :
EIO0000002786.03
•
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.
•
CDATA Les objets ne sont pas pris en charge. Le contenu des objets CDATA
est interprété comme une valeur de l'élément ouvert.
•
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é. Pour ce faire, il est recommandé
d'utiliser les fonctions de conversion (voir le guide de programmation de
EcoStruxure Machine Expert) STRING_TO_. 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.
•
Ne traitez pas les données du tampon fourni via i_refXmlItems tant que la
sortie q_xBusy du bloc fonction indique TRUE.
•
N’accédez pas au même fichier avec différents blocs fonction en même
temps. Utilisez la sortie q_xBusy pour verrouiller l’exécution de différents
blocs fonction.
51
FileFormatUtility
Blocs fonction XML
FB_XmlRead Dépannage
Dépannage
Le tableau suivant présente quelques problèmes généraux avec leurs solutions :
Problème
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FilePathInvalid.
Cause
•
Le fichier indiqué ou son
répertoire ne sont pas
disponibles.
•
La syntaxe du chemin
d'accès au fichier n'est
pas valide.
Solution
•
Vérifiez que le fichier
figure bien dans le
répertoire indiqué. Si le
chemin d'accès pointe
vers une 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 '/').
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.
•
Vérifiez que le fichier
contient exclusivement
des caractères ASCII.
•
Au cours de l'analyse,
une balise de fermeture
non valide a été
détectée.
•
Vérifiez que le fichier
XML est valide : Assurezvous que chaque balise
ouverte est fermée et que
les éléments sont
correctement imbriqués.
NOTE: Les noms
d'élément prennent
en compte les
majuscules et les
minuscules.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
XPathExpressionInvalid.
•
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
NumOfParentsExceeded.
•
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat BufferFull.
52
•
L'expression XPath
entrée n'est pas valide ou
n'est pas prise en
charge.
•
Vérifiez la validité de la
syntaxe de l'expression
XPath.
•
Vérifiez que l'expression
est prise en charge par le
bloc fonction, page 50.
Le niveau d'imbrication
des éléments dans le
fichier XML à lire est
supérieur à celui défini.
•
Augmentez la valeur du
paramètre Gc_
udiXmlMaxNumOfParents de la liste GPL,
page 38.
•
Evitez d'utiliser des
fichiers avec des
structures XML
imbriquées
profondément.
•
Augmentez la taille de la
mémoire tampon à l'aide
du paramètre Gc_
XmlMaxNumOfItems de
la liste GPL, page 38.
•
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.
Le nombre d'éléments à
lire dans le fichier XML
dépasse la taille de la
mémoire tampon fournie
par l'application.
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
Problème
Cause
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
ElementNotFound.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FileInconsistent.
Solution
•
L'élément défini dans
l'expression XPath ne
figure pas dans le fichier.
•
Vérifiez l'absence de
faute de frappe dans
l'élément défini.
•
La déclaration du chemin
d'accès dans l'expression
XPath ne respecte pas la
structure utilisée dans le
fichier XML.
•
Vérifiez que la
déclaration du chemin
d'accès respecte la
structure attendue dans
le fichier XML.
•
L'expression XPath
contient une faute de
frappe.
•
Vérifiez que le fichier
XML correct est spécifié
avec le paramètre
i_ sFilePath.
•
Une balise au moins
n'est pas fermée alors
que la fin du fichier est
atteinte.
•
Vérifiez que le fichier
XML est valide : Assurezvous que chaque balise
ouverte est fermée et que
les éléments sont
correctement imbriqués.
FB_XmlRead Exemple
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>
<CCC id="1">
<DDD id="1" activate="TRUE">ddd</DDD>
</CCC>
</BBB>
</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.
Exemple de programme
PROGRAM SR_Example
VAR
fbRead :FFU.FB_XmlRead;
astXmlItems :FFU.XmlItems;
xCmdRead :BOOL;
END_VAR
fbRead(
i_xExecute := xCmdRead,
i_sFilePath := 'myfiles/Example.xml',
i_sXPathItemsToRead := ,
i_xReadElementsOnly := ,
i_refXmlItems := astXmlItems,
q_xDone => ,
q_xBusy => ,
q_xError => ,
etResult => ,
q_sResultMsg => ,
q_udiNumOfItems => ,
q_xWarnValueTruncated => ) ;
EIO0000002786.03
53
FileFormatUtility
Blocs fonction XML
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
diParentIndex
sName
sValue
etType
diNumOfAttributes
0
-1
AAA
–
1
0
1
0
BBB
1st bbb
1
0
2
0
BBB
–
1
0
3
2
CCC
–
1
1
1
4
3
id
2
1
5
3
DDD
ddd
1
2
6
5
id
1
2
1
7
5
activate
TRUE
2
2
FB_XmlWrite
FB_XmlWrite Description fonctionnelle
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Implémente :
-
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.
Lors de l’exécution du bloc fonction, l’entrée i_refXmlItems est stockée en interne
pour une utilisation ultérieure. Si une modification en ligne est détectée lors de
l’exécution du bloc fonction (q_xBusy = TRUE), les variables utilisées en interne
sont mises à jour avec la valeur actuelle de l’entrée.
NOTE: Ne réattribuez pas i_refXmlItems à une autre variable lors de
l’exécution du bloc fonction.
54
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
Une fois ce fichier créé, les éléments du tableau de type XmlItems qui sont
stockés dans la mémoire du contrôleur dédiée aux applications y sont écrits.
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 est définie 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 uiParentIndex, page 30.
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 crée le fichier XML
indiqué et y écrit le contenu défini sur
un front montant de cette entrée.
Reportez-vous également au chapitre
Comportement des blocs fonction avec
l'entrée i_xExecute, page 20.
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.
EIO0000002786.03
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
STRING[GPL.Gc_
uiXmlLengthOfString]
Elément racine créé lorsque le tableau
respectant la structure XmlElements
contient plus d'un élément racine.
i_stUserDefinedHeader
ST_
XmlUserDefinedHeader
La structure renferme un contenu défini
par l'utilisateur, qui doit être écrit au
début du nouveau fichier XML.
55
FileFormatUtility
Blocs fonction XML
Entrée
Type de données
Description
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.
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.
Utilisation de variables de type POINTER TO … ou REFERENCE
TO …
Le bloc fonction fournit des entrées et/ou des entrées/sorties de type POINTER
TO… ou REFERENCE TO…. En utilisant ce type de pointeur ou référence, le bloc
fonction a accès à la zone de mémoire adressée.
NOTE: En cas d'événement de modification en ligne, il peut arriver que des
zones de mémoire soient déplacées vers de nouveaux emplacements de
mémoire et, par conséquent, qu'un pointeur ou une référence ne soit plus
valide. Pour éviter les erreurs liées à des pointeurs non valides, les variables
de type POINTER TO… ou REFERENCE TO… doivent être mises à jour
régulièrement, au moins au début du cycle où elles sont utilisées.
FB_XmlWrite Règles et contraintes
Règles et contraintes
Respectez les contraintes suivantes pour écrire un fichier XML :
56
•
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. 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.
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
•
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_
uiXmlWriteProcessingBlockSize dans la liste GPL, page 38. 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.
•
Ne traitez pas les données du tampon fourni via i_refXmlItems tant que la
sortie q_xBusy du bloc fonction indique TRUE.
•
N’accédez pas au même fichier avec différents blocs fonction en même
temps. Utilisez la sortie q_xBusy pour verrouiller l’exécution de différents
blocs fonction.
FB_XmlWrite Dépannage
Dépannage
Le tableau suivant présente quelques problèmes généraux avec leurs solutions :
Problème
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FilePathInvalid.
Cause
•
Le répertoire spécifié
n'est pas disponible.
•
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 une
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 '/').
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FileAlreadyExists.
•
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
XmlStructureInconsistent.
•
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat Timeout.
EIO0000002786.03
Le fichier indiqué existe
déjà et l'entrée i_
xOverwriteFile est
FALSE.
•
Indiquez un autre nom du
fichier.
•
Si le fichier existant peut
être remplacé, réglez
l'entrée i_xOverwriteFile
sur TRUE.
Une valeur au moins du
paramètre uiParentIndex
dans la mémoire tampon
contenant les éléments
XML, page 30 empêche
la création d'un fichier
XML valide.
•
Vérifiez que les valeurs
du paramètre
uiParentIndex sont
cohérentes.
•
La valeur du paramètre
uiParentIndex du premier
élément est différente
de -1.
•
La valeur spécifiée pour
le délai d'attente est
insuffisante.
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. Prévoyez
également le temps de
cycle de la tâche.
•
Augmentez la taille du
bloc de traitement par
opération d'écriture afin
de limiter le nombre
d'appels de bloc fonction
nécessaires pour créer le
fichier.
57
FileFormatUtility
Blocs fonction XML
FB_XmlWrite Exemple
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
diParentIndex
sName
sValue
etType
diNumOfAttributes
0
-1
AAA
–
1
0
1
0
BBB
1st bbb
1
0
2
0
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
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.udiNumBytesToWrite := INT_TO_UDINT(Standard.LEN(sExternalDTD));
fbWrite(
i_xExecute := xCmdWrite,
i_sFilePath := 'myfiles/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">
58
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
<AAA>
<BBB>1st bbb</BBB>
<CCC id="1">
<DDD id="1" activate="TRUE">ddd</DDD>
</CCC>
</BBB>
</AAA>
FB_XmlItemsUtility
Description fonctionnelle du bloc FB_XmlItemsUtility
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.3.2.0
Hérite de :
-
Implémente :
-
Description fonctionnelle
Le bloc fonction FB_XmlItemsUtility est utilisé pour traiter les données contenues
dans un tableau de type XmlItems.
Le bloc fonction fournit plusieurs méthodes et propriétés pour le traitement des
données d'un tableau.
L'utilisation des méthodes et des propriétés vous permet d'analyser le tableau
pour obtenir ou modifier les valeurs des éléments XML. De plus, vous pouvez
ajouter d'autres éléments et attributs.
Elément
Description
1
Le bloc fonction FB_XmlRead est utilisé pour lire le contenu d'un fichier XML. Les
données sont stockées dans un tableau de type XmlItems.
2
Le bloc fonction FB_XmlItemsUtility prend en charge les fonctions suivantes :
3
EIO0000002786.03
•
Lecture de valeurs
•
Modification de valeurs
•
Modification de la structure XML existante
Le bloc fonction FB_XmlWrite permet de créer un nouveau fichier XML basé sur les
données du tableau de type XmlItems. Un fichier existant peut être écrasé.
59
FileFormatUtility
Blocs fonction XML
Avant de lancer le traitement des données d'un tableau, vous devez appeler la
méthode SelectElement ou InitializeXmlItems. Après l'exécution réussie de l'une
des méthodes, le lien d'accès au tableau est créé, et l'élément de base souhaité
pour les autres opérations est sélectionné.
Le bloc fonction ne fournit pas des paramètres, mais des méthodes et des
propriétés. L’instance du bloc fonction est utilisée exclusivement pour conserver
les variables locales consultées durant le traitement séquentiel des méthodes ou
propriétés associées. Par conséquent, il n’est pas nécessaire d’appeler le bloc
fonction dans le code de l’application.
AddAttribute (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet d'ajouter un attribut à l'élément sélectionné.
La valeur de retour de type BOOL indique TRUE si l'attribut a bien été ajouté.
L'appel de cette méthode renvoie Ok, NoElementSelected,
AttributeAlreadyExistsForSelectedElement, InvalidInput ou BufferFull. Utilisez la
propriété Result pour obtenir le résultat de la méthode.
Interface
Entrée
Type de données
Description
i_sAttribute
STRING [Gc_uiXmlLengthOfString]
Nom de l'attribut.
i_sValue
STRING [Gc_uiXmlLengthOfString]
Valeur de l'attribut.
AddSubElement (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet d'ajouter un nouveau sous-élément au-dessous de
l'élément sélectionné. Une fois la méthode exécutée avec succès, le nouvel
élément est sélectionné pour d'autres opérations.
La valeur de retour de type BOOL indique TRUE si le nouvel élément a bien été
ajouté.
60
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
L'appel de cette méthode renvoie Ok, InvalidInput, NoElementSelected,
MaxNumOfParentsExceeded ou BufferFull. Utilisez la propriété Result pour
obtenir le résultat de la méthode.
Interface
Entrée
Type de données
Description
i_sElementName
STRING [Gc_uiXmlLengthOfString]
Nom du sous-élément à ajouter.
Exemple
Code:
fbXmlItems.InitializeXmlItems
('root', astXmlData);
fbXmlItems.AddSubElement('A1');
fbXmlItems.AddAttribute('a1', 'A11');
Résultat :
Le fichier XML résultant s'affiche sur le côté
droit.
AppendElement (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode est utilisée pour annexer un nouvel élément au même niveau que
l'élément sélectionné. Une fois la méthode exécutée avec succès, le nouvel
élément est sélectionné pour d'autres opérations.
La valeur de retour de type BOOL indique TRUE si le nouvel élément a bien été
annexé.
L'appel de cette méthode renvoie Ok, WrongLayerToAppendElement,
InvalidInput, NoElementSelected ou BufferFull. Utilisez la propriété Result pour
obtenir le résultat de la méthode.
Interface
EIO0000002786.03
Entrée
Type de données
Description
i_sElementName
STRING [Gc_uiXmlLengthOfString]
Nom de l'élément à ajouter.
61
FileFormatUtility
Blocs fonction XML
Exemple
Code:
fbXmlItems.InitializeXmlItems
('root', astXmlData);
fbXmlItems.AddSubElement('A1');
fbXmlItems.AddAttribute('a1', 'A11');
fbXmlItems.AppendElement('A2');
Résultat :
Le fichier XML résultant s'affiche sur le côté
droit.
ClearSelection (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet d'effacer la sélection en cours.
La valeur de retour de type BOOL indique TRUE, qu'un élément a été sélectionné
avant ou non.
L'appel de cette méthode renvoie Ok.
GetAttributeByName (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet de lire la valeur de l'attribut indiqué dans l'élément
sélectionné.
La valeur de retour de type BOOL indique TRUE si l'attribut a été trouvé.
L'appel de cette méthode renvoie Ok, NoElementSelected, InvalidInput ou
AttributeNotFound. Utilisez la propriété Result pour obtenir le résultat de la
méthode.
Si q_sValue est une chaîne nulle, aucun élément n'est sélectionné (l'attribut est
introuvable) ou l'attribut n'a pas de valeur. La valeur q_sValue est valide
uniquement si la valeur de retour de la méthode est TRUE.
62
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
Interface
Entrée
Type de données
Description
i_sAttribute
STRING [Gc_uiXmlLengthOfString]
Nom de l'attribut.
Sortie
Type de données
Description
q_sValue
STRING [Gc_uiXmlLengthOfString]
Valeur de l'attribut
spécifié.
Exemple
Précondition : le fichier XML (illustré ci-dessous) a été lu en utilisant FB_XmlRead
et le contenu est stocké dans le tableau astXmlFile de type XmlItems.
Code:
fbXmlItems.SelectElement('/root/
A1', astXmlData);
IF fbXmlItems.GetAttributeByName
('a1', sValue) THEN
// do something with sValue
END_IF
Résultat :
La variable sValue fournit la valeur 'A1-1'.
InitializeXmlItems (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet d'initialiser le tableau lié de type XmlItems. Durant
l'initialisation, le contenu du tableau est effacé et l'élément indiqué est créé en tant
qu'élément racine. Une fois la méthode exécutée avec succès, l'élément créé est
sélectionné pour d'autres opérations.
La valeur de retour de type BOOL indique TRUE si l'initialisation du tableau
aboutit.
L'appel de cette méthode renvoie Ok ou InvalidInput. Utilisez la propriété Result
pour obtenir le résultat de la méthode.
EIO0000002786.03
63
FileFormatUtility
Blocs fonction XML
Interface
Entrée
Type de données
Description
i_sElementName
STRING [Gc_uiXmlLengthOfString]
Nom de l'élément à créer en
tant que racine.
i_refXmlItems
REFERENCE TO XMLItems
Tableau fourni par l'application,
qui contient les éléments et les
attributs lus ou écrits dans un
fichier XML.
Exemple
Code:
fbXmlItems.InitializeXmlItems
('root', astXmlData);
Résultat :
Le fichier XML résultant contient uniquement
l'élément racine (root).
RemoveAttribute (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet de supprimer un attribut de l'élément sélectionné.
La valeur de retour de type BOOL indique TRUE si l'attribut a bien été supprimé.
L'appel de cette méthode renvoie Ok, NoElementSelected, InvalidInput ou
AttributeNotFound. Utilisez la propriété Result pour obtenir le résultat de la
méthode.
Interface
Entrée
Type de données
Description
i_sAttribute
STRING [Gc_uiXmlLengthOfString]
Nom de l'attribut.
SelectElement (Méthode)
Présentation
64
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
Description fonctionnelle
Cette méthode permet de sélectionner l'élément défini dans le tableau de type
XmlItems. Sur l'élément sélectionné, d'autres méthodes peuvent être exécutées.
L'élément est défini en utilisant une expression XPath. Si l'expression XPath
correspond à plusieurs éléments, le premier élément correspondant est
sélectionné. Si une chaîne nulle est attribuée à l'entrée i_sXpathToElement,
l'élément racine est sélectionné.
A chaque appel, la recherche de l'élément défini est lancée à partir du début du
tableau. Ainsi, en utilisant la même expression XPath, le même élément est
toujours sélectionné.
La valeur de retour de type BOOL indique TRUE si un élément a été sélectionné.
L'appel de cette méthode renvoie Ok, XPathExpressionInvalid ou
ElementNotFound. Utilisez la propriété Result pour obtenir le résultat de la
méthode.
Interface
Entrée
Type de données
Description
i_sXpathToElement
STRING[255]
L'expression XPath qui définit l'élément
à sélectionner. Si une chaîne nulle est
attribuée, l'élément racine est
sélectionné.
i_refXmlItems
REFERENCE TO
XmlItems
Tableau fourni par l'application, qui
contient les éléments et les attributs lus
ou écrits dans un fichier XML.
Expressions XPath
Pour définir l'élément à sélectionner, utilisez la syntaxe du langage XPath (XML
Path).
Le tableau répertorie les expressions XPath prises en charge :
Expression XPath
Description
/…/<nom_élément>
Sélection du premier élément correspondant
au chemin d'accès défini.
/…/<nom_élément>[<n>]
Sélection du nème élément correspondant au
chemin d'accès défini.
/…/<nom_élément>[@<attribut>]
Sélection du premier élément correspondant
au chemin d'accès défini avec l'attribut défini.
/…/<nom_élément>[@<attribut>=
<valeur>]
Sélection du premier élément correspondant
au chemin d'accès défini avec l'attribut défini
et la valeur définie.
Les prédicats, 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>
Exemple
Précondition : le fichier XML (illustré ci-dessous) a été lu en utilisant FB_XmlRead
et le contenu est stocké dans le tableau astXmlFile de type XmlItems.
EIO0000002786.03
65
FileFormatUtility
Blocs fonction XML
Code:
fbXmlItems.SelectElement('/root/
A1', astXmlData);
Résultat :
L'élément A1 est sélectionné.
SelectFirstChild (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet de sélectionner le premier élément enfant de l'élément
sélectionné.
La valeur de retour de type BOOL indique TRUE si un élément a été sélectionné.
L'appel de cette méthode renvoie Ok, NoElementSelected ou ElementNotFound.
Utilisez la propriété Result pour obtenir le résultat de la méthode.
La méthode ne contient pas d'entrées.
Exemple
Précondition : le fichier XML (illustré ci-dessous) a été lu en utilisant FB_XmlRead
et le contenu est stocké dans le tableau astXmlFile de type XmlItems.
Code:
fbXmlItems.SelectElement('/root/
A1', astXmlData);
fbXmlItems.SelectFirstChild();
Résultat :
L'élément B1 est sélectionné.
66
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
SelectNext (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet de sélectionner l'élément suivant ayant le même parent
que l'élément sélectionné.
La valeur de retour de type BOOL indique TRUE si un élément a été sélectionné.
L'appel de cette méthode renvoie Ok, NoElementSelected ou ElementNotFound.
Utilisez la propriété Result pour obtenir le résultat de la méthode.
La méthode ne contient pas d'entrées.
Exemple
Précondition : le fichier XML (illustré ci-dessous) a été lu en utilisant FB_XmlRead
et le contenu est stocké dans le tableau astXmlFile de type XmlItems.
Code:
fbXmlItems.SelectElement('/root/
A1');
fbXmlItems.SelectFirstChild();
fbXmlItems.SelectNext();
fbXmlItems.SelectNext();
Résultat :
L'élément B3 est sélectionné.
SelectParent (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet de sélectionner l'élément parent de l'élément sélectionné.
EIO0000002786.03
67
FileFormatUtility
Blocs fonction XML
La valeur de retour de type BOOL indique TRUE si un élément a été sélectionné.
L'appel de cette méthode renvoie Ok, NoElementSelected ou ElementNotFound.
Utilisez la propriété Result pour obtenir le résultat de la méthode.
La méthode ne contient pas d'entrées.
Exemple
Précondition : le fichier XML (illustré ci-dessous) a été lu en utilisant FB_XmlRead
et le contenu est stocké dans le tableau astXmlFile de type XmlItems.
Code:
fbXmlItems.SelectElement('/root/
A1');
fbXmlItems.SelectFirstChild();
fbXmlItems.SelectNext();
fbXmlItems.SelectFirstChild();
// do something with element C1;
fbXmlItems.SelectParent();
Résultat :
L'élément B2 est sélectionné.
SetAttributeByName (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.3.2.0
Description fonctionnelle
Cette méthode permet de définir la valeur de l'attribut indiqué dans l'élément
sélectionné.
La valeur de retour de type BOOL indique TRUE si l'attribut a été trouvé et si la
valeur indiquée a été définie.
L'appel de cette méthode renvoie Ok, NoElementSelected, InvalidInput ou
AttributeNotFound. Utilisez la propriété Result pour obtenir le résultat de la
méthode.
Interface
68
Entrée
Type de données
Description
i_sAttribute
STRING [Gc_uiXmlLengthOfString]
Nom de l'attribut.
i_sValue
STRING [Gc_uiXmlLengthOfString]
Nouvelle valeur de
l'attribut.
EIO0000002786.03
Blocs fonction XML
FileFormatUtility
Propriétés de FB_XmlItemsUtility
Présentation
Nom
Type de données
Accès
Description
IsElementSelected
BOOL
Lecture
Indique TRUE si un élément est sélectionné.
L'appel de cette propriété renvoie Ok.
NameOfParentElement
STRING[Gc_
uiXmlLengthOfString]
Lecture
Fournit le nom de l'élément parent de l'élément sélectionné.
Si le nom de l'élément parent est une chaîne nulle, aucun
élément n'est sélectionné ou bien l'élément est l'élément
racine et n'a pas d'élément parent. Utilisez la propriété
IsElementSelected pour valider une valeur de chaîne nulle.
L'appel de cette propriété renvoie Ok, ElementNotFound ou
NoElementSelected.
NameOfSelectedElement
STRING[Gc_
uiXmlLengthOfString]
Lecture
Fournit le nom de l'élément sélectionné.
Si le nom de l'élément est une chaîne nulle, aucun élément
n'est sélectionné.
L'appel de cette propriété renvoie Ok ou
NoElementSelected.
NumberOfAttributes
INT
Lecture
Fournit le nombre d'attributs de l'élément sélectionné.
Si la valeur renvoyée est -1, aucun élément n'est
sélectionné.
L'appel de cette propriété renvoie Ok ou
NoElementSelected.
NumberOfChildElements
INT
Lecture
Fournit le nombre d'éléments enfants de l'élément
sélectionné.
Si la valeur renvoyée est -1, aucun élément n'est
sélectionné.
L'appel de cette propriété renvoie Ok ou
NoElementSelected.
NumberOfParentElements
INT
Lecture
Fournit le nombre d'éléments parents de l'élément
sélectionné.
Si la valeur renvoyée est -1, aucun élément n'est
sélectionné.
L'appel de cette propriété renvoie Ok ou
NoElementSelected.
Result
ET_Result, page 25
Lecture
Fournit le résultat de la méthode ou de la propriété
récemment appelée.
L'appel de cette propriété n'affecte pas le résultat.
ValueOfSelectedElement
STRING[Gc_
uiXmlLengthOfString]
Lecture/
écriture
Récupère ou définit la valeur de l'élément sélectionné.
Si la valeur renvoyée est une chaîne nulle, aucun élément
n'est sélectionné ou bien l'élément n'a aucune valeur.
Utilisez la propriété IsElementSelected pour valider une
valeur de chaîne nulle.
L'appel de cette propriété renvoie Ok ou
NoElementSelected.
EIO0000002786.03
69
FileFormatUtility
Fonctions XML
Fonctions XML
Contenu de ce chapitre
FC_XmlGetElementValue ..............................................................................70
FC_XmlSetElementValue ..............................................................................71
FC_XmlGetElementValue
Description fonctionnelle du bloc FC_XmlGetElementValue
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Implémente :
-
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.
Vous pouvez utiliser le bloc fonction FB_XmlItemsUtility plutôt que cette ancienne
fonction. Il permet d'utiliser des fonctions supplémentaires pour obtenir des
informations du tableau de type XmlItems.
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_
uiXmlLengthOfString]
Fournit la valeur de l'élément indiqué.
Expressions XPath
Pour définir l'élément à sélectionner, utilisez la syntaxe du langage XPath (XML
Path).
70
EIO0000002786.03
Fonctions XML
FileFormatUtility
Le tableau répertorie les expressions XPath prises en charge :
Expression XPath
Description
/…/<nom_élément>
Sélection du premier élément correspondant
au chemin d'accès défini.
/…/<nom_élément>[<n>]
Sélection du nème élément correspondant au
chemin d'accès défini.
/…/<nom_élément>[@<attribut>]
Sélection du premier élément correspondant
au chemin d'accès défini avec l'attribut défini.
/…/<nom_élément>[@<attribut>=
<valeur>]
Sélection du premier élément correspondant
au chemin d'accès défini avec l'attribut défini
et la valeur définie.
Les prédicats, 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>
FC_XmlGetElementValue Règles et contraintes
Règles et contraintes pour la lecture de valeurs XML
Respectez les contraintes suivantes :
•
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é.
FC_XmlSetElementValue
Description fonctionnelle du bloc FC_XmlSetElementValue
Présentation
EIO0000002786.03
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Implémente :
-
71
FileFormatUtility
Fonctions XML
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.
vous pouvez utiliser le bloc fonction FB_XmlItemsUtility plutôt que cette fonction. Il
permet d'utiliser des fonctions supplémentaires pour modifier les données du
tableau de type XmlItems.
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.
i_sElementValue
STRING[Gc_
uiXmlLengthOfString]
Valeur à définir pour l'élément indiqué.
Sortie
Type de données
Description
q_etResult
ET_Result
Fournit des informations de diagnostic
sous la forme d'une valeur numérique.
Expressions XPath
Pour définir l'élément à sélectionner, utilisez la syntaxe du langage XPath (XML
Path).
Le tableau répertorie les expressions XPath prises en charge :
Expression XPath
Description
/…/<nom_élément>
Sélection du premier élément correspondant
au chemin d'accès défini.
/…/<nom_élément>[<n>]
Sélection du nème élément correspondant au
chemin d'accès défini.
/…/<nom_élément>[@<attribut>]
Sélection du premier élément correspondant
au chemin d'accès défini avec l'attribut défini.
/…/<nom_élément>[@<attribut>=
<valeur>]
Sélection du premier élément correspondant
au chemin d'accès défini avec l'attribut défini
et la valeur définie.
Les prédicats, 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>
72
EIO0000002786.03
Fonctions XML
FileFormatUtility
FC_XmlSetElementValue Règles et contraintes
Règles et contraintes pour la définition de valeurs XML
Respectez les contraintes suivantes :
EIO0000002786.03
•
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é.
73
FileFormatUtility
Unités organisationnelles de programme (POU) CSV
Contenu de cette partie
Blocs fonction CSV.........................................................................................75
74
EIO0000002786.03
Blocs fonction CSV
FileFormatUtility
Blocs fonction CSV
Contenu de ce chapitre
FB_CsvRead ................................................................................................75
FB_CsvWrite ................................................................................................80
FB_CsvRead
FB_CsvRead Description fonctionnelle
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Implémente :
-
Description fonctionnelle
Le bloc fonction FB_CsvRead permet de lire un fichier CSV situé 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) qui sont
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é sur des systèmes d'exploitation tels que Windows
et MS-DOS.
•
LF (0A hex): Utilisé sur des systèmes d'exploitation comme Unix, Linux,
Mac OS X et Android.
•
CR (0D hex): Utilisé sur des systèmes d'exploitation tels que Mac OS X
version 9 ou antérieure.
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
EIO0000002786.03
75
FileFormatUtility
Blocs fonction CSV
tableau et le pointeur correspondant au bloc fonction. Pour plus d'informations,
reportez-vous à la structure ST_CsvTable.
Lors de l’exécution du bloc fonction, l’entrée i_stTableReadValues.pbyTable est
stockée en interne pour une utilisation ultérieure. Si une modification en ligne est
détectée lors de l’exécution du bloc fonction (q_xBusy = TRUE), les variables
utilisées en interne sont mises à jour avec la valeur actuelle de l’entrée.
NOTE: Ne réattribuez pas i_stTableReadValues.pbyTable à une autre zone
mémoire lors de l’exécution du bloc fonction.
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.
NOTE: La fonction efface le tableau avant l'opération de lecture.
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, page 20.
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.
Consultez ST_CsvReadParameter.
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.
76
i_stTableReadValues
ST_CsvTable
Structure permettant de transmettre au
bloc fonction la mémoire tampon
fournie par l'application (reportez-vous
à la structure, page 31 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.
EIO0000002786.03
Blocs fonction CSV
FileFormatUtility
Sortie
Type de données
Description
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_
CsvWarnValueTruncated
Fournit des informations sur la
première valeur tronquée, le 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, reportezvous au chapitre Comportement des blocs fonction avec l'entrée i_xExecute, page
20.
Utilisation de variables de type POINTER TO … ou REFERENCE
TO …
Le bloc fonction fournit des entrées et/ou des entrées/sorties de type POINTER
TO… ou REFERENCE TO…. En utilisant ce type de pointeur ou référence, le bloc
fonction a accès à la zone de mémoire adressée.
NOTE: En cas d'événement de modification en ligne, il peut arriver que des
zones de mémoire soient déplacées vers de nouveaux emplacements de
mémoire et, par conséquent, qu'un pointeur ou une référence ne soit plus
valide. Pour éviter les erreurs liées à des pointeurs non valides, les variables
de type POINTER TO… ou REFERENCE TO… doivent être mises à jour
régulièrement, au moins au début du cycle où elles sont utilisées.
FB_CsvRead Règles et contraintes
Règles et contraintes
Respectez les contraintes suivantes pour lire 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.
EIO0000002786.03
•
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é. Pour ce faire, il est recommandé
d'utiliser les fonctions de conversion (voir le guide de programmation de
EcoStruxure Machine Expert) STRING_TO_. 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. 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 à
77
FileFormatUtility
Blocs fonction CSV
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_
uiCsvReadProcessingBlockSize dans la liste GPL, page 38. 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.
•
Ne traitez pas les données du tampon fourni via i_stTableReadValues.
pbyTable tant que la sortie q_xBusy du bloc fonction indique TRUE.
•
N’accédez pas au même fichier avec différents blocs fonction en même
temps. Utilisez la sortie q_xBusy pour verrouiller l’exécution de différents
blocs fonction.
FB_CsvRead Dépannage
Dépannage
Le tableau suivant présente quelques problèmes généraux avec leurs solutions :
Problème
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FilePathInvalid.
Cause
•
Le répertoire spécifié
n'est pas disponible.
•
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 une
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 '/').
78
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat TableInvalid.
•
Le pointeur vers la
mémoire tampon de
lecture n'est pas affecté.
•
Vérifiez l'affectation du
paramètre pbyTable dans
la structure i_
stTableReadValues.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
TableReadValuesInvalid.
•
Les dimensions de la
mémoire tampon (table)
indiquée sont
incohérentes.
•
Vérifiez l'affectation du
paramètre dans la
structure
i_ stTableReadValues.
EIO0000002786.03
Blocs fonction CSV
FileFormatUtility
Problème
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
ReadParameterInvalid.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat Timeout.
Cause
•
Les paramètres du mode
de lecture sont
incohérents.
•
Aucun caractère de
séparateur n'a été défini.
•
La valeur spécifiée pour
le délai d'attente est
insuffisante.
Solution
•
Vérifiez que la valeur
choisie pour etReadMode
est prise en charge par
ET_CsvReadMode.
•
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.
•
Augmentez le paramètre
de délai en fonction du
nombre de cycles
nécessaires pour lire le
fichier. Prévoyez
également le temps de
cycle de la tâche.
•
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.
FB_CsvRead Exemple
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
Exemple de programme
PROGRAM SR_Example
VAR
fbRead :FFU.FB_CsvRead;
xCmdRead :BOOL;
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:= 8;
c_uiNumOfColumns :UINT:= 7;
c_uiLengthOfValue :UINT:= 20;
END_VAR
EIO0000002786.03
79
FileFormatUtility
Blocs fonction CSV
fbRead.i_stTableReadValues.pbyTable := ADR(asCsvTable);
fbRead.i_stTableReadValues.uiNumOfRows := c_uiNumOfRows;
fbRead.i_stTableReadValues.uiNumOfColumns := c_uiNumOfColumns;
fbRead.i_stTableReadValues.udiSizeOfTable := SIZEOF(asCsvTable);
fbRead.i_stReadParameter.sDelimiter := ';';
fbRead.i_stReadParameter.etReadMode := FFU.ET_CsvReadMode.AllValues;
fbRead.i_stReadParameter.udiNumOfRow := 0;
fbRead.i_stReadParameter.udiNumOfColumn := 0;
fbRead(
i_xExecute:= xCmdRead,
i_sFilePath:= 'myfiles/Example.csv',
i_stTableReadValues:= ,
i_stReadParameter:= ,
i_timTimeout:= ,
q_xDone=> ,
q_xBusy=> ,
q_xError=> ,
q_etResult=> ,
q_sResultMsg=> ,
q_stFileInformation=> ,
q_stCsvWarnValueTruncated=> ,
xValueTruncated=> );
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
1
Velo_Max
1500
1/min
maximum velocity of
–
–
2
2
Velo_Min
100
1/min
minimum velocity of
–
–
3
3
Velo_ManMode_
Slow
150
1/min
velocity manual
mode
–
–
4
4
Velo_ManMode_
Fast
600
1/min
velocity manual
mode
–
–
5
–
–
–
–
–
–
–
6
–
–
–
–
–
–
–
7
–
–
–
–
–
–
–
NOTE: Les valeurs de la colonne Description ont été tronquées lors de la
lecture du fichier, car la longueur des STRINGs dans la mémoire tampon de
lecture est limitée à 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.
FB_CsvWrite
FB_CsvWrite Description fonctionnelle
Présentation
80
Type :
Bloc fonction
Disponible à partir de la version :
V1.0.8.0
Hérite de :
-
Implémente :
-
EIO0000002786.03
Blocs fonction CSV
FileFormatUtility
Description fonctionnelle
Le bloc fonction FB_CsvWrite permet d'écrire des valeurs dans un fichier CSV
situé 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.
Lors de l’exécution du bloc fonction, l’entrée i_stTableReadValues.pbyTable est
stockée en interne pour une utilisation ultérieure. Si une modification en ligne est
détectée lors de l’exécution du bloc fonction (q_xBusy = TRUE), les variables
utilisées en interne sont mises à jour avec la valeur actuelle de l’entrée.
NOTE: Ne réattribuez pas i_stTableReadValues.pbyTable à une autre zone
mémoire lors de l’exécution du bloc fonction.
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.
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
EIO0000002786.03
ST_WriteParameter
Indique le mode d'ouverture du fichier
CSV et le contenu qui doit y être écrit.
81
FileFormatUtility
Blocs fonction CSV
Entrée
Type de données
Description
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, page 31 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.
Utilisation de variables de type POINTER TO … ou REFERENCE
TO …
Le bloc fonction fournit des entrées et/ou des entrées/sorties de type POINTER
TO… ou REFERENCE TO…. En utilisant ce type de pointeur ou référence, le bloc
fonction a accès à la zone de mémoire adressée.
NOTE: En cas d'événement de modification en ligne, il peut arriver que des
zones de mémoire soient déplacées vers de nouveaux emplacements de
mémoire et, par conséquent, qu'un pointeur ou une référence ne soit plus
valide. Pour éviter les erreurs liées à des pointeurs non valides, les variables
de type POINTER TO… ou REFERENCE TO… doivent être mises à jour
régulièrement, au moins au début du cycle où elles sont utilisées.
FB_CsvWrite Règles et contraintes
Règles et contraintes
Respectez les contraintes suivantes pour écrire un fichier CSV :
82
•
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. 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
EIO0000002786.03
Blocs fonction CSV
FileFormatUtility
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_
uiCsvWriteProcessingBlockSize dans la liste GPL, page 38. 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.
•
Ne traitez pas les données du tampon fourni via i_stTableReadValues.
pbyTable tant que la sortie q_xBusy du bloc fonction indique TRUE.
•
N’accédez pas au même fichier avec différents blocs fonction en même
temps. Utilisez la sortie q_xBusy pour verrouiller l’exécution de différents
blocs fonction.
FB_CsvWrite Dépannage
Dépannage
Le tableau suivant présente quelques problèmes généraux avec leurs solutions :
Problème
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FilePathInvalid.
Cause
•
Le répertoire spécifié
n'est pas disponible.
•
La syntaxe du chemin
d'accès au fichier n'est
pas valide.
•
Le fichier indiqué n'existe
pas au chemin spécifié.
Solution
•
Vérifiez que le répertoire
existe. Si le chemin
d'accès pointe vers une
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 '/').
EIO0000002786.03
•
Sélectionnez la valeur
AppendPlus pour le
paramètre
etModeFileOpen.
Le fichier indiqué existe
déjà, mais ne peut pas
être écrasé (paramètre
etModeFileOpen).
•
Indiquez un autre nom de
fichier.
•
Si le fichier existant peut
être écrasé, sélectionnez
la valeur CreatePlus pour
le paramètre
etModeFileOpen.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
FileAlreadyExists.
•
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat TableInvalid.
•
Le pointeur vers la
mémoire tampon de
lecture n'est pas affecté.
•
Vérifiez l'affectation du
paramètre pbyTable dans
la structure
i_ stTableWriteValues.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
TableWriteValuesInvalid.
•
Les dimensions du
tableau CSV indiqué sont
incohérentes.
•
Vérifiez l'affectation du
paramètre dans la
structure
i_ stTableWriteValues.
83
FileFormatUtility
Blocs fonction CSV
Problème
Cause
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat
WriteParameterInvalid.
L'exécution se termine par la
détection d'une erreur et
renvoie le résultat Timeout.
Solution
•
Les paramètres du mode
d'écriture sont
incohérents.
•
Aucun caractère de
séparateur n'a été défini.
•
La valeur spécifiée pour
le délai d'attente est
insuffisante.
•
Vérifiez que la valeur
sélectionnée pour
etModeFileOpen est
prise en charge par
etModeFileOpen
•
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. Prévoyez
également le temps de
cycle de la tâche.
•
Augmentez la taille du
bloc de traitement par
opération d'écriture afin
de limiter le nombre
d'appels de bloc fonction
nécessaires pour créer le
fichier.
FB_CsvWrite Exemple
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
Erreur
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_uiNumOfColumns-1] OF STRING(c_
uiLengthOfValue);
stCsvTable: FFU.ST_CsvTable;
END_VAR
VAR CONSTANT
c_uiNumOfRows :UINT:= 8;
c_uiNumOfColumns :UINT:= 7;
84
EIO0000002786.03
Blocs fonction CSV
FileFormatUtility
c_uiLengthOfValue :UINT:= 80;
END_VAR
fbWrite.i_stTableWriteValues.pbyTable := ADR(asCsvTable);
fbWrite.i_stTableWriteValues.uiNumOfRows := c_uiNumOfRows;
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.udiNumOfRow := 3;
fbWrite.i_stWriteParameter.udiNumOfColumn := c_uiNumOfColumns;
fbWrite(
i_xExecute:= xCmdWrite,
i_sFilePath:= 'myfiles/Example.csv',
i_stWriteParameter:= ,
i_timTimeout:= ,
i_stTableWriteValues:= ,
q_xDone=> ,
q_xBusy=> ,
q_xError=> ,
q_etResult=> ,
q_sResultMsg=> ,
q_udiFileSize=> );
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;;;;
EIO0000002786.03
85
FileFormatUtility
Unités organisationnelles de programme (POU)
JSON
Contenu de cette partie
Blocs fonction JSON.......................................................................................87
86
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Blocs fonction JSON
Contenu de ce chapitre
FB_CreateJsonFormattedString ....................................................................87
FB_JsonUtilities .......................................................................................... 102
FB_CreateJsonFormattedString
Description fonctionnelle du bloc FB_CreateJsonFormattedString
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.2.0.3
Hérite de :
-
Met en œuvre :
-
Description fonctionnelle
Le bloc fonction FB_CreateJsonFormattedString permet de créer un objet JSON
au format STRING. L’objet STRING créé peut être traité uniquement sous forme
de chaîne de texte en code ASCII.
Le bloc fonction ne fournit aucun paramètre, mais les méthodes et les propriétés
permettant le contrôle de la création et la surveillance de l’état. L’instance du bloc
fonction est utilisée exclusivement pour conserver les variables locales consultées
durant le traitement séquentiel des méthodes ou propriétés associées. Par
conséquent, il n’est pas nécessaire d’appeler le bloc fonction dans le code de
l’application.
AddNameValuePair (méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
1.2.3.0
Description fonctionnelle
Ajoute une paire nom/valeur à la donnée de type STRING en cours de traitement.
Le format de la valeur ajoutée à STRING dépend du type de données de la
variable attribuée à l'entrée i_anyValue. La valeur attribuée est convertie si
nécessaire en ASCII STRING et ajoutée au format approprié à la STRING en
cours de traitement.
Contrairement aux méthodes AddNameValuePair<data type> qui ne prennent en
charge qu'un seul type de données pour la valeur, cette méthode en accepte
plusieurs pour l'entrée i_anyValue.
Les variables de type BOOL, STRING, INT, UINT, DINT, UDINT, BYTE, WORD,
DWORD, LWORD, REAL, LREAL, SINT, USINT, LINT, ULINT, TIME, LTIME,
EIO0000002786.03
87
FileFormatUtility
Blocs fonction JSON
DATE_AND_TIME, DATE et TOD sont prises en charge pour l'entrée
i_ anyValue.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Le type de données (ARRAY ou WSTRING, par
exemple) de la variable attribuée à i_anyValue
n'est pas pris en charge.
L’objet STRING reste inchangé.
Interface
Entrée
Type de données
Description
i_sName
STRING (GPL.Gc_
uiJsonMaxLengthOfName)
Indique le nom de la paire nom/valeur à
ajouter.
Les guillemets qui entourent <name>
ne doivent pas être définis
explicitement, ils sont implicitement
ajoutés par la méthode.
i_anyValue
ANY*
Indique la valeur à ajouter.
(*) Les types de données pris en charge sont les suivants : BOOL, STRING, INT, UINT, DINT,
UDINT, BYTE, WORD, DWORD, LWORD, REAL, LREAL, SINT, USINT, LINT, ULINT, TIME,
LTIME, DATE_AND_TIME, DATE et TOD.
Exemple
L'appel de la méthode AddNameValuePair ajoute à la STRING le texte identifié en
gras dans l'exemple :
{"Key":1,"<name>":<value>}
<name> correspond à la valeur spécifiée avec l'entrée i_sName de la méthode.
<value> correspond à la valeur spécifiée avec l'entrée i_anyValue de la
méthode.
AddNameValuePair<data type> (méthode)
Présentation
Cette section fournit une description générique des méthodes suivantes :
88
•
AddNameValuePairINT
•
AddNameValuePairDINT
•
AddNameValuePairUDINT
•
AddNameValuePairREAL
•
AddNameValuePairSTRING
•
AddNameValuePairBOOL
Type :
Méthode
Disponible à partir de :
V1.2.0.3
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
A titre d’exemple, la méthode AddNameValuePairINT est illustrée dans la figure
suivante :
Description fonctionnelle
Ajoute une paire nom/valeur à un STRING qui est traité avec une valeur égale au
type de données qui est indiqué dans le nom de la méthode :
•
INT = INTEGER
•
DINT = DOUBLE INTEGER
•
UDINT = UNSIGNED DOUBLE INTEGER
•
REAL = valeur en virgule flottante selon le type de données IEC REAL
•
STRING = STRING
•
BOOL = BOOL
La valeur attribuée est convertie, si nécessaire, en ASCII STRING et ajoutée au
format approprié au STRING en cours de traitement.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Interface
Entrée
Type de données
Description
i_sName
STRING(GPL.Gc_
uiJsonMaxLengthOfName)
Indique le nom de la paire nom/valeur à
ajouter.
Les guillemets qui entourent <name>
ne doivent pas être définis
explicitement, ils sont implicitement
ajoutés par la méthode.
i_*Value
*
Indique la valeur à ajouter.
(*) Type de données correspondant à la méthode utilisée.
Exemple
L'appel de la méthode AddNameValuePair<data type> ajoute à la STRING le
texte identifié en gras dans l'exemple :
{"Key":1,"<name>":<value>}
<name> correspond à la valeur spécifiée avec l'entrée i_sName de la méthode.
<value> correspond à la valeur spécifiée avec l'entrée i_*Value de la méthode.
EIO0000002786.03
89
FileFormatUtility
Blocs fonction JSON
AddNameValuePairArray (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.2.0.3
Description fonctionnelle
Ajoute une paire nom/valeur au STRING qui est traité avec une valeur égale au
type ARRAY.
Après l’appel de la méthode AddNameValuePairArray, l’objet ARRAY qui
représente la valeur correspond au nom défini est ouvert.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Le nombre maximal de niveaux est atteint pour
l’objet STRING actuel.
L’objet STRING reste inchangé.
Interface
Entrée
Type de données
Description
i_sName
STRING(GPL.Gc_
uiJsonMaxLengthOfName)
Indique le nom de la paire nom/valeur à
ajouter.
Les guillemets qui entourent <name>
ne doivent pas être définis
explicitement, ils sont implicitement
ajoutés par la méthode.
Exemple
L'appel de la méthode AddNameValuePairArray ajoute à la STRING le texte
identifié en gras dans l'exemple :
{"Key":1,"<name>":[}
<name> correspond à la valeur spécifiée avec l'entrée i_sName de la méthode.
AddNameValuePairNull (méthode)
Présentation
90
Type :
Méthode
Disponible à partir de :
V1.2.0.3
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Description fonctionnelle
Ajoute une paire nom/valeur au STRING qui est traité avec une valeur égale au
jeton à nom littéral null.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Interface
Entrée
Type de données
Description
i_sName
STRING(GPL.Gc_
uiJsonMaxLengthOfName)
Indique le nom de la paire nom/valeur à
ajouter.
Les guillemets qui entourent <name>
ne doivent pas être définis
explicitement, ils sont implicitement
ajoutés par la méthode.
Exemple
L'appel de la méthode AddNameValuePairNull ajoute à la STRING le texte
identifié en gras dans l'exemple :
{"Key":1,"<name>":null}
<name> correspond à la valeur spécifiée avec l'entrée i_sName de la méthode.
AddNameValuePairObject (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.2.0.3
Description fonctionnelle
Ajoute une paire nom/valeur à l’objet STRING qui est traité avec une valeur égale
au type objet.
Après l’appel de la méthode AddNameValuePairObject, l’objet qui représente la
valeur qui correspond au nom défini est ouvert.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
EIO0000002786.03
Cause possible
Conséquence
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Le nombre maximal de niveaux est atteint pour
l’objet STRING actuel.
L’objet STRING reste inchangé.
91
FileFormatUtility
Blocs fonction JSON
Interface
Entrée
Type de données
Description
i_sName
STRING(GPL.Gc_
uiJsonMaxLengthOfName)
Indique le nom de la paire nom/valeur à
ajouter.
Les guillemets qui entourent <name>
ne doivent pas être définis
explicitement, ils sont implicitement
ajoutés par la méthode.
Exemple
L'appel de la méthode AddNameValuePairObject ajoute à la STRING le texte
identifié en gras dans l'exemple :
{"Key":1,"<name>":{}
<name> correspond à la valeur spécifiée avec l'entrée i_sName de la méthode.
ArrayAdd<data type> (méthode)
Présentation
Cette section fournit une description générique des méthodes suivantes :
•
ArrayAddINT
•
ArrayAddDINT
•
ArrayAddUDINT
•
ArrayAddREAL
•
ArrayAddSTRING
•
ArrayAddBOOL
Type :
Méthode
Disponible à partir de :
V1.2.0.3
A titre d’exemple, la méthode ArrayAddINT est illustrée dans la figure suivante :
Description fonctionnelle
Ajoute une valeur à un ARRAY ouvert dans un STRING qui est traité avec une
valeur égale au type de données qui est indiqué dans le nom de la méthode :
Type de
données
Préfixe
Description
INT
i
INTEGER
DINT
di
DOUBLE INTEGER
UDINT
udi
UNSIGNED DOUBLE INTEGER
REAL
r
Valeur en virgule flottante selon le type de données IEC REAL
STRING
s
STRING
BOOL
x
BOOL
La valeur attribuée est convertie, si nécessaire, en ASCII STRING et ajoutée dans
le format approprié à la STRING en cours de traitement.
92
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
L’objet STRING actuel ne contient pas d’objet
ARRAY ouvert.
L’objet STRING reste inchangé.
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Interface
Entrée
Type de données
Description
i_*Value
*
Indique la valeur à ajouter.
(*) Type de données et préfixe correspondant à la méthode utilisée.
Exemple
L'appel de la méthode ArrayAdd<data type> ajoute à la STRING le texte identifié
en gras dans l'exemple :
{"Array":[1,2,<value>}
<value> correspond à la valeur spécifiée avec l'entrée i_*Value de la méthode.
ArrayAddArray (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.2.0.3
Description fonctionnelle
Ouvre un ARRAY dans un ARRAY ouvert dans le STRING en cours de traitement.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
L’objet STRING actuel ne contient pas d’objet
ARRAY ouvert.
L’objet STRING reste inchangé.
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Le nombre maximal de niveaux est atteint pour
l’objet STRING actuel.
L’objet STRING reste inchangé.
Exemple
L'appel de la méthode ArrayAddArray ajoute à la STRING le crochet de gauche
identifié en gras dans l'exemple :
{"Array":[[}
EIO0000002786.03
93
FileFormatUtility
Blocs fonction JSON
ArrayAddNull (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.2.0.3
Description fonctionnelle
Ajoute le jeton avec nom littéral null à un ARRAY ouvert dans la STRING en
cours de traitement.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
L’objet STRING actuel ne contient pas d’objet
ARRAY ouvert.
L’objet STRING reste inchangé.
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Exemple
L'appel de la méthode ArrayAddNull ajoute à la STRING le texte identifié en gras
dans l'exemple :
{"Array":[1,2,null}
ArrayAddValue (méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
1.2.3.0
Description fonctionnelle
Ajoute une valeur à un ARRAY ouvert dans la donnée STRING en cours de
traitement.
Le format de la valeur ajoutée à STRING dépend du type de données de la
variable attribuée à l'entrée i_anyValue. La valeur attribuée est convertie, si
nécessaire, en ASCII STRING et ajoutée au format approprié au STRING en
cours de traitement.
94
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Contrairement aux méthodes ArrayAdd<data type> qui ne prennent en charge
qu'un seul type de données pour la valeur, cette méthode en accepte plusieurs
pour l'entrée i_anyValue.
Les variables de type BOOL, STRING, INT, UINT, DINT, UDINT, BYTE, WORD,
DWORD, LWORD, REAL, LREAL, SINT, USINT, LINT, ULINT, TIME, LTIME,
DATE_AND_TIME, DATE et TOD sont prises en charge pour l'entrée i_anyValue.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
L’objet STRING actuel ne contient pas d’objet
ARRAY ouvert.
L’objet STRING reste inchangé.
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Le type de données (ARRAY ou WSTRING, par
exemple) de la variable attribuée à i_anyValue
n'est pas pris en charge.
L’objet STRING reste inchangé.
Interface
Entrée
Type de données
Description
i_anyValue
ANY*
Indique la valeur à ajouter.
(*) Les types de données pris en charge sont les suivants : BOOL, STRING, INT, UINT, DINT,
UDINT, BYTE, WORD, DWORD, LWORD, REAL, LREAL, SINT, USINT, LINT, ULINT, TIME,
LTIME, DATE_AND_TIME, DATE et TOD.
Exemple
L'appel de la méthode ArrayAddValue ajoute à la STRING le texte identifié en
gras dans l'exemple :
{"Array":[1,2,<value>}
<value> correspond à la valeur spécifiée avec l'entrée i_anyValue de la
méthode.
ArrayClose (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.2.0.3
Description fonctionnelle
Insère un crochet fermant avant la dernière accolade fermante de l’objet STRING
en cours de traitement. Selon la définition de la syntaxe JSON, le crochet fermant
indique la fin d’un objet ARRAY. Après l’appel de la méthode ArrayClose, l’objet
ARRAY est fermé et aucune autre valeur ne peut être ajoutée à l’objet ARRAY
correspondant.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
EIO0000002786.03
95
FileFormatUtility
Blocs fonction JSON
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
L’objet STRING actuel ne contient pas d’objet
ARRAY ouvert.
L’objet STRING reste inchangé.
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Exemple
L'appel de la méthode ArrayClose ajoute à la STRING le crochet de droite identifié
en gras dans l'exemple :
{"Array":[1,2,3]}
Copy (Méthode)
Présentation
Type :
Méthode
Disponible à partir de la version :
V1.2.0.3
Description fonctionnelle
Copie l’objet STRING au format JSON dans la mémoire tampon définie dans
l’application.
La valeur de retour est du type UDINT et indique le nombre d’octets qui ont été
copiés dans la mémoire tampon défini.
Évaluez la propriété Result, si la valeur de retour est 0. Si la taille de la mémoire
tampon définie est inférieure à la longueur de l’objet STRING au format JSON,
aucune donnée n’est copiée.
Interface
Entrée
Type de données
Description
i_anyBuffer
ANY
Mémoire tampon fournie par
l'application dans laquelle les données
doivent être copiées. Les types de
données ARRAY et STRING de taille
appropriée sont pris en charge.
New (Méthode)
Présentation
96
Type :
Méthode
Disponible à partir de la version :
V1.2.0.3
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Description fonctionnelle
Crée un nouvel objet STRING qui contient une seule paire d’accolades {}.
Lorsque vous appelez la méthode New, un objet STRING existant est remplacé.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
Exemple
L’appel de la méthode New crée l’objet suivant STRING :
{}
ObjectClose (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.2.0.3
Description fonctionnelle
Insère une accolade fermante avant la dernière accolade fermante de l’objet
STRING en cours de traitement. Selon la définition de la syntaxe JSON,
l’accolade fermante indique la fin d’un objet. Après l’appel de la méthode
ObjectClose, l’objet correspondant est fermé et aucune autre paire nom/valeur ne
peut être ajoutée.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
L’objet STRING actuel ne contient pas d’objet
ouvert.
L’objet STRING reste inchangé.
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Exemple
L'appel de la méthode ObjectClose ajoute à la STRING l'accolade de droite
indiquée en gras dans l'exemple :
{"Key":1,"Object":{"ID":1, "Version":"5.0"}}
ObjectOpen (méthode)
Présentation
EIO0000002786.03
Type :
Méthode
Disponible à partir de :
V1.2.0.3
97
FileFormatUtility
Blocs fonction JSON
Description fonctionnelle
Insère une accolade ouvrante à un objet ARRAY ouvert avant la dernière
accolade fermante de l’objet STRING en cours de traitement. Selon la définition
de la syntaxe JSON, l’accolade ouvrante indique le début d’un objet.
La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la
propriété Result, si la valeur de retour est FALSE.
L’échec de l’exécution de la méthode peut avoir plusieurs causes :
Cause possible
Conséquence
La longueur maximale de l’objet STRING actuel
est atteinte.
L’objet STRING reste inchangé.
Le nombre maximal de niveaux est atteint pour
l’objet STRING actuel.
L’objet STRING reste inchangé.
Exemple
L'appel de la méthode ObjectOpen ajoute à la STRING l'accolade de gauche
indiquée en gras dans l'exemple :
{"Array":[{}
Propriétés de FB_CreateJsonFormattedString
Présentation
Nom
Type de données
Accès
Description
IsArrayOpen
BOOLEAN
Lecture
Si la valeur est TRUE, l’objet STRING au format
JSON en cours de traitement contient un objet
ARRAY ouvert.
IsJsonStringValid
BOOLEAN
Lecture
Indique si l’objet STRING au format JSON en cours
de traitement est valide.
Indique TRUE si l’objet STRING remplit les
conditions suivantes :
•
L’objet STRING n’est pas vide.
•
L’objet STRING ne contient pas d’objet ouvert.
•
L’objet STRING ne contient pas d’objet ARRAY
ouvert.
IsObjectOpen
BOOLEAN
Lecture
Si la valeur est TRUE, l’objet STRING au format
JSON en cours de traitement contient un objet
ouvert.
LengthOfJsonString
UDINT
Lecture
Fournit la longueur (nombre de caractères) de l’objet
STRING au format JSON en cours de traitement.
PointerToJsonString
POINTER TO BYTE
Lecture
Fournit un pointeur sur l’objet STRING au format
JSON en cours de traitement.
Result
ET_Result
Lecture
Indique le résultat de la méthode récemment
appelée.
FB_CreateJsonFormattedString Exemple
Présentation
L’exemple suivant indique comment créer du texte de type STRING au format
JSON en utilisant le bloc fonction FB_CreateJsonFormattedString. Une fois le
98
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
texte STRING créé, il est stocké dans un nouveau fichier dans le système de
fichiers du contrôleur au moyen du bloc fonction FB_WriteFile.
Exemple de programme
//JSON Example - Declaration Part
PROGRAM SR_Main
VAR
xStart : BOOL;
xReset : BOOL;
etResult : FFU.ET_Result;
xJsonStringInvalid : BOOL;
xProcessCompleted : BOOL;
sResultMsg : STRING(80):= 'Ready for start';
xErrorWriteFile : BOOL;
dtTimestamp : DATE_AND_TIME;
udiMessageId : UDINT := 12587;
rTotalEnergy : REAL:= 35.6;
rMaxVoltage : REAL:= 402.56;
rLowVoltage : REAL:= 399.03;
rMaxCurrent : REAL:= 18.459;
rTemperatureSensor1 : REAL:= 21.65;
rTemperatureSensor2 : REAL:= 32.47;
rTemperatureSensor3 : REAL:= 36.52;
rTemperatureSensor4 : REAL:= 47.35;
iState : INT;
xErr : BOOL;
xStartOld : BOOL;
udiResult : UDINT;
sJsonString : STRING(FFU.GPL.Gc_udiJsonMaxLengthOfString);
fbJson : FFU.FB_CreateJsonFormattedString;
fbWriteFile : FFU.FB_WriteFile;
END_VAR
//JSON Example - Implementation Part
CASE iState OF
0 : //Idle
IF xStart AND NOT xStartOld THEN
iState := 10 ;
xProcessCompleted := FALSE ;
END_IF
xStartOld := xStart ;
xStart := FALSE ;
10 : //Prepare data
dtTimestamp := DWORD_TO_DT ( SysTimeRtc.SysTimeRtcGet ( udiResult ) ) ; // get
the RTC of the controller
iState := 20 ;
20 : //Create String
xErr := FALSE ;
xErr S= NOT fbJson.New ( ) ;
xErr S= NOT fbJson.AddNameValuePairObject ( 'Header' ) ;
xErr S= NOT fbJson.AddNameValuePairString ( 'MachineId' , 'SEMSOL-M251MESEF40A0B07' ) ;
xErr S= NOT fbJson.AddNameValuePairString ( 'MachineType' , 'SMR-550' ) ;
xErr S= NOT fbJson.AddNameValuePair ( 'Timestamp' , dtTimestamp ) ;
xErr S= NOT fbJson.AddNameValuePair ( 'MessageId' , udiMessageId ) ;
xErr S= NOT fbJson.ObjectClose ( ) ; // close object header’
xErr S= NOT fbJson.AddNameValuePairObject ( 'Values' ) ;
xErr S= NOT fbJson.AddNameValuePairObject ( 'Configuration' ) ;
xErr S= NOT fbJson.AddNameValuePairArray ( 'Devices' ) ;
xErr S= NOT fbJson.ObjectOpen ( ) ;
xErr S= NOT fbJson.AddNameValuePairString ( 'ID' , '1' ) ;
xErr S= NOT fbJson.AddNameValuePairString ( 'Category' , 'Controller' ) ;
xErr S= NOT fbJson.AddNameValuePairString ( 'Type' , 'TM251MESE' ) ;
xErr S= NOT fbJson.ObjectClose ( ) ;
xErr S= NOT fbJson.ObjectOpen ( ) ;
EIO0000002786.03
99
FileFormatUtility
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
xErr
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
S=
Blocs fonction JSON
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
NOT
fbJson.AddNameValuePairString ( 'ID' , '2' ) ;
fbJson.AddNameValuePairString ( 'Category' , 'ServoDrive' ) ;
fbJson.AddNameValuePairString ( 'Type' , 'Lexium32M' ) ;
fbJson.ObjectClose ( ) ;
fbJson.ArrayClose ( ) ; // close array Devices
fbJson.ObjectClose ( ) ; // close object Configuration
fbJson.AddNameValuePairObject ( 'Status' ) ;
fbJson.AddNameValuePairString ( 'Machinestate' , 'Running' ) ;
fbJson.AddNameValuePairString ( 'Errorstate' , 'NoError' ) ;
fbJson.AddNameValuePairString ( 'Warning' , 'Filllevel low' ) ;
fbJson.ObjectClose ( ) ;
fbJson.AddNameValuePairArray ( 'Processdata' ) ;
fbJson.ObjectOpen ( ) ;
fbJson.AddNameValuePairArray ( 'Energy' ) ;
fbJson.ArrayAddValue ( rTotalEnergy ) ;
fbJson.ArrayAddValue ( rMaxVoltage ) ;
fbJson.ArrayAddValue ( rLowVoltage ) ;
fbJson.ArrayAddValue ( rMaxCurrent ) ;
fbJson.ArrayClose ( ) ;
fbJson.ObjectClose ( ) ;
fbJson.ObjectOpen ( ) ;
fbJson.AddNameValuePairArray ( 'Temperature' ) ;
fbJson.ArrayAddValue ( rTemperatureSensor1 ) ;
fbJson.ArrayAddValue ( rTemperatureSensor2 ) ;
fbJson.ArrayAddValue ( rTemperatureSensor3 ) ;
fbJson.ArrayAddValue ( rTemperatureSensor4 ) ;
fbJson.ArrayClose ( ) ;
fbJson.ObjectClose ( ) ;
fbJson.ArrayClose ( ) ; // close array Processdata
fbJson.ObjectClose ( ) ; // close object Values
// copy the string, not mandatory for the present processing but for
presentation of the feature
fbJson.Copy ( i_anyBuffer := sJsonString ) ;
IF xErr OR NOT fbJson.IsJsonStringValid THEN
iState := 100 ;
xJsonStringInvalid := NOT fbJson.IsJsonStringValid ;
ELSE
iState := 30 ;
END_IF
30 : //Start write file
fbWriteFile (
i_xExecute := TRUE ,
i_sFilePath := 'MachineData.json' ,
i_etModeFileOpen := FFU.ET_ModeFileOpen.CreatePlus ,
i_timTimeout := ,
i_pbyBuffer := fbJson.PointerToJsonString ,
i_udiSize := fbJson.LengthOfJsonString ,
q_xDone => ,
q_xBusy => ,
q_xError => ,
q_etResult => ,
q_sResultMsg => ,
q_udiFileSize => ) ;
iState := 40 ;
40 : // Wait for write file complete
IF fbWriteFile.q_xDone THEN
iState := 0 ;
xProcessCompleted := TRUE ;
ELSIF fbWriteFile.q_xError THEN
iState := 100 ;
xErrorWriteFile := TRUE ;
etResult := fbWriteFile.q_etResult ;
sResultMsg := fbWriteFile.q_sResultMsg ;
100
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
END_IF
fbWriteFile ( i_xExecute := ( iState = 40 ) ) ;
100 : //Error detected
IF xReset THEN
iState := 0 ;
etResult := FFU.ET_Result.Idle ;
sResultMsg := 'Ready for start' ;
xJsonStringInvalid := FALSE ;
xErrorWriteFile := FALSE ;
xReset := FALSE ;
END_IF
END_CASE
Fichier JSON obtenu
NOTE: Le texte d’origine STRING ne contient aucun espace vide ni saut de
ligne. La structure JSON représentée dans la figure ci-dessus a été
automatiquement créée lors de l’ouverture du fichier dans un éditeur de texte
approprié prenant en charge le format JSON.
EIO0000002786.03
101
FileFormatUtility
Blocs fonction JSON
FB_JsonUtilities
FB_JsonUtilities Description fonctionnelle
Présentation
Type :
Bloc fonction
Disponible à partir de la version :
V1.4.15.0
Hérite de :
-
Implémente :
-
Description fonctionnelle
Le bloc fonction FB_JsonUtilities est utilisé pour traiter les données qui sont
fournies dans le JSON (voir le format https://www.json.org).
Le bloc fonction fournit plusieurs méthodes et propriétés pour le traitement des
données. Les données à traiter peuvent être fournies sous forme de flux de texte
dans une variable de type STRING ou ARRAY OF BYTE ou sous forme de fichier.
En utilisant les méthodes et propriétés fournies par le bloc fonction, vous pouvez
analyser les données et extraire, ajouter ou supprimer un élément. De plus, ce
bloc permet d'écrire les données sous forme de texte JSON dans une variable ou
dans un fichier.
Codage
Seules les données à codage ASCII sont prises en charge.
Les caractères d'échappement suivants peuvent faire partie des données JSON
et sont converties par l'analyseur :
Caractère
Description
\b
Retour arrière
\n
Nouvelle ligne
\r
Retour chariot
\t
Tabulation
\"
Guillemets
\\
Barre oblique inverse
\f
Saut de page
\/
Barre oblique
ArrayAddArray (Méthode)
Présentation
102
Type :
Méthode
Disponible à partir de :
V1.5.4.0
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Description fonctionnelle
Cette méthode est utilisée pour ajouter un nouveau tableau au niveau de la soushiérarchie en tant qu'élément sélectionné. Le tableau est ajouté comme premier
élément du tableau.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément sélectionné doit
être de type TypeArray.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedArray" : ["ExistingValue"]
}
{
"SelectedArray”: [[], "ExistingValue"]
}
ArrayAddObject (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour ajouter un nouvel objet au niveau de la soushiérarchie en tant qu'élément sélectionné. L'objet est ajouté comme premier
élément du tableau.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément sélectionné doit
être de type TypeArray.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedArray" : ["ExistingValue"]
}
{
"SelectedArray" : [{}, "ExistingValue"]
}
EIO0000002786.03
103
FileFormatUtility
Blocs fonction JSON
ArrayAddValue (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour ajouter une nouvelle valeur au niveau de la soushiérarchie en tant qu'élément sélectionné. La valeur est ajoutée comme premier
élément du tableau.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Interface
Entrée
Type de données
Description
i_anyValue
ANY*
Indique la valeur à ajouter.
(*) Les types de données pris en charge sont les suivants : BOOL, STRING, INT, UINT, DINT,
UDINT, BYTE, WORD, DWORD, LWORD, REAL, LREAL, SINT, USINT, LINT, ULINT, TIME,
LTIME, DATE_AND_TIME, DATE et TOD.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément sélectionné doit
être de type TypeArray.
NOTE: En exécutant cette méthode, le bloc fonction détecte le type d'entrée et
le convertit en ET_JsonValueType approprié (voir la section
ET_ JsonValueType, page 23).
NOTE: Si nécessaire, des caractères spéciaux sont ajoutés implicitement par
la méthode. Cela peut augmenter la longueur de la chaîne.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedArray" : ["ExistingValue"]
}
{
"SelectedArray" : ["NewValue", "ExistingValue"]
}
ArrayAddValueNULL (méthode)
Présentation
104
Type :
Méthode
Disponible à partir de :
V1.5.4.0
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Description fonctionnelle
Cette méthode est utilisée pour ajouter une valeur NULL au niveau de la soushiérarchie en tant qu'élément sélectionné. La valeur NULL est ajoutée comme
premier élément du tableau.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément sélectionné doit
être de type TypeArray.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedArray" : ["ExistingValue"]
}
{
"SelectedArray" : [NULL, "ExistingValue"]
}
ArrayInsertArray (Méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour insérer un nouveau tableau au niveau de la
hiérarchie en tant qu'élément sélectionné. Le tableau est inséré en tant
qu'élément suivant l'élément sélectionné.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément parent de
l'élément sélectionné doit être de type TypeArray.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
[
"SelectedValue",
"ExistingValue"
]
[
"SelectedValue",
[],
"ExistingValue"
]
EIO0000002786.03
105
FileFormatUtility
Blocs fonction JSON
ArrayInsertObject (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour insérer un nouvel élément au niveau de la
hiérarchie en tant qu'élément sélectionné. L'objet est inséré en tant qu'élément
suivant l'élément sélectionné.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément parent de
l'élément sélectionné doit être de type TypeArray.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
[
"SelectedValue",
"ExistingValue"
]
[
"SelectedValue",
{},
"ExistingValue"
]
ArrayInsertValue (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour insérer une nouvelle valeur dans le niveau de
hiérarchie en tant qu'élément sélectionné. La valeur est insérée en tant
qu'élément suivant l'élément sélectionné.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
106
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Interface
Entrée
Type de données
Description
i_anyValue
ANY*
Spécifie la valeur à insérer.
(*) Les types de données pris en charge sont les suivants : BOOL, STRING, INT, UINT, DINT,
UDINT, BYTE, WORD, DWORD, LWORD, REAL, LREAL, SINT, USINT, LINT, ULINT, TIME,
LTIME, DATE_AND_TIME, DATE et TOD.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
NOTE: L'insertion d'une nouvelle valeur place l'élément à la position suivante
dans le tableau. L'élément parent de l'élément sélectionné doit être de type
TypeArray.
NOTE: Si nécessaire, des caractères spéciaux sont ajoutés implicitement par
la méthode. Cela peut augmenter la longueur de la chaîne.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
[
"SelectedValue",
"ExistingValue"
]
[
"SelectedValue",
"NewValue",
"ExistingValue"
]
ArrayInsertValueNULL (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour insérer une valeur NULL dans le niveau de
hiérarchie en tant qu'élément sélectionné. La valeur NULL est insérée comme
élément suivant à partir de l'élément sélectionné.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
NOTE: L'insertion d'une nouvelle valeur place l'élément à la position suivante
dans le tableau. L'élément parent de l'élément sélectionné doit être de type
TypeArray.
NOTE: Si nécessaire, des caractères spéciaux sont ajoutés implicitement par
la méthode. Cela peut augmenter la longueur de la chaîne.
EIO0000002786.03
107
FileFormatUtility
Blocs fonction JSON
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
[
"SelectedValue",
"ExistingValue"
]
[
"SelectedValue",
NULL,
"ExistingValue"
]
ModifyNameOfSelected (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour modifier le nom de l'élément sélectionné.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Si une erreur a été détectée, utilisez les propriétés Result et ResultMsg pour
obtenir le résultat de la méthode.
Interface
Entrée
Type de données
Description
i_sName
STRING(GPL.Gc_
uiJsonMaxLengthOfName)
Spécifie le nom.
Les guillemets qui entourent <name>
ne doivent pas être définis
explicitement, ils sont implicitement
ajoutés par la méthode.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément parent de
l'élément sélectionné doit être de type TypeObject.
NOTE: Si nécessaire, des caractères spéciaux sont ajoutés implicitement par
la méthode. Cela peut augmenter la longueur de la chaîne.
ModifyValueTypeOfSelected (méthode)
Présentation
108
Type :
Méthode
Disponible à partir de :
V1.5.4.0
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Description fonctionnelle
Cette méthode est utilisée pour modifier la valeur de l'élément sélectionné.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Si une erreur a été détectée, utilisez les propriétés Result et ResultMsg pour
obtenir le résultat de la méthode.
Interface
Entrée
Type de données
Description
i_anyValue
ANY*
Spécifie la valeur.
(*) Les types de données pris en charge sont les suivants : BOOL, STRING, INT, UINT, DINT,
UDINT, BYTE, WORD, DWORD, LWORD, REAL, LREAL, SINT, USINT, LINT, ULINT, TIME,
LTIME, DATE_AND_TIME, DATE et TOD.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
NOTE: Pour réussir l'exécution de cette méthode, un élément de type
TypeString / TypeNumber / TypeBoolean / TypeNull doit être sélectionné (voir
la section ET_JsonValueType, page 23).
ModifyValueTypeOfSelectedToNull (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode permet de définir la valeur de l'élément sélectionné à TypeNull.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Si la valeur de retour est FALSE, consultez les propriétés Result et ResultMsg
pour plus d'informations.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
NOTE: Pour réussir l'exécution de cette méthode, un élément de type
TypeString / TypeNumber / TypeBoolean / TypeNull doit être sélectionné (voir
la section ET_JsonValueType, page 23).
NOTE: Si nécessaire, des caractères spéciaux sont ajoutés implicitement par
la méthode. Cela peut augmenter la longueur de la chaîne.
EIO0000002786.03
109
FileFormatUtility
Blocs fonction JSON
ObjectAddArray (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour ajouter un nouveau tableau au niveau de la soushiérarchie en tant qu'élément sélectionné. Le tableau est ajouté comme premier
élément du tableau d'éléments.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Interface
Entrée
Type de données
Description
i_sName
STRING
Représente le nom du tableau ajouté.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément sélectionné doit
être de type TypeObject.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedObject" : {"ExistingName" :
"ExistingValue"}
}
{
"SelectedObject" : {"NewArray" :
[],"ExistingName" : "ExistingValue"}
}
ObjectAddObject (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour ajouter un nouvel élément au niveau de la soushiérarchie en tant qu'élément sélectionné. L'objet est ajouté en tant que premier
élément du tableau d'éléments.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
110
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Interface
Entrée
Type de données
Description
i_sName
STRING
Représente le nom du tableau ajouté.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément sélectionné doit
être de type TypeObject.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedObject" : {"ExistingName" :
"ExistingValue"}
}
{
"SelectedObject" : {"NewObject" : {},
"ExistingName" : "ExistingValue"}
}
ObjectAddValue (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour ajouter une nouvelle paire nom/valeur au niveau
de la sous-hiérarchie en tant qu'élément sélectionné. La valeur est ajoutée
comme premier élément du tableau d'éléments.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Interface
Entrée
Type de données
Description
i_sName
STRING
Représente le nom de la paire nom/
valeur JSON ajoutée.
i_anyValue
ANY*
Indique la valeur à ajouter.
(*) Les types de données pris en charge sont les suivants : BOOL, STRING, INT, UINT, DINT,
UDINT, BYTE, WORD, DWORD, LWORD, REAL, LREAL, SINT, USINT, LINT, ULINT, TIME,
LTIME, DATE_AND_TIME, DATE et TOD.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément sélectionné doit
être de type TypeObject. Reportez-vous à la section ET_JsonValueTyp, page
23.
NOTE: Si nécessaire, des caractères spéciaux sont ajoutés implicitement par
la méthode. Cela peut augmenter la longueur de la chaîne.
EIO0000002786.03
111
FileFormatUtility
Blocs fonction JSON
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedObject" : {"ExistingName" :
"ExistingValue"}
}
{
"SelectedObject" : {"NewName" :
"NewValue","ExistingName" : "ExistingValue"}
}
ObjectAddValueNULL (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour ajouter une valeur NULL au niveau de soushiérarchie en tant qu'élément sélectionné. La valeur NULL est ajoutée en tant que
premier élément du tableau d'éléments.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Interface
Entrée
Type de données
Description
i_sName
STRING
Représente le nom de la paire nomvaleur Json ajoutée.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément sélectionné doit
être de type TypeObject.
Exemple
L'appel de la méthode ajoute l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedObject" : {"ExistingName" :
"ExistingValue"}
}
{
"SelectedObject" : {"NewName" :
NULL,"ExistingName" : "ExistingValue"}
}
ObjectInsertArray (Méthode)
Présentation
112
Type :
Méthode
Disponible à partir de :
V1.5.4.0
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Description fonctionnelle
Cette méthode est utilisée pour insérer un nouveau tableau dans le niveau de
sous-hiérarchie en tant qu'élément sélectionné. Le tableau est inséré en tant
qu'élément suivant l'élément sélectionné.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Interface
Entrée
Type de données
Description
i_sName
STRING
Représente le nom du tableau inséré.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément parent de
l'élément sélectionné doit être de type TypeObject. Reportez-vous à la section
ET_JsonValueType, page 23.
Exemple
L'appel de la méthode insère l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedObject" : {},
"ExistingValue" : TRUE
}
{
"SelectedObject" : {},
"NewArray" : [],
"ExistingValue" : TRUE
}
ObjectInsertObject (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour insérer un nouvel objet au niveau de la hiérarchie
en tant qu'élément sélectionné. L'objet est inséré en tant qu'élément suivant
l'élément sélectionné.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Interface
EIO0000002786.03
Entrée
Type de données
Description
i_sName
STRING
Représente le nom de l'objet inséré.
113
FileFormatUtility
Blocs fonction JSON
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément parent de
l'élément sélectionné doit être de type TypeObject. Reportez-vous à la section
ET_JsonValueType, page 23.
Exemple
L'appel de la méthode insère l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedObject" : {},
"ExistingValue" : TRUE
}
{
"SelectedObject" : {},
"NewObject" : {},
"ExistingValue" : TRUE
}
ObjectInsertValue (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour insérer une nouvelle valeur dans le niveau de
hiérarchie en tant qu'élément sélectionné. La valeur est insérée en tant
qu'élément suivant l'élément sélectionné.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Interface
Entrée
Type de données
Description
i_sName
STRING
Représente le nom de la paire nomvaleur Json insérée. Reportez-vous à la
section ET_JsonValueType, page 23.
i_anyValue
ANY*
Indique la valeur à ajouter.
(*) Les types de données pris en charge sont les suivants : BOOL, STRING, INT, UINT, DINT,
UDINT, BYTE, WORD, DWORD, LWORD, REAL, LREAL, SINT, USINT, LINT, ULINT, TIME,
LTIME, DATE_AND_TIME, DATE et TOD.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément parent de
l'élément sélectionné doit être de type TypeObject. Reportez-vous à la section
ET_JsonValueType, page 23
NOTE: Si nécessaire, des caractères spéciaux sont ajoutés implicitement par
la méthode. Cela peut augmenter la longueur de la chaîne.
114
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Exemple
L'appel de la méthode insère l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedObject" : {},
"ExistingValue" : TRUE
}
{
"SelectedObject" : {},
"NewName" : "NewValue",
"ExistingValue" : TRUE
}
ObjectInsertValueNULL (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour insérer une valeur NULL dans le niveau de
hiérarchie en tant qu'élément sélectionné. La valeur NULL est insérée comme
élément suivant.
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Interface
Entrée
Type de données
Description
i_sName
STRING
Représente le nom de la paire nom/
valeur JSON ajoutée.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes. L'élément parent de
l'élément sélectionné doit être de type TypeObject. Reportez-vous à la section
ET_JsonValueTyp, page 23.
Exemple
L'appel de la méthode insère l'élément en gras dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedObject" : {},
"ExistingValue" : TRUE
}
{
"SelectedObject" : {},
"NewName" : NULL,
"ExistingValue" : TRUE
}
Parse (méthode)
Présentation
EIO0000002786.03
Type :
Méthode
Disponible à partir de :
V1.4.15.0
115
FileFormatUtility
Blocs fonction JSON
Description fonctionnelle
Cette méthode est utilisée pour l'analyse synchrone de données au format JSON.
Selon la taille des données, l'analyse peut prendre un certain nombre de
millisecondes. Tenez compte de ce point lorsque vous configurez votre tâche. Une
solution alternative consiste à utiliser la méthode ParseAsync() pour diviser
l'analyse en blocs uniques par appel en vue de réduire la limite de temps
d'exécution d'un seul appel de méthode.
Une fois que l'analyse des données a réussi, l'élément racine est sélectionné.
La valeur de retour de type BOOL indique TRUE si l'analyse des données a
réussi. Utilisez les propriétés Result ou ResultMsg pour obtenir le résultat de la
méthode.
Interface
Entrée
Type de données
Description
i_anyDataToParse
ANY
Affectez une variable contenant les
données au format JSON.
Les variables de type STRING ou
ARRAY OF BYTE sont prises en
charge.
i_sJPath
STRING [255]
Autorise l'analyse partielle de données
JSON : Seuls les éléments du niveau
de sous-hiérarchie tel que l'élément
sélectionné par l'expression JPath sont
analysés.
Pour analyser la totalité des données,
attribuez une chaîne nulle.
Reportez-vous également à la liste des
expressionsJPath, page 122 prises en
charge.
NOTE: Pour des raisons de performances, la validité des paramètres d'entrée
des blocs fonction est vérifiée uniquement lors du premier cycle suivant le
déclenchement de la méthode. Ne modifiez pas ces valeurs tant que l'analyse
est en cours. L'exécution de cette méthode réinitialise les erreurs détectées
qui ont été signalées précédemment par les propriétés correspondantes ainsi
que les informations liées à la précédente opération d'analyse. Le bloc
fonction effectue une vérification de syntaxe élémentaire des données à
analyser. Assurez-vous que la forme des données respecte la spécification
JSON.
Exemple
L'exemple suivant montre comment mettre en oeuvre un processus d'analyse
synchrone et récupérer une valeur de la chaîne JSON analysée :
PROGRAM SR_Main_Sync
VAR
xGetValueOutOfJsonString : BOOL;
sCity : STRING;
sJsonString : STRING[500] := '{"Library": "FileFormatUtility","Namespace":
"FFU","Forward Compatible": true,"Supported Formats": ["JSON", "XML",
"CSV"],"Company": "Schneider Electric","Address":{"Street":
"Schneiderplatz","House Number": 1,"Postal Code": "97828","City":
"Marktheidenfeld","Country": "Germany"}}';
fbJsonUtilities : FFU.FB_JsonUtilities;
116
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
etResult : FFU.ET_Result;
sResultMsg : STRING;
END_VAR
IF xGetValueOutOfJsonString THEN
xGetValueOutOfJsonString := FALSE;
//Parse JSON formatted string
IF NOT (fbJsonUtilities.Parse(i_anyDataToParse := sJsonString, i_sJPath :=
'')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMs
RETURN;
END_IF
//Select element containing requested value
IF NOT(fbJsonUtilities.Select(i_sJPath := '.Address.City')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Get value of item
sCity := fbJsonUtilities.ValueOfSelected;
IF fbJsonUtilities.Error THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
END_IF
ParseAsync (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.4.15.0
Description fonctionnelle
Cette méthode est utilisée pour analyser de manière asynchrone des données au
format JSON. L'analyse des données s'effectue en plusieurs cycles. La taille de
bloc traitée par cycle est spécifiée par le paramètre global GPL.Gc_
udiJsonMaxNumOfBytesPerCycle.
L'analyse est terminée si l'une des sorties q_xDone ou q_xError indique TRUE.
Vous devez appeler la méthode de manière cyclique pendant que la sortie q_
xBusy est à TRUE.
En fonction de la taille des données et de la taille de bloc spécifiée, l'analyse peut
prendre plusieurs cycles de programme. Tant que l'analyse est en cours
d'exécution, aucune autre méthode ou propriété de l'instance du bloc fonction
n'est traitée.
Si une erreur a été détectée, utilisez les propriétés Result et ResultMsg pour
obtenir le résultat de la méthode.
EIO0000002786.03
117
FileFormatUtility
Blocs fonction JSON
Interface
Entrée
Type de données
Description
i_anyDataToParse
ANY
Affectez une variable contenant les
données au format JSON.
Les variables de type STRING ou
ARRAY OF BYTE sont prises en
charge.
i_sJPath
STRING [255]
Autorise l'analyse partielle de données
JSON : Seuls les éléments du niveau
de sous-hiérarchie tel que l'élément
sélectionné par l'expression JPath sont
analysés.
Pour analyser la totalité des données,
attribuez une chaîne nulle.
Reportez-vous également à la liste des
expressionsJPath, page 122 prises en
charge.
Sortie
Type de données
Description
q_xBusy
BOOL
Si cette sortie est TRUE, la méthode
est en cours d'exécution.
q_xDone
BOOL
Si cette sortie est TRUE, l'exécution
s'est effectuée correctement.
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.
NOTE: Pour des raisons de performances, la validité des paramètres d'entrée
des blocs fonction est vérifiée uniquement lors du premier cycle suivant le
déclenchement de la méthode. Ne modifiez pas ces valeurs tant que l'analyse
est en cours. L'exécution de cette méthode réinitialise les erreurs détectées
qui ont été signalées précédemment par les propriétés correspondantes ainsi
que les informations liées à la précédente opération d'analyse. Le bloc
fonction effectue une vérification de syntaxe élémentaire des données à
analyser. Assurez-vous que la forme des données respecte la spécification
JSON.
Exemple
L'exemple suivant montre comment implémenter une analyse asynchrone et
extraire une valeur particulière de la chaîne au format JSON analysée :
PROGRAM SR_Main_Async
VAR
xGetValueOutOfJsonString : BOOL;
sCity : STRING;
sJsonString : STRING[500] := '{"Library": "FileFormatUtility","Namespace":
"FFU","Forward Compatible": true,"Supported Formats": ["JSON", "XML",
"CSV"],"Company": "Schneider Electric","Address":{"Street":
"Schneiderplatz","House Number": 1,"Postal Code": "97828","City":
"Marktheidenfeld","Country": "Germany"}}';
fbJsonUtilities : FFU.FB_JsonUtilities;
xBusy : BOOL;
xDone : BOOL;
xError : BOOL;
etResult : FFU.ET_Result;
sResultMsg : STRING;
END_VAR
IF xGetValueOutOfJsonString THEN
//Parse JSON formatted string
118
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
fbJsonUtilities.ParseAsync(i_anyDataToParse := sJsonString, i_sJPath :=
'', q_xBusy => xBusy, q_xDone => xDone, q_xError => xError);
IF xDone THEN
xGetValueOutOfJsonString := FALSE;
//Select element containing requested value
IF NOT(fbJsonUtilities.Select(i_sJPath := '.Address.City')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Get value of item
sCity := fbJsonUtilities.ValueOfSelected;
IF fbJsonUtilities.Error THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
ELSIF xError THEN
xGetValueOutOfJsonString := FALSE;
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
END_IF
ParseFromFileAsync (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour l'analyse asynchrone d'un fichier au format JSON
situé sur le système de fichiers du contrôleur. L'analyse peut prendre plusieurs
cycles de programme. Tant que l'analyse est en cours d'exécution, aucune autre
méthode ou propriété de l'instance du bloc fonction n'est traitée. Le nombre
d'octets traités en un cycle est déterminé par le paramètre global GPL.Gc_
udiJsonMaxNumOfBytesPerCycle. Une fois la méthode exécutée, l'élément
racine est sélectionné.
Si une erreur a été détectée, utilisez les propriétés Result et ResultMsg pour
obtenir le résultat de la méthode.
L'analyse est terminée si l'une des sorties q_xDone ou q_xError indique TRUE.
Vous devez appeler la méthode de manière cyclique pendant que la sortie
q_ xBusy est à TRUE.
EIO0000002786.03
119
FileFormatUtility
Blocs fonction JSON
Interface
Entrée
Type de données
Description
i_sFilePath
STRING [255]
Chemin d'accès au fichier JSON qui
doit être lu.
Lorsque le nom de fichier est indiqué
sans extension, le bloc fonction ajoute
l'extension .json.
i_anyBuffer
ANY
Adresse de la variable contenant les
données au format JSON allouées
dans l'application.
Les variables de type STRING ou
ARRAY OF BYTE sont prises en
charge.
i_sJPath
STRING [GPL.Gc_
uiJsonMaxLengthOfJPath]
Autorise l'analyse partielle de données
JSON : Seuls les éléments du niveau
de sous-hiérarchie tel que l'élément
sélectionné par l'expression JPath sont
analysés.
Pour analyser la totalité des données,
attribuez une chaîne nulle.
Reportez-vous également à la liste des
expressionsJPath, page 122 prises en
charge.
Sortie
Type de données
Description
q_xBusy
BOOL
Si cette sortie est TRUE, la méthode
est en cours d'exécution.
q_xDone
BOOL
Si cette sortie est TRUE, l'exécution
s'est effectuée correctement.
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.
NOTE: Pour des raisons de performances, la validité des paramètres d'entrée
des blocs fonction est vérifiée uniquement lors du premier cycle suivant le
déclenchement de la méthode. Ne modifiez pas ces valeurs tant que l'analyse
est en cours. L'exécution de cette méthode réinitialise les erreurs détectées
qui ont été signalées précédemment par les propriétés correspondantes ainsi
que les informations liées à la précédente opération d'analyse. Le bloc
fonction effectue une vérification de syntaxe élémentaire des données à
analyser. Assurez-vous que la forme des données respecte la spécification
JSON.
RemoveSelected (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour supprimer un élément sélectionné, y compris ses
éléments enfants.
120
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
La valeur renvoyée de type BOOL indique TRUE si l'exécution a été correctement
traitée.
Cette méthode n'a pas d'entrées.
NOTE: Lorsque l'élément sélectionné a été supprimé, son élément parent est
sélectionné.
Exemple
L'appel de la méthode supprime l'élément comme indiqué dans l'exemple :
Etat initial
Après l'exécution de la méthode
{
"SelectedArray" : ["ExistingValue1",
"ExistingValue2"],
"ExistingValue" : TRUE
}
{
"ExistingValue”: TRUE
}
Select (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.4.15.0
Description fonctionnelle
Cette méthode est utilisée pour sélectionner un élément particulier parmi les
données au format JSON analysées. En fonction de l'élément sélectionné, des
méthodes supplémentaires peuvent être exécutées.
L'élément est spécifié à l'aide d'une expression JPath. Si l'expression JPath
correspond à plusieurs éléments, le premier élément désigné est sélectionné. Si
une chaîne nulle est attribuée à l'entrée i_sJPath, l'élément racine est sélectionné.
Lors de chaque appel, la recherche de l'élément spécifié est lancée à partir du
début des données analysées. L'utilisation d'une même expression JPath résulte
donc toujours dans la sélection du même élément.
La valeur de retour de type BOOL indique TRUE si un élément a été sélectionné
avec succès. Si une erreur a été détectée, utilisez les propriétés Result et
ResultMsg pour obtenir le résultat de la méthode.
Si l'élément demandé n'a pas pu être sélectionné, l'élément sélectionné
précédemment reste sélectionné.
Interface
Entrée
Type de données
Description
i_sJPath
STRING [255]
JPath expression permettant de
spécifier l'élément à sélectionner. Si
une chaîne nulle est attribuée, l'élément
racine est sélectionné.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
EIO0000002786.03
121
FileFormatUtility
Blocs fonction JSON
JPath Expressions
Pour désigner l'élément à sélectionner, utilisez la syntaxe du langage JPath.
Le tableau suivant répertorie les expressions JPath prises en charge :
JPath expression
Description
.<item name>
Sélectionne le premier élément
présentant le nom indiqué au premier
niveau.
<item name>
.[<item name>]
[<item name>]
.<item name>.<item name>
Sélectionne le premier élément
correspondant au chemin absolu indiqué.
.[<item name>].[<item name>]
[<item name>][<item name>]
.<parent name>.<item name>[<n>]
.<parent name>.<item name>.[<n>]
.<parent name>.<item name>.[<n>].<item
name>
.<parent name>.<item name>.[<n>].[<item
name>]
Sélectionne le premier élément de
tableau correspondant au chemin absolu
indiqué. <n> désigne l'index (base zéro)
de l'élément dans le tableau.
Sélectionne l'élément enfant du premier
élément de tableau correspondant au
chemin absolu indiqué. <n> désigne
l'index (base zéro) de l'élément dans le
tableau.
L'exemple suivant montre comment utiliser l'expression JPath pour sélectionner
un élément parmi des données au format JSON :
JPath expression
Données JSON analysées
{
.Library ------------->
"Library": "FileFormatUtility",
"Namespace": "FFU",
"Forward Compatible": true,
"Supported Formats": [
"JSON",
"XML",
"CSV"],
"Company": "Schneider Electric",
"Address": {
"Street": "Schneiderplatz",
"House Number": 1,
"Postal Code": "97828",
"City": "Marktheidenfeld",
"Country": "Germany"
}
.Supported Formats[1]->
.Address ------------->
.Address.Street ------>
}
SelectElementOfArrayByIndex (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.4.15.0
Description fonctionnelle
Cette méthode est utilisée pour sélectionner un élément du tableau sélectionné en
utilisant son index (de base zéro).
122
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
La valeur renvoyée, de type BOOL, indique si l'exécution de la méthode a été
traitée correctement. Si la méthode renvoie FALSE, reportez-vous aux propriétés
Result et ResultMsg pour plus de détails.
Un élément présentant une valeur de type TypeArray doit être sélectionné
préalablement à l'exécution de la méthode. Si l'élément demandé n'a pas pu être
sélectionné, l'élément sélectionné précédemment reste sélectionné.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
Interface
Entrée
Type de données
Description
i_uiIndexOfElement
UINT
Index de l'élément à l'intérieur du
tableau sélectionné (index de base 0).
SelectFirstElementOfArray (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.4.15.0
Description fonctionnelle
Cette méthode est utilisée pour sélectionner le premier élément de l'élément de
type TypeArray sélectionné.
La valeur de retour de type BOOL indique TRUE si un élément a été sélectionné
avec succès. Si une erreur a été détectée, utilisez les propriétés Result et
ResultMsg pour obtenir le résultat de la méthode. Si l'élément demandé n'a pas
pu être sélectionné, l'élément sélectionné précédemment reste sélectionné.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
SelectFirstMemberOfObject (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.4.15.0
Description fonctionnelle
Cette méthode est utilisée pour sélectionner le premier membre de l'élément de
type TypeObject sélectionné.
EIO0000002786.03
123
FileFormatUtility
Blocs fonction JSON
La valeur de retour de type BOOL indique TRUE si un élément a été sélectionné
avec succès. Si une erreur a été détectée, utilisez les propriétés Result et
ResultMsg pour obtenir le résultat de la méthode. Si l'élément demandé n'a pas
pu être sélectionné, l'élément sélectionné précédemment reste sélectionné.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
SelectNext (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.4.15.0
Description fonctionnelle
Cette méthode est utilisée pour sélectionner l'élément suivant qui a le même
parent que l'élément sélectionné.
La valeur de retour de type BOOL indique TRUE si un élément a été sélectionné
avec succès. Si une erreur a été détectée, utilisez les propriétés Result et
ResultMsg pour obtenir le résultat de la méthode. Si l'élément demandé n'a pas
pu être sélectionné, l'élément sélectionné précédemment reste sélectionné.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
SelectParent (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.4.15.0
Description fonctionnelle
Cette méthode est utilisée pour sélectionner l'élément parent de l'élément
sélectionné.
La valeur de retour de type BOOL indique TRUE si un élément a été sélectionné
avec succès. Si une erreur a été détectée, utilisez les propriétés Result et
ResultMsg pour obtenir le résultat de la méthode. Si l'élément demandé n'a pas
pu être sélectionné, l'élément sélectionné précédemment reste sélectionné.
Cette méthode n'a pas d'entrées.
NOTE: L'exécution de cette méthode réinitialise les erreurs signalées
précédemment par les propriétés correspondantes.
124
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Write (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour la création et l'écriture synchrones de données au
format JSON. Selon la taille des données, l'écriture peut prendre plusieurs
millisecondes. Tenez compte de ce point lorsque vous configurez votre tâche.
Vous pouvez également utiliser la méthode WriteAsync qui divise l'écriture en
blocs simples par appel pour réduire le temps d'exécution d'un seul appel de
méthode. La condition préalable est que les données ont été correctement
analysées. Reportez-vous à la section Analyse (méthode), page 115.
NOTE: Si vous écrivez une chaîne JSON partiellement analysée dans le
tampon racine, la partie non analysée de la chaîne JSON est perdue.
La valeur renvoyée de type BOOL indique TRUE si la méthode s'est déroulée
correctement. Si la valeur de retour est FALSE, consultez les propriétés Result et
ResultMsg pour plus d'informations.
Interface
Entrée
Type de données
Description
i_anyBufferToWrite
ANY
Mémoire tampon allouée dans
l'application.
NOTE: L'exécution de cette méthode réinitialise une erreur détectée
précédemment, indiquée par les propriétés correspondantes, ainsi que les
informations relatives à l'opération d'écriture précédente. Pendant l'exécution
de l'opération, une vérification syntaxique élémentaire des données à écrire
est effectuée.
Exemple
L'exemple suivant montre comment mettre en oeuvre un processus d'analyse,
une modification d'une valeur de la chaîne JSON analysée et une écriture
synchrone :
PROGRAM SR_Main_Sync
VAR
iState : INT;
xWriteModifiedJsonString : BOOL;
sCountry : STRING := 'Deutschland';
sJsonString : STRING[500] := '{"Library": "FileFormatUtility","Namespace":
"FFU","Forward Compatible": true,"Supported Formats": ["JSON", "XML",
"CSV"],"Company": "Schneider Electric","Address":{"Street":
"Schneiderplatz","House Number": 1,"Postal Code": "97828","City":
"Marktheidenfeld","Country": "Germany"}}'
fbJsonUtilities : FFU.FB_JsonUtilities;
xBusy : BOOL;
etResult : FFU.ET_Result;
sResultMsg : STRING;
EIO0000002786.03
125
FileFormatUtility
Blocs fonction JSON
END_VAR
IF xWriteModifiedJsonString THEN
xWriteModifiedJsonString := FALSE;
//Parse JSON formatted string
IF NOT (fbJsonUtilities.Parse(i_anyDataToParse := sJsonString, i_sJPath :=
'')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Select element containing requested value
IF NOT (fbJsonUtilities.Select(i_sJPath := '.Address.Country')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Modify value of item
IF NOT (fbJsonUtilities.ModifyValueTypeOfSelected(i_anyValue := sCountry))
THEN
//Error handling for failed Modify process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Write JSON formatted string
IF NOT (fbJsonUtilities.Write(i_anyBufferToWrite := sJsonString)) THEN
//Error handling for failed Write process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
END_IF
WriteAsync (méthode)
Présentation
Type :
Méthode
Disponible à partir de :
V1.5.4.0
Description fonctionnelle
Cette méthode est utilisée pour la création et l'écriture asynchrones de données
au format JSON. L'exécution peut prendre plusieurs cycles. La condition préalable
est que les données ont été correctement analysées. Reportez-vous à la section
Analyse (méthode), page 115. Pendant l'écriture, aucune autre méthode ou
propriété du bloc fonction ne peut être traitée.
126
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Le paramètre global GPL.Gc_udiJsonMaxNumOfBytesPerCycle spécifie le
nombre d'octets traités en un cycle.
L'écriture est terminée si l'une des sorties q_xDone ou q_xError indique TRUE.
Vous devez appeler la méthode de manière cyclique pendant que la sortie
q_ xBusy est à TRUE.
Les sorties de diagnostic indiquent si l'exécution a été traitée avec succès. En cas
d'erreur détectée, consultez les propriétés Result et ResultMsg pour plus
d'informations.
NOTE: Si vous écrivez une chaîne JSON partiellement analysée dans le
tampon racine, la partie non analysée de la chaîne JSON est perdue.
Interface
Entrée
Type de données
Description
i_anyBufferToWrite
ANY
Mémoire tampon allouée dans
l'application.
Sortie
Type de données
Description
q_xBusy
BOOL
Si cette sortie est TRUE, la méthode
est en cours d'exécution.
q_xDone
BOOL
Si cette sortie est TRUE, l'exécution
s'est effectuée correctement.
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.
NOTE: Pour des raisons de performance, la validité des paramètres d'entrée
des blocs fonction n'est vérifiée que lors du premier cycle après le
déclenchement de l'exécution de la méthode. Ne modifiez pas ces valeurs
pendant l'exécution du bloc fonction. L'exécution de cette méthode réinitialise
une erreur détectée précédemment, indiquée par les propriétés
correspondantes, et les informations relatives à l'opération d'écriture
précédente.
Exemple
L'exemple suivant indique comment mettre en oeuvre un processus d'analyse,
une modification d'une valeur de la chaîne JSON analysée et une écriture
asynchrone :
PROGRAM SR_Main_Async
VAR
iState : INT;
xWriteModifiedJsonString : BOOL;
sCountry : STRING := 'Deutschland';
sJsonString : STRING[500] := '{"Library": "FileFormatUtility","Namespace":
"FFU","Forward Compatible": true,"Supported Formats": ["JSON", "XML",
"CSV"],"Company": "Schneider Electric","Address":{"Street":
"Schneiderplatz","House Number": 1,"Postal Code": "97828","City":
"Marktheidenfeld","Country": "Germany"}}'
fbJsonUtilities : FFU.FB_JsonUtilities;
xBusy : BOOL;
etResult : FFU.ET_Result;
sResultMsg : STRING;
END_VAR
CASE iState OF
0:
IF xWriteModifiedJsonString THEN
EIO0000002786.03
127
FileFormatUtility
Blocs fonction JSON
xWriteModifiedJsonString := FALSE;
//Parse JSON formatted string
IF NOT (fbJsonUtilities.Parse(i_anyDataToParse := sJsonString, i_sJPath :=
'')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Select element containing requested value
IF NOT (fbJsonUtilities.Select(i_sJPath := '.Address.Country')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Modify value of item
IF NOT ((fbJsonUtilities.ModifyValueTypeOfSelected(i_anyValue :=
sCountry)) THEN
//Error handling for failed Modify process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
iState := 10;
END_IF
10:
//Write modified JSON formatted string
(fbJsonUtilities.WriteAsync(i_anyBufferToWrite := sJsonString, q_xBusy =>
xBusy);
IF NOT xBusy THEN
IF fbJsonUtilities.Error THEN
//Error handling for failed Write process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
END_IF
iState :=0;
END_IF
END_CASE
WriteToFileAsync (méthode)
Présentation
128
Type :
Méthode
Disponible à partir de :
V1.5.4.0
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Description fonctionnelle
Cette méthode est utilisée pour la création et l'écriture asynchrones de données
au format JSON dans un fichier situé sur le système de fichiers du contrôleur.
L'exécution peut prendre plusieurs cycles. La condition préalable est que les
données ont été correctement analysées. Reportez-vous à la section Analyse
(méthode), page 115. Pendant l'écriture, aucune autre méthode ou propriété du
bloc fonction ne peut être traitée.
Le nombre d'octets traités en un cycle correspond à la taille minimum entre
l'entrée de i_anyBuffer et le paramètre global GPL.Gc_
udiJsonMaxNumOfBytesPerCycle.
Les sorties de diagnostic indiquent si l'exécution a été traitée avec succès. Si une
erreur a été détectée, reportez-vous aux propriétés Result et ResultMsg pour plus
d'informations.
NOTE: Si vous écrivez une chaîne JSON partiellement analysée dans le
fichier racine, la partie non analysée de la chaîne JSON est perdue.
Interface
Entrée
Type de données
Description
i_sFilePath
STRING[255]
Chemin d'accès au fichier JSON qui
sera écrit. Lorsque le nom de fichier est
indiqué sans extension, le bloc fonction
ajoute l'extension .json.
NOTE: La longueur maximale de
chemin d'accès de 255 octets
inclut l'extension de fichier.
i_anyBuffer
ANY
Adresse du tampon temporaire alloué
dans l'application utilisée pour écrire les
données dans le fichier.
Sortie
Type de données
Description
q_xBusy
BOOL
Si cette sortie est TRUE, la méthode
est en cours d'exécution.
q_xDone
BOOL
Si cette sortie est TRUE, l'exécution
s'est effectuée correctement.
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_udiLength
UDINT
Indique la taille du fichier en octets.
NOTE: Pour des raisons de performance, la validité des paramètres d'entrée
des blocs fonction n'est vérifiée que lors du premier cycle après le
déclenchement de l'exécution de la méthode. Ne modifiez pas ces valeurs
pendant l'exécution du bloc fonction. L'exécution de cette méthode réinitialise
une erreur détectée précédemment, indiquée par les propriétés
correspondantes, et les informations relatives à l'opération d'écriture
précédente.
Exemple
L'exemple suivant montre comment mettre en oeuvre un processus d'analyse,
une modification d'une valeur de la chaîne JSON analysée et une écriture
asynchrone dans un fichier :
PROGRAM SR_Main_Async
VAR
iState : INT;
xWriteModifiedJsonStringToFile : BOOL;
sCountry : STRING := 'Deutschland';
EIO0000002786.03
129
FileFormatUtility
Blocs fonction JSON
sJsonString : STRING[500] := '{"Library": "FileFormatUtility","Namespace":
"FFU","Forward Compatible": true,"Supported Formats": ["JSON", "XML",
"CSV"],"Company": "Schneider Electric","Address":{"Street":
"Schneiderplatz","House Number": 1,"Postal Code": "97828","City":
"Marktheidenfeld","Country": "Germany"}}'
fbJsonUtilities : FFU.FB_JsonUtilities;
abyTempBuffer : ARRAY[[0..254] OF BYTE;
xBusy : BOOL;
etResult : FFU.ET_Result;
sResultMsg : STRING;
END_VAR
CASE iState OF
0:
IF xWriteModifiedJsonString THEN
xWriteModifiedJsonString := FALSE;
//Parse JSON formatted string
IF NOT (fbJsonUtilities.Parse(i_anyDataToParse := sJsonString, i_sJPath :=
'')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Select element containing requested value
IF NOT (fbJsonUtilities.Select(i_sJPath := '.Address.Country')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Modify value of item
IF NOT ((fbJsonUtilities.ModifyValueTypeOfSelected(i_anyValue :=
sCountry)) THEN
//Error handling for failed Modify process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
iState := 10;
END_IF
10:
//Write modified JSON formatted string to a file
(fbJsonUtilities.WriteToFileAsync(i_sFilePath:='FileName.json',i_
anyBufferToWrite := sJsonString, q_xBusy => xBusy);
IF NOT xBusy THEN
IF fbJsonUtilities.Error THEN
//Error handling for failed Write process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
END_IF
iState := 0;
END_IF
END_CASE
130
EIO0000002786.03
Blocs fonction JSON
FileFormatUtility
Propriétés de FB_JsonUtilities
Présentation
Nom
Type de données
Accès
Description
Error
BOOLEAN
Lecture
Indique si une erreur a été détectée. Cette valeur est
réinitialisée chaque fois que vous appelez une
méthode ou une propriété.
HasChild
BOOLEAN
Lecture
Indique s'il existe des éléments enfants pour
l'élément sélectionné.
HasParent
BOOLEAN
Lecture
Indique s'il existe un élément parent pour l'élément
sélectionné.
IsSelected
BOOLEAN
Lecture
Indique si un élément JSON est sélectionné.
IsSelectedInArray
BOOLEAN
Lecture
Indique si l'élément sélectionné est un élément de
tableau.
IsSelectedInObject
BOOLEAN
Lecture
Indique si l'élément sélectionné est membre d'un
objet.
NameOfParent
STRING[GPL.Gc_
uiJsonMaxLengthOfName,
page 38
Lecture
Fournit le nom de l'élément parent de l'élément
sélectionné. Si la valeur est une chaîne nulle, aucun
élément n'est sélectionné ou il s'agit de l'élément
racine qui n'a pas de parent. Utilisez la propriété
Result pour valider une valeur de chaîne nulle.
NameOfSelected
STRING[GPL.Gc_
uiJsonMaxLengthOfName
Lecture/
écriture
Récupère ou définit le nom de l'élément sélectionné.
Si la valeur est une chaîne nulle, aucun élément n'est
sélectionné ou il s'agit de l'élément racine qui n'a pas
de nom. Utilisez la propriété Result pour valider une
valeur de chaîne nulle.
NumberOfChildren
UINT
Lecture
Fournit le nombre d'enfants de l'élément sélectionné.
Si la valeur est 0, l'élément n'a pas d'enfant ou aucun
élément n'est sélectionné. Utilisez la propriété Result
pour valider une valeur 0.
Result
ET_Result, page 25
Lecture
Fournit le résultat de la méthode ou de la propriété
récemment appelée. L'appel de cette propriété
n'affecte pas le résultat.
ResultMsg
STRING[80]
Lecture
Fournit des informations supplémentaires sous forme
de chaîne pour la valeur donnée de la propriété
Result. L'appel de cette propriété n'affecte pas le
résultat.
Timeout
Time
Lecture/
écriture
Une fois ce temps écoulé, l'exécution de la méthode
ParseAsync / WriteAsync est annulée. Si la valeur
est T#0s, la valeur par défaut T#2s est appliquée.
NOTE: Le temps écoulé n'est vérifié qu'au début
de chaque appel de méthode cyclique.
TypeOfSelected
ET_JsonValueType, page 24
Lecture/
écriture
Récupère ou définit le type de la valeur de l'élément
sélectionné.
ValueOfSelected
STRING[GPL.Gc_
uiJsonMaxLengthOfValue],
page 38
Lecture/
écriture
Récupère ou définit la valeur de l'élément
sélectionné. Si la valeur de l'élément sélectionné est
une chaîne nulle, soit aucun élément n'est
sélectionné, soit l'élément est de type TypeArray ou
TypeObject et n'a pas de valeur pouvant être
renvoyée en tant que chaîne. Utilisez la propriété
Result pour valider une valeur de chaîne nulle.
NOTE: L'accès aux propriétés réinitialise les erreurs signalées précédemment
par les propriétés correspondantes.
EIO0000002786.03
131
FileFormatUtility
Index
A
alias .....................................................................35
E
entrées et sorties communes
fonctionnement des blocs fonction avec l'entrée i_
xExecute .........................................................20
ET_CsvReadMode ................................................22
AllValues ...........................................................23
GetFileInformation .............................................23
OneColumn .......................................................23
OneRow............................................................23
OneValue ..........................................................23
ET_JsonValueType ...............................................23
TypeArray .........................................................24
TypeBoolean .....................................................24
TypeInvalid ........................................................24
TypeNull............................................................24
TypeNumber......................................................24
TypeObject ........................................................24
TypeString.........................................................24
TypeStringTrunked.............................................24
ET_ModeFileOpen ................................................24
Append .............................................................24
AppendPlus.......................................................24
Create...............................................................24
CreatePlus ........................................................24
NotSet...............................................................24
ET_Result ............................................................25
AdditionalContentInvalid.....................................25
AnalyzingFile .....................................................25
AttributeAlreadyExistsForSelectedElement ..........26
AttributeNotFound..............................................26
BadJsonValueType ............................................27
BufferFull ..........................................................25
BufferInvalid ......................................................27
BufferSizeInvalid................................................27
BufferTooSmall ..................................................27
CheckingInputs..................................................25
ClosingFile ........................................................25
DataTypeNotSupported ......................................26
ElementNotFound ..............................................25
FileAlreadyExists ...............................................25
FileCloseFailed..................................................25
FileFormatUtility.................................................25
FileInconsistent..................................................26
FileInvalid..........................................................25
FilenameInvalid .................................................26
FilenameTooLong ..............................................26
FileNotExist .......................................................27
FileNotExists .....................................................25
FileOpenFailed ..................................................25
FilePathInvalid...................................................25
FilePathTooLong................................................26
FileReadFailed ..................................................26
FileWriteFailed...................................................25
FirstItemInvalidParentIndex ................................26
FirstItemNoElement ...........................................26
GetFileSize .......................................................25
GetFileSizeFailed ..............................................25
Idle ...................................................................25
Initializing ..........................................................25
InternalError ......................................................27
InvalidEscapeCharacter .....................................28
EIO0000002786.03
InvalidInput........................................................26
ItemHasNoName ...............................................27
ItemNotFound....................................................27
ItemsHasNoValue ..............................................27
JPathExpressionInvalid ......................................27
JPathNotSupported............................................27
MaxLengthOfNameReached ..............................27
MaxLengthOfStringReached...............................27
MaxLengthOfValueReached ...............................27
NameNotValid ...................................................27
NameValuePairCannotBeAdded .........................27
NoArrayOpen ....................................................26
NoElementSelected ...........................................26
NoItemSelected .................................................27
NoNextItem .......................................................27
NoObjectOpen...................................................26
NumOfItemsExceeded .......................................27
NumOfLevelsExceeded......................................27
NumOfParentsExceeded....................................25
OK ....................................................................25
OnlineChangeDetected ......................................26
OpeningFile.......................................................25
ParentIsNotArray ...............................................27
ParentIsNotObject .............................................27
ParseNotDone...................................................27
ParsingFailed ....................................................26
ParsingInProcess...............................................27
ReadingFile .......................................................25
ReadParameterInvalid........................................26
RemoveFailed ...................................................27
SelectedHasNoParent........................................27
SelectedIsNotArray ............................................27
SelectedIsNotObject ..........................................27
SelectedIsNotSimpleType...................................27
StringValueTooBig .............................................28
TableInvalid .......................................................26
TableReadValuesInvalid .....................................26
TableTooSmall ...................................................26
TableWriteValuesInvalid .....................................26
Timeout.............................................................25
UnexpectedEndingToken....................................27
UnexpectedProgramBehaviour ...........................28
UnexpectedStartingToken...................................27
UnexpectedToken ..............................................27
ValueNotFound..................................................26
WriteParameterInvalid........................................26
WritingFile .........................................................25
WrittingInProcess...............................................28
WrongLayerToAppendElement ...........................26
XmlItemsInvalid .................................................26
XmlItemTypeInvalid............................................26
XmlStructureInconsistent....................................26
XPathExpressionInvalid .....................................25
XpathExpressionNotSupported ...........................26
XpathRootElementDoesNotMatch.......................26
ET_XmlItemType...................................................22
Attribute ............................................................22
Element ............................................................22
NotSet...............................................................22
F
FB_CreateJsonFormattedString .............................87
FB_CreateJsonFormattedString example................98
FB_CsvRead ........................................................75
FB_CsvRead dépannage.......................................78
FB_CsvRead description fonctionnelle....................75
FB_CsvRead exemple...........................................79
FB_CsvRead règles et contraintes..........................77
133
FileFormatUtility
ArrayInsertObject............................................. 106
ArrayInsertValue .............................................. 106
ArrayInsertValueNULL ..................................... 107
ClearSelection ...................................................62
Copy .................................................................96
GetAttributeByName ..........................................62
InitializeXmlItems...............................................63
ModifyNameOfSelected.................................... 108
ModifyValueTypeOfSelected............................. 108
ModifyValueTypeOfSelectedToNull ................... 109
New ..................................................................96
ObjectAddArray ............................................... 110
ObjectAddObject.............................................. 110
ObjectAddValue............................................... 111
ObjectAddValueNULL ...................................... 112
ObjectClose.......................................................97
ObjectInsertArray............................................. 112
ObjectInsertObject ........................................... 113
ObjectInsertValue ............................................ 114
ObjectInsertValueNULL.................................... 115
ObjectOpen .......................................................97
Parse .............................................................. 115
ParseAsync ..................................................... 117
ParseFromFileAsync........................................ 119
RemoveAttribute ................................................64
RemoveSelected ............................................. 120
Select ............................................................. 121
SelectElement ...................................................64
SelectElementOfArrayByIndex.......................... 122
SelectFirstChild .................................................66
SelectFirstElementOfArray ............................... 123
SelectFirstMemberOfObject.............................. 123
SelectNext................................................. 67, 124
SelectParent.............................................. 67, 124
SetAttributeByName...........................................68
Write ............................................................... 125
WriteAsync ...................................................... 126
WriteToFileAsync ............................................. 128
FB_CsvWrite ........................................................80
FB_CsvWrite dépannage .......................................83
FB_CsvWrite description fonctionnelle ....................80
FB_CsvWrite exemple ...........................................84
FB_CsvWrite règles et contraintes..........................82
FB_JsonUtilities .................................................. 102
FB_WriteFile................................................... 44–45
FB_WriteFile dépannage .......................................46
FB_XmlItemsUtility ................................................59
FB_XmlItemsUtility}
propriétés ..........................................................69
FB_XmlRead ........................................................48
FB_XmlRead dépannage.........................................52
FB_XmlRead description fonctionnelle....................48
FB_XmlRead example...........................................53
FB_XmlRead règles et contraintes..........................51
FB_XmlWrite ............................................. 54, 56, 58
FB_XmlWrite dépannage .......................................57
FC_EtResultToString .............................................42
FC_XmlGetElementValue ......................................70
FC_XmlGetElementValue règles et contraintes .......71
FC_XmlGetElementValue, description
fonctionnelle........................................................70
FC_XmlSetElementValue ......................................71
FC_XmlSetElementValue règles et contraintes.........73
FC_XmlSetElementValue, description
fonctionnelle........................................................71
FileFormatUtility ....................................................18
GCL (liste des constantes globales) ....................37
GPL ..................................................................38
G
GCL (liste des constantes globales)
FileFormatUtility.................................................37
GPL
FileFormatUtility.................................................38
GVL (liste de variables globales) ............................40
M
méthode
AddAttribute ......................................................60
AddNameValuePair............................................87
AddNameValuePairArray....................................90
AddNameValuePairBOOL ..................................88
AddNameValuePairDINT ....................................88
AddNameValuePairINT ......................................88
AddNameValuePairNull ......................................90
AddNameValuePairObject ..................................91
AddNameValuePairREAL ...................................88
AddNameValuePairSTRING ...............................88
AddNameValuePairUDINT .................................88
AddSubElement.................................................60
AppendElement .................................................61
ArrayAddArray ........................................... 93, 102
ArrayAddBOOL..................................................92
ArrayAddDINT ...................................................92
ArrayAddINT .....................................................92
ArrayAddNull .....................................................94
ArrayAddObject ............................................... 103
ArrayAddREAL ..................................................92
ArrayAddSTRING ..............................................92
ArrayAddUDINT.................................................92
ArrayAddValue........................................... 94, 104
ArrayAddValueNULL ........................................ 104
ArrayClose ........................................................95
ArrayInsertArray .............................................. 105
134
P
propriétés de FB_XmlItemsUtility}...........................69
S
ST_CsvFileInformation ..........................................32
ST_CsvReadParameter.........................................33
ST_CsvTable ........................................................31
ST_CsvWarnValueTruncated .................................32
ST_CsvWriteParameter .........................................33
ST_XmlItem..........................................................29
ST_XmlUserDefinedHeader...................................30
X
XmlItems ..............................................................35
EIO0000002786.03
Schneider Electric
35 rue Joseph Monier
92500 Rueil Malmaison
France
+ 33 (0) 1 41 29 70 00
www.se.com
Les normes, spécifications et conceptions pouvant changer de temps à
autre, veuillez demander la confirmation des informations figurant dans
cette publication.
© 2021 – Schneider Electric. Tous droits réservés.
EIO0000002786.03
EcoStruxure Machine Expert
EIO0000002810 06/2019
EcoStruxure Machine Expert
PackML
Guide de la bibliothèque
EIO0000002810.00
06/2019
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.
© 2019 Schneider Electric. Tous droits réservés.
2
EIO0000002810 06/2019
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PackTags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie II Types d'unités de données . . . . . . . . . . . . . . . . . . . .
Chapitre 2 Énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ET_Cmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ET_Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ET_Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ET_States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 3 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1 Structures Principales PackTags. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Autres Structures Principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_InitAlarm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_UnitModeDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_VisInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Sous-Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_Alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_CountDescrip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_Descriptor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_EquipmentInterlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_Ingredient. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_StateInfo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ST_Timestamp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 4 Alias - DateTimeArray. . . . . . . . . . . . . . . . . . . . . . . . .
DateTimeArray. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000002810 06/2019
5
11
17
19
20
26
29
31
33
34
35
36
38
41
42
43
45
46
48
49
50
53
59
60
61
62
63
64
65
66
67
68
69
69
3
Partie III Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 5 Liste des constantes globales . . . . . . . . . . . . . . . . . . . . .
GCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 6 Liste des paramètres globaux . . . . . . . . . . . . . . . . . . . . .
GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie IV Unités d'organisation de programme (POU) . . . . . .
Chapitre 7 Blocs fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_DataManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_ModeManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_VisController. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 8 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FC_CheckCmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FC_EtResultToString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FC_GetDateTimeAsArray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FC_InitStateModelChangeStates. . . . . . . . . . . . . . . . . . . . . . . .
FC_InitStateModelExistingStates . . . . . . . . . . . . . . . . . . . . .
FC_SetAlarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FC_SetWarning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie V Visualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 9 BackgroundFrames . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_<BackgroundFrame> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 10 States Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_<State> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 11 Cadres de visualisation . . . . . . . . . . . . . . . . . . . . . . . . . .
Généralités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_Alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_AlarmHistory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_CurrentModeAndStateTime . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_DynStateModel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_ModeAndStateTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_ProdConsumedCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_ProdDefectiveCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_ProdProcessedCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_StopReason . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FR_StatesDisabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
71
73
73
75
75
79
81
82
85
88
91
92
94
95
96
99
102
104
107
109
109
111
111
113
114
115
116
117
118
120
122
123
124
125
126
127
129
131
EIO0000002810 06/2019
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.
EIO0000002810 06/2019
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.
QUALIFICATION DU PERSONNEL
Une personne qualifiée est une personne qui a les qualifications suivantes :
Compétences et connaissances liées à la construction et à l'exploitation d'équipements
électriques et à l'installation.
 Connaissance de l'exploitation des fonctionnalités de la machine dans l'implémentation du
logiciel.
 A reçu une formation en sécurité permettant de reconnaître et d'éviter les dangers potentiels.

La personne qualifiée doit être capable de détecter d'éventuels dangers qui pourraient découler
du paramétrage, de modifications des valeurs de paramétrage et plus généralement des
équipements mécaniques, électriques ou électroniques. La personne qualifiée doit connaître les
normes, dispositions et régulations liées à la prévention des accidents de travail, et doit les
observer lors de la conception et de l'implémentation du système.
INSTRUCTIONS D'UTILISATION
Ce produit est une bibliothèque à utiliser avec un système de commande et des servoamplificateurs. La bibliothèque n'est conçue qu'en vue d'une utilisation telle que décrite dans la
présente documentation, appliquée au secteur industriel.
Observez en permanence les instructions applicables liées à la sécurité, les conditions spécifiques
et les données techniques.
Réalisez une analyse des risques en rapport avec l'utilisation spécifique avant d'utiliser ce produit.
Prenez les mesures de sécurité qui découlent des résultats.
Étant donné que ce produit est utilisé au sein d'un système qui l'englobe, vous devez assurer la
sécurité du personnel par la conception même du système global (la conception de la machine,
par exemple).
Aucune autre utilisation n'est prévue. Toute autre utilisation pourrait être dangereuse.
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.
6
EIO0000002810 06/2019
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.
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.
EIO0000002810 06/2019
7
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.

8
EIO0000002810 06/2019
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.
EIO0000002810 06/2019
9
10
EIO0000002810 06/2019
A propos de ce manuel
Présentation
Objectif du document
Ce document décrit la bibliothèque PackML.
La bibliothèque fournit des fonctions et des blocs fonctions, des structures, et des cadres de
visualisation, qui sont autant d'outils vous permettant de créer des applications en conformité avec
PackML et les PackTags, tels que définis par la norme ANSI/ISA TR88.00.02-2015.
Cette bibliothèque n'est pas, et ne peut être, une implémentation complète de la norme
ANSI/ISA TR88.00.02-2015, étant donné qu'il vous incombe de faire en sorte que le code de
l'application supporte votre machine ou votre processus. La bibliothèque est un outil qui vous aide
à déployer la norme PackML pour une application de machine.
Champ d'application
Ce document a été actualisé pour le lancement d’EcoStruxureTM Machine Expert V1.1.
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.
EIO0000002810 06/2019
11
Les caractéristiques présentées dans ce document 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 document 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 contrôle cruciales.
Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de
commande critique.
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.
12
EIO0000002810 06/2019
AVERTISSEMENT
UTILISATION INCORRECTE DES UNITES ORGANISATIONNELLES DU PROGRAMME






Effectuez une analyse de la sécurité de l'application et des équipements installés.
Vérifiez que les POU sont compatibles avec les équipements 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 fonctionnement à 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 IMPRÉVU DE L'ÉQUIPEMENT


N'utiliser 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é. En cas d’interrruption, relancez le transfert. Veillez à inclure l'impact des
fichiers de données endommagés dans votre analyse des risques.
EIO0000002810 06/2019
13
AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT, PERTE DE DONNÉES OU FICHIER
ENDOMMAGÉ



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
14
Titre du document
Référence
EcoStruxure Machine Expert - Fonctions et
bibliothèques - Guide de l'utilisateur
EIO0000002829 (ENG) ;
EIO0000002830 (FRE) ;
EIO0000002831 (GER) ;
EIO0000002832 (ITA) ;
EIO0000002833 (SPA) ;
EIO0000002834 (CHS) ;
EcoStruxure Machine Expert - Guide de
programmation
EIO0000002854 (ENG) ;
EIO0000002855 (FRE) ;
EIO0000002856 (GER) ;
EIO0000002857 (ITA) ;
EIO0000002858 (SPA) ;
EIO0000002859 (CHS) ;
EIO0000002810 06/2019
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
IEC 61131-2:2007
Automates programmables - Partie 2 : exigences et essais des équipements
ISO 13849-1:2015
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
ISO 14119:2013
Sécurité des machines - Dispositifs de verrouillage associés à des protecteurs
- Principes de conception et de choix
ISO 13850:2015
Sécurité des machines - Fonction d'arrêt d'urgence - Principes de conception
IEC 62061:2015
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é : prescriptions 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:2016
Réseaux de communication industriels - Profils - Partie 3 : Bus de terrain de
sécurité fonctionnelle - Règles générales et définitions de profils.
2006/42/EC
Directive Machines
2014/30/EU
Directive sur la compatibilité électromagnétique
2014/35/EU
Directive sur les basses tensions
EIO0000002810 06/2019
15
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.
16
EIO0000002810 06/2019
EcoStruxure Machine Expert
Informations générales
EIO0000002810 06/2019
Partie I
Informations générales
Informations générales
EIO0000002810 06/2019
17
Informations générales
18
EIO0000002810 06/2019
EcoStruxure Machine Expert
Description
EIO0000002810 06/2019
Chapitre 1
Présentation de la bibliothèque
Présentation de la bibliothèque
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Informations générales
20
Modes de fonctionnement
26
PackTags
29
EIO0000002810 06/2019
19
Description
Informations générales
Présentation de la bibliothèque
La bibliothèque fournit les composants pour faciliter l’implémentation d’une application basée sur
la norme PackML. Les noms et la structure des types de données fournis dans cette bibliothèque
correspondent aux définitions indiquées dans ANSI/ISA TR88.00.02-2015.
Caractéristiques de la bibliothèque
Caractéristique
Valeur
Titre de la bibliothèque
PackML
Société
Schneider Electric
Catégorie
Application → Solution → Emballage/Conditionnement
Composant
Emballage/Conditionnement
Bibliothèques et modèles d'applications →
Emballage/Conditionnement
Espace de nom par défaut
PackML
Attribut du modèle de langage
qualified-access-only (voir EcoStruxure Machine Expert,
Fonctions et bibliothèques - Guide de l'utilisateur)
Bibliothèque post-compatible
Oui (FCL (voir EcoStruxure Machine Expert, Fonctions et
bibliothèques - Guide de l'utilisateur))
NOTE : Cette bibliothèque est paramétrée en Uniquement accès qualifié . On ne peut accéder aux
POU, aux structures de données, aux énumérations, et aux constantes qu'en utilisant l'espace de
noms de la bibliothèque. L'espace de nom par défaut de la bibliothèque est PackML.
Exemple de projet
Le projet d'exemple PackMLExample.project est fourni avec la bibliothèque. Le projet d’exemple
montre comment implémenter les composants à partir de la bibliothèque PackML.
Il est possible que la configuration spécifique requise pour votre application diffère de celle
supposée dans les exemples, modèles, ou architectures décrits ici, quels qu'ils soient. Dans ce
cas, il vous faudra adapter à vos propres besoins les informations proposées dans ce document
et dans d'autres documents en rapport avec celui-ci. Pour ce faire, vous devrez consulter la
documentation spécifique aux composants matériels et/ou logiciels que vous pourriez ajouter ou
insérer à la place d'un autre pour obtenir les informations contenues dans cette documentation.
Portez une attention particulière à respecter toutes les informations de sécurité, exigences
électriques et normes obligatoires pouvant s'appliquer à vos adaptations.
20
EIO0000002810 06/2019
Description
AVERTISSEMENT
INCOMPATIBILITE REGLEMENTAIRE
Vérifiez que tous les équipements concernés et les systèmes conçus sont conformes à toutes
les normes et réglementations locales, régionales et nationales applicables.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
L’exemple de projet est installé sur votre PC avec le logiciel de programmation. Pour ouvrir
l’exemple de projet, procédez comme suit :
Étape
Action
Commentaire
1
Dans EcoStruxure Machine Expert Logic
Builder, exécutez la commande Nouveau
projet.
–
2
Dans la boîte de dialogue Nouveau projet,
sélectionnez A partir de l’exemple dans la liste
Type de projet.
–
3
A droite de la boîte de dialogue Nouveau projet, Résultat : les exemples disponibles sont
sélectionnez Tout dans la liste Contrôleur.
répertoriés dans la zone de texte Exemples
correspondants.
4
Sélectionnez l’exemple dans la liste Exemples
correspondants.
–
5
Entrez le nom du nouveau projet et
sélectionnez l’emplacement du fichier.
–
6
Cliquez sur le bouton OK.
Résultat : un nouveau projet est créé en
fonction de l’exemple sélectionné.
Présentation des POU
Cette bibliothèque contient les blocs fonction et les fonctions suivants :
Bloc fonction / fonction
Utilisation
FB_DataManagement (voir page 82)
Enregistre les informations relatives aux durées, au datage et à la
production.
FB_ModeManager (voir page 85)
Vérifie si un changement de mode de fonctionnement est possible dans
l'état actuel et effectue des vérifications de cohérence sur les définitions
des modes de fonctionnement.
FB_VisController (voir page 88)
Traite les données fournies par les balises d'administration et les
balises d'état, et transmet ces données aux cadres de visualisation, via
l'interface de visualisation entrées/sorties iq_stVisInterface de
type ST_VisInterface.
EIO0000002810 06/2019
21
Description
Bloc fonction / fonction
Utilisation
FC_CheckCmd (voir page 92)
Vérifie si la commande transmise peut être acceptée dans l'état actuel
(selon la définition du mode de fonctionnement indiqué). Si tel est le
cas, cette fonction retourne l'état cible de la transition déclenchée par
cette commande.
FC_InitStateModelChangeStates
(voir page 96)
Initialise les états dans lesquels un changement de mode de
fonctionnement est autorisé, pour un mode de fonctionnement donné.
FC_InitStateModelExistingStates
Initialise les états existants pour un mode de fonctionnement.
(voir page 99)
FC_SetAlarm (voir page 102)
Écrit des messages d'alarme dans les balises d'administration
Admin.Alarm[#] et Admin.AlarmHistory[#].
FC_SetWarning (voir page 104)
Écrit des messages de conseil dans la balise d'administration
Admin.Warning[#].
FC_GetDateTimeAsArray (voir page 95)
Permet d’obtenir l’horodatage (RTC) du contrôleur et de le convertir en
données de type DateTimeArray (voir page 69).
Présentation des énumérations
Énumération
Utilisation
ET_Cmd (voir page 34)
Contient les commandes de changement d'état au sein d'un mode de
fonctionnement donné. Les commandes sont utilisées pour faire la
transition d'un État d'attente à un autre état (la commande Start, par
exemple). Les commandes Stop et Abort peuvent également être
déclenchées durant n'importe quel état (consultez le Diagramme des
modèles d'état (voir page 27)).
ET_Modes (voir page 35)
Contient les modes de fonctionnement prédéfinis (Producing, par
exemple).
ET_Result (voir page 36)
Contient les valeurs possibles qui donnent les résultats des opérations
exécutées par le bloc fonction.
ET_States (voir page 38)
Contient les états possibles qui composent un mode de
fonctionnement.
22
EIO0000002810 06/2019
Description
Présentation des Structures
Structure
Utilisation
ST_Administration (voir page 43)
Fournit les variables/balises qui contiennent des données OEE (Overall
Equipment Effectiveness) (par exemple : temps d'arrêt, motifs des
temps d'arrêt, etc.). De plus, cette variable peut fournir des informations
relatives à la production (par exemple, des informations sur les alarmes
et les états).
ST_Command (voir page 45)
Fournit les variables qui représentent principalement l'interface de
contrôle. En utilisant ces balises, on peut sélectionner le mode de
fonctionnement, forcer les transitions d'état, et transmettre les recettes
et les formats.
ST_InitAlarm (voir page 49)
Fournit les information pour paramétrer un message d'alarme dans la
fonction FC_SetAlarm.
ST_UnitModeDefinition (voir page 50)
Fournit les informations pour initialiser les modes de fonctionnement
dans le bloc fonction FB_ModeManager.
ST_Status (voir page 46)
Fournit les variables qui contiennent les informations d'état (par
exemple, quel mode de fonctionnement est actif, quel état est actif,
etc.).
ST_VisInterface (voir page 53)
Structure dédiée à la visualisation.
ST_Alarm (voir page 60)
Fournit le numéro de message de diagnostic de la machine.
ST_CountDescrip (voir page 61)
Fournit l'ID et les paramètres de comptage produits.
ST_Descriptor (voir page 62)
Fournit les informations du paramètre (id, nom, unité, et valeur).
ST_Ingredient (voir page 64)
Fournit l'ID et les paramètres de l'ingrédient.
ST_Interface (voir page 65)
Fournit des informations relatives à la machine PackML en aval
(suivante).
ST_Product (voir page 66)
Fournit des informations sur un produit.
ST_StateInfo (voir page 67)
Fournit les informations indiquant si l'état existe et si un changement de
mode de fonctionnement est possible. L'information est utilisée pour
initialiser le gestionnaire des modes de fonctionnement.
ST_Timestamp (voir page 68)
Fournit la date et l'heure.
Présentation des Cadres
Cadres d'arrière-plan
Les cadres de visualisation FR_<BackgroundFrame> (voir page 109) (FR_Control1024x768,
par exemple) sont des cadres d'arrière-plan qui permettent de grouper les autres cadres, et de
réaliser des fonctionnalités de contrôle et de navigation.
Cadre
FR_Control1024x768
EIO0000002810 06/2019
23
Description
Cadre
FR_Nav1024x768
FR_NavControl1024x768
FR_Control800x600
FR_Nav800x600
FR_NavControl800x600
Cadres d'état
Les cadres de visualisation FR_<State> (voir page 111) (FR_Stopped, par exemple) sont des
cadres pour chaque état au sein d'un modèle.
Les cadres sont utilisés par le FR_DynStateModel (voir page 118) pour afficher chaque état du
modèle d'état pour les modes de fonctionnement.
Cadre
FR_Aborted
FR_Aborting
FR_Clearing
FR_Complete
FR_Completing
FR_Execute
FR_Held
FR_Holding
FR_Idle
FR_Resetting
FR_Starting
FR_Stopped
FR_Stopping
FR_Suspended
FR_Suspending
FR_UnHolding
FR_UnSuspending
Cadres de visualisation
En plus de chaque balise, fonction et bloc fonction, la bibliothèque contient certains cadres de
visualisation, qui génèrent dynamiquement un modèle d’état approprié pour le mode de fonctionnement durant le fonctionnement en ligne ou qui affichent des données OEE (Overall Equipment
Effectiveness).
24
EIO0000002810 06/2019
Description
Cadre
Utilisation
FR_Alarm (voir page 115)
Affiche une liste d'alarmes des alarmes actives.
FR_AlarmHistory (voir page 116)
Affiche l'historique des alarmes.
FR_CurrentModeAndStateTime
Affiche la durée de fonctionnement de la machine dans le mode de
fonctionnement et l'état en cours.
(voir page 117)
FR_DynStateModel (voir page 118)
Affiche dynamiquement la visualisation du modèle d'état durant le
fonctionnement en ligne.
FR_ModeAndStateTime (voir page 120)
Affiche la durée de fonctionnement des modes de fonctionnement dt
leurs états respectifs.
FR_ProdConsumedCount (voir page 122)
Affiche les chiffres de comptage produits des consommables.
FR_ProdDefectiveCount
(voir page 123)
Affiche les chiffres de comptage produits des marchandises détectées
comme non conformes.
FR_ProdProcessedCount
Affiche les chiffres de comptage produits des marchandises produites.
(voir page 124)
FR_Warning (voir page 125)
Affiche la liste de conseils actifs.
FR_StopReason (voir page 126)
Affiche le PackTag Admin.StopReason.
FR_StatesDisabled (voir page 127)
Surveille et contrôle le PackTag Admin.StatesDisabled.
EIO0000002810 06/2019
25
Description
Modes de fonctionnement
Présentation
Les recommandations PackML définissent un modèle d'état normalisé afin de présenter de façon
standardisée le fonctionnement fondamental d'une machine d'emballage/conditionnement.
Selon les recommandations PackML, chaque machine d'emballage/conditionnement peut
supporter de nombreux modes de fonctionnement.
Chaque mode de fonctionnement peut comprendre jusqu'à 17 états (Aborted, Aborting, Clearing,
Complete, Completing, Execute, Held, Holding, Idle, Resetting, Starting, Stopped, Stopping,
Suspended, Suspending, Un-Holding et Un-Suspending).
Pour passer d'un état à un autre, il existe des transitions entre les états. Chaque transition est
déclenchée soit par une commande de transition d'état, soit par la condition de SC (State
Complete).
L'implémentation de la bibliothèque PackML se concentre sur le mode de contrôle de l'unité tel que
décrit dans la norme ANSI/ISA TR88.00.02-2015. Dans tous les cas, lorsque ce document fait
référence au mode de fonctionnement, il s'agit spécifiquement du mode de contrôle de l'unité.
Utiliser les Modèles d'État
Les modèles d'état dans la bibliothèque PackML sont basées sur le modèle à 17 états, tel que
défini dans la norme ANSI/ISA TR88.00.02-2015 : consultez le diagramme ci-après. Un modèle
d'état doit contenir ces états, ou un sous-ensemble de ces états.
Un modèle d'état se définit par la spécification des états existants pour le mode de fonctionnement.
Les transitions entre états sont créées automatiquement, et dépendent implicitement des états
sélectionnés.
ST_UnitModeDefinition est la structure qui représente le modèle d'état d'un mode de
fonctionnement donné.
FC_InitStateModelExistingStates initialise l'existence ou non des états.
FC_InitStateModelChangeStates initialise les états qui peuvent permettre un changement
de mode de fonctionnement.
FB_ModeManager vérifie que le modèle d'état est cohérent, vérifie qu'un changement de mode
de fonctionnement est possible, et trouve l'état cible dans ce mode de fonctionnement.
FC_CheckCmd vérifie la validité d'une commande de transition d'état et retourne l'état cible
correspondant.
Les cadres de visualisation et le FB_VisController sont utilisés pour visualiser le modèle d'état
et lui fournir une interface de mise en service.
Il vous incombe d'implémenter un flux correct dans le modèle d'état, en accord avec les transitions
définies dans le modèle d'état, ainsi que d'implémenter les changements de modes de fonctionnement. Les POU fournis dans la bibliothèque peuvent vous aider à implémenter cette logique
(FB_ModeManager et FC_CheckCmd).
26
EIO0000002810 06/2019
Description
Il vous incombe d'implémenter le suivi du mode de fonctionnement et d'état, ainsi que
d'implémenter un comportement de machine qui correspond aux états, aux transitions, et aux
modes de fonctionnement.
Diagramme de Modèle d'État
Le diagramme ci-dessous illustre le modèle d'état pour le mode de fonctionnement comportant les
17 états :
Types d'États
Dans le cadre du modèle d'état, on distingue trois types d'états :
Type d'état
Description issue de ANSI/ISA TR88.00.02-2015
État d'attente
Etat utilisé pour indiquer qu’une machine a atteint un
ensemble de conditions définies. Dans cet état, la machine
reste en attente jusqu’à la transition vers un état d’action.
EIO0000002810 06/2019
Exemple
27
Description
Type d'état
Description issue de ANSI/ISA TR88.00.02-2015
État d'action
État qui représente des activités de traitement. Il implique
l’exécution unique ou répétée des étapes de traitement dans
un ordre logique, pour une durée définie ou jusqu’à ce
qu’une condition spécifique soit remplie.
Exemple
Limites
La liste qui suit décrit les limites qui caractérisent les modes de fonctionnement basés sur le
modèle d'état :
 Nombre maximum d'états : 17
Les états du mode de fonctionnement peuvent être sélectionnés parmi les états prédéfinis du
modèle d'état. Chaque état ne peut apparaître qu'une fois, dans une position spécifiée par le
modèle d'état. Vous ne pouvez pas ajouter d'états supplémentaires, ni changer l'ordre
d'enchaînement des états.
 Le modèle d'état ne fonctionne que dans un sens.
 L'état qui suit un État d'attente doit être un État d'action.
 De la logique peut être exécutée dans chaque état.
NOTE : D'autres règles s'appliquent également à la création de modes de fonctionnement avec la
bibliothèque PackML. Consultez FB_ModeManager (voir page 85).
28
EIO0000002810 06/2019
Description
PackTags
Présentation
PackTags fournit un ensemble uniforme de conventions de dénomination pour les éléments de
données utilisés dans les éléments des procédures du modèle des états de base. Il s’agit
d’éléments de données utilisés pour l’architecture ouverte et l’échange de données interopérables
dans les machines automatisées.
La bibliothèque fournit les PackTags, tels que définis par la norme ANSI/ISA TR88.00.02-2015.
Variables
Les variables sont divisées en trois types :
Type de PackTags
Description
Dans la Bibliothèque
PackML
commande
Ces variables représentent principalement l'interface
de contrôle. En utilisant ces balises, on peut
sélectionner le mode de fonctionnement, forcer les
transitions d'état, et transmettre les recettes et les
formats.
ST_Command
état
Ces variables contiennent les informations d'état (par
exemple indiquant le mode de fonctionnement actif,
l’état actif, etc.).
ST_Status
administration
Ces variables contiennent des données importantes
OEE (par exemple : temps d'arrêt, motifs des temps
d'arrêt, etc.). De plus, des informations relatives à la
production.
ST_Administration
Chaque variable de chacun des trois types (commande, état, administration) peut être fournie au
contrôleur au sein des structures.
EIO0000002810 06/2019
29
Description
30
EIO0000002810 06/2019
EcoStruxure Machine Expert
Types d'unités de données
EIO0000002810 06/2019
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
2
Énumérations
33
3
Structures
41
4
Alias - DateTimeArray
69
EIO0000002810 06/2019
31
Types d'unités de données
32
EIO0000002810 06/2019
EcoStruxure Machine Expert
Énumérations
EIO0000002810 06/2019
Chapitre 2
Énumérations
Énumérations
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
ET_Cmd
34
ET_Modes
35
ET_Result
36
ET_States
38
EIO0000002810 06/2019
33
Énumérations
ET_Cmd
Présentation
Type :
Énumération
Disponible à partir de la version :
V1.0.1.0
Description
L'énumération inclut les commandes d'état utilisées pour effectuer une transition d'état. On ne peut
sortir d'un état d'Attente (voir page 26) qu'avec une commande de transition d'état (Start, par
exemple).
Éléments de l'énumération
Nom
Type de
données
Valeur
Description
Undefined
DINT
0
Reset
DINT
1
Les commandes de transition d'un état à un autre sont
décrites ici : FC_CheckCmd (voir page 92).
Start
DINT
2
Stop
DINT
3
Hold
DINT
4
UnHold
DINT
5
Suspend
DINT
6
UnSuspend
DINT
7
Abort
DINT
8
Clear
DINT
9
Utilisé par
Les valeurs de l'énumération peuvent être utilisées comme valeurs d'entrée pour i_diCmd de
FC_CheckCmd ou pour remplir la valeur de la variable CntrlCmd de ST_Command.
34
EIO0000002810 06/2019
Énumérations
ET_Modes
Présentation
Type :
Énumération
Disponible à partir de :
V1.0.1.0
Description
L'énumération inclut les modes de fonctionnement prédéfinis (production, par exemple). Un mode
de fonctionnement est un sous-ensemble ordonné d'états, de commandes, et de transitions qui
peut être initialisé via la structure ST_UnitModeDefinition.
Éléments d'énumération
Nom
Type de
données
Valeur
Description
DINT
0
Le mode de fonctionnement est indéfini ou non valide.
(1)
DINT
1
Mode de fonctionnement de production.
Maintenance
DINT
2
Mode de fonctionnement de maintenance.
Manual
DINT
3
Mode de fonctionnement manuel.
Undefined
Producing
(1) Avec la révision 2015 de ANSI/ISA TR88.00.02-2015, le mode de contrôle Producing est devenu
Production. Pour des raisons de compatibilité avec la version antérieure de la bibliothèque PackML,
le nom Producing a été conservé.
Utilisé par
Les valeurs de l'énumération peuvent être utilisées pour remplir les valeurs des variables
UnitModeCurrent de ST_Status et UnitMode de ST_Command.
EIO0000002810 06/2019
35
Énumérations
ET_Result
Présentation
Type :
Énumération
Disponible à partir de :
V1.0.1.0
Description
L'énumération inclut les valeurs possibles qui donnent les résultats des opérations exécutées par
le bloc fonction.
Éléments d'énumération
Nom
Type de
données
Valeur Description
Si q_xError d'un bloc fonction (voir page 81) est FALSE, l'un des messages d'état suivants apparaît.
Ok
DINT
0
Le POU est intact, mais n'est pas en cours
d'exécution.
Disabled
DINT
1
Le POU est désactivé.
Initializing
DINT
2
Le POU est en cours d'initialisation.
Running
DINT
4
Le POU est en cours d'exécution.
ResettingTimerAndCounter
DINT
5
Le POU est en train de réinitialiser l'horloge
et le compteur.
Si q_xError d'un bloc fonction (voir page 81) est TRUE, l'un des messages d'erreur suivants apparaît.
UnitModeCurrentRange
DINT
11
La valeur de l'entrée
i_diUnitModeCurrent est hors plage. La
valeur de mode de fonctionnement doit être
comprise dans la plage 0Gc_uiMaxNumberOfModes.
StateCurrentRange
DINT
12
La valeur de l'entrée i_diStateCurrent
est hors plage. La valeur d'état doit être
comprise dans la plage 0Gc_uiMaxNumberOfStates.
NumberOfModesRange
DINT
13
Le nombre de modes de fonctionnement est
hors plage. Le nombre de modes de
fonctionnement doit être compris dans la
plage 0-Gc_uiMaxNumberOfModes.
PointerInitModeInvalid
DINT
14
Le pointeur de mode de fonctionnement
initial i_pstInitMode n'est pas valide.
36
EIO0000002810 06/2019
Énumérations
Nom
Type de
données
Valeur Description
PointerAdminInvalid
DINT
15
Le pointeur d'administration i_pstAdmin
n'est pas valide.
PointerStatusInvalid
DINT
16
Le pointeur d'état i_pstStatus n'est pas
valide.
UnitModeRange
DINT
17
Le mode de fonctionnement est hors plage.
La plage devrait être :
0 < i_diUnitMode <= diNumberOfModes
InvalidStateModelNoExecuteState
DINT
20
Le modèle d'état du mode de fonctionnement
n'est pas valide : il n'y a pas d'état Execute.
InvalidStateModelNoStoppedState
DINT
21
Le modèle d'état du mode de fonctionnement
n'est pas valide : il n'y a pas d'état Stopped.
InvalidStateModelNoHeldState
DINT
22
Le modèle d'état du mode de fonctionnement
n'est pas valide : un état Held doit exister si
un état Holding ou un état Un-Holding existe.
InvalidStateModelNoCompleteState
DINT
23
Le modèle d'état du mode de fonctionnement
n'est pas valide : si un état Completing existe,
un état Complete doit exister.
InvalidStateModelNoSuspendedState
DINT
24
Le modèle d'état du mode de fonctionnement
n'est pas valide : un état Suspended doit
exister si un état Suspending ou un état UnSuspending existe.
InvalidStateModelNoAbortedState
DINT
25
Le modèle d'état du mode de fonctionnement
n'est pas valide : un état Aborted doit exister
si un état Aborting ou un état Clearing existe.
InvalidStateModelNoIdleState
DINT
26
Le modèle d'état du mode de fonctionnement
n'est pas valide : l'état Resetting ne peut être
utilisé qu'en lien avec l'état Idle.
InvalidStateModelNoResettingState
DINT
27
Le modèle d'état du mode de fonctionnement
n'est pas valide : l'état Idle ne peut être utilisé
qu'en lien avec l'état Resetting.
ModeChangeRequestRejected
DINT
28
La requête de changement de mode de
fonctionnement a été rejetée.
UnknownResult
DINT
30
La valeur de l'entrée i_etResult n’est pas
valide.
Utilisé par




FB_DataManagement
FB_ModeManager
FB_VisController
FC_EtResultToString
EIO0000002810 06/2019
37
Énumérations
ET_States
Présentation
Type :
Énumération
Disponible à partir de :
V1.0.1.0
Description
Cette énumération représente la liste des états possibles de la machine comme défini dans
ANSI/ISA TR88.00.02-2015.
Éléments d'énumération
NOTE : Pour une description détaillée de chaque état individuel, consultez la révision 2015 de la
norme ANSI/ISA TR88.00.02-2015.
Nom
Type de données
Valeur
Description
Undefined
DINT
0
Aucun état n'est défini.
Clearing
DINT
1
État d'action Clearing
Stopped
DINT
2
État d'attente Stopped
Starting
DINT
3
État d'action Starting
Idle
DINT
4
État d'attente Idle
Suspended
DINT
5
État d'attente Suspended
Execute
DINT
6
État d'action Execute
Stopping
DINT
7
État d'action Stopping
Aborting
DINT
8
État d'action Aborting
Aborted
DINT
9
État d'attente Aborted
Holding
DINT
10
État d'action Holding
Held
DINT
11
État d'attente Held
UnHolding
DINT
12
État d'action Un-Holding
Suspending
DINT
13
État d'action Suspending
UnSuspending
DINT
14
État d'action Un-Suspending
Resetting
DINT
15
État d'action Resetting
Completing
DINT
16
État d'action Completing
Complete
DINT
17
État d'attente Complete
NOTE : Le contenu de tout état donné dépend de votre application.
38
EIO0000002810 06/2019
Énumérations
Utilisé par





FB_ModeManager
FB_VisController
i_diStateCurrent de FC_CheckCmd
StateCurrent de ST_Status
StateRequested de ST_Status
EIO0000002810 06/2019
39
Énumérations
40
EIO0000002810 06/2019
EcoStruxure Machine Expert
Structures
EIO0000002810 06/2019
Chapitre 3
Structures
Structures
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
3.1
Structures Principales PackTags
42
3.2
Autres Structures Principales
48
3.3
Sous-Structures
59
EIO0000002810 06/2019
41
Structures
Sous-chapitre 3.1
Structures Principales PackTags
Structures Principales PackTags
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
42
Page
ST_Administration
43
ST_Command
45
ST_Status
46
EIO0000002810 06/2019
Structures
ST_Administration
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_Administration représente la liste de PackTags de type Administration
tel que défini dans ANSI/ISA TR88.00.02-2015.
Les balises d’administration sont utilisées pour décrire les informations liées à la qualité et aux
alarmes de la machine.
Éléments de la structure
Pour les types de données GPL, consultez la section Paramètres Globaux (voir page 75).
Variable
Type de données
Description
Parameter
ARRAY
[1..GPL.Gc_iNumOfAdminParameter] OF
ST_Descriptor
Tableau de ST_Descriptor
Alarm
ARRAY [1..GPL.Gc_uiNumberOfAlarms]
OF ST_Alarm
Tableau de ST_Alarm (voir page 60)
AlarmExtent
DINT
Taille de tableau d'alarmes
AlarmHistory
ARRAY
[1..GPL.Gc_uiNumberOfAlarmHistory]
OF ST_Alarm
Tableau de taille donnée pour le code et
le message d'alarme des erreurs
détectées par la machine (voir page 60)
AlarmHistoryExtent
DINT
Taille de tableau d'historique d'alarmes
ModeCurrentTime
ARRAY
[0..GPL.Gc_uiMaxNumberOfModes] OF
UDINT
Durée de fonctionnement dans ce mode
de fonctionnement.
ModeCumulativeTime
ARRAY
[0..GPL.Gc_uiMaxNumberOfModes] OF
UDINT
Durée cumulée dans chaque mode de
fonctionnement.
StateCurrentTime
ARRAY
[0..GPL.Gc_uiMaxNumberOfModes,0..GV
L.Gc_uiMaxNumberOfStates] OF UDINT
Valeur de la dernière horloge d'état
dans chaque mode de
fonctionnement/état
(voir page 62)
(1) La variable a été remplacée par PLCDateTime dans ANSI/ISA TR88.00.02-2015 mais reste dans cette
bibliothèque pour des raisons de compatibilité.
EIO0000002810 06/2019
43
Structures
Variable
Type de données
Description
StateCumulativeTime
ARRAY
[0..GPL.Gc_uiMaxNumberOfModes,0..GV
L.Gc_uiMaxNumberOfStates] OF UDINT
Durée cumulée dans chaque mode de
fonctionnement/état.
ProdConsumedCount
ARRAY
[1..GPL.Gc_uiNumberOfConsumedProduc
ts] OF ST_CountDescrip
Tableau de ST_CountDescrip
(voir page 61) (des consommables
utilisés dans la machine de production)
ProdProcessedCount
ARRAY
[1..GPL.Gc_uiNumberOfProcessedProdu
cts] OF ST_CountDescrip
Tableau de ST_CountDescrip (des
produits traités dans la machine de
production)
ProdDefectiveCount
ARRAY
[1..GPL.Gc_uiNumberOfDefectiveProdu
cts] OF ST_CountDescrip
Tableau de ST_CountDescrip (des
produits signalés comme non
conformes dans la machine de
production)
AccTimeSinceReset
DINT
Durée cumulée depuis la dernière
commande Reset
REAL
Vitesse nominale de la machine
PACDateTime
ST_Timestamp
Horodatage (type de données ISO de
date et d'heure, format ISO 8601:1988
format) (voir page 68)
StopReason
ST_Alarm (voir page 60)
Informations sur le premier événement
capturé durant un événement de type
annulation (Abort), pause (Held),
suspension (Suspended) ou arrêt (Stop)
Warning
ARRAY
[1..GPL.Gc_uiMaxNumberOfWarnings]
OF ST_Alarm
Le tableau contient les conseils actifs
et/ou non acquittés de la machine
WarningExtent
DINT
Taille du tableau de conseils
StatesDisabled
DINT
Les états 1 à 17 de PackML State Model
peuvent être affichés en activant le bit
correspondant
PLCDateTime
DateTimeArray (voir page 69)
Date et heure actuelles du contrôleur
logique programmable
MachDesignSpeed
(1)
(1) La variable a été remplacée par PLCDateTime dans ANSI/ISA TR88.00.02-2015 mais reste dans cette
bibliothèque pour des raisons de compatibilité.
Utilisé par


44
FB_DataManagement
FB_VisController
EIO0000002810 06/2019
Structures
ST_Command
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_Command représente la liste de PackTags de type Command tel que défini dans
ANSI/ISA TR88.00.02-2015.
Les balises de commande sont utilisées pour contrôler le fonctionnement de la machine.
Éléments de la structure
Pour les types de données GPL, consultez la section Paramètres Globaux (voir page 75).
Variable
Type de données
Description
UnitMode
DINT
Le mode de fonctionnement cible (consultez
ET_Modes (voir page 35))
UnitModeChangeRequest
BOOL
TRUE = requête de changement de mode de
fonctionnement de la machine
MachSpeed
REAL
Vitesse actuelle de la machine
MaterialInterlocks
ARRAY [0..31] OF BOOL
Matières prêtes
CntrlCmd
DINT
La valeur de l'état de commande
CmdChangeRequest
BOOL
TRUE = requête de changement d'état de la
machine
RemoteInterface
ARRAY
Permet de coordonner les machines en amont
[1..GPL.Gc_uiNumberOfInterfac ou en aval dans une cellule de plusieurs
machines
e] OF ST_Interface
(voir page 65)
Parameter
ARRAY [1..
GPL.Gc_uiNumberOfParameter]
OF ST_Descriptor
Tableau de ST_Descriptor (voir page 62)
Product
ARRAY [1..
GPL.Gc_uiNumberOfProducts]
OF ST_Product
Tableau de ST_Product (voir page 66)
EIO0000002810 06/2019
45
Structures
ST_Status
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_Status représente la liste de PackTags de type Status tel que défini dans
ANSI/ISA TR88.00.02-2015.
Les balises d’état sont utilisées pour décrire le fonctionnement de la machine.
Éléments de la structure
Pour les types de données GPL, consultez la section Paramètres Globaux (voir page 75).
Variable
Type de données
Description
UnitModeCurrent
DINT
Mode de fonctionnement utilisé
UnitModeRequested
BOOL
Modification demandée du mode de
fonctionnement
UnitModeChangeInProcess
BOOL
Modification demandée du mode de
fonctionnement en cours
StateCurrent
DINT
Etat actuel de la machine
StateRequested
DINT
Etat / état cible demandé
StateChangeInProgress
BOOL
Transition de l'état demandé en cours
MachSpeed
REAL
Consigne de vitesse de la machine PackML
CurMachSpeed
REAL
Vitesse actuelle de la machine PackML
MaterialInterlock
ARRAY [0..31] OF BOOL;
Tableau du matériel prêt
RemoteInterface
ARRAY [1..
GPL.Gc_uiNumberOfInterf
ace] OF ST_Interface
Permet de coordonner les machines en amont
ou en aval dans une cellule de plusieurs
machines
Parameter
ARRAY [1..
GPL.Gc_uiNumberOfParame
ter] OF ST_Descriptor
Tableau des paramètres de la machine de
ST_Descriptor (voir page 62)
Product
ARRAY [1..
GPL.Gc_uiNumberOfProduc
ts] OF ST_Product
Tableau de ST_Product (voir page 66).
EquipmentInterlock
ST_EquipmentInterlock
Consultez la section
ST_EquipmentInterlock (voir page 63).
(voir page 65)
46
EIO0000002810 06/2019
Structures
Utilisé par

FB_VisController
EIO0000002810 06/2019
47
Structures
Sous-chapitre 3.2
Autres Structures Principales
Autres Structures Principales
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
48
Page
ST_InitAlarm
49
ST_UnitModeDefinition
50
ST_VisInterface
53
EIO0000002810 06/2019
Structures
ST_InitAlarm
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_InitAlarm contient les informations sur l’alarme ou le conseil qui est géré via
les fonctions FC_SetAlarm (voir page 102) ou FC_SetWarning (voir page 104).
Éléments de la structure
Variable
Type de données
Description
diID
DINT
ID de message d’événement
diValue
DINT
Valeur de message d’événement
sMessage
STRING[GPL.
Message d’événement
Gc_uiMaxLengthOfAlarmMessage
]
xIsInList
BOOL
L'événement est dans la liste
xIsAck
BOOL
L’événement est acquitté
Category
DINT
Catégorie de l’événement
Utilisé par


FC_SetAlarm
FC_SetWarning
EIO0000002810 06/2019
49
Structures
ST_UnitModeDefinition
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_UnitModeDefinition fournit les informations pour initialiser les modes de
fonctionnement dans le bloc fonction FB_ModeManager (voir page 85).
Éléments de la structure
Variable
Type de données
Description
TRUE : le mode de fonctionnement est défini.
xModeExistent
BOOL
stClearing
ST_StateInfo (voir page 67) Indique si l’état stClearing est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
stStopped
ST_StateInfo
Indique si l’état stStopped est défini comme un état
possible pour le mode de fonctionnement actuel et si
un changement du mode de fonctionnement est
autorisé dans cet état.
stStarting
ST_StateInfo
Indique si l’état stStarting est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
stIdle
ST_StateInfo
Indique si l’état stIdle est défini comme un état
possible pour le mode de fonctionnement actuel et si
un changement du mode de fonctionnement est
autorisé dans cet état.
stResetting
ST_StateInfo
Indique si l’état stResetting est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
stExecute
ST_StateInfo
Indique si l’état stExecute est défini comme un état
possible pour le mode de fonctionnement actuel et si
un changement du mode de fonctionnement est
autorisé dans cet état.
50
EIO0000002810 06/2019
Structures
Variable
Type de données
Description
stStopping
ST_StateInfo
Indique si l’état stStopping est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
stAborting
ST_StateInfo
Indique si l’état stAborting est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
stAborted
ST_StateInfo
Indique si l’état stAborted est défini comme un état
possible pour le mode de fonctionnement actuel et si
un changement du mode de fonctionnement est
autorisé dans cet état.
stHolding
ST_StateInfo
Indique si l’état stHolding est défini comme un état
possible pour le mode de fonctionnement actuel et si
un changement du mode de fonctionnement est
autorisé dans cet état.
stHeld
ST_StateInfo
Indique si l’état stHeld est défini comme un état
possible pour le mode de fonctionnement actuel et si
un changement du mode de fonctionnement est
autorisé dans cet état.
stUnHolding
ST_StateInfo
Indique si l’état stUnHolding est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
stSuspended
ST_StateInfo
Indique si l’état stSuspended est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
stUnSuspending
ST_StateInfo
Indique si l’état stUnSuspending est défini comme
un état possible pour le mode de fonctionnement
actuel et si un changement du mode de
fonctionnement est autorisé dans cet état.
stSuspending
ST_StateInfo
Indique si l’état stSuspending est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
stCompleting
ST_StateInfo
Indique si l’état stCompleting est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
EIO0000002810 06/2019
51
Structures
Variable
Type de données
Description
stComplete
ST_StateInfo
Indique si l’état stComplete est défini comme un
état possible pour le mode de fonctionnement actuel
et si un changement du mode de fonctionnement est
autorisé dans cet état.
Utilisé par



52
FB_ModeManager
FB_VisController
FC_InitStateModelChangeStates
EIO0000002810 06/2019
Structures
ST_VisInterface
Présentation
Type :
Structure de données
Disponible à partir de :
V1.0.1.0
Description
La structure ST_VisInterface génère l’interface sur les écrans de visualisation fournis par la
bibliothèque PackML.
Éléments de la structure
Variable
Type de données
Description
vq_xBlink
BOOL
Variable utilisée pour
flasher l'État d'action
actuel.
vq_diNumberOfModes
DINT
Nombre maximum de
modes de fonctionnement
vq_diUnitModeCurrent
DINT
Mode de fonctionnement
utilisé
vq_diStateCurrent
DINT
État actuel
vq_diModeCurrentTimeActive
DINT
Durée actuelle dans le
mode de fonctionnement
actif.
vq_diModeCumulativeTimeActive
DINT
Durée cumulée dans le
mode de fonctionnement
actif.
vq_diStateCurrentTimeActive
DINT
Durée actuelle dans l'état
actif.
vq_diStateCumulativetimeActive
DINT
Durée cumulée dans l'état
actif.
vq_astAlarm
ARRAY [0..10] OF
ST_Alarm
Tableau de taille donnée
pour le code et le message
des erreurs de la machine
active
vq_astAlarmHistory
ARRAY [0..10] OF
ST_Alarm
Tableau de taille donnée
pour le code et les
messages d'erreurs de la
machine active
vq_diProdConsumedId
DINT
ID du consommable utilisé
EIO0000002810 06/2019
53
Structures
54
Variable
Type de données
Description
vq_sProdConsumedName
STRING
[GPL.Gc_uiMaxLengthO
fParameterName]
Nom du consommable
utilisé
vq_sProdConsumedUnit
STRING [5]
Unité du consommable
utilisé
vq_diProdConsumedCount
DINT
Quantité de
consommables utilisés
vq_diProdConsumedAccCount
DINT
Quantité cumulée des
consommables utilisés
vq_diProdProcessedId
DINT
ID du produit traité
vq_sProdProcessedName
STRING
[GPL.Gc_uiMaxLengthO
fParameterName]
Nom du produit traité
vq_sProdProcessedUnit
STRING [80]
Unité du produit traité
vq_diProdProcessedCount
DINT
Quantité de produits traités
vq_diProdProcessedAccCount
DINT
Quantité cumulée de
produits traités
vq_diProdDefectiveId
DINT
ID du produit non conforme
vq_sProdDefectiveName
STRING
[GPL.Gc_uiMaxLengthO
fParameterName]
Nom du produit non
conforme
vq_sProdDefectiveUnit
STRING [5]
Unité du produit non
conforme
vq_diProdDefectiveCount
DINT
Quantité de produits non
conformes
vq_diProdDefectiveAccCount
DINT
Quantité cumulée de
produits non conformes
vq_diModeCurrentTime
DINT
Durée actuelle dans
chaque mode de
fonctionnement.
vq_diModeCumulativeTime
DINT
Durée cumulée dans
chaque mode de
fonctionnement.
vq_diStateCurrentTime
DINT
Durée actuelle dans
chaque état.
vq_diStateCumulativetime
DINT
Durée cumulée dans
chaque état .
vq_diTimeSinceLastReset
DINT
Durée depuis la dernière
commande Reset
EIO0000002810 06/2019
Structures
Variable
Type de données
Description
vq_diStateCurrentTimeUndefined
DINT
Durée actuelle dans un
état non défini.
vq_diStateCurrentTimeClearing
DINT
Durée actuelle dans l'état
Clearing
vq_diStateCurrentTimeStopped
DINT
Durée actuelle dans l'état
Stopped
vq_diStateCurrentTimeStarting
DINT
Durée actuelle dans l'état
Starting
vq_diStateCurrentTimeIdle
DINT
Durée actuelle dans l'état
Idle
vq_diStateCurrentTimeSuspended
DINT
Durée actuelle dans
l'étatSuspended
vq_diStateCurrentTimeExecute
DINT
Durée actuelle dans l'état
Execute
vq_diStateCurrentTimeStopping
DINT
Durée actuelle dans l'état
Stopping
vq_diStateCurrentTimeAborting
DINT
Durée actuelle dans l'état
Aborting
vq_diStateCurrentTimeAborted
DINT
Durée actuelle dans l'état
Aborted
vq_diStateCurrentTimeHolding
DINT
Durée actuelle dans l'état
Holding
vq_diStateCurrentTimeHeld
DINT
Durée actuelle dans l'état
Held
vq_diStateCurrentTimeUnholding
DINT
Durée actuelle dans l'état
Un-Holding
vq_diStateCurrentTimeSuspending
DINT
Durée actuelle dans
l'étatSuspending
vq_diStateCurrentTimeUnsuspending
DINT
Durée actuelle dans
l'étatUn-Suspending
vq_diStateCurrentTimeResetting
DINT
Durée actuelle dans
l'étatResetting
vq_diStateCurrentTimeCompleting
DINT
Durée actuelle dans
l'étatCompleting
vq_diStateCurrentTimeComplete
DINT
Durée actuelle dans
l'étatComplete
vq_diStateCumulativeTimeUndefined
DINT
Durée cumulée dans un
état non défini.
vq_diStateCumulativeTimeClearing
DINT
Durée cumulée dans l'état
Clearing
EIO0000002810 06/2019
55
Structures
56
Variable
Type de données
Description
vq_diStateCumulativeTimeStopped
DINT
Durée cumulée dans l'état
Stopped
vq_diStateCumulativeTimeStarting
DINT
Durée cumulée dans l'état
Starting
vq_diStateCumulativeTimeIdle
DINT
Durée cumulée dans l'état
Idle
vq_diStateCumulativeTimeSuspended
DINT
Durée cumulée dans l'état
Suspended
vq_diStateCumulativeTimeExecute
DINT
Durée cumulée dans l'état
Execute
vq_diStateCumulativeTimeStopping
DINT
Durée cumulée dans l'état
Stopping
vq_diStateCumulativeTimeAborting
DINT
Durée cumulée dans l'état
Aborting
vq_diStateCumulativeTimeAborted
DINT
Durée cumulée dans l'état
Aborted
vq_diStateCumulativeTimeHolding
DINT
Durée cumulée dans l'état
Holding
vq_diStateCumulativeTimeHeld
DINT
Durée cumulée dans l'état
Held
vq_diStateCumulativeTimeUnholding
DINT
Durée cumulée dans l'état
Un-Holding
vq_diStateCumulativeTimeSuspending
DINT
Durée cumulée dans l'état
Suspending
vq_diStateCumulativeTimeUnsuspending DINT
Durée cumulée dans l'état
Un-Suspending
vq_diStateCumulativeTimeResetting
DINT
Durée cumulée dans l'état
Resetting
vq_diStateCumulativeTimeCompleting
DINT
Durée cumulée dans l'état
Completing
vq_diStateCumulativeTimeComplete
DINT
Durée cumulée dans l'état
Complete
vq_xStateClearingExistent
BOOL
TRUE : l'état Clearing
existe
vq_xStateStoppedExistent
BOOL
TRUE : l'état Stopped
existe
vq_xStateStartingExistent
BOOL
TRUE : l'état Starting
existe
vq_xStateIdleExistent
BOOL
TRUE : l'état Idle existe
EIO0000002810 06/2019
Structures
Variable
Type de données
Description
vq_xStateSuspendedExistent
BOOL
TRUE : l'état Suspended
existe
vq_xStateExecuteExistent
BOOL
TRUE : l'état Execute
existe
vq_xStateStoppingExistent
BOOL
TRUE : l'état Stopping
existe
vq_xStateAbortingExistent
BOOL
TRUE : l'état Aborting
existe
vq_xStateAbortedExistent
BOOL
TRUE : l'état Aborted
existe
vq_xStateHoldingExistent
BOOL
TRUE : l'état Holding
existe
vq_xStateHeldExistent
BOOL
TRUE : l'état Held existe
vq_xStateUnholdingExistent
BOOL
TRUE : l'état Un-Holding
existe
vq_xStateSuspendingExistent
BOOL
TRUE : l'état Suspending
existe
vq_xStateUnsuspendingExistent
BOOL
TRUE : l'état UnSuspending existe
vq_xStateResettingExistent
BOOL
TRUE : l'état Resetting
existe
vq_xStateCompletingExistent
BOOL
TRUE : l'état Completing
existe
vq_xStateCompleteExistent
BOOL
TRUE : l'état Complete
existe
viq_diIndexAlarm
DINT
Index de tableau des
alarmes actives
viq_diIndexAlarmHistory
DINT
Index de tableau de
l'historique des alarmes
actives
viq_diIndexProdConsumed
DINT
Index de consommable
utilisé
viq_diIndexProdProcessed
DINT
Index de produit traité
viq_diIndexProdDefective
DINT
Index de produit non
conforme
viq_diIndexAdminParameter
DINT
Index de paramètre
d'administration
viq_diIndexMode
DINT
Index de mode de
fonctionnement
EIO0000002810 06/2019
57
Structures
Variable
Type de données
Description
viq_diIndexWarning
DINT
Index du tableau des
conseils actifs
vq_astWarning
ARRAY [0..9] OF
ST_Alarm
Tableau de la taille donnée
pour le code et les
messages de conseil de la
machine
vq_audiBgColorAlarm
ARRAY [0..10] OF UDINT
Variables de contrôle de la
couleur d’arrière-plan des
alarmes sur l’affichage
FR_Alarm
(voir page 115).
vq_audiBgColorAlarmHistory
ARRAY [0..10] OF UDINT
Variables de contrôle de la
couleur d’arrière-plan des
alarmes sur l’affichage
FR_AlarmHistory
(voir page 116).
vq_audiBgColorAlarmWarning
ARRAY [0..9] OF UDINT
Variables de contrôle de la
couleur d’arrière-plan des
conseils de l’affichage
FR_Warning
(voir page 125).
Utilisé par


58
FB_VisController
Cadres de visualisation
EIO0000002810 06/2019
Structures
Sous-chapitre 3.3
Sous-Structures
Sous-Structures
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
ST_Alarm
60
ST_CountDescrip
61
ST_Descriptor
62
ST_EquipmentInterlock
63
ST_Ingredient
64
ST_Interface
65
ST_Product
66
ST_StateInfo
67
ST_Timestamp
68
EIO0000002810 06/2019
59
Structures
ST_Alarm
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_Alarm est une collection de balises nécessaires pour décrire un événement (par
exemple, les alarmes ou les conseils).
Éléments de la structure
Variable
Type de données
Description
ID
DINT
Identificateur unique de l’événement
Value
DINT
Valeur associée à l’événement pour l’ajout
d’informations ou pour détailler les
informations de l’ID d’événement ID.
Message
STRING[GPL.Gc_uiMaxLen Message associé à l’événement
gthOfAlarmMessage]
TimeEvent(1)
ST_TimeStamp
TimeAck(2)
ST_TimeStamp
Horodatage de l’acquittement de
l’événement
Trigger
BOOL
TRUE : indique que l’événement est actif.
(voir page 68)
Horodatage (type de données ISO)
indiquant l’heure de l’événement
Category
DINT
Catégorie de l’événement
DateTime
DateTimeArray
Date et heure de l’événement
(voir page 69)
AckDateTime
DateTimeArray
Date et heure de l’acquittement de
l’événement
(1) La variable a été remplacée par DateTime dans ANSI/ISA TR88.00.02-2015 mais reste dans cette
bibliothèque pour des raisons de compatibilité.
(2) La variable a été remplacée par AckDateTime dans ANSI/ISA TR88.00.02-2015 mais reste dans cette
bibliothèque pour des raisons de compatibilité.
Utilisé par



60
FC_SetAlarm
ST_Administration
ST_VisInterface
EIO0000002810 06/2019
Structures
ST_CountDescrip
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_CountDescrip est une collection de balises utilisées pour décrire une valeur de
compteur.
Éléments de la structure
Variable
Type de données
Description
ID
DINT
ID de CountDescrip
Name
STRING[GPL.Gc_uiMaxLe
ngthOfParameterName]
Nom de CountDescrip
Unit
STRING[5]
Chaîne d'unités de CountDescrip
Count
DINT
Valeur de comptage de CountDescrip
AccCount
DINT
Valeur de comptage cumulée de
CountDescrip
Utilisé par

ST_Administration
EIO0000002810 06/2019
61
Structures
ST_Descriptor
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_Descriptor est le type de données utilisé pour les balises de paramètres de
PackTags. Il sert de descripteur de la balise de paramètre correspondante.
Éléments de la structure
Variable
Type de données
Description
ID
DINT
ID du paramètre
Name
STRING[GPL.Gc_uiMaxLeng
thOfParameterName]
Nom du paramètre
Unit
STRING[5]
Chaîne d'unités de paramètre
Value
REAL
Valeur du paramètre
Utilisé par






62
ST_Administration
ST_Commmand
ST_Status
ST_Ingredient
ST_Interface
ST_Product
EIO0000002810 06/2019
Structures
ST_EquipmentInterlock
Présentation
Type
Structure de données
Disponible à partir de
V1.1.0.0
Description
La structure ST_EquipmentInterlock indique si le système aval ou amont est à l’origine de
l’état suspendu d’une machine.
Éléments de la structure
Variable
Type de données
Description
Blocked
BOOL
TRUE : indique qu’un système en aval ne peut pas accepter le produit.
Starved
BOOL
TRUE : indique qu’un système en amont ne peut pas fournir le produit.
Utilisé par

ST_Status
EIO0000002810 06/2019
63
Structures
ST_Ingredient
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_Ingredient est une collection de balises utilisées pour décrire les matériaux
bruts nécessaires pour le produit.
Éléments de la structure
Variable
Type de données
Description
IngredientID
DINT
Nombre arbitraire associé au matériau brut, ou
ingrédient d’un numéro de produit particulier.
Parameter
ARRAY
[0..Gc_uiNumberOfIngredientPa
rameter (voir page 75)] OF
ST_Descriptor (voir page 62)
Le tableau structuré décrit les ingrédients spécifiques ou
les matériaux bruts, qui sont nécessaires ou étaient
utilisés par la machine pour fabriquer le produit
spécifique.
Utilisé par

64
ST_Product
EIO0000002810 06/2019
Structures
ST_Interface
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_Interface est une collection de balises utilisées pour décrire les valeurs des
commandes de communication entre les machines via les structures PackTag.
Éléments de la structure
Variable
Type de données
Description
Number
DINT
Nombre d’identification de la machine
amont ou aval
ControlCmdNumber
DINT
Numéro de la commande de contrôle de la
machine en amont ou aval
CmdValue
DINT
Valeur de la commande associée au
numéro de commande de contrôle.
Parameter
ARRAY
[0..GPL.Gc_uiNumOfParam
(voir page 75)] OF
ST_Descriptor
Tableau de ST_Descriptor
(voir page 62), balises de paramètres
associées à l’interface distante
Utilisé par


ST_Commmand
ST_Status
EIO0000002810 06/2019
65
Structures
ST_Product
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_Product est une collection de balises utilisées pour décrire le produit que la
machine fabrique.
Éléments de la structure
Variable
Type de données
Description
ProductID
DINT
ID du produit, utilisé pour
indiquer à la machine le produit
qu’elle fabrique.
ProcessVariable
ARRAY
[0..GPL.Gc_uiNumberOfProcessVariable]
OF ST_Descriptor
Le tableau structuré décrit les
variables de processus
spécifiques, qui sont
nécessaires ou étaient utilisées
par la machine pour traiter le
produit spécifique.
Ingredients
ARRAY
[0..GPL.Gc_uiNumberOfIngredients
(voir page 75)] OF ST_Ingredient
Le tableau structuré contient
les informations relatives aux
matériaux bruts, qui sont
nécessaires ou étaient utilisés
par la machine pour fabriquer
le produit spécifique.
(voir page 64)
Utilisé par


66
ST_Commmand
ST_Status
EIO0000002810 06/2019
Structures
ST_StateInfo
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_StateInfo indique si l'état est défini pour un mode de fonctionnement donné et
si un changement de mode de fonctionnement est possible. L'information est utilisée pour
initialiser le gestionnaire des modes de fonctionnement.
Éléments de la structure
Variable
Type de données
Description
xStateExistent
BOOL
TRUE : Indique que l'état est défini pour le mode de
fonctionnement donné.
xModeChangePossible
BOOL
TRUE : Indique qu'un changement de mode de
fonctionnement est possible lorsque cet état est actif.
Utilisé par

ST_UnitModeDefinition
EIO0000002810 06/2019
67
Structures
ST_Timestamp
Présentation
Type
Structure de données
Disponible à partir de
V1.0.1.0
Description
La structure ST_TimeStamp contient la date et l'heure.
NOTE : La structure est devenue obsolète avec la révision 2015 de ANSI/ISA TR88.00.02.
Cependant, il est conservé dans la bibliothèque afin de rester compatible avec les applications qui
ont été créées avec les versions antérieures de cette bibliothèque.
Éléments de la structure
Variable
Type de données
Description
AlmDate
DATE
Contient l’intervalle en secondes depuis le
01.01.1970, 00:00.
AlmTime
TOD
Contient l’intervalle en millisecondes depuis
00:00.
Utilisé par


68
ST_Administration
ST_Alarm
EIO0000002810 06/2019
EcoStruxure Machine Expert
Alias - DateTimeArray
EIO0000002810 06/2019
Chapitre 4
Alias - DateTimeArray
Alias - DateTimeArray
DateTimeArray
Présentation
Type
Structure de données
Disponible à partir de
V1.1.0.0
Description
L’alias DateTimeArray représente un type de données complexe, qui est utilisé dans cette
bibliothèque.
Éléments de la structure
Variable
Type de données
Type de données
DateTimeArray
ARRAY [0..6] OF DINT
Les éléments de données associés à la date
et à l’heure doivent être au format ISO 8601.
[0] = année, [1] = mois, [2] = jour, [3] = heure,
[4] = min, [5] = sec, [6] = µs (fraction de
secondes)
EIO0000002810 06/2019
69
Alias - DateTimeArray
70
EIO0000002810 06/2019
EcoStruxure Machine Expert
Variables globales
EIO0000002810 06/2019
Partie III
Variables globales
Variables globales
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
5
Liste des constantes globales
73
6
Liste des paramètres globaux
75
EIO0000002810 06/2019
71
Variables globales
72
EIO0000002810 06/2019
EcoStruxure Machine Expert
Liste des constantes globales
EIO0000002810 06/2019
Chapitre 5
Liste des constantes globales
Liste des constantes globales
GCL
Présentation
Type :
Constantes globales
Disponible à partir de la version :
V1.0.1.0
Description
La liste des constantes globales contient les constantes globales de la bibliothèque PackML.
Constantes globales
Variable
Type de données
Gc_sLibraryVersion
STRING[80]
Vx.x.x.0
Version de bibliothèque
Gc_uiMaxNumberOfStates
UINT
17
Nombre maximum d'états
1
Valeur
Description
1
Cette valeur varie pour indiquer la version de la bibliothèque.
EIO0000002810 06/2019
73
Liste des constantes globales
74
EIO0000002810 06/2019
EcoStruxure Machine Expert
Liste des paramètres globaux
EIO0000002810 06/2019
Chapitre 6
Liste des paramètres globaux
Liste des paramètres globaux
GPL
Présentation
Type :
Paramètres globaux
Disponible à partir de :
V1.0.1.0
Description
La liste des paramètres globaux contient les paramètres globaux de la bibliothèque PackML qui
peuvent être remplacés pour s'adapter au projet dans le gestionnaire de bibliothèque.
Paramètres globaux
Variable
Type de
données
Gc_uiNumberOfInterface
UINT[1..65535] 2
Nombre d'interfaces distantes,
détermine le tableau
ST_Command.RemoteInterface
Gc_uiNumOfParam
UINT[1..65535] 10
Nombre de paramètres pour une
interface, détermine le tableau
ST_Interface.Parameter
Gc_uiNumOfAdminParameter
UINT[1..65535] 100
Nombre de paramètres pour
l’interface locale, détermine le
tableau
ST_Administration.Parameter
Gc_uiNumberOfParameter
UINT[1..65535] 50
Nombre de paramètres dans une
structure d’état et de commande,
détermine les tableaux
ST_Status.Parameter et
ST_Command.Parameter
Gc_uiNumberOfProducts
UINT[1..65535] 3
Nombre de produits que la machine
peut traiter, détermine les tableaux
ST_Status.Product et
ST_Command.Product
EIO0000002810 06/2019
Valeur
Description
75
Liste des paramètres globaux
Variable
Type de
données
Valeur
Gc_uiNumberOfConsumedProducts
UINT[1..65535] 10
Nombre de produits utilisés par la
machine, détermine le tableau
ST_Administration.Prod
ConsumedCount
Gc_uiNumberOfProcessedProducts
UINT[1..65535] 10
Nombre de produits traités par la
machine, détermine le tableau
ST_Administration.Prod
ProcessedCount
Gc_uiNumberOfDefectiveProducts
UINT[1..65535] 10
Nombre de produits marqués comme
non conformes dans la machine de
production, détermine le tableau
ST_Administration.Prod
DefectiveCount
Gc_uiNumberOfProcessVariable
UINT[1..65535] 50
Nombre de variables de processus
par produit, détermine le tableau
ST_Product.ProcessVariable
Gc_uiNumberOfIngredientParameter UINT[1..65535] 50
Description
Nombre de paramètres par
ingrédient, détermine le tableau
ST_Ingredients.Parameter
Gc_uiNumberOfIngredients
UINT[1..65535] 10
Nombre d'ingrédients par produit,
détermine le tableau
ST_Product.Ingredients
Gc_uiMaxNumberOfAlarms
UINT[1..65535] 100
Nombre maximum d'alarmes,
détermine le tableau
ST_Administration.Alarm
Gc_uiNumberOfAlarmHistory
UINT[1..65535] 100
Nombre maximum d'alarmes dans
l’historique, détermine le tableau
ST_Administration.AlarmHist
ory
Gc_uiMaxNumberOfModes
UINT[1..65535] 10
Nombre maximum de modes
Gc_uiMaxLengthOfParameterName
UINT[1..80]
Longueur maximale du nom de
paramètre dans ST_Descriptor
Gc_uiMaxNumberOfWarnings
UINT[1..65535] 100
Nombre maximal de conseils,
détermine le tableau
ST_Administration.Warning
Gc_uiMaxLengthOfAlarmMessage
UINT[1..255]
80
Longueur maximale d’un message
d’alarme défini avec ST_Alarm
Gc_udiBgColorAlarmActive
UDINT
16#FFCFCF
Utilisé pour la visualisation, code de
couleurs RGB pour les alarmes
actives, 16#FFCFCF = rouge clair
76
80
EIO0000002810 06/2019
Liste des paramètres globaux
Variable
Type de
données
Valeur
Description
Gc_udiBgColorAlarmInactive
UDINT
16#FFFF80
Utilisé pour la visualisation, code de
couleurs RGB pour les alarmes
inactives et non acquittées,
16#FFFF80 = jaune clair
Gc_udiBgColorAlarmAcknowledged
UDINT
16#AAD7FF
Utilisé pour la visualisation, code de
couleurs RGB pour les alarmes
inactives et acquittées, 16#AAD7FF
= bleu clair
Gc_udiBgColorAlarmHistoryUnackno UDINT
wledged
16#FFFF80
Utilisé pour la visualisation, code de
couleurs RGB pour les alarmes non
acquittées, 16#FFFF80 = jaune clair
Gc_udiBgColorWarningActive
UDINT
16#FFCFCF
Utilisé pour la visualisation, code de
couleurs RGB pour les alarmes
actives, 16#FFCFCF = rouge clair
Gc_udiBgColorWarningInactive
UDINT
16#FFFF80
Utilisé pour la visualisation, code de
couleurs RGB pour les alarmes
inactives et non acquittées,
16#FFFF80 = jaune clair
Gc_udiBgColorWarningAcknowledged UDINT
16#AAD7FF
Utilisé pour la visualisation, code de
couleurs RGB pour les alarmes
inactives et acquittées, 16#AAD7FF
= bleu clair
EIO0000002810 06/2019
77
Liste des paramètres globaux
78
EIO0000002810 06/2019
EcoStruxure Machine Expert
Unités d'organisation de programme (POU)
EIO0000002810 06/2019
Partie IV
Unités d'organisation de programme (POU)
Unités d'organisation de programme (POU)
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
7
Blocs fonction
81
8
Fonctions
91
EIO0000002810 06/2019
79
Unités d'organisation de programme (POU)
80
EIO0000002810 06/2019
EcoStruxure Machine Expert
Blocs fonction
EIO0000002810 06/2019
Chapitre 7
Blocs fonction
Blocs fonction
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
FB_DataManagement
82
FB_ModeManager
85
FB_VisController
88
EIO0000002810 06/2019
81
Blocs fonction
FB_DataManagement
Présentation de
Type :
Bloc fonction
Disponible à partir de :
V1.0.1.0
Description fonctionnelle
Le bloc fonction FB_DataManagement est utilisé pour enregistrer certaines données de la
machine et mettre à jour les balises associées dans ST_Administration (voir page 43). La
structure globale de type ST_Administration est transmise au bloc fonction via l’entrée
i_pstAdmin.
Selon le mode de l’unité (i_diUnitModeCurrent) et l’état de la machine
(i_diStateCurrent), les valeurs des temporisateurs correspondants sont mises à jour. Les
valeurs du mode de contrôle et de l’état de la machine correspondent aux définitions des
énumérations ET_Modes (voir page 35) et ET_States (voir page 38).
Les différents compteurs de produits sont déclenchés par les signaux correspondants dans les
tableaux fournis par les entrées i_ax…Product.
Une réinitialisation globale des valeurs des temporisateurs et compteurs peut être déclenchée via
l’entrée i_xResetTimerCounter.
NOTE : Les valeurs des compteurs fournies par la balise AccCount dans la structure ST_CountDescrip sont fournies comme valeurs de compteurs non réinitialisés, elles ne sont donc pas
réinitialisées par ce bloc fonction.
La conservation des données après des événements externes, par exemple, un démarrage à
chaud du contrôleur, n’est pas couverte par cette fonction.
82
EIO0000002810 06/2019
Blocs fonction
Les balises d’administration suivantes sont traitées par le bloc fonction :
 ST_Administration.ModeCurrentTime[#]
 ST_Administration.ModeCummulativeTime[#]
 ST_Administration.StateCurrentTime[#,#]
 ST_Administration.StateCummulativeTime[#,#]
 ST_Administration.ProdConsumedCount[#]
 ST_Administration.ProdProcessedCount[#]
 ST_Administration.ProdDefectiveCount[#]
 ST_Administration.AccTimeSinceReset
 ST_Administration.AlarmExtent
 ST_Administration.AlarmHistoryExtent
 ST_Administration.WarningExtent
 ST_Administration.PLCDateTime
 ST_Administration.PACDateTime
Interface
Entrée
Type de données
Description
i_xEnable
BOOL
Activation et initialisation du bloc fonction.
i_xResetTimerCounter
BOOL
Sur un front montant, les valeurs des temporisateurs et
compteurs sont réinitialisées.
i_diUnitModeCurrent
DINT
Le mode de fonctionnement actuel est transmis au bloc
fonction via cette entrée.
Status.UnitModeCurrent devrait être attribué à
cette entrée.
i_diStateCurrent
DINT
L’état actuel de la machine est transmis au bloc fonction
via cette entrée.
Status.StateCurrent devrait être attribué à cette
entrée.
i_axConsumedProduct
ARRAY
[1..GPL.Gc_uiNumberOf
ConsumedProducts] OF
BOOL
Sur un front montant d’une variable booléenne dans le
tableau, la valeur du compteur correspondant dans la
balise d’administration est augmentée.
i_axProcessedProduct
ARRAY
[1..GPL.Gc_uiNumberOf
ConsumedProducts] OF
BOOL
Sur un front montant d’une variable booléenne dans le
tableau, la valeur du compteur correspondant dans la
balise d’administration est augmentée.
i_axDefectiveProduct
ARRAY
[1..GPL.Gc_uiNumberOf
DefectiveProducts]
OF BOOL
Sur un front montant d’une variable booléenne dans le
tableau, la valeur du compteur correspondant dans la
balise d’administration est augmentée.
i_pstAdmin
POINTER TO
ST_Administration
Via cette entrée, l’adresse du pointeur sur les balises
d’administration est transmise au bloc fonction.
EIO0000002810 06/2019
83
Blocs fonction
Pour empêcher tout accès non autorisé, par exemple un accès du pointeur dans la mémoire,
vérifiez que le pointeur pointe sur une variable de type ST_Administration.
Il arrive que la commande Changement en ligne déplace des variables dans la mémoire. Une fois
décalées, les variables POINTER risquent de pointer vers des emplacements incorrects dans la
mémoire. Par conséquent, vérifiez qu'aucun pointeur n'est conservé d'un cycle à l'autre, mais
réattribué à chaque cycle.
AVERTISSEMENT
FONCTIONNEMENT INATTENDU DE L'EQUIPEMENT
Attribuez la valeur d’une ou plusieurs variables de type POINTER TO avant sa première
utilisation dans un bloc fonction, ainsi qu'à chaque cycle suivant.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
84
Sortie
Type de données
Description
q_xActive
BOOL
Si cette sortie est définie sur TRUE, le bloc
fonction est actif.
q_xError
BOOL
Si TRUE est attribué à cette sortie, une erreur a
été détectée. Consultez ET_Result
(voir page 36).
q_etResult
ET_Result
Énumération avec le résultat.
q_sResultMsg
STRING[80]
Message de résultat supplémentaire.
EIO0000002810 06/2019
Blocs fonction
FB_ModeManager
Présentation
Type :
Bloc fonction
Disponible à partir de :
V1.0.1.0
Description fonctionnelle
Le bloc fonction FB_ModeManager peut être utilisé pour gérer les demandes de changement de
mode dans une application de machine basée sur le modèle d’états (voir page 26) PackML. A
partir de la définition des modes de l’unité, le bloc fonction vérifie si le changement de mode
demandé est possible ou non.
La définition des modes de l’unité inclut la définition des états possibles de chaque mode de
contrôle disponible et l’état à partir duquel un changement de mode est possible. Pour l’exécution
de la définition du mode de l’unité, les fonctions auxiliaires FC_InitStateModelStateChange
(voir page 96) et FC_InitStateModelExistingStates (voir page 99) peuvent être utilisées.
Enfin, la définition du mode de l’unité doit être fournie dans un tableau de type ST_UnitModeDefinition. Les index du tableau correspondent à la valeur numérique des modes de contrôle
disponibles (consultez ET_Modes (voir page 35)).
La définition du mode de l’unité doit être effectuée au début (phase d’initialisation) d’une
application, avant le premier appel avec i_xEnable = TRUE de l’instance du bloc fonction
FB_ModeManager.
Sur un front montant de l’entrée i_xEnable, la phase d’initialisation du bloc fonction FB_ModeManager est exécutée. Lors de cette phase, les définitions des états de l’unité pour chaque mode
de contrôle disponible sont vérifiées pour déterminer si un modèle d’état conforme à PackML peut
être créé. Si l’initialisation est correctement effectuée, le bloc fonction est prêt à fonctionner, ce qui
est indiqué par la sortie q_xReady.
EIO0000002810 06/2019
85
Blocs fonction
Lors de l’initialisation, les conditions suivantes sont vérifiées :
 Nombre maximal d'états : 17
 Les états Execute et Stopped sont des états obligatoires pour chaque mode de contrôle.
 L’état Completing requiert l’état Complete.
 Les états Holding et Unholding requièrent dans chaque cas l’état Held.
 Les états Suspending et UnSuspending requièrent dans chaque cas l’état Suspended.
 Les états Aborting et Clearing requièrent dans chaque cas l’état Aborted.
 Les états Resetting et Idle peuvent être utilisés uniquement combinés.
Durant le fonctionnement normal, le bloc fonction vérifie la demande de changement de mode, qui
est indiquée par les entrées i_diUnitMode et i_xUnitModeChange, en fonction du mode de
contrôle actuel (iq_diUnitModeCurrent) et de l’état actuel (i_diStateCurrent). Seul un
front montant sur i_sUnitModeChange déclenche l’exécution du bloc fonction. Le résultat est
indiqué par les sorties q_diEnterMode et q_xModeChangeRequestRejected. Si le
changement de mode est autorisé, la sortie q_xModeChangeRequestRejected indique FALSE
et la sortie q_diEnterMode est mise à jour avec la valeur du mode demandé. Dans ce cas, les
étapes requises pour changer le mode de contrôle doivent être exécutées en fonction de votre
application. Ensuite les informations indiquant que le changement de mode a été exécuté doivent
être transmises au bloc fonction via l’entrée i_xModeChangeDone. Si l’entrée indique TRUE, la
variable liée à l’entrée/sortie iq_diUnitModeCurrent est mise à jour avec le mode de contrôle
demandé précédemment.
Interface
Entrée
Type de données
Description
i_xEnable
BOOL
Activation et initialisation du bloc fonction.
i_diNumberOfModes
DINT
Nombre de modes de fonctionnement
Si la valeur est modifiée, la réinitialisation du bloc fonction est
nécessaire.
i_diUnitMode
DINT
Mode de fonctionnement demandé
PackTag Command.UnitMode doit être appliqué à l’entrée.
i_xUnitModeChangeRequest
BOOL
Sur un front montant, le bloc fonction vérifie si un
changement de mode de fonctionnement est possible.
PackTag Command.UnitModeChangeRequest doit être
appliqué à l’entrée.
i_diStateCurrent
DINT
Etat actuel de la machine
PackTag Status.StateCurrent doit être appliqué à
l’entrée.
i_xModeChangeDone
BOOL
Retour d’information de l’application indiquant que le
changement de mode demandé a été exécuté. Sur un front
montant, la variable liée à iq_diUnitModeCurrent est
mise à jour en conséquence.
86
EIO0000002810 06/2019
Blocs fonction
Entrée
Type de données
Description
i_pstInitMode
POINTER TO
ST_UnitModeDe
finition
Via cette entrée, l’adresse du pointeur des définitions du
mode de l’unité est transférée au bloc fonction.*
* La définition du mode de l’unité fournit l’état de chaque
mode de fonctionnement disponible et doit être fourni dans
un tableau de ST_UnitModeDefinition. Les index du
tableau correspondent à la valeur numérique des modes de
contrôle disponibles (consultez ET_Modes (voir page 35)).
Par conséquent, le pointeur doit pointer sur l’index qui est
associé au mode de fonctionnement Producing, qui est le
premier mode.
(voir page 50)
Entrée/sortie
Type de données
Description
iq_diUnitModeCurrent
DINT
Via la variable liée à cette entrée/sortie, le bloc fonction obtient le
mode de fonctionnement actuel lors d’une demande de
changement, et il écrit le nouveau mode de fonctionnement une
fois le changement exécuté.
PackTag Status.UnitModeCurrent doit être appliqué à
l’entrée/sortie.
Sortie
Type de données
Description
q_xActive
BOOL
Si cette sortie est définie sur TRUE, le bloc fonction
est actif.
q_xError
BOOL
Si cette sortie est TRUE, une erreur a été détectée.
Consultez ET_Result (voir page 36).
q_xReady
BOOL
Si cette sortie est définie sur TRUE, le bloc fonction
est prêt à fonctionner.
q_etResult
ET_Result
Énumération avec le résultat.
q_sResultMsg
STRING[80]
Message de résultat supplémentaire.
q_xUnitModeRequested
BOOL
Renvoie l'entrée i_xUnitModeChangeRequest.
PackTag Status.UnitModeRequested doit être
appliqué à cette sortie.
q_diEnterMode
DINT
Indique le mode de fonctionnement pour lequel on
veut changer. Si le bloc fonction est désactivé, la
sortie est définie sur 0.
q_xModeChangeRequestRejected
BOOL
Tant que cette sortie indique TRUE, une demande
de changement de mode n’est pas autorisée par ce
bloc fonction et ne doit pas être effectuée.
EIO0000002810 06/2019
87
Blocs fonction
FB_VisController
Présentation
Type :
Bloc fonction
Disponible à partir de :
V1.0.1.0
Description fonctionnelle
Le FB_VisController permet de transférer des données (PackTags) de l’application dans la
structure de données de type ST_VisInterface qui est utilisée par les cadres de visualisation
fournis avec la bibliothèque PackML. De plus, le bloc fonction implémente des fonctions
permettant de contrôler l’apparence de la visualisation. Par exemple : le défilement dans la liste
d’alarmes et les couleurs d’arrière-plan des alarmes indiquant l’état.
Interface
88
Entrée
Type de données
Description
i_xEnable
BOOL
Activation et initialisation du bloc fonction.
i_pstStatus
POINTER TO ST_Status
Via cette entrée, l’adresse du pointeur sur
PackTags du type ST_Status
(voir page 46) est transféré au bloc fonction.
i_pstAdmin
POINTER TO
ST_Administration
Via cette entrée, l’adresse du pointeur su
PackTags du type ST_Administration
(voir page 43) est transférée au bloc
fonction.
i_diNumberOfModes
DINT
Nombre de modes de fonctionnement.
Si la valeur est modifiée, la réinitialisation du
bloc fonction est nécessaire.
EIO0000002810 06/2019
Blocs fonction
Entrée
Type de données
Description
i_pstInitMode
POINTER TO
ST_UnitModeDefinition
Via cette entrée, l’adresse du pointeur des
définitions du mode de l’unité est transférée
au bloc fonction.*
* La définition du mode de l’unité fournit
l’état de chaque mode de fonctionnement
disponible et doit être fourni dans un tableau
de ST_UnitModeDefinition. Les index
du tableau correspondent à la valeur
numérique des modes de contrôle
disponibles (consultez ET_Modes
(voir page 35)). Par conséquent, le pointeur
doit pointer sur l’index qui est associé au
mode de fonctionnement Production, qui est
le premier mode.
Entrée/sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Via cette entrée / sortie, la variable est
transmise au bloc fonction qui est lié aux
visualisations fournies dans la bibliothèque
PackML.
(voir page 53)
Sortie
Type de données
Description
q_xActive
BOOL
Si cette sortie est définie sur TRUE, le bloc
fonction est actif.
q_xReady
BOOL
Si cette sortie est définie sur TRUE, le bloc
fonction est prêt à fonctionner.
q_xError
BOOL
Si TRUE est attribué à cette sortie, une
erreur a été détectée.
q_etResult
ET_Result
Résultat. Consultez ET_Result
(voir page 36).
q_sResultMsg
EIO0000002810 06/2019
STRING[80]
Message de résultat supplémentaire.
89
Blocs fonction
90
EIO0000002810 06/2019
EcoStruxure Machine Expert
Fonctions
EIO0000002810 06/2019
Chapitre 8
Fonctions
Fonctions
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
FC_CheckCmd
92
FC_EtResultToString
94
FC_GetDateTimeAsArray
95
FC_InitStateModelChangeStates
96
FC_InitStateModelExistingStates
99
FC_SetAlarm
102
FC_SetWarning
104
EIO0000002810 06/2019
91
Fonctions
FC_CheckCmd
Présentation
Type :
Fonction
Disponible à partir de :
V1.0.4.0
Description fonctionnelle
La fonction FC_CheckCmd permet de vérifier la plausibilité d’une commande de transition d’état
(i_diCmd) dans l’état présent (i_diStateCurrent) de la machine. La vérification de la
plausibilité est effectuée en fonction de la définition du mode de l’unité
(i_stUnitModeDefinition), qui est fourni dans un tableau de type ST_UnitModeDefinition. Cela suppose que la définition du mode de l’unité a été validé (et correctement évalué)
par le bloc fonction FB_ModeManager.
Si la commande est évaluée comme plausible, la sortie q_xCommandAcknowledge indique
TRUE et l’état de la est fourni sur la sortie q_diStateRequested.
Le tableau suivant indique les états dans les lesquels les commandes sont prises en charge, ainsi
que l’état cible résultant, provenant de la définition des états de l’unité.
État initial
Commande de transition
État cible
-
Undefined
Non défini, la sortie q_xCommandAcknowledge est
FALSE.
Execute
Reset
Resetting, si Complete et Completing n’existent pas.
Complete
Reset
Resetting, ou
Starting, si Resetting n’existe pas, ou
Execute, si Resetting et Starting n'existent.
Idle
Start
Starting, ou
Execute, si Starting n'existe pas.
Stopped
Start (commande
Starting ou Execute, si Starting n’existe pas.
traitée uniquement si Idle
n’existe pas)
Stopped
92
EIO0000002810 06/2019
Fonctions
État initial
Commande de transition
État cible
N'importe quel état, sauf
Aborted, Aborting, Clearing,
Stopping, et Stopped.
Stop
Stopping, ou
Stopped, si Stopping n'existe pas.
Execute
Hold
Holding, ou
Held si Holding n’existe pas.
Held
UnHold
Un-Holding, ou
Execute si Un-Holding n’existe pas.
Execute
Suspend
Suspending, ou
Suspended si Suspending n’existe pas.
Suspended
UnSuspend
Un-Suspending, ou
Execute si Un-Suspending n’existe pas.
N'importe quel état, sauf
Aborted et Aborting.
Abort
Aborting, ou
Aborted si Aborting n’existe pas.
Aborted
Clear
Clearing, ou
Stopped si Clearing n’existe pas.
Interface
Entrées
Type de données
Description
i_diCmd
DINT
Commande de transition d’état. PackTag
ST_Command.CntrlCmd doit être appliqué à
l’entrée.
i_diStateCurrent
DINT
Etat présent de la machine. PackTag
ST_Status.StateCurrent doit être
appliqué à l’entrée.
i_stUnitModeDefinition
ST_UnitModeDefinition
Définition du mode de fonctionnement
présent. PackTag
ST_Status.UnitModeCurrent doit être
utilisé comme variable d’index du tableau de
ST_UnitModeDefinition.
Sortie
Type de données
Description
q_xCommandAcknowledge
BOOL
Indique TRUE si la commande indiquée est
plausible.
q_diStateRequested
DINT
Fournit l’état cible si la commande indiquée
est plausible.
EIO0000002810 06/2019
93
Fonctions
FC_EtResultToString
Présentation
Type :
Fonction
Disponible à partir de :
V1.0.1.0
Tâche
Convertir un élément d'énumération de type ET_Result en une valeur de chaîne
Description fonctionnelle
En utilisant la fonction FC_EtResultToString, vous pouvez convertir un élément d'énumération
de type ET_Result en une valeur de chaîne.
Interface
Entrée
Type de données
Description
i_etResult
ET_Result
Énumération avec le résultat.
Sortie
Type de données
Description
q_etResult
ET_Result
Énumération avec le résultat.
Valeur retournée
94
Type de données
Description
STRING(80)
Le ET_Result converti en valeur de chaîne.
EIO0000002810 06/2019
Fonctions
FC_GetDateTimeAsArray
Présentation
Type :
Fonction
Disponible à partir de :
V1.1.0.0
Description fonctionnelle
La fonction FC_GetDateTimeAsArray permet d’obtenir l’horodatage (RTC) du contrôleur et de
le convertir en données de type DateTimeArray (voir page 69).
La valeur de retour de la fonction est de type DateTimeArray et elle représente la valeur de
l’horodateur du contrôleur.
EIO0000002810 06/2019
95
Fonctions
FC_InitStateModelChangeStates
Présentation
Type :
Fonction
Disponible à partir de :
V1.0.1.0
Tâche
Utilisez la fonction FC_InitStateModelChangeStates pour définir, pour un mode de fonctionnement, de quel état un changement de mode de fonctionnement est possible.
Description fonctionnelle
A l'aide de l'entrée/sortie iq_stStateModel, une structure de type ST_UnitModeDefinition
est transmise à la fonction.
Utilisez les 17 entrées de type BOOL, qui reflètent les états d'un mode de fonctionnement, pour
définir les états desquels un changement de mode de fonctionnement est possible.
96
EIO0000002810 06/2019
Fonctions
TRUE indique qu'un changement de mode de fonctionnement est possible ; FALSE indique que
cet état ne permet pas de tenter un changement de mode de fonctionnement.
Suite à l'initialisation réussie d'un mode de fonctionnement, la fonction fournit un TRUE.
Interface
Entrée
Type de données
Description
i_xStopping
BOOL
Si TRUE est attribué à cette entrée, l'état
Stopping est autorisé à changer le mode de
fonctionnement.
i_xStopped
BOOL
Si TRUE est attribué à cette entrée, l'état
Stopped est autorisé à changer le mode de
fonctionnement.
i_xResetting
BOOL
Si TRUE est attribué à cette entrée, l'état
Resetting est autorisé à changer le mode de
fonctionnement.
i_xIdle
BOOL
Si TRUE est attribué à cette entrée, l'état
Idle est autorisé à changer le mode de
fonctionnement.
i_xStarting
BOOL
Si TRUE est attribué à cette entrée, l'état
Starting est autorisé à changer le mode de
fonctionnement.
i_xExecute
BOOL
Si TRUE est attribué à cette entrée, l'état
Execute est autorisé à changer le mode de
fonctionnement.
i_xHolding
BOOL
Si TRUE est attribué à cette entrée, l'état
Holding est autorisé à changer le mode de
fonctionnement.
i_xHeld
BOOL
Si TRUE est attribué à cette entrée, l'état
Held est autorisé à changer le mode de
fonctionnement.
i_xUnHolding
BOOL
Si TRUE est attribué à cette entrée, l'état
Un-Holding est autorisé à changer le mode
de fonctionnement.
i_xSuspending
BOOL
Si TRUE est attribué à cette entrée, l'état
Suspending est autorisé à changer le mode
de fonctionnement.
i_xSuspended
BOOL
Si TRUE est attribué à cette entrée, l'état
Suspended est autorisé à changer le mode
de fonctionnement.
i_xUnSuspending
BOOL
Si TRUE est attribué à cette entrée, l'état
Un-Suspending est autorisé à changer le
mode de fonctionnement.
EIO0000002810 06/2019
97
Fonctions
Entrée
Type de données
Description
i_xCompleting
BOOL
Si TRUE est attribué à cette entrée, l'état
Completing est autorisé à changer le mode
de fonctionnement.
i_xComplete
BOOL
Si TRUE est attribué à cette entrée, l'état
Complete est autorisé à changer le mode de
fonctionnement.
i_xAborting
BOOL
Si TRUE est attribué à cette entrée, l'état
Aborting est autorisé à changer le mode de
fonctionnement.
i_xAborted
BOOL
Si TRUE est attribué à cette entrée, l'état
Aborted est autorisé à changer le mode de
fonctionnement.
i_xClearing
BOOL
Si TRUE est attribué à cette entrée, l'état
Clearing est autorisé à changer le mode de
fonctionnement.
Entrée/sortie
Type de données
Description
iq_stStateModel
ST_UnitModeDefinition
Cette structure renvoie le mode de
fonctionnement qui doit être initialisé.
Valeur retournée
98
Type de données
Description
BOOL
TRUE si l'initialisation du mode de fonctionnement est un succès.
EIO0000002810 06/2019
Fonctions
FC_InitStateModelExistingStates
Présentation
Type :
Fonction
Disponible à partir de :
V1.0.1.0
Tâche
Utilisez la fonction FC_InitStateModelExistingStates pour initialiser le modèle d'état et
définir un mode de fonctionnement. En attribuant TRUE ou FALSE aux entrées, vous sélectionnez
les états qui feront partie de votre modèle d'état.
Description fonctionnelle
A l'aide de l'entrée/sortie iq_stStateModel, une structure de type ST_UnitModeDefinition
est transmise à la fonction.
EIO0000002810 06/2019
99
Fonctions
Cette structure renvoie un mode de fonctionnement. En utilisant les 18 entrées de type BOOL qui
reflètent chacune l'existence d'un mode de fonctionnement et ses états, il est possible de définir
quels états constituent le mode de fonctionnement en question.
TRUE signifie que l'état existe ; FALSE signifie que l'état n'existe pas.
Suite à l'initialisation réussie d'un mode de fonctionnement, la fonction fournit un TRUE.
Interface
100
Entrée
Type de données
Description
i_xModeExistent
BOOL
Si TRUE est attribué à cette entrée, le mode
de fonctionnement est disponible.
i_xStopping
BOOL
Si TRUE est attribué à cette entrée, l'état
Stopping est disponible.
i_xStopped
BOOL
Si TRUE est attribué à cette entrée, l'état
Stopped est disponible.
i_xResetting
BOOL
Si TRUE est attribué à cette entrée, l'état
Resetting est disponible.
i_xIdle
BOOL
Si TRUE est attribué à cette entrée, l'état
Idle est disponible.
i_xStarting
BOOL
Si TRUE est attribué à cette entrée, l'état
Starting est disponible.
i_xExecute
BOOL
Si TRUE est attribué à cette entrée, l'état
Execute est disponible.
i_xHolding
BOOL
Si TRUE est attribué à cette entrée, l'état
Holding est disponible.
i_xHeld
BOOL
Si TRUE est attribué à cette entrée, l'état
Held est disponible.
i_xUnHolding
BOOL
Si TRUE est attribué à cette entrée, l'état
Un-Holding est disponible.
i_xSuspending
BOOL
Si TRUE est attribué à cette entrée, l'état
Suspending est disponible.
i_xSuspended
BOOL
Si TRUE est attribué à cette entrée, l'état
Suspended est disponible.
i_xUnSuspending
BOOL
Si TRUE est attribué à cette entrée, l'état
Un-Suspending est disponible.
i_xCompleting
BOOL
Si TRUE est attribué à cette entrée, l'état
Completing est disponible.
i_xComplete
BOOL
Si TRUE est attribué à cette entrée, l'état
Complete est disponible.
i_xAborting
BOOL
Si TRUE est attribué à cette entrée, l'état
Aborting est disponible.
EIO0000002810 06/2019
Fonctions
Entrée
Type de données
Description
i_xAborted
BOOL
Si TRUE est attribué à cette entrée, l'état
Aborted est disponible.
i_xClearing
BOOL
Si TRUE est attribué à cette entrée, l'état
Clearing est disponible.
Entrée/sortie
Type de données
Description
iq_stStateModel
ST_UnitModeDefinition
Cette structure renvoie le mode de
fonctionnement qui doit être initialisé.
Valeur retournée
Type de données
Description
BOOL
TRUE si l'initialisation du mode de fonctionnement est un succès.
EIO0000002810 06/2019
101
Fonctions
FC_SetAlarm
Présentation
Type :
Fonction
Disponible à partir de :
V1.0.1.0
Description fonctionnelle
La fonction FC_SetAlarm est une fonction auxiliaire qui permet d’écrire des messages d’alarme
dans les balises d'administration appropriées, ainsi que de les supprimer. Une alarme est identifiée
exclusivement par un identifiant unique et la valeur associée. L’identifiant et sa valeur sont définis
par le paramètre d’entrée/sortie iq_stSetAlarm qui correspond au paramètre d’entrée/sortie
iq_astAlarms[#].
Cette fonction ne peut pas être utilisée simultanément dans plusieurs tâches.
En utilisant l’entrée iq_stSetAlarm, un message d’alarme spécifique à une machine peut être
transmis à la fonction.
Via le paramètre d’entrée/sortie iq_astAlarms, la balise d’administration Admin.Alarm[#] doit
être transmise à la fonction. Elle représente la liste des alarmes actives dans l’unité de la machine
dans l’ordre chronologique en commençant par la première alarme survenue et toujours active.
Via le paramètre d’entrée/sortie iq_stAlarmHistory, la balise d’administration
Admin.AlarmHistory[#] doit être transmise à la fonction. Elle représente l’historique des
alarmes de l’unité de la machine contenant les alarmes dans l’ordre chronologique en
commençant par le dernière alarme réinitialisée.
Si la fonction est appelée avec l’entrée i_xSetAlarm = TRUE, la fonction vérifie si le message
d’alarme est déjà dans la liste d’alarmes actives. Si ce n’est pas le cas, la fonction obtient
l’horodatage du contrôleur et l’écrit avec le message d’alarme dans la liste d’alarmes actives. Si le
nombre maximal de messages dans la liste est atteint, aucun nouveau messages n’est ajouté.
102
EIO0000002810 06/2019
Fonctions
Si la fonction est appelée avec i_xSetAlarm = FALSE, le message d’alarme est supprimé de
la liste d’alarmes actives. Il est ensuite écrit en première position dans l’historique des alarmes et
les entrées existantes sont déplacées d’une position vers le bas dans la liste. Si la liste est pleine,
l’alarme réinitialisée la plus ancienne est supprimée.
Si la fonction est appelée avec les entrées i_xAckAlarm et i_xSetAlarm = TRUE, elle obtient
l’horodatage du contrôleur et met à jour le paramètre (balise) AckDateTime du message d’alarme
dans la liste des alarmes actives. Lorsqu’une alarme est acquittée, toute nouvelle requête
d’acquittement est sans effet.
La valeur de retour de la fonction indique TRUE si l’alarme a été écrite dans la liste, supprimée de
la liste ou a été acquittée. Si la fonction renvoie la valeur FALSE, aucune action n’a été demandée
ou bien le nombre maximal de messages dans la liste est atteint.
Interface
Entrée
Type de données
Description
i_xSetAlarm
BOOL
 TRUE : le code motif ou l'alarme spécifique à la
machine transmis à l'entrée/sortie iq_stSetAlarm
est écrit dans la balise de l'entrée/sortie
iq_stActiveAlarm.
 FALSE : le message est effacé de
iq_stActiveAlarms et ajouté à
iq_stAlarmHistory.
i_xAlarmAck
BOOL
TRUE : le message a été détecté. L'horodatage
approprié à Admin.Alarm[#].TimeAck est
déterminé.
Entrée/sortie
Type de données
Description
iq_stSetAlarm
ST_InitAlarm
Le code motif ou l'alarme spécifique à la
machine est transmis à cette entrée/sortie.
(voir page 49)
iq_astActiveAlarms
ARRAY
La balise d'administration
[1..Gc_uiMaxNumberOf Admin.Alarm[#] devrait être appliquée à
Alarms (voir page 75)] cette entrée/sortie.
OF ST_Alarm
iq_astAlarmHistory
ARRAY
La balise d'administration
[1..Gc_uiNumberOfAla Admin.AlarmHistory[#] devrait être
rmHistory
attribuée à cette entrée/sortie.
(voir page 75)] OF
ST_Alarm (voir page 60)
iq_diNumberOfActiveAlarms
DINT
(voir page 60)
EIO0000002810 06/2019
Fournit le nombre de messages d'alarme
actifs.
103
Fonctions
FC_SetWarning
Présentation
Type :
Fonction
Disponible à partir de :
V1.1.0.0
Description fonctionnelle
La fonction FC_SetWarning est une fonction auxiliaire qui permet d’écrire des messages de
conseil dans les balises d'administration appropriées, ainsi que de les supprimer. Un conseil est
identifié exclusivement par un identifiant unique et la valeur associée. L’identifiant et sa valeur sont
définis par le paramètre d’entrée/sortie iq_stSetWarning qui correspond au paramètre
d’entrée/sortie iq_astWarnings[#].
Cette fonction ne peut pas être utilisée simultanément dans plusieurs tâches.
En utilisant l’entrée iq_stSetWarning, un message de conseil spécifique à une machine peut
être transmis à la fonction.
Via le paramètre d’entrée/sortie iq_astWarnings, la balise d’administration
Admin.Warning[#] doit être transmise à la fonction. Elle représente la liste des conseils actifs
dans l’unité de la machine dans l’ordre chronologique en commençant par le premier conseil
apparu et toujours actif.
Si la fonction est appelée avec l’entrée i_xSetWarning = TRUE, la fonction vérifie si le message
de conseil est déjà dans la liste de conseils actifs. Si ce n’est pas le cas, la fonction obtient
l’horodatage du contrôleur et l’écrit avec le message de conseil dans la liste de conseils actifs. Si
le nombre maximal de messages dans la liste est atteint, aucun nouveau messages n’est ajouté.
Si la fonction est appelée avec i_xSetWarning = FALSE, le message de conseil est supprimé
de la liste de conseils actifs.
Si la fonction est appelée avec les entrées i_xAckWarning et i_xSetWarning = TRUE, elle
obtient l’horodatage du contrôleur et met à jour le paramètre (balise) AckDateTime du message
de conseil dans la liste de conseils actifs. Lorsqu’un conseil est acquitté, toute nouvelle requête
d’acquittement est sans effet.
104
EIO0000002810 06/2019
Fonctions
La valeur de retour de la fonction indique TRUE si le conseil a été écrit dans la liste, supprimé de
la liste ou a été acquitté. Si la fonction renvoie la valeur FALSE, aucune action n’a été demandée
ou bien le nombre maximal de messages dans la liste est atteint.
Interface
Entrée
Type de données
Description
i_xSetWarning
BOOL
Requête d’écriture (TRUE) ou de
suppression (FALSE) du message dans/de
la liste liée à iq_astWarnings.
i_xWarningAck
BOOL
Requête d’acquittement d’un conseil actif.
Entrée/sortie
Type de données
Description
iq_stSetWarning
ST_InitAlarm
Indique le message de conseil à traiter par
la fonction.
(voir page 49)
iq_astWarnings
ARRAY
[1..Gc_uiMaxNumber
OfWarnings
(voir page 75)] OF
ST_Alarm
La balise d'administration
Admin.Warning[#] doit être liée à cette
entrée/sortie.
(voir page 60)
iq_diNumberOfActiveWarnings
EIO0000002810 06/2019
DINT
Fournit le nombre de conseils de la liste.
105
Fonctions
106
EIO0000002810 06/2019
EcoStruxure Machine Expert
Visualisation
EIO0000002810 06/2019
Partie V
Visualisation
Visualisation
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
9
Titre du chapitre
Page
BackgroundFrames
109
10
States Frames
111
11
Cadres de visualisation
113
EIO0000002810 06/2019
107
Visualisation
108
EIO0000002810 06/2019
EcoStruxure Machine Expert
Cadres d'Arrière-plan
EIO0000002810 06/2019
Chapitre 9
BackgroundFrames
BackgroundFrames
FR_<BackgroundFrame>
Présentation
Type :
Cadre de visualisation
Disponible à partir de la version :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher un cadre en arrière-plan.
Description fonctionnelle
Les cadres de visualisation FR_<BackgroundFrame> (voir page 109) (FR_Control1024x768,
par exemple) sont des cadres d'arrière-plan qui permettent de grouper les autres cadres, et de
réaliser des fonctionnalités de contrôle et de navigation. Voyez les exemples ci-après.
Les cadres d'arrière-plan suivants sont disponibles :
Cadre
Description
FR_Control1024x768
Cadre de contrôle, taille 1024x768 pixels
FR_Nav1024x768
Cadre de navigation, taille 1024x768 pixels
FR_NavControl1024x768
Cadre de navigation et de contrôle, taille 1024x768
pixels
FR_Control800x600
Cadre de contrôle, taille 800x600 pixels
FR_Nav800x600
Cadre de navigation, taille 800x600 pixels
FR_NavControl800x600
Cadre de navigation et de contrôle, taille 800x600
pixels
Interface
Entrée
Type de données
Description
i_sTitle
STRING(80)
Titre du cadre d'arrière-plan
EIO0000002810 06/2019
109
Cadres d'Arrière-plan
Exemples
FR_Control1024x768 avec les boutons de contrôles à gauche
FR_Nav1024x768 avec les boutons de navigation en bas
110
EIO0000002810 06/2019
EcoStruxure Machine Expert
Cadres d'État
EIO0000002810 06/2019
Chapitre 10
States Frames
States Frames
FR_<State>
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher les différents états du modèle d'état du mode de fonctionnement.
Description fonctionnelle
Pour chaque état défini dans le modèle d’état (voir ET_States (voir page 38)), une visualisation
est fournie.
Les cadres sont utilisés par le FR_DynStateModel (voir page 118) pour afficher les différents
états d'un modèle d'état. Voir l'exemple suivant.
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
(voir page 88)
Exemple
EIO0000002810 06/2019
111
Cadres d'État
112
EIO0000002810 06/2019
EcoStruxure Machine Expert
Cadres de visualisation
EIO0000002810 06/2019
Chapitre 11
Cadres de visualisation
Cadres de visualisation
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Généralités
114
FR_Alarm
115
FR_AlarmHistory
116
FR_CurrentModeAndStateTime
117
FR_DynStateModel
118
FR_ModeAndStateTime
120
FR_ProdConsumedCount
122
FR_ProdDefectiveCount
123
FR_ProdProcessedCount
124
FR_Warning
125
FR_StopReason
126
FR_StatesDisabled
127
EIO0000002810 06/2019
113
Cadres de visualisation
Généralités
Présentation
La bibliothèque fournit plusieurs cadres de visualisation.
Vous pouvez utiliser ces cadres pour afficher des informations portant sur :
Les alarmes
 Les modes de fonctionnement et les états d'une machine
 Les données de production

Bloc Fonction FB_VisController
La tâche principale du bloc fonction FB_VisController est de traiter les données fournies par
les balises d'administration et les balises d'état, et de transmettre ces données aux cadres de
visualisation, via l'interface de visualisation entrées/sorties iq_stVisInterface de type
ST_VisInterface.
Cadres de visualisation











114
FR_Alarm (voir page 115)
FR_AlarmHistory (voir page 116)
FR_CurrentModeAndStateTime (voir page 117)
FR_DynStateModel (voir page 118)
FR_ModeAndStateTime (voir page 120)
FR_ProdConsumedCount (voir page 122)
FR_ProdDefectiveCount (voir page 123)
FR_ProdProcessedCount (voir page 124)
FR_Warning (voir page 125)
FR_StopReason (voir page 126)
FR_StatesDisabled (voir page 127)
EIO0000002810 06/2019
Cadres de visualisation
FR_Alarm
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher une liste d'alarmes des alarmes actives.
Description fonctionnelle
FR_Alarm est un cadre de visualisation qui sert à afficher la liste d'alarmes des alarmes actives
(Admin.Alarm[#]). Voyez l'exemple ci-après.
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
(voir page 88)
Exemple
EIO0000002810 06/2019
115
Cadres de visualisation
FR_AlarmHistory
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher l'historique des alarmes.
Description fonctionnelle
FR_AlarmHistory est un cadre de visualisation qui sert à afficher l'historique des alarmes
(Admin.AlarmHistory[#]). Voyez l'exemple ci-après.
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
(voir page 88)
Exemple
116
EIO0000002810 06/2019
Cadres de visualisation
FR_CurrentModeAndStateTime
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher la durée de fonctionnement de la machine dans le mode de fonctionnement et l'état
actuels.
Description fonctionnelle
FR_CurrentModeAndStateTime est un cadre de visualisation qui sert à afficher la durée de
fonctionnement de la machine dans le mode de fonctionnement (Admin.ModeCurrentTime[#]
& Admin.ModeCumulativeTime[#]) et l'état (Admin.StateCurrentTime[#,#] &
Admin.StateCumulativeTime[#,#]) actuels. Voyez l'exemple ci-après.
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
(voir page 88)
Exemple
NOTE : Cet exemple ne montre que les informations de PackTag, qui, selon les normes en
vigueur, sont exprimés en secondes.
EIO0000002810 06/2019
117
Cadres de visualisation
FR_DynStateModel
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher dynamiquement la visualisation du modèle d'état pour le mode de fonctionnement pendant
le fonctionnement en ligne.
Description fonctionnelle
FR_DynStateModel fournit un cadre de visualisation qui sert à afficher les modèles d'état. Ce
cadre génère dynamiquement la visualisation du modèle d'état correspondant pendant le fonctionnement en ligne.
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
118
(voir page 88)
EIO0000002810 06/2019
Cadres de visualisation
Exemple
EIO0000002810 06/2019
119
Cadres de visualisation
FR_ModeAndStateTime
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher la durée de fonctionnement de tous les modes de fonctionnement et leurs états respectifs.
Description fonctionnelle
FR_ModeAndStateTime est un cadre de visualisation qui sert à afficher la durée de fonctionnement de tous les modes de fonctionnement (Admin.ModeCurrentTime[#] &
Admin.ModeCumulativeTime[#]) et leurs états respectifs (Admin.StateCurrentTime[#,#] & Admin.StateCumulativeTime[#,#]).
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
120
(voir page 88)
EIO0000002810 06/2019
Cadres de visualisation
Exemple
EIO0000002810 06/2019
121
Cadres de visualisation
FR_ProdConsumedCount
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher les chiffres de comptage produits des consommables.
Description fonctionnelle
FR_ProdConsumedCount est un cadre de visualisation qui sert à afficher les chiffres de
comptage produits des consommables (Admin.ProdConsumedCount[#]).
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
(voir page 88)
Exemple
122
EIO0000002810 06/2019
Cadres de visualisation
FR_ProdDefectiveCount
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher les chiffres de comptage produits des marchandises détectées comme non conformes.
Description fonctionnelle
FR_ProdDefectiveCount est un cadre de visualisation servant à afficher les chiffres de
comptage produits des marchandises détectées comme non conformes
(Admin.ProdDefectiveCount[#]).
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
(voir page 88)
Exemple
EIO0000002810 06/2019
123
Cadres de visualisation
FR_ProdProcessedCount
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.0.1.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher les chiffres de comptage produits des marchandises produites.
Description fonctionnelle
FR_ProdProcessedCount est un cadre de visualisation qui sert à afficher les chiffres de
comptage produits des marchandises produites (Admin.ProdProcessedCount[#]).
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
(voir page 88)
Exemple
124
EIO0000002810 06/2019
Cadres de visualisation
FR_Warning
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.1.0.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher la liste de conseils actifs.
Description fonctionnelle
FR_Warning est un cadre de visualisation qui permet d’afficher la liste de conseils actifs
(Admin.Warning[#]). Voyez l'exemple ci-après.
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
(voir page 88)
Exemple
EIO0000002810 06/2019
125
Cadres de visualisation
FR_StopReason
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.1.0.0
Implémenté :
VisuElems.IVisualization
Tâche
Afficher le PackTag Admin.StopReason.
Description fonctionnelle
FR_StopReason est un cadre de visualisation qui permet d’afficher le PackTag
Admin.StopReason.
Interface
Entrée / sortie
Type de données
Description
iq_stVisInterface
ST_VisInterface
Interface vers le FB_VisController
(voir page 53)
(voir page 88)
Exemple
126
EIO0000002810 06/2019
Cadres de visualisation
FR_StatesDisabled
Présentation
Type :
Cadre de visualisation
Disponible à partir de :
V1.1.0.0
Implémenté :
VisuElems.IVisualization
Tâche
Surveiller et contrôler le PackTag Admin.StatesDisabled.
Description fonctionnelle
FR_StatesDisabled est un cadre de visualisation qui permet de surveiller et contrôler le
PackTag Admin.StatesDisabled.
Interface
Entrée / sortie
iq_stVisInterface
Type de données
ST_VisInterface
(voir page 53)
Description
Interface vers le FB_VisController
(voir page 88)
Exemple
EIO0000002810 06/2019
127
Cadres de visualisation
128
EIO0000002810 06/2019
EcoStruxure Machine Expert
Glossaire
EIO0000002810 06/2019
Glossaire
R
RTC
Acronyme de real-time clock, horloge en temps réel. Horloge horaire et calendaire supportée par
une batterie qui fonctionne en continu, même lorsque le contrôleur n'est pas alimenté, jusqu'à la
fin de l'autonomie de la batterie.
EIO0000002810 06/2019
129
Glossaire
130
EIO0000002810 06/2019
EcoStruxure Machine Expert
Index
EIO0000002810 06/2019
Index
B
BackgroundFrames, 109
C
Cadres de visualisation, 113
D
DateTimeArray, 69
E
ET_Cmd, 34
abort, 93
Abort, 34
clear, 93
Clear, 34
hold, 93
Hold, 34
reset, 92
Reset, 34
start, 92
Start, 34
stop, 93
Stop, 34
suspend, 93
Suspend, 34
undefined, 92
Undefined, 34
UnHold, 34, 93
UnSuspend, 34, 93
ET_Modes, 35
Maintenance, 35
Manual, 35
Producting, 35
Undefined, 35
EIO0000002810 06/2019
ET_Result, 36
Disabled, 36
Initializing, 36
InvalidStateModelNoAbortedState, 37
InvalidStateModelNoCompleteState, 37
InvalidStateModelNoExecuteState, 37
InvalidStateModelNoHeldState, 37
InvalidStateModelNoIdleState, 37
InvalidStateModelNoResettingState, 37
InvalidStateModelNoStoppedState, 37
InvalidStateModelNoSuspendedState, 37
ModeChangeRequestRejected, 37
NumberOfModesRange, 36
Ok, 36
PointerAdminInvalid, 37
PointerInitModeInvalid, 36
PointerStatusInvalid, 37
ResettingTimerAndCounter, 36
Running, 36
StateCurrentRange, 36
UnitModeCurrentRange, 36
UnitModeRange, 37
UnknownResult, 37
131
Index
ET_States, 38
Aborted, 38
Aborting, 38
Clearing, 38
Complete, 38
Completing, 38
Execute, 38
Held, 38
Holding, 38
Idle, 38
Resetting, 38
Starting, 38
Stopped, 38
Stopping, 38
Suspended, 38
Suspending, 38
Undefined, 38
UnHolding, 38
UnSuspending, 38
F
FB_DataManagement, 82
FB_ModeManager, 85
FB_VisController, 88
FC_CheckCmd, 92
FC_EtResultToString, 94
FC_GetDateTimeAsArray, 95
FC_InitStateModelChangeStates, 96
FC_InitStateModelExistingStates, 99
FC_SetAlarm, 102
FC_SetWarning, 104
FR_<BackgroundFrame>, 109
FR_<State>, 111
FR_Alarm, 115
FR_AlarmHistory, 116
FR_CurrentModeAndStateTime, 117
FR_DynStateModel, 118
FR_ModeAndStateTime, 120
FR_ProdConsumedCount, 122
FR_ProdDefectiveCount, 123
FR_ProdProcessedCount, 124
FR_StatesDisabled , 127
FR_StopReason, 126
FR_Warning, 125
132
G
GCL
PackML, 73
GPL
PackML, 75
P
PackML
GCL, 73
GPL, 75
S
ST_Administration, 43
ST_Alarm, 60
ST_Command, 45
ST_CountDescrip, 61
ST_Descriptor, 62
ST_EquipmentInterlock, 63
ST_Ingredient, 64
ST_InitAlarm, 49
ST_Interface, 65
ST_Product, 66
ST_StateInfo, 67
ST_Status, 46
ST_Timestamp, 68
ST_UnitModeDefinition, 50
ST_VisInterface, 53
States frames, 111
EIO0000002810 06/2019
EcoStruxure Machine Expert
PD_ETest
Guide de la bibliothèque
EIO0000002885.01
03/2021
www.se.com
Mentions légales
La marque Schneider Electric et toutes les marques de commerce de Schneider
Electric SE et de ses filiales mentionnées dans ce guide sont la propriété de
Schneider Electric SE ou de ses filiales. Toutes les autres marques peuvent être des
marques de commerce de leurs propriétaires respectifs. Ce guide et son contenu
sont protégés par les lois sur la propriété intellectuelle applicables et sont fournis à
titre d'information uniquement. Aucune partie de ce guide ne peut être reproduite ou
transmise sous quelque forme ou par quelque moyen que ce soit (électronique,
mécanique, photocopie, enregistrement ou autre), à quelque fin que ce soit, sans
l'autorisation écrite préalable de Schneider Electric.
Schneider Electric n'accorde aucun droit ni aucune licence d'utilisation commerciale
de ce guide ou de son contenu, sauf dans le cadre d'une licence non exclusive et
personnelle, pour le consulter tel quel.
Les produits et équipements Schneider Electric doivent être installés, utilisés et
entretenus uniquement par le personnel qualifié.
Les normes, spécifications et conceptions sont susceptibles d'être modifiées à tout
moment. Les informations contenues dans ce guide peuvent faire l'objet de
modifications sans préavis.
Dans la mesure permise par la loi applicable, Schneider Electric et ses filiales
déclinent toute responsabilité en cas d'erreurs ou d'omissions dans le contenu
informatif du présent document ou pour toute conséquence résultant de l'utilisation
des informations qu'il contient.
© 2021 Schneider Electric. Tous droits réservés.
PD_ETest
Table des matières
Consignes de sécurité ................................................................................5
QUALIFICATION DU PERSONNEL .......................................................5
INSTRUCTIONS D'UTILISATION ..........................................................6
Avant de commencer ............................................................................6
Démarrage et test .................................................................................7
Fonctionnement et réglages ..................................................................8
A propos de ce manuel ...............................................................................9
Informations générales ............................................................................13
Présentation de la bibliothèque..................................................................14
Informations générales........................................................................14
Variables globales .....................................................................................15
Liste des constantes globales ....................................................................16
Liste des constantes globales (LCG) ....................................................16
Liste des paramètres globaux ....................................................................17
Liste des paramètres globaux (LPG) ....................................................17
Liste de variables globales ........................................................................18
GVL ...................................................................................................18
Exécution ...................................................................................................19
Énumérations...........................................................................................20
ET_TestReturn ...................................................................................20
Interfaces.................................................................................................21
IF_ErrorLogger ...................................................................................21
IF_ManagedTestObject .......................................................................21
IF_TestCase.......................................................................................22
IF_TestResource ................................................................................23
IF_MeasurandList ...............................................................................23
MemoryLists ..............................................................................................25
Énumérations...........................................................................................26
ET_MeasurandTypes ..........................................................................26
Utilisation de l'ETEST ...............................................................................27
Utilisation de l'ETEST ...............................................................................28
Ajout d'un objet ETEST .......................................................................28
Modification de scénarios de test .........................................................28
Utilisation d'une série de tests..............................................................30
Utilisation de ressources de test...........................................................32
Exécution d'un test..............................................................................33
Enregistrement des valeurs mesurées..................................................33
Evaluation des résultats d'un test .........................................................34
Index ...........................................................................................................37
EIO0000002885.01
3
Consignes de sécurité
PD_ETest
Consignes de sécurité
Informations importantes
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.
La présence de ce symbole sur une étiquette “Danger” ou “Avertissement” signale un
risque d'électrocution qui provoquera des blessures physiques en cas de non-respect
des consignes de sécurité.
Ce symbole est le symbole d'alerte de sécurité. Il vous avertit d'un risque de blessures
corporelles. Respectez scrupuleusement les consignes de sécurité associées à ce
symbole pour éviter de vous blesser ou de mettre votre vie en danger.
!
DANGER
DANGER signale un risque qui, en cas de non-respect des consignes de sécurité, provoque
la mort ou des blessures graves.
!
AVERTISSEMENT
AVERTISSEMENT signale un risque qui, en cas de non-respect des consignes de sécurité,
peut provoquer la mort ou des blessures graves.
!
ATTENTION
ATTENTION signale un risque qui, en cas de non-respect des consignes de sécurité, peut
provoquer des blessures légères ou moyennement graves.
AVIS
AVIS indique des pratiques n'entraînant pas de risques corporels.
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.
QUALIFICATION DU PERSONNEL
Une personne qualifiée est une personne qui a les qualifications suivantes :
EIO0000002885.01
•
Compétences et connaissances liées à la construction et à l'exploitation
d'équipements électriques et à l'installation.
•
Connaissances et expérience en programmation de contrôle industriel.
•
A reçu une formation en sécurité permettant de reconnaître et d'éviter les
dangers potentiels.
5
PD_ETest
Consignes de sécurité
La personne qualifiée doit être capable de détecter d'éventuels dangers qui
pourraient découler du paramétrage, de modifications des valeurs de
paramétrage et plus généralement des équipements mécaniques, électriques ou
électroniques. La personne qualifiée doit connaître les normes, dispositions et
régulations liées à la prévention des accidents de travail, et doit les observer lors
de la conception et de l'implémentation du système.
INSTRUCTIONS D'UTILISATION
Ce produit est une bibliothèque à utiliser avec un système de commande et des
servo-amplificateurs. La bibliothèque n'est conçue qu'en vue d'une utilisation telle
que décrite dans la présente documentation, appliquée au secteur industriel.
Observez en permanence les instructions applicables liées à la sécurité, les
conditions spécifiques et les données techniques.
Réalisez une analyse des risques en rapport avec l'utilisation spécifique avant
d'utiliser ce produit. Prenez les mesures de sécurité qui découlent des résultats.
Étant donné que ce produit est utilisé au sein d'un système qui l'englobe, vous
devez assurer la sécurité du personnel par la conception même du système global
(la conception de la machine, par exemple).
Aucune autre utilisation n'est prévue. Toute autre utilisation pourrait être
dangereuse.
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.
6
EIO0000002885.01
Consignes de sécurité
PD_ETest
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.
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.
Démarrage 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 :
EIO0000002885.01
•
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.
7
PD_ETest
Consignes de sécurité
Fonctionnement et réglages
Les précautions suivantes sont extraites du document NEMA Standards
Publication ICS 7.1-1995 (la version anglaise prévaut) :
8
•
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.
EIO0000002885.01
A propos de ce manuel
PD_ETest
A propos de ce manuel
Champ d'application
Ce document décrit la bibliothèque PD_ETest.
La bibliothèque PD_ETest fournit un ensemble de fonctions et d'interfaces
d'assistance pour le framework ETEST de Logic Builder. Pour plus d'informations
sur le framework ETEST et son utilisation, consultez le document ETEST - Guide
de l'utilisateur (voir EcoStruxure Machine Expert, ETEST, Guide de l'utilisateur).
Remarque sur la validité
Ce document a été actualisé pour le lancement d'EcoStruxureTM Machine
Expert V2.0.
Les caractéristiques décrites dans le présent document, ainsi que celles décrites
dans les documents mentionnés dans la section Documents associés ci-dessous,
sont consultables en ligne. Pour accéder aux informations en ligne, allez sur la
page d'accueil de Schneider Electric www.se.com/ww/fr/download/.
Les caractéristiques décrites dans le présent document doivent ê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
document et les informations fournies en ligne, utilisez ces dernières en priorité.
Documents associés
Titre de la documentation
Référence
EcoStruxure Machine Expert - ETEST - Guide
de l'utilisateur
EIO0000002878 (ENG) ;
EIO0000002879 (FRE) ;
EIO0000002880 (GER) ;
EIO0000002881 (ITA) ;
EIO0000002882 (SPA) ;
EIO0000002883 (CHS)
EcoStruxure Machine Expert Recommandations de cybersécurité pour les
solutions d'automatisme - Notes techniques du
système
EIO0000004242 ;
Vous pouvez télécharger ces publications, le présent manuel et autres
informations techniques depuis notre site web à l'adresse : www.se.com/en/
download/.
EIO0000002885.01
9
PD_ETest
A propos de ce manuel
Informations relatives 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 contrôle cruciales.
•
Des canaux de commande séparés ou redondants doivent être prévus pour
les fonctions de commande critique.
•
Les liaisons de communication peuvent faire partie des canaux de
commande du système. 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 les documents suivants ou leurs équivalents
pour votre site d'installation : 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 NEMA ICS 7.1 (dernière édition), « Safety Standards
for Construction and Guide for Selection, Installation, and Operation of AdjustableSpeed Drive Systems » (Normes de sécurité relatives à la construction et manuel
de sélection, d'installation et d'exploitation de variateurs de vitesse).
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.
AVERTISSEMENT
UTILISATION INCORRECTE DES UNITES ORGANISATIONNELLES DU
PROGRAMME
•
Effectuez une analyse de la sécurité de l'application et des équipements
installés.
•
Vérifiez que les POU sont compatibles avec les équipements 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 fonctionnement à 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.
10
EIO0000002885.01
A propos de ce manuel
PD_ETest
AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT
•
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.
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
IEC 61131-2:2007
Automates programmables - Partie 2 : exigences et essais des
équipements
ISO 13849-1:2015
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
EIO0000002885.01
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
ISO 14119:2013
Sécurité des machines - Dispositifs de verrouillage associés à des
protecteurs - Principes de conception et de choix
ISO 13850:2015
Sécurité des machines - Fonction d'arrêt d'urgence - Principes de
conception
IEC 62061:2015
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é : prescriptions
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:2016
Réseaux de communication industriels - Profils - Partie 3 : Bus de terrain
de sécurité fonctionnelle - Règles générales et définitions de profils.
2006/42/EC
Directive Machines
2014/30/EU
Directive sur la compatibilité électromagnétique
2014/35/EU
Directive sur les basses tensions
11
PD_ETest
A propos de ce manuel
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.
12
EIO0000002885.01
PD_ETest
Informations générales
Contenu de cette partie
Présentation de la bibliothèque .......................................................................14
EIO0000002885.01
13
PD_ETest
Présentation de la bibliothèque
Présentation de la bibliothèque
Contenu de ce chapitre
Informations générales ..................................................................................14
Informations générales
Introduction
La bibliothèque PD_ETest fournit un ensemble de fonctions et d'interfaces
d'assistance pour le framework ETEST de Logic Builder. Pour plus d'informations
sur le framework ETEST et son utilisation, consultez le document ETEST - Guide
de l'utilisateur (voir EcoStruxure Machine Expert, ETEST, Guide de l'utilisateur).
Lorsque vous créez un scénario de test dans Logic Builder, la bibliothèque PD_
ETest est automatiquement intégrée dans votre projet. Vous ne pouvez pas
utiliser le framework ETEST sans cette bibliothèque.
NOTE: La bibliothèque PD_ETest ne s'utilise qu'avec le framework ETEST
intégré dans Logic Builder. Les fonctions et interfaces contenues dans cette
bibliothèque sont utilisées de manière implicite et ne sont pas programmées
dans l'application utilisateur.
Les POU de la bibliothèque PD_ETest ne sont accessibles qu'à partir des
scénarios et ressources de test créés dans le framework ETEST.
Toute utilisation directe de ces fonctions et blocs fonction dans votre
application peut entraîner des erreurs de compilation.
14
EIO0000002885.01
PD_ETest
Variables globales
Contenu de cette partie
Liste des constantes globales..........................................................................16
Liste des paramètres globaux..........................................................................17
Liste de variables globales ..............................................................................18
EIO0000002885.01
15
PD_ETest
Liste des constantes globales
Liste des constantes globales
Contenu de ce chapitre
Liste des constantes globales (LCG)...............................................................16
Liste des constantes globales (LCG)
Présentation
Type :
Constante globale
Disponible à partir de la version :
V1.0.0.0
Description
La liste des constantes globales répertorie les constantes globales de la
bibliothèque PD_ETest.
Constante globale
Variable
Type de données
Description
Gc_sLibraryVersion
STRING[80]
Version de la bibliothèque
16
EIO0000002885.01
Liste des paramètres globaux
PD_ETest
Liste des paramètres globaux
Contenu de ce chapitre
Liste des paramètres globaux (LPG) ...............................................................17
Liste des paramètres globaux (LPG)
Présentation
Type :
Paramètre global
Disponible à partir de la version :
V1.0.0.0
Description
Cette liste contient les paramètres globaux de la bibliothèque PD_ETest. Vous
pouvez les remplacer par des valeurs propres au projet, dans le Gestionnaire de
bibliothèque.
Paramètres globaux
Variable
Type de données
Valeur
Description
Gc_uiMaxNumberOfTestCases
UINT
500
Nombre maximum de scénarios de
test qu'il est possible de stocker.
Gc_uiMaxNumberOfTcResAssignments
UINT
800
Nombre maximum de ressources
qu'il est possible d'attribuer à un
scénario de test.
Gc_uiMaxNumberOfFailedTc
UINT
300
Nombre maximum de scénarios de
test n'ayant pas abouti, qu'il est
possible de stocker.
Gc_uiMaxNumberOfResources
UINT
300
Nombre maximum de ressources
qu'il est possible de stocker.
Gc_uiMaxNumberOfResResAssignments
UINT
800
Nombre maximum d'attributions de
ressources de test à des ressources,
qu'il est possible de stocker.
Gc_uiResourceListSize
UINT
50
Taille maximum de la liste de
ressources qu'il est possible de
stocker.
Gc_uiMaxNumberOfMeasurands
UINT
50
Nombre maximum de valeurs
mesurées, qu'il est possible de
stocker.
EIO0000002885.01
17
PD_ETest
Liste de variables globales
Liste de variables globales
Contenu de ce chapitre
GVL .............................................................................................................18
GVL
Présentation
Type :
Variables globales
Disponible à partir de la version :
V1.5.0.0
Description
La liste des variables globales contient les variables globales de la bibliothèque
PD_ETest.
Variables globales
Variable
Type de données
Description
G_ifMeasurandList
IF_MeasurandList
La variable :
18
•
n'est valide et utilisée que pendant l'exécution de tests ;
•
requiert EcoStruxure Machine Expert V2.0 ou version
ultérieure. Si vous tentez d'exécuter des tests dans les
versions antérieures, n'oubliez pas de vérifier la validité
de la variable et d'appeler la variante obsolète du code de
programmation pour enregistrer les valeurs mesurées
TestManager.fbMeasurandList.AddMeasurand
(...), comme indiqué dans la documentation
concernant la version d'EcoStruxure Machine Expert
utilisée.
EIO0000002885.01
PD_ETest
Exécution
Contenu de cette partie
Énumérations ................................................................................................20
Interfaces ......................................................................................................21
EIO0000002885.01
19
PD_ETest
Énumérations
Énumérations
Contenu de ce chapitre
ET_TestReturn..............................................................................................20
ET_TestReturn
Présentation
Type :
Énumération
Disponible à partir de la version :
V1.0.0.0
Valeur par défaut :
E_Working
Description
L'énumération ET_TestReturn inclut les états du test. Elle est utile pour l'exécution
interne du test.
Éléments de l'énumération
Nom
Valeur
Description
E_Working
0
Le scénario de test ou la séquence de tests est exécuté
(e).
E_Done
1
Le scénario de test ou la séquence de tests a abouti.
E_Failed
2
Le scénario de test ou la séquence de tests n'a pas
abouti.
Utilisé par
ET_TestReturn est le type de données de la valeur renvoyée par IF_TestCase.
20
EIO0000002885.01
Interfaces
PD_ETest
Interfaces
Contenu de ce chapitre
IF_ErrorLogger .............................................................................................21
IF_ManagedTestObject .................................................................................21
IF_TestCase .................................................................................................22
IF_TestResource...........................................................................................23
IF_MeasurandList .........................................................................................23
IF_ErrorLogger
Présentation
Type :
Interface
Disponible à partir de la version :
V1.0.0.0
NOTE: Cette interface est destinée à un usage exclusivement interne.
Tâche
L'interface IF_ErrorLogger permet de signaler les erreurs détectées.
Description fonctionnelle
Les méthodes et propriétés de cette interface ne sont ni affichées ni
documentées, car elles sont censées n'être utilisées que dans des macros (par
exemple, ASSERT(…)) du framework ETEST dans Logic Builder.
IF_ManagedTestObject
Présentation
Type :
Interface
Disponible à partir de la version :
V1.0.0.0
NOTE: Cette interface est destinée à un usage exclusivement interne.
Tâche
L'interface IF_ManagedTestObject combine des méthodes de jointure d'objets qui
nécessitent une préparation et un ajustement. Elle sert à inventorier les données
dans la bibliothèque PD_ETest.
Méthode CleanUp
La méthode CleanUp permet de réinitialiser un ou plusieurs objets des scénarios
et ressources de test, en vue de leur réutilisation.
EIO0000002885.01
21
PD_ETest
Interfaces
Interface
Entrée
Type de
données
Description
i_xFirstCall
BOOL
TRUE : méthode appelée pour la première fois.
FALSE : après le premier appel de la méthode.
Permet d'initialiser les machines à état.
i_ifErrorLogger
IF_ErrorLogger
Interface pour signaler les erreurs détectées.
Valeur renvoyée
Type de données
Description
ET_TestReturn
Consultez l'énumération, page 20 de ET_TestReturn.
Méthode Prepare
La méthode Prepare s'utilise pour les mesures de préparation des tests, comme
l'initialisation des variables ou l'activation du contrôle de position d'un axe.
Interface
Entrée
Type de
données
Description
i_xFirstCall
BOOL
TRUE : méthode appelée pour la première fois.
FALSE : après le premier appel de la méthode.
Permet d'initialiser les machines à état.
i_rfbResources
Référence à
FB_Resource
List
Liste des ressources utilisées.
i_ifErrorLogger
IF_ErrorLogger
Interface pour signaler les erreurs détectées.
Valeur renvoyée
Type de données
Description
ET_TestReturn
Consultez l'énumération, page 20 de ET_TestReturn.
IF_TestCase
Présentation
Type :
Interface
Disponible à partir de la version :
V1.0.0.0
NOTE: Cette interface est destinée à un usage exclusivement interne.
Tâche
L'interface IF_TestCase est automatiquement mise en œuvre dans chaque
scénario de test.
Méthode Execute
La méthode Execute contient les actions et vérifications des tests.
22
EIO0000002885.01
Interfaces
PD_ETest
Interface
Entrée
Type de
données
Description
i_xFirstCall
BOOL
TRUE : méthode appelée pour la première fois.
FALSE : après le premier appel de la méthode.
Permet d'initialiser les machines à état.
i_ifErrorLogger
IF_ErrorLogger
Interface pour signaler les erreurs détectées.
Sortie
Type de
données
Description
q_rProgress
REAL
Permet d'afficher l'état d'avancement du scénario de
test.
q_sState
STRING[255]
Paramètre accessible en écriture.
Texte décrivant l'état d'un scénario de test.
Paramètre modifiable.
Valeur renvoyée
Type de données
Description
ET_TestReturn
Consultez l'énumération, page 20 de ET_TestReturn.
Méthode Finalize
La méthode Finalize est exécutée lorsque la méthode Execute a abouti, a échoué
ou a été annulée. Contrairement à CleanUp, la méthode Finalize s'exécute dans
le même cycle que la méthode Execute.
IF_TestResource
Présentation
Type :
Interface
Disponible à partir de la version :
V1.0.0.0
NOTE: Cette interface est destinée à un usage exclusivement interne.
Tâche
L'interface IF_TestResource doit être mise en œuvre à partir d'une ressource de
test.
Elle permet de gérer les ressources de test.
Utilisé par
IF_ManagedTestObject
IF_MeasurandList
Présentation
EIO0000002885.01
Type :
Interface
Disponible à partir de la version :
V1.5.0.0
23
PD_ETest
Interfaces
Tâche
Enregistrement des valeurs mesurées.
Description fonctionnelle
L'interface IF_MeasurandList permet d'enregistrer les mesurandes avec la
méthode AddMeasurand.
Méthode AddMeasurand
La méthode AddMeasurand stocke les valeurs externes mesurées, au format
STRING. Par exemple, il est possible d'enregistrer ou de stocker les durées
d'exécution d'une fonction, tout en utilisant certains paramètres ou la taille des
données d'une structure (déterminée par SIZEOF).
La méthode peut être appelée à n'importe quelle position dans un scénario de
test. Un scénario de test peut fournir le nombre requis de valeurs mesurées, en
appelant la méthode plusieurs fois. Pour plus d'informations, consultez le chapitre
Enregistrement des valeurs mesurées, page 33.
Interface
Entrée
Type de données
Description
i_sModule
STRING[255]
Nom de l'unité qui transfère la valeur mesurée.
Permet d'attribuer la valeur mesurée à une
bibliothèque, un bloc fonction ou une fonction.
i_sName
STRING[255]
Nom de la valeur mesurée.
i_etType
ET_
MeasurandTypes
Type de la valeur mesurée.
Consultez également l'énumération ET_
MeasurandTypes.
Cette entrée est facultative.
i_sValue
STRING[255]
Valeur mesurée.
Valeur renvoyée
Type de données
Description
UDINT
Indique le nombre de valeurs mesurées stockées. La valeur renvoyée
est zéro si le nombre maximum de valeurs mesurées enregistrables a
été dépassé (empêchant le stockage d'autres valeurs mesurées).
Reportez-vous au paramètre Gc_uiMaxNumberOfMeasurands.
24
EIO0000002885.01
PD_ETest
MemoryLists
Contenu de cette partie
Énumérations ................................................................................................26
EIO0000002885.01
25
PD_ETest
Énumérations
Énumérations
Contenu de ce chapitre
ET_MeasurandTypes ....................................................................................26
ET_MeasurandTypes
Présentation
Type :
Énumération
Disponible à partir de :
V1.0.0.0
Par défaut :
E_NotClassified
Description
L'énumération inclut les types de mesurande.
Éléments d'énumération
Nom
Valeur
Description
E_NotClassified
0
Le type de valeur mesurée n'est pas défini. Vous pouvez
utiliser l'entrée i_sName de la méthode AddMeasurand
pour fournir des informations sur la valeur mesurée.
E_ExecutionTime
1
La valeur mesurée indique la durée d'exécution du
module en nanosecondes. Vous pouvez utiliser l'entrée
i_ sName de la méthode AddMeasurand pour fournir
davantage d'informations sur la durée mesurée.
E_SizeOf
2
La valeur mesurée indique la taille du module en octets.
Utilisé par
AddMeasurand method
26
EIO0000002885.01
PD_ETest
Utilisation de l'ETEST
Contenu de cette partie
Utilisation de l'ETEST .....................................................................................28
EIO0000002885.01
27
PD_ETest
Utilisation de l'ETEST
Utilisation de l'ETEST
Contenu de ce chapitre
Ajout d'un objet ETEST..................................................................................28
Modification de scénarios de test ....................................................................28
Utilisation d'une série de tests ........................................................................30
Utilisation de ressources de test .....................................................................32
Exécution d'un test ........................................................................................33
Enregistrement des valeurs mesurées ............................................................33
Evaluation des résultats d'un test....................................................................34
Ajout d'un objet ETEST
Ajout d'un objet ETEST
Pour ajouter un objet ETEST à votre projet, procédez comme suit :
Étape
Action
1
Cliquez avec le bouton droit de la souris sur le nœud Application dans l'arborescence
Outils et exécutez la commande Ajouter un objet... dans le menu contextuel.
2
Sélectionnez l'objet ETEST à ajouter (Scénario de test, Ressources du test, Série de
tests).
Résultat : la boîte de dialogue Objet ETEST s'affiche.
3
Renommez votre objet en saisissant un nom dans la zone de texte Nom.
NOTE: choisissez un nom conforme à la norme IEC. N'utilisez pas de caractères
spéciaux, de chiffres en début ou d'espaces dans le nom. Le nom ne doit pas
comporter plus de 32 caractères. Si vous ne renommez pas l'objet, il reçoit un nom par
défaut.
4
Cliquez sur le bouton Ajouter.
Résultat : l'objet ETEST est ajouté au projet et s'affiche en tant que nouveau nœud dans
l'arborescence Outils.
Modification de scénarios de test
Présentation
La structure des scénarios de test est similaire à celles des blocs fonction, à ceci
près qu'aucun éditeur n'est disponible dans la section de mise en œuvre. Seules
les méthodes des scénarios de test sont mises en œuvre. Pour mettre en œuvre
un scénario de test, utilisez l'éditeur de méthode en double-cliquant sur la
méthode dans l'arborescence Outils.
28
EIO0000002885.01
Utilisation de l'ETEST
PD_ETest
Commun
Onglet Commun
1 L'éditeur de déclaration correspond à la section de déclaration d'un bloc
fonction. Vous pouvez basculer entre la vue textuelle et la vue tabulaire de
l'éditeur, grâce aux boutons Texte et Tableau.
2 La zone Ressources référencées fournit les ressources de test intégrées.
3 La zone Description fournit des explications sur le scénario de test.
Exécution de tests
L’onglet Exécution de tests fournit la configuration des séries de tests.
EIO0000002885.01
29
PD_ETest
Utilisation de l'ETEST
Bouton/zone
Description
Activer scénario de
test paramétré
Les exécutions de test configurées sont automatiquement exécutées
avec le scénario de test.
Démarrer le test
Cliquez sur Démarrer le test dans le menu contextuel d’une exécution
de test pour exécuter le test sélectionné.
Insérer
Cliquez sur Insérer pour ajouter une nouvelle entrée Série de tests. En
double-cliquant à nouveau sur la cellule de série de test, vous pouvez
entrer une référence à une série de test.
Des noms de série de test existants sont suggérés au fur et à mesure de
la saisie.
Lors de l’ajout de la première série de test, le champ REFERENCE TO
est automatiquement défini sur le type de données de test de la nouvelle
Série de tests ajoutée.
NOTE: Toutes les séries de test configurées dans un scénario de
test doivent référencer le même type de données, sinon une erreur
de compilation est détectée.
Test variable
Nom de la variable qui est accessible via le code.
Le nom par défaut est rstTestData, mais il peut être modifié.
Navigation
Vous pouvez utiliser la commande Atteindre la définition… dans le menu
contextuel pour accéder à un scénario de test sur les artefacts utilisés. Cette
fonction fonctionne à la fois pour le type de données de test configuré (IECSTRUCT) et pour les séries de test référencées. Si vous sélectionnez l’un de ces
objets et cliquez sur la commande Atteindre la définition…, l’éditeur
correspondant s’ouvre pour cet objet.
Deplus, la table de référencement des séries de test prend également en charge
les commandes de modification.
Utilisation d'une série de tests
Présentation
Un projet comprend plusieurs scénarios de test. L'éditeur Série de tests vous
permet de regrouper plusieurs scénarios dans une série de tests, en vue d'une
exécution séquentielle.
30
EIO0000002885.01
Utilisation de l'ETEST
PD_ETest
L'éditeur Série de tests se divise en deux parties :
Zone
Description
Blocs fonction disponibles
Cette liste comprend les scénarios de test et les séries de tests
qui dépendent du même nœud Application que la série de tests
ouverte. Elle inclut également les scénarios de test et les séries
de tests, situés dans l'arborescence Outils. Vous ne pouvez pas
sélectionner une série de tests, qui est un sous-nœud d'ellemême.
Les références cycliques de séries de tests ne sont pas
autorisées.
POU sélectionnés
Les POU sélectionnés s'affichent. Ce sont des scénarios de
test.
Une série de tests ne peut sélectionner qu'un POU directement.
En revanche, il est possible de sélectionner des POU plusieurs
fois indirectement. Une série de tests peut donc inclure d'autres
séries de tests, lesquelles peuvent contenir le même scénario
de test.
EIO0000002885.01
Bouton/zone
Description
Ajouter
Déplace le scénario de test sélectionné de la liste Blocs
fonction disponibles vers la liste POU sélectionnés.
Supprimer
Déplace le scénario de test sélectionné de la liste POU
sélectionnés vers la liste Blocs fonction disponibles.
Vers le haut
Déplace vers le haut de la liste, un scénario de test situé dans la
zone POU sélectionnés.
Vers le bas
Déplace vers le bas de la liste, un scénario de test situé dans la
zone POU sélectionnés.
Filtres tout
Saisissez un texte dans le champ Filtres pour filtrer la liste des
Blocs fonction disponibles. Cliquez sur le bouton tout pour
effacer le filtre.
31
PD_ETest
Utilisation de l'ETEST
Action avec la souris ou le
clavier
Description
Double-clic
Double-cliquez sur une entrée dans la liste Blocs fonction
disponibles pour la faire passer dans la liste POU
sélectionnés (et inversement).
Touche Suppr
Déplace le scénario de test sélectionné de la liste POU
sélectionnés vers la liste Blocs fonction disponibles.
Raccourci Ctrl+A
Sélectionne toutes les entrées de la liste.
Utilisation de ressources de test
Présentation
Une ressource de test intègre l'accès ainsi que l'initialisation du matériel et des
structures de données utilisés par les scénarios de test. Les ressources sont
créées et traitées comme des scénarios de test, page 28. Un scénario ou une
ressource de test peut être lié à une ressource.
La section de déclaration des ressources (Ressources référencées) se trouve
dans la partie centrale de l'éditeur.
Bouton
Description
+ Ajouter
Ajoute une ressource de test.
- Supprimer
Supprime une ressource de test.
Vers le haut
Déplace la ressource de test sélectionnée, vers le haut de la
liste.
Vers le bas
Déplace la ressource de test sélectionnée, vers le bas de la
liste.
Action avec la souris ou le
clavier
Description
Double-clic
Double-cliquez sur une entrée de la liste Ressources
référencées pour la modifier.
Touche Suppr
Supprime la ressource de test.
Raccourci Ctrl+A
Sélectionne les entrées de la liste Ressources référencées.
Raccourci Ctrl+clic ou
Sélectionne plusieurs entrées de la liste Ressources
référencées.
Maj+clic
Chaque ligne du tableau comprend une ressource référencée. La colonne Nom
de l'instance contient le nom de la ressource. Ce nom est utilisé si la ressource
est appelée depuis un objet de test : une variable portant ce nom est générée et
contient une référence de la ressource.
32
EIO0000002885.01
Utilisation de l'ETEST
PD_ETest
La colonne Ressources (noms de type) contient le type de la ressource. C'est le
nom de l'objet ressource de test à intégrer. Dans la vue en ligne, les ressources
sont affichées avec les autres variables.
Exécution d'un test
Présentation
Cette section explique comment exécuter des scénarios de test et des séries de
test, page 30.
ETEST comprend deux processus de test principaux. Un processus s'exécute
dans le Logic Builder sur le PC. L'autre processus s'exécute sur le contrôleur. Le
processus sur le contrôleur est intégré dans l'application exécutée sur le
contrôleur. Ces deux processus communiquent par une structure de données de
communication.
Exécution d'un test
Pour exécuter un test, les conditions suivantes doivent être remplies :
•
L'application doit contenir un objet de test référencé dans une tâche.
•
Le scénario de test ou la série de tests à exécuter doit être sélectionné dans
l'arborescence Outils.
•
Aucun autre test ne doit être en cours.
Pour exécuter un test, procédez comme suit :
Etape
1
Action
Dans l'arborescence Outils, cliquez avec le bouton droit de la souris sur le nœud du
scénario de test à exécuter.
Résultat : le menu contextuel s'affiche.
2
Exécutez la commande Démarrer le test dans le menu contextuel.
Résultat : le scénario de test est exécuté.
Une fois le test lancé, la vue des résultats s'affiche. Elle indique l'état
d'avancement du test. Pour arrêter un test en cours, cliquez sur l'icône Annuler le
test dans la barre d'outils.
NOTE: pendant l'exécution d'un test, respectez les consignes suivantes :
•
Ne déconnectez pas le contrôleur.
•
Ne vous déconnectez pas.
•
N'arrêtez pas/ne réinitialisez pas l'application.
•
Ne modifiez pas le projet.
Sinon, la logique du test est interrompue et les résultats obtenus sont
inexploitables.
Enregistrement des valeurs mesurées
Présentation
L'exemple décrit dans ce chapitre montre comment enregistrer les valeurs
mesurées.
Pour ce faire, le code de programmation suivant doit être appelé dans une
méthode exécutée dans le cadre d'un test.
EIO0000002885.01
33
PD_ETest
Utilisation de l'ETEST
Exemple
PD_ETest.G_ifMeasurandList.AddMeasurand('module', 'name',
ET_MeasurandTypes.E_NotClassified, 'value');
Pour plus d'informations, reportez-vous à :
•
IF_MeasurandList, page 23
•
ET_MeasurandTypes, page 26
Chaque fois que la méthode AddMeasurand est appelée, une nouvelle valeur
mesurée est enregistrée. Le nombre maximum de mesurandes est stocké dans
PD_ETest.Gc_uiMaxNumberOfMeasurands.
NOTE: la variable PD_ETest.G_ifMeasurandList :
•
est disponible dans la bibliothèque PD_ETest V1.5.0.0 ou version
ultérieure ;
•
n'est valide et utilisée que pendant l'exécution de tests.
Evaluation des résultats d'un test
Présentation
Dans la vue Résultats du test, le framework ETEST indique les résultats et l'état
d'avancement du test en cours.
NOTE: si les scénarios de test sont conçus pour les blocs fonction figurant
dans des bibliothèques, vérifiez la compatibilité des bibliothèques mises à
jour, car cela peut affecter vos scénarios de test.
Tests exécutés
La liste Exécutions de tests indique les tests exécutés depuis le démarrage de
Logic Builder.
Boutons
Description
Exporter
Enregistre les résultats du test sélectionné, dans un fichier XML.
(*. testresult).
Importer
Ouvre les résultats d'un test, stockés dans un fichier XML.
Imprimer le rapport
Ouvre un rapport HTML dans le navigateur web.
Résultats de test
Cliquez sur une entrée dans la liste Exécutions de tests pour ouvrir le test dans
la zone Résultats du test.
Les résultats importés s'ouvrent dans la zone Résultats du test et dans la liste
des tests récemment exécutés. La zone Résultats du test s'ouvre
automatiquement lors du démarrage d'un test. Elle indique le résultat (ou l'état)
d'un test.
La zone Résultats du test se divise en deux parties.
•
En haut, le résumé des résultats du test indique le nom du POU exécuté et le
résultat total.
•
En bas, une section affiche plusieurs onglets :
Onglet
Description
Résultats du test
Cette arborescence indique la série de tests et les scénarios de test.
Elle affiche les résultats de chaque nœud.
Commentaire de
l'utilisateur
34
Cet onglet indique le nom et le commentaire de l'utilisateur.
EIO0000002885.01
Utilisation de l'ETEST
PD_ETest
Onglet
Description
Par défaut, c'est le nom d'utilisateur Windows qui apparaît.
Vous pouvez ajouter un commentaire dans la zone Commentaire. Il
est stocké avec le résultat du test.
Produits
Cet onglet affiche les bibliothèques disponibles dans le projet
pendant le test.
Valeurs mesurées
Cet onglet indique les valeurs mesurées et enregistrées pendant
l'exécution du test. Ces informations permettent de mesurer les
durées et la taille des structures de données.
Filtre
Vous pouvez filtrer les entrées selon une chaîne et la colonne sélectionnée. La
colonne Nom est sélectionné par défaut.
Une partie sélectionnée de la chaîne trouvée (dans cet exemple, Test) est
identifiée en jaune. La liste indique les entrées marquées et les nœuds parents.
Commandes de test spécifiques
EIO0000002885.01
Commande
Description
Exécuter tous les tests
Exécuter tous les tests présents dans la liste.
Exécuter les tests
sélectionnés
Exécuter les tests sélectionnés dans la liste.
Annuler le test
Annuler un test en cours.
Exécuter des tests ayant
échoués
Exécuter les tests de la liste dont l’exécution a échoué.
Exécuter les tests passés
Exécuter les tests de la liste qui ont été correctement exécutés.
Exécuter les tests non
exécutés
Exécuter les tests non exécutés lors de la dernière exécution
précédemment annulée.
Répéter le dernier test
Exécuter à nouveau le test exécuté précédemment à partir de la vue
des résultats.
35
PD_ETest
Index
A
ajout
objets ETEST ....................................................28
R
résultats
ETEST ..............................................................34
T
bibliothèque PD_ETest
informations générales .......................................14
Bibliothèque PD_ETest
IF_MeasurandList ..............................................23
test
exécution ..........................................................33
responsables, enregistrement des valeurs
mesurées ........................................................33
ressources, utilisation.........................................32
résultats ............................................................34
scénarios, modification .......................................28
série, utilisation..................................................30
E
U
enregistrement des valeurs mesurées.....................33
ET_MeasurandTypes ............................................26
E_ExecutionTime...............................................26
E_NotClassified .................................................26
E_SizeOf...........................................................26
ET_TestReturn......................................................20
E_Done.............................................................20
E_Failed............................................................20
E_Working ........................................................20
ETEST
ajout d'objets .....................................................28
exécution
test ...................................................................33
utilisation
ressources de test..............................................32
série de tests .....................................................30
B
V
valeurs mesurées
PD_ETest ..........................................................23
G
GVL
PD_ETest ..........................................................18
I
IF_ErrorLogger .....................................................21
IF_ManagedTestObject..........................................21
IF_MeasurandList .................................................23
IF_TestCase .........................................................22
IF_TestResource...................................................23
interface
IF_ErrorLogger ..................................................21
IF_ManagedTestObject ......................................21
IF_TestCase ......................................................22
IF_TestResource ...............................................23
L
liste des constantes globales (LCG)
PD_ETest ..........................................................16
liste des paramètres globaux (LPG)
PD_ETest ..........................................................17
M
modification de scénarios de test ............................28
P
PD_ETest
GVL ..................................................................18
EIO0000002885.01
37
Schneider Electric
35 rue Joseph Monier
92500 Rueil Malmaison
France
+ 33 (0) 1 41 29 70 00
www.se.com
Les normes, spécifications et conceptions pouvant changer de temps à
autre, veuillez demander la confirmation des informations figurant dans
cette publication.
© 2021 – Schneider Electric. Tous droits réservés.
EIO0000002885.01
EcoStruxure Machine Expert
EIO0000002945 09/2020
EcoStruxure Machine Expert
Affichage et réglage de l'horodateur
SysTimeRtc et SysTimeCore
Guide de la bibliothèque
EIO0000002945.01
09/2020
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.
© 2020 Schneider Electric. Tous droits réservés.
2
EIO0000002945 09/2020
Table des matières
Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . .
A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1 Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 2 Mise en route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ajout des bibliothèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Afficher la date et l'heure du contrôleur . . . . . . . . . . . . . . . . . . . . . . . .
Régler la date et l'heure du contrôleur. . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 3 Bibliothèque SysTimeCore . . . . . . . . . . . . . . . . . . . . . . .
3.1
Description des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeGetMs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeGetNs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeGetUs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 4 Bibliothèque SysTimeRtc . . . . . . . . . . . . . . . . . . . . . . . .
4.1
EIO0000002945 09/2020
Description des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcGet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcHighResGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcHighResSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcConvertDateToUtc. . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcConvertDateToHighRes . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcConvertUtcToDate. . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcConvertHighResToDate . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcGetTimezone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcSetTimezone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcConvertLocalToUtc . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcConvertLocalToHighRes . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcConvertUtcToLocal . . . . . . . . . . . . . . . . . . . . . . . . .
SysTimeRtcConvertHighResToLocal . . . . . . . . . . . . . . . . . . . . .
5
7
11
11
13
14
15
17
19
20
21
22
23
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
3
4.2
Description des types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SYSTIMEDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RTS_SYSTIMEDATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TimezoneInformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
42
43
43
44
45
47
EIO0000002945 09/2020
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.
EIO0000002945 09/2020
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.
QUALIFICATION DU PERSONNEL
Une personne qualifiée est une personne qui a les qualifications suivantes :
Compétences et connaissances liées à la construction et à l'exploitation d'équipements
électriques et à l'installation.
 Connaissances et expérience en programmation de contrôle industriel.
 A reçu une formation en sécurité permettant de reconnaître et d'éviter les dangers potentiels.

La personne qualifiée doit être capable de détecter d'éventuels dangers qui pourraient découler
du paramétrage, de modifications des valeurs de paramétrage et plus généralement des
équipements mécaniques, électriques ou électroniques. La personne qualifiée doit connaître les
normes, dispositions et régulations liées à la prévention des accidents de travail, et doit les
observer lors de la conception et de l'implémentation du système.
INSTRUCTIONS D'UTILISATION
Ce produit est une bibliothèque à utiliser avec un système de commande et des servoamplificateurs. La bibliothèque n'est conçue qu'en vue d'une utilisation telle que décrite dans la
présente documentation, appliquée au secteur industriel.
Observez en permanence les instructions applicables liées à la sécurité, les conditions spécifiques
et les données techniques.
Réalisez une analyse des risques en rapport avec l'utilisation spécifique avant d'utiliser ce produit.
Prenez les mesures de sécurité qui découlent des résultats.
Étant donné que ce produit est utilisé au sein d'un système qui l'englobe, vous devez assurer la
sécurité du personnel par la conception même du système global (la conception de la machine,
par exemple).
Aucune autre utilisation n'est prévue. Toute autre utilisation pourrait être dangereuse.
6
EIO0000002945 09/2020
A propos de ce manuel
Présentation
Objectif du document
Cette documentation décrit les bibliothèques SysTimeRtc et SysTimeCore.
La bibliothèque SysTimeRtc met en œuvre les fonctions de gestion du système d'exécution par
l'horodateur (RTC).
La bibliothèque SysTimeCore permet d'accéder aux routines horaires haute résolution qui
calculent les horodatages.
Le tableau suivant répertorie les fonctions des deux bibliothèques et les contrôleurs qui les
prennent en charge :
Nom de la fonction
Nom de la
bibliothèque
PacDrive
LMC
M241, M251, M258,
M262
LMC058
HMISCU
SysTimeGetMs
SysTimeCore
x
x
x
SysTimeGetNs
SysTimeCore
x
x
x
SysTimeGetUs
SysTimeCore
x
x
x
SysTimeRtcConvertDateToHighRes
SysTimeRtc
x
x
-
SysTimeRtcConvertHighResToDate
SysTimeRtc
x
x
-
SysTimeRtcHighResGet
SysTimeRtc
x
x
-
SysTimeRtcHighResSet
SysTimeRtc
x
x
-
SysTimeRtcControl
SysTimeRtc
x
-
x
SysTimeRtcConvertDateToUtc
SysTimeRtc
x
x
x
SysTimeRtcConvertUtcToDate
SysTimeRtc
x
x
x
SysTimeRtcConvertLocalToUtc
SysTimeRtc
x
x
-
SysTimeRtcConvertUtcToLocal
SysTimeRtc
x
x
-
SysTimeRtcGet
SysTimeRtc
x
x
x
SysTimeRtcSet
SysTimeRtc
x
x
x
SysTimeRtcConvertHighResToLocal
SysTimeRtc
x
x
-
SysTimeRtcConvertLocalToHighRes
SysTimeRtc
x
x
-
SysTimeRtcGetTimezone
SysTimeRtc
x
x
x
SysTimeRtcSetTimezone
SysTimeRtc
x
x
x
x Pris en charge
- Non pris en charge
EIO0000002945 09/2020
7
Champ d'application
Ce document a été actualisé pour le lancement d’EcoStruxureTM Machine Expert V1.2.5.
Documents associés
Titre du document
Référence
Modicon M241 Logic Controller - Fonctions et
variables système - Guide de la bibliothèque
PLCSystem
EIO0000001438 (ENG) ;
EIO0000001439 (FRE) ;
EIO0000001440 (GER) ;
EIO0000001441 (SPA) ;
EIO0000001442 (ITA) ;
EIO0000001443 (CHS)
Modicon M251 Logic Controller - Fonctions et
variables système - Guide de la bibliothèque
PLCSystem M
EIO0000001468 (ENG) ;
EIO0000001469 (FRE) ;
EIO0000001470 (GER) ;
EIO0000001471 (SPA) ;
EIO0000001472 (ITA) ;
EIO0000001473 (CHS)
Modicon M258 Logic Controller - Fonctions et
variables système - Guide de la bibliothèque
PLCSystem
EIO0000000584 (ENG) ;
EIO0000000585 (FRE) ;
EIO0000000586 (GER) ;
EIO0000000587 (ITA) ;
EIO0000000588 (SPA) ;
EIO0000000589 (CHS)
Modicon LMC058 Motion Controller - Fonctions et
variables système - Guide de la bibliothèque
PLCSystem
EIO0000000566 (ENG) ;
EIO0000000567 (FRE) ;
EIO0000000568 (GER) ;
EIO0000000569 (ITA) ;
EIO0000000570 (SPA) ;
EIO0000000571 (CHS)
Modicon 262 Logic/Motion Controller - Fonctions et
EIO0000003667 (ENG) ;
variables système - Guide de la bibliothèque système EIO0000003668 (FRE) ;
EIO0000003669 (GER) ;
EIO0000003670 (SPA) ;
EIO0000003671 (ITA) ;
EIO0000003672 (CHS)
Vous pouvez télécharger ces publications ainsi que d'autres informations techniques sur notre site
Web : www.schneider-electric.com/en/download.
8
EIO0000002945 09/2020
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 contrôle cruciales.
Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de
commande critique.
Les liaisons de communication peuvent faire partie des canaux de commande du système.
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 les documents suivants ou leurs équivalents pour votre site
d'installation : 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 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, d'installation et d'exploitation de variateurs de vitesse).
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.
EIO0000002945 09/2020
9
AVERTISSEMENT
UTILISATION INCORRECTE DES UNITES ORGANISATIONNELLES DU PROGRAMME






Effectuez une analyse de la sécurité de l'application et des équipements installés.
Vérifiez que les POU sont compatibles avec les équipements 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 fonctionnement à 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 IMPRÉVU DE L'ÉQUIPEMENT


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.
10
EIO0000002945 09/2020
EcoStruxure Machine Expert
Informations générales
EIO0000002945 09/2020
Chapitre 1
Informations générales
Informations générales
Informations générales
Présentation
Selon le système d'exécution, l'horodateur (RTC) du contrôleur est fourni sous la forme d'un
horodatage standard ou à haute résolution. Cet horodatage indique le nombre de secondes
(résolution standard) ou de millisecondes (haute résolution) écoulées depuis le 1er janvier 1970 à
00:00:00. C'est également le format UNIX.
Tous les contrôleurs EcoStruxure Machine Expert prennent en charge l'horodateur RTC en
résolution standard. Pour identifier les contrôleurs prenant en charge l'horodateur RTC à haute
résolution, consultez le tableau (voir page 7) dans le chapitre Objectif de ce document.
EIO0000002945 09/2020
11
Informations générales
12
EIO0000002945 09/2020
EcoStruxure Machine Expert
Mise en route
EIO0000002945 09/2020
Chapitre 2
Mise en route
Mise en route
Présentation
Ce chapitre fournit des informations essentielles pour l'utilisation des fonctions SysTime.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Ajout des bibliothèques
14
Afficher la date et l'heure du contrôleur
15
Régler la date et l'heure du contrôleur
17
EIO0000002945 09/2020
13
Mise en route
Ajout des bibliothèques
Marche à suivre
Pour accéder aux fonctions, vous devez ajouter manuellement une bibliothèque (ou les deux) :
Etape
14
Action
1
Double-cliquez sur le nœud Gestionnaire de bibliothèques du nœud
Application du contrôleur dans Outils.
2
Cliquez sur Ajouter une bibliothèque.
3
Naviguez jusqu'à Système → SysLibs, qui s'affiche lorsque le filtre Société est
réglé sur Système ou All Company.
Résultat : la liste des bibliothèques système s'affiche.
4
Sélectionnez la bibliothèque SysTimeRtc ou SysTimeCore, puis cliquez sur
OK.
Résultat : la bibliothèque apparaît dans la liste Gestionnaire de bibliothèques.
EIO0000002945 09/2020
Mise en route
Afficher la date et l'heure du contrôleur
Présentation
Pour afficher l'horodateur (RTC) du contrôleur dans un format structuré et ergonomique, vous
devez utiliser 2 fonctions.
1. Lisez l'horodateur (RTCà l'aide de la fonction SysTimeRtcGet (voir page 28) ou SysTimeRtcHighResGet (voir page 29).
2. Convertissez l'horodatage du format UNIX au format SYSTIMEDATE à l'aide de la fonction
SysTimeRtcConvertUtcToDate (voir page 34) ou SysTimeRtcConvertHighResToDate
(voir page 35).
NOTE : comme l'heure UTC (temps universel coordonné) est la même dans le monde entier, la
plupart des systèmes ne stockent et ne traitent que l'heure UTC.
Schéma de principe - Afficher l'horodateur (RTC) du contrôleur en résolution standard
Exemple
Cet exemple de programme permet d'obtenir la date et l'heure du contrôleur.
Déclaration des variables :
VAR
uidResultRtcGet: UDINT;
stGetDate: SysTimeRtc.RTS_SYSTIMEDATE;
uiGetYear: UINT;
uiGetMonth: UINT;
uiGetDay: UINT;
uiGetHour: UINT;
uiGetMinute: UINT;
uiGetSecond: UINT;
uiGetMSecond: UINT;
EIO0000002945 09/2020
15
Mise en route
uiGetDayOfWeek: UINT;
uiGetYday: UINT;
uidResultConvertToDate: UDINT;
END_VAR
Programme de la POU :
1
2
16
Affichez l'horodateur (RTC) du contrôleur sous la forme d'un horodatage.
Convertissez cet horodatage au format SYSTIMEDATE.
EIO0000002945 09/2020
Mise en route
Régler la date et l'heure du contrôleur
Présentation
Pour régler l'horodateur (RTC) du contrôleur dans un format structuré et ergonomique, vous devez
utiliser 2 fonctions.
1. Convertissez le format SYSTIMEDATE de l'horodatage au format UNIX à l'aide de la fonction
SysTimeRtcConvertDateToUtc (voir page 32) ou SysTimeRtcConvertDateToHighRes
(voir page 33).
2. Ecrivez l'horodateur (RTC) à l'aide de la fonction SysTimeRtcSet (voir page 30) ou
SysTimeRtcHighResSet (voir page 31).
NOTE : certains contrôleurs prennent en charge une fonction de correction automatique
hebdomadaire de l'horodateur. Cette fonction s'appelle SetRTCDrift. Vous pouvez l'utiliser à la
place de la fonction SysTimeRtcSet pour réajuster en permanence l'horodateur (RTC). Pour
vérifier si cette fonction est prise en charge et en savoir plus sur celle-ci, consultez le Guide de la
bibliothèque PLCSystem (voir page 8) de votre contrôleur.
NOTE : comme l'heure UTC (temps universel coordonné) est la même dans le monde entier, la
plupart des systèmes ne stockent et ne traitent que l'heure UTC.
Schéma de principe - Régler l'horodateur (RTC) du contrôleur avec la résolution standard
Exemple
Cet exemple de programme permet à l'utilisateur de régler l'horodateur de l'automate sur une date
et une heure personnalisée.
Déclaration des variables :
VAR
uiSetYear: UINT;
uiSetMonth: UINT;
uiSetDay: UINT;
uiSetHour: UINT;
uiSetMinute: UINT;
EIO0000002945 09/2020
17
Mise en route
uiSetSecond: UINT;
uiSetMSecond: UINT
udiResultConvertToUtc: UDINT;
dwSetTimeStamp: DWORD;
xCommandSetRtc: BOOL;
uidResultRtcSet: UDINT;
END_VAR
Programme de la POU :
1
2
3
18
Attribuez le paramètre de date et d'heure à la structure.
Convertissez le format SYSTIMEDATE en un horodatage.
Réglez un nouvel horodatage sur l'horodateur (RTC) du contrôleur si xCommandSetRtc = TRUE et si la
conversion a abouti.
EIO0000002945 09/2020
EcoStruxure Machine Expert
Bibliothèque SysTimeCore
EIO0000002945 09/2020
Chapitre 3
Bibliothèque SysTimeCore
Bibliothèque SysTimeCore
EIO0000002945 09/2020
19
Bibliothèque SysTimeCore
Sous-chapitre 3.1
Description des fonctions
Description des fonctions
Présentation
Cette section décrit les fonctions de la bibliothèque SysTimeCore.
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
20
Page
SysTimeGetMs
21
SysTimeGetNs
22
SysTimeGetUs
23
EIO0000002945 09/2020
Bibliothèque SysTimeCore
SysTimeGetMs
Description de la fonction
Renvoie un compteur croissant monotone de millisecondes. Cette valeur est utilisée pour les
mesures de timeout et d'heure relatives. Ce compteur est réinitialisé à chaque redémarrage du
contrôleur.
NOTE : l'horodateur n'a aucune influence sur ce compteur.
Représentation graphique
Description des variables d'E/S
Sortie
Type
Description
SysTimeGetMs
UDINT
Valeur du compteur de millisecondes, réinitialisée au
démarrage.
EIO0000002945 09/2020
21
Bibliothèque SysTimeCore
SysTimeGetNs
Description de la fonction
Renvoie un compteur croissant monotone de nanosecondes. Cette valeur est utilisée pour les
mesures de timeout et d'heure à haute résolution.
Ce compteur est réinitialisé à chaque redémarrage du contrôleur.
NOTE : l'horodateur n'a aucune influence sur ce compteur.
Représentation graphique
Description des variables d'E/S
Sortie
Type
Description
SysTimeGetNs
UDINT
Code d'erreur du système d'exécution (consultez
CmpErrors.library) :
0 = aucune erreur détectée
Entrée/Sortie
Type
Description
pUsTime
SYSTIME
Valeur du compteur de nanosecondes, réinitialisée au
démarrage.
NOTE : SYSTIME est un type d'alias basé sur le type de données ULINT.
22
EIO0000002945 09/2020
Bibliothèque SysTimeCore
SysTimeGetUs
Description de la fonction
Renvoie un compteur croissant monotone de microsecondes. Cette valeur est utilisée pour les
mesures de timeout et d'heure à haute résolution.
Ce compteur est réinitialisé à chaque redémarrage du contrôleur.
NOTE : l'horodateur n'a aucune influence sur ce compteur.
Représentation graphique
Description des variables d'E/S
Sortie
Type
Description
SysTimeGetUs
UDINT
Code d'erreur du système d'exécution (consultez
CmpErrors.library) :
0 = aucune erreur détectée
Entrée/Sortie
Type
Description
pUsTime
SYSTIME
Valeur du compteur de microsecondes, réinitialisée à
chaque redémarrage.
NOTE : SYSTIME est un type d'alias basé sur le type de données ULINT.
EIO0000002945 09/2020
23
Bibliothèque SysTimeCore
24
EIO0000002945 09/2020
EcoStruxure Machine Expert
Bibliothèque SysTimeRtc
EIO0000002945 09/2020
Chapitre 4
Bibliothèque SysTimeRtc
Bibliothèque SysTimeRtc
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
4.1
Description des fonctions
26
4.2
Description des types de données
42
EIO0000002945 09/2020
25
Bibliothèque SysTimeRtc
Sous-chapitre 4.1
Description des fonctions
Description des fonctions
Présentation
Cette section décrit les fonctions de la bibliothèque SysTimeRtc.
La fonction de l'horodateur gère deux types d'horodatage :
Heure UTC : heure en temps universel coordonné, qui a remplacé l'heure du méridien de
Greenwich. Les fuseaux horaires sont indiqués avec un décalage positif ou négatif par rapport
à l'heure UTC. Par exemple, UTC+1 correspond à l'heure de l'Europe centrale (CET) et UTC+2
à l'heure d'été de l'Europe centrale (CEST).
Heure locale : heure locale, avec l'heure d'été et le décalage du fuseau horaire.
NOTE : comme l'heure UTC (temps universel coordonné) est la même dans le monde entier, la
plupart des systèmes ne stockent et ne traitent que l'heure UTC.
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
26
Page
SysTimeRtcControl
27
SysTimeRtcGet
28
SysTimeRtcHighResGet
29
SysTimeRtcSet
30
SysTimeRtcHighResSet
31
SysTimeRtcConvertDateToUtc
32
SysTimeRtcConvertDateToHighRes
33
SysTimeRtcConvertUtcToDate
34
SysTimeRtcConvertHighResToDate
35
SysTimeRtcGetTimezone
36
SysTimeRtcSetTimezone
37
SysTimeRtcConvertLocalToUtc
38
SysTimeRtcConvertLocalToHighRes
39
SysTimeRtcConvertUtcToLocal
40
SysTimeRtcConvertHighResToLocal
41
EIO0000002945 09/2020
Bibliothèque SysTimeRtc
SysTimeRtcControl
Description de la fonction
Cette fonction permet de lire les informations sur l'état matériel de l'horodateur (RTC).
Cette fonction n'est pas disponible pour tous les contrôleurs pris en charge. Veuillez consulter le
Guide de programmation spécifique à votre contrôleur pour plus d'informations.
Représentation graphique
Description des variables d'E/S
Entrée
Type
Description
iControlTag
DINT
0 = pour vérifier la pile de l'horodateur (RTC)
1 = pour vérifier le format des heures de l'horodateur
(RTC)
Entrée/Sortie
Type
Description
pdiControlResult
DINT
Résultat de la vérification.
Vérification du format des heures :
0 = format 12 heures
1 = format 24 heures
Vérification de la pile :
0 = indique que la pile doit être remplacée
1 = pile chargée
Sortie
Type
Description
SysTimeRtcControl
UDINT
Code d'erreur du système d'exécution (consultez
CmpErrors.library) :
0 = aucune erreur détectée
EIO0000002945 09/2020
27
Bibliothèque SysTimeRtc
SysTimeRtcGet
Description de la fonction
Cette fonction permet de lire la valeur de l'horodateur (RTC) du contrôleur. Le RTC est fourni sous
la forme d'un horodatage qui indique le nombre de secondes écoulées depuis le 1er janvier 1970
à 00:00:00.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
Type
Description
pResult
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
Sortie
Type
Description
SysTimeRtcGet
DWORD
RTC du contrôleur (nombre de secondes
écoulées depuis le 1er janvier 1970 à
00:00:00)
NOTE : un exemple d'utilisation de cette fonction est fourni dans ce document. (voir page 15)
28
EIO0000002945 09/2020
Bibliothèque SysTimeRtc
SysTimeRtcHighResGet
Description de la fonction
Cette fonction permet de lire la valeur de l'horodateur (RTC) du contrôleur. L'horodateur (RTC)
fournit un horodatage à haute résolution, qui indique le nombre de millisecondes écoulées depuis
le 1er janvier 1970 à 00:00:00:000.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
Type
Description
pTimestamp
SYSTIME
Heure en millisecondes depuis le
1er janvier 1970 à 00:00:00:000
Sortie
Type
Description
SysTimeRtcHighResGet
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
NOTE : SYSTIME est un type d'alias basé sur le type de données ULINT.
EIO0000002945 09/2020
29
Bibliothèque SysTimeRtc
SysTimeRtcSet
Description de la fonction
Cette fonction permet de régler l'horodateur du contrôleur à l'aide d'un horodatage fourni qui
indique le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00.
NOTE : le réglage de l'horodateur (RTC) du contrôleur génère des entrées dans le fichier journal
du contrôleur. Par conséquent, n'utilisez pas cette fonction plus d'une fois par jour pour les
ajustements automatiques.
Représentation graphique
Description des variables d'E/S
Entrée
Type
Description
ulTimestamp
DWORD
Valeur d'horodatage (nombre de secondes
écoulées depuis le 1er janvier 1970
00:00:00)
Sortie
Type
Description
SysTimeRtcSet
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
NOTE : un exemple d'utilisation de cette fonction est fourni dans ce document. (voir page 17)
30
EIO0000002945 09/2020
Bibliothèque SysTimeRtc
SysTimeRtcHighResSet
Description de la fonction
Cette fonction permet de régler l'horodateur (RTC) du contrôleur à l'aide d'un horodatage à haute
résolution fourni, qui indique le nombre de secondes écoulées depuis le 1er janvier 1970 à
00:00:00:000.
NOTE : le réglage de l'horodateur (RTC) du contrôleur génère des entrées dans le fichier journal
du contrôleur. Par conséquent, n'utilisez pas cette fonction plus d'une fois par jour pour les
ajustements automatiques.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
Type
Description
pTimestamp
SYSTIME
Horodatage (nombre de secondes écoulées depuis le
1er janvier 1970 00:00:00:000)
Sortie
Type
Description
SysTimeRtcHighResSet
UDINT
Code d'erreur du système d'exécution (consultez
CmpErrors.library) :
0 = aucune erreur détectée
EIO0000002945 09/2020
31
Bibliothèque SysTimeRtc
SysTimeRtcConvertDateToUtc
Description de la fonction
Cette fonction convertit une date et une heure au format SYSTIMEDATE (voir page 43) en
l'horodatage correspondant. Cet horodatage indique le nombre de secondes écoulées depuis le
1er janvier 1970 à 00:00:00.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
Type
Description
pDate
SYSTIMEDATE
Date et heure à convertir.
DWORD
Horodatage calculé à partir de pDate.
(voir page 43)
pdwTimestampUtc
Sortie
Type
Description
SysTimeRtcConvertDateToUtc
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
NOTE : un exemple d'utilisation de cette fonction est fourni dans ce document. (voir page 17)
32
EIO0000002945 09/2020
Bibliothèque SysTimeRtc
SysTimeRtcConvertDateToHighRes
Description de la fonction
Cette fonction convertit une date et une heure au format SYSTIMEDATE (voir page 43) en un
horodatage à haute résolution. L'horodatage indique le nombre de millisecondes écoulées depuis
le 1er janvier 1970 à 00:00:00:000.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
Type
Description
pDate
SYSTIMEDATE
Heure à convertir.
pTimestamp
SYSTIME
Horodatage calculé à partir de pDate.
Sortie
Type
Description
SysTimeRtcConvertDateToHighRes
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
(voir page 43)
NOTE : SYSTIME est un type d'alias basé sur le type de données ULINT.
EIO0000002945 09/2020
33
Bibliothèque SysTimeRtc
SysTimeRtcConvertUtcToDate
Description de la fonction
Cette fonction convertit un horodatage en une date et une heure au format SYSTIMEDATE
(voir page 43). Cet horodatage indique le nombre de secondes écoulées depuis le
1er janvier 1970 à 00:00:00.
Représentation graphique
Description des variables d'E/S
Entrée
Type
Description
dwTimestampUtc
DWORD
Horodatage à convertir.
Entrée/Sortie
Type
Description
pDate
SYSTIMEDATE
Date et heure calculées à partir de la valeur
d'entrée.
(voir page 43)
Sortie
Type
Description
SysTimeRtcConvertUtcToDate
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
NOTE : un exemple d'utilisation de cette fonction est fourni dans ce document. (voir page 15)
34
EIO0000002945 09/2020
Bibliothèque SysTimeRtc
SysTimeRtcConvertHighResToDate
Description de la fonction
Cette fonction convertit un horodatage à haute résolution en une date et une heure au format
SYSTIMEDATE (voir page 43). L'horodatage indique le nombre de millisecondes écoulées depuis
le 1er janvier 1970 à 00:00:00:000.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
Type
Description
pTimestamp
SYSTIME
Horodatage à convertir.
SYSTIMEDATE
Date et heure calculées à partir de la
valeur d'entrée.
pDate
(voir page 43)
Sortie
Type
Description
SysTimeRtcConvertHighResToDate
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
NOTE : SYSTIME est un type d'alias basé sur le type de données ULINT.
EIO0000002945 09/2020
35
Bibliothèque SysTimeRtc
SysTimeRtcGetTimezone
Description de la fonction
Cette fonction permet de lire les paramètres du fuseau horaire du contrôleur.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
Type
Description
TimezoneInformation
Paramètres du fuseau horaire du contrôleur.
Sortie
Type
Description
SysTimeRtcGetTimezone
UDINT
Code d'erreur du système d'exécution (consultez
CmpErrors.library) :
0 = aucune erreur détectée
pTimezone
(voir page 44)
36
EIO0000002945 09/2020
Bibliothèque SysTimeRtc
SysTimeRtcSetTimezone
Description de la fonction
Cette fonction permet de régler les paramètres du fuseau horaire spécifié.
NOTE : L'exécution de la fonction SysTimeRtcSetTimezone peut prendre plusieurs centaines
de millisecondes. Le temps d'exécution est plus long à cause du stockage du paramètre
TimezoneInformation dans un fichier de configuration sur le contrôleur.
Pour éviter le blocage d'autres tâches en exécutant cette fonction, implémentez l'une des mesures
suivantes :
 Utilisez le mécanisme asynchrone fourni par la bibliothèque AsyncManager (voir EcoStruxure
Machine Expert, AsyncManager, Guide de la bibliothèque) pour déléguer l'appel de fonction à
une tâche externe.
 Implémentez l'appel de fonction dans une tâche distincte avec la configuration de tâche
appropriée.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
Type
Description
pTimezone
TimezoneInformation
Paramètres du fuseau horaire à régler pour le
contrôleur.
(voir page 44)
Sortie
Type
Description
SysTimeRtcSetTimezone
UDINT
Code d'erreur du système d'exécution (consultez
CmpErrors.library) :
0 = aucune erreur détectée
EIO0000002945 09/2020
37
Bibliothèque SysTimeRtc
SysTimeRtcConvertLocalToUtc
Description de la fonction
Cette fonction calcule l'horodatage UTC (temps universel coordonné) à partir d'une heure locale,
en fonction du fuseau horaire configuré sur le système d'exécution. L'horodatage (UTC) et
l'horodatage local indiquent le nombre de secondes écoulées depuis le 1er janvier 1970 à
00:00:00.
Représentation graphique
Description des variables d'E/S
38
Entrée
Type
Description
dwTimestampLocal
DWORD
Horodatage local
Entrée/Sortie
Type
Description
pdwTimestampUTC
DWORD
Horodatage UTC calculé à partir de l'entrée
Sortie
Type
Description
SysTimeRtcConvertLocalToUtc
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
EIO0000002945 09/2020
Bibliothèque SysTimeRtc
SysTimeRtcConvertLocalToHighRes
Description de la fonction
Cette fonction convertit une date et une heure au SYSTIMEDATE (voir page 43) en un horodatage
à haute résolution, en fonction des paramètres du fuseau horaire du système d'exécution.
La valeur pDate représente l'heure locale et sera convertie en une valeur UTC fournie sur
pTimestamp. La valeur pTimestamp indique le nombre de millisecondes écoulées depuis le
1er janvier 1970 à 00:00:00:000.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
pDate
Type
Description
SYSTIMEDATE
Heure à locale à convertir.
SYSTIME
Horodatage calculé à partir de pDate.
(voir page 43)
pTimestamp
Sortie
Type
Description
SysTimeRtcConvertLocalToHighRes
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
NOTE : SYSTIME est un type d'alias basé sur le type de données ULINT.
EIO0000002945 09/2020
39
Bibliothèque SysTimeRtc
SysTimeRtcConvertUtcToLocal
Description de la fonction
Cette fonction calcule l'heure locale à partir de l'horodatage UTC (temps universel coordonné), en
fonction du fuseau horaire configuré sur le système d'exécution. L'horodatage UTC et l'horodatage
local indiquent le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00.
Représentation graphique
Description des variables d'E/S
40
Entrée
Type
Description
dwTimestampUtc
DWORD
Horodatage UTC
Entrée/Sortie
Type
Description
pdwTimestampLocal
DWORD
Horodatage local calculé à partir de l'entrée.
Sortie
Type
Description
SysTimeRtcConvertUtcToLocal
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
EIO0000002945 09/2020
Bibliothèque SysTimeRtc
SysTimeRtcConvertHighResToLocal
Description de la fonction
Cette fonction convertit un horodatage à haute résolution en un horodatage au format
SYSTIMEDATE (voir page 43), en fonction des paramètres du fuseau horaire du système
d'exécution. La valeur pTimestamp représente l'horodatage UTC et sera convertie en l'heure
locale fournie sur pDate.
Représentation graphique
Description des variables d'E/S
Entrée/Sortie
Type
Description
pTimestamp
SYSTIME
Horodatage à convertir.
pDate
SYSTIMEDATE
Heure locale calculée à partir de
pTimestamp.
(voir page 43)
Sortie
Type
Description
SysTimeRtcConvertHighResToLocal
UDINT
Code d'erreur du système d'exécution
(consultez CmpErrors.library) :
0 = aucune erreur détectée
NOTE : SYSTIME est un type d'alias basé sur le type de données ULINT.
EIO0000002945 09/2020
41
Bibliothèque SysTimeRtc
Sous-chapitre 4.2
Description des types de données
Description des types de données
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
42
Page
SYSTIMEDATE
43
RTS_SYSTIMEDATE
43
TimezoneInformation
44
EIO0000002945 09/2020
Bibliothèque SysTimeRtc
SYSTIMEDATE
Description du type de données
Le type de données SYSTIMEDATE est un type d'alias basé sur le type de données
RTS_SYSTIMEDATE.
RTS_SYSTIMEDATE
Description du type de données
Le type de données RTS_SYSTIMEDATE est une structure qui met en œuvre les éléments
nécessaires pour représenter un horodatage haute résolution.
Cette structure contient des informations détaillées sur la date et l'heure, qui sont présentées dans
un format lisible (contrairement à l'horodatage).
Nom
Type
Description
wYear
UINT
Année
wMonth
UINT
Mois, valeurs de 1 à 12 (1 = janvier, 12 = décembre)
wDay
UINT
Jour du mois, valeurs de 1 à 31
wHour
UINT
Heure du jour, valeurs de 0 à 23
wMinute
UINT
Minutes de l'heure, valeurs de 0 à 59
wSecond
UINT
Secondes de la minute, valeurs de 0 à 59
wMilliseconds
UINT
Millisecondes de la seconde, valeurs de 0 à 999
wDayOfWeek
UINT
Jour de la semaine, valeurs de 0 à 7 (1 = lundi, 6 =
samedi, 0 ou 7 = dimanche*)
* La représentation de cette valeur dépend du contrôleur.
wYday
UINT
Jour de l'année, valeurs de 1 à 366 (1 = 1er janvier, 365
ou 366 = 31 décembre)
EIO0000002945 09/2020
43
Bibliothèque SysTimeRtc
TimezoneInformation
Description du type de données
Cette information décrit un fuseau horaire local avec l'heure normale et l'heure d'été (également
appelées heure d'hiver et heure d'été).
Nom
Type
Description
ulStandardDate
UDINT
Date à convertir en heure normale (de l'heure d'été à
l'heure d'hiver).
ulDaylightDate
UDINT
Nombre de
secondes
écoulées depuis
Date à convertir en heure d'été (de l'heure d'hiver à l'heure
le
d'été).
1er janvier 1970
à 00:00:00.
szStandardName
STRING (32)
Heure normale du fuseau horaire (heure d'hiver).
Chaîne de
32 caractères au
maximum
szDaylightName
STRING (32)
Heure d'été.
Chaîne de
32 caractères au
maximum
iBias
INT
UTC = heure locale + décalage
minutes
iStandardBias
INT
Décalage supplémentaire par rapport à l'heure normale
(heure d'hiver).
minutes
iDayligthBias
INT
Décalage supplémentaire par rapport à l'heure d'été.
minutes
44
Unité
EIO0000002945 09/2020
EcoStruxure Machine Expert
Glossaire
EIO0000002945 09/2020
Glossaire
U
UTC
Acronyme de Universal Time Coordinated. Principal standard horaire utilisé dans le monde pour
régler les horloges.
EIO0000002945 09/2020
45
Glossaire
46
EIO0000002945 09/2020
EcoStruxure Machine Expert
Index
EIO0000002945 09/2020
Index
A
affichage de l'horodateur du contrôleur, 15
exemples, 15
C
compteurs horaires
SysTimeCore, 20
conversion
SysTimeRtcConvertDateToUtc, 32
SysTimeRtcConvertUtcToDate, 34
D
date
SysTimeRtcConvertDateToUtc, 32
SysTimeRtcConvertUtcToDate, 34
date et heure du contrôleur
affichage, 15
réglage, 17
E
exemples
affichage de la date et de l'heure du
contrôleur, 15
réglage de l'heure et de l'heure du contrôleur, 17
F
fonctions
SysTimeCore, 20
SysTimeRtc, 26
EIO0000002945 09/2020
H
heure
SysTimeGetMs, 21
SysTimeGetNs, 22
SysTimeGetUs, 23
horodatage
SysTimeRtc, 26
SysTimeRtcConvertDateToUtc, 32
SysTimeRtcConvertUtcToDate, 34
horodatage à haute résolution
SysTimeRtc, 26
horodatage à résolution standard
SysTimeRtc, 26
horodateur
SysTimeRtcControl, 27
SysTimeRtcConvertDateToHighRes, 33
SysTimeRtcConvertHighResToDate, 35
SysTimeRtcConvertHighResToLocal, 41
SysTimeRtcConvertLocalToHighRes, 39
SysTimeRtcGet, 28
SysTimeRtcGetTimezone, 36
SysTimeRtcHighResGet, 29
SysTimeRtcHighResSet, 31
SysTimeRtcSet, 30
SysTimeRtcSetTimezone, 37
R
réglage de l'horodateur du contrôleur, 17
exemples, 17
RTC
SysTimeRtcControl, 27
SysTimeRtcConvertDateToHighRes, 33
SysTimeRtcConvertHighResToDate, 35
SysTimeRtcConvertHighResToLocal, 41
SysTimeRtcConvertLocalToHighRes, 39
SysTimeRtcGet, 28
SysTimeRtcHighResGet, 29
SysTimeRtcHighResSet, 31
47
Index
RTC (horodateur), 13
SysTimeRtcGetTimezone, 36
SysTimeRtcSet, 30
SysTimeRtcSetTimezone, 37
RTS_SYSTIMEDATE, 43
S
SysTime, fonctions
SysTimeCore, bibliothèque, 13
SysTimeRtc, bibliothèque, 13
SysTimeCore
compteurs horaires, 20
fonctions, 20
informations générales, 11
SysTimeGetMs, 21
SysTimeGetNs, 22
SysTimeGetUs, 23
SYSTIMEDATE, 43
SysTimeGetMs, 21
SysTimeGetNs, 22
SysTimeGetUs, 23
SysTimeRtc
fonctions, 26
informations générales, 11
RTS_SYSTIMEDATE, 43
SYSTIMEDATE, 43
SysTimeRtcControl, 27
SysTimeRtcConvertDateToHighRes, 33
SysTimeRtcConvertDateToUtc, 32
SysTimeRtcConvertHighResToDate, 35
SysTimeRtcConvertHighResToLocal, 41
SysTimeRtcConvertLocalToHighRes, 39
SysTimeRtcConvertUtcToDate, 34
SysTimeRtcConvertUtcToLocal, 40
SysTimeRtcGet, 28
SysTimeRtcGetTimezone, 36
SysTimeRtcHighResGet, 29
SysTimeRtcHighResSet, 31
SysTimeRtcSet, 30
SysTimeRtcSetTimezone, 37
TimezoneInformation, 44
SysTimeRtcControl, 27
SysTimeRtcConvertDateToHighRes, 33
SysTimeRtcConvertDateToUtc, 32
48
SysTimeRtcConvertHighResToDate, 35
SysTimeRtcConvertHighResToLocal, 41
SysTimeRtcConvertLocalToHighRes, 39
SysTimeRtcConvertLocalToUtc, 38
SysTimeRtcConvertLocalToUtc, 38
SysTimeRtcConvertUtcToDate, 34
SysTimeRtcConvertUtcToLocal, 40
SysTimeRtcGet, 28
SysTimeRtcGetTimezone, 36
SysTimeRtcHighResGet, 29
SysTimeRtcHighResSet, 31
SysTimeRtcSet, 30
SysTimeRtcSetTimezone, 37
T
temps universel coordonné (UTC)
SysTimeRtcConvertLocalToUtc, 38
SysTimeRtcConvertUtcToLocal, 40
TimezoneInformation, 44
types de données
RTS_SYSTIMEDATE, 43
SYSTIMEDATE, 43
SysTimeRtc, 42
TimezoneInformation, 44
U
UTC
SysTimeRtcConvertLocalToUtc, 38
SysTimeRtcConvertUtcToDate, 34
SysTimeRtcConvertUtcToLocal, 40
UTC (temps universel coordonné), 13
EIO0000002945 09/2020
EcoStruxure Machine Expert
EIO0000000097 06/2019
EcoStruxure Machine Expert
Fonctions diverses Toolbox
Guide de la bibliothèque
EIO0000000097.07
06/2019
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.
© 2019 Schneider Electric. Tous droits réservés.
2
EIO0000000097 06/2019
Table des matières
Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . .
A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . .
Partie III Fonctions en boucle fermée . . . . . . . . . . . . . . . . . . .
11
17
21
23
23
25
27
27
29
29
31
31
33
Bloc fonction FB_2points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
36
36
39
39
40
Partie I Exigences des fonctions . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1 Exigences des fonctions . . . . . . . . . . . . . . . . . . . . . . . . .
Configuration requise pour la bibliothèque de fonctions Toolbox . . . .
Partie II Fonctions de bits. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 2 Organisation de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Organisation des bits pour le type DWORD . . . . . . . . . . . . . . . . . . . .
Chapitre 3 SetBitTo: Activation/désactivation d'un bit . . . . . . . . . . .
Fonction SetBitTo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 4 TestBit: Test d'un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonction TestBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 5 FB_2points : Elément de transfert en boucle fermée à 2
points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 6 FB_3points : élément de transfert de 3 points en boucle
fermée. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction FB_3points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 7 FB_3points_Ext : Extension de boucle fermée pour
l'élément de transfert en 3 points . . . . . . . . . . . . . . . . . .
Bloc fonction FB_3points_Ext. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000000097 06/2019
41
42
43
45
45
46
47
48
49
52
52
53
3
Chapitre 8 FB_P : Boucle de commande avec algorithme
proportionnel seulement . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction FB_P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 9 FB_PI: Commande de processus proportionnelle et
intégrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction FB_PI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 10 FB_PID : Commande de processus de fonctionnement en
mode manuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction FB_PID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instanciation et exemple d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 11 FB_PI_PID : Boucle de commande en cascade PI_PID. .
Bloc fonction FB_PI_PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structures utilisées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie IV Fonctions de commande d'équipement . . . . . . . . . .
Chapitre 12 FB_Cyclic_Monitoring : Surveillance cyclique . . . . . . . . .
Bloc fonction FB_Cyclic_Monitoring . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instanciation et exemple d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 13 FB_DeadBand: Suppression d'oscillations d'amplitude . .
Bloc fonction FB_DeadBand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
55
56
57
59
60
61
62
64
66
68
69
70
74
76
78
80
87
88
89
92
93
94
97
99
100
102
102
103
105
106
108
108
EIO0000000097 06/2019
Chapitre 14 FB_Limiter : Limitation des signaux d'entrée . . . . . . . . .
Bloc fonction FB_Limiter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 15 FB_PWM : Fourniture d'une sortie PWM . . . . . . . . . . . .
Bloc fonction FB_PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 16 FB_Redundant_Sensor_Monitoring : Surveillance de
capteur redondant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction FB_Redundant_Sensor_Monitoring . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 17 FB_Scaling : Mise à l'échelle des signaux d'entrée . . . .
Bloc fonction FB_Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 18 FB_Sensor_Monitoring : Surveillance de capteur. . . . . .
Bloc fonction FB_Sensor_Monitoring . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instanciation et exemple d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie V Fonctions de filtrage . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 19 Liste des paramètres globaux. . . . . . . . . . . . . . . . . . . . .
Liste des paramètres globaux (GPL) . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 20 Filter_AnalogInput : Vérification de la variabilité d'entrée
analogique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction Filter_AnalogInput . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 21 Filter_Arithmetic: Fourniture de moyenne arithmétique .
Bloc fonction Filter_Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000000097 06/2019
109
110
112
113
115
116
122
122
123
125
126
128
131
133
134
136
136
137
138
139
140
140
143
145
145
147
148
150
150
151
152
154
154
5
Chapitre 22 Filter_MovingAverage : Fourniture d'une valeur de
moyenne mobile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie VI Retournements. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
155
156
158
159
161
162
164
165
166
171
Bloc fonction JK_FlipFlop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
173
173
Bloc fonction Filter_MovingAverage . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 23 Filter_PT1 : Fourniture d'une fonction de transfert PT1 . .
Bloc fonction Filter_PT1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instanciation et exemple d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 24 JK_FlipFlop : Initialisation/réinitialisation de l'entrée vers
sortie de retournement . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 25 JK_FlipFlop_MasterSlave: Initialisation/réinitialisation de
l'entrée de la sortie de retournement . . . . . . . . . . . . . . . .
Bloc fonction JK_FlipFlop_MasterSlave . . . . . . . . . . . . . . . . . . .
Chapitre 26 RS_FlipFlop: Activation/réinitialisation de l'entrée/sortie
de retournement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction RS_FlipFlop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 27 SR_FlipFlop: Activation/réinitialisation de l'entrée/sortie
de retournement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction SR_FlipFlop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 28 Toggle_FlipFlop: Basculement de l'entrée/sortie de
retournement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction Toggle_FlipFlop . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie VII Fonctions mathématiques . . . . . . . . . . . . . . . . . . . .
Chapitre 29 Analysis: Calcul de valeurs intégrales et dérivées . . . . . .
Bloc fonction Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 30 Frequency_Multiplier: Mise en œuvre de 32 clignoteurs .
Bloc fonction Frequency_Multiplier . . . . . . . . . . . . . . . . . . . . . .
Sans maintien Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonctionnalité avec description de condition . . . . . . . . . . . . . . . . . . . .
Chapitre 31 Frequency_Output: Mise en œuvre d'une fréquence . . . .
Bloc fonction Frequency_Output . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 32 Normalizer_With_Limiter: Mise à l'échelle de l'entrée
Minimale et Maximale. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction Normalizer_With_Limiter . . . . . . . . . . . . . . . . . . .
6
175
175
179
179
181
181
183
183
185
187
187
189
190
191
193
195
195
203
203
EIO0000000097 06/2019
Chapitre 33 ONE_SEC_PULSE: Fourniture d'impulsions à chaque
seconde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction ONE_SEC_PULSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 34 Quantizer: Numérisation de la valeur d'entrée pour
l'intervalle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction Quantizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 35 Signal_Saturation: Limitation aux limites supérieure et
inférieure de saturation . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction Signal_Saturation . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 36 Signal_Statistics: Calcul de Maximum, de Minimum, de
Moyenne et de Variance. . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction Signal_Statistics . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 37 Check_Divisor: Vérification de condition de division par
zéro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
207
207
209
209
211
211
217
217
Partie VIII Fonctions de conversion numérique . . . . . . . . . . . . .
221
221
223
Fonction ArrayOfByte_TO_String. . . . . . . . . . . . . . . . . . . . . . . . .
225
225
Bloc fonction Check_Divisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 38 ArrayOfByte_TO_String: Conversion d'un tableau en
format octet au format chaîne. . . . . . . . . . . . . . . . . . . . .
Chapitre 39 DT_AS_WORD: Conversion de Date et Heure sous forme
d'un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction DT_AS_WORD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 40 DWORD_AS_WORD: Division d'un mot double en deux
mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction DWORD_AS_DWORD. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 41 String_TO_ArrayOfByte: Tableau de sortie et valeur
ASCII de la chaîne d'entrée . . . . . . . . . . . . . . . . . . . . . .
Fonction String_TO_ArrayOfByte. . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 42 WORD_AS_DWORD: Décalage du mot de poids fort et
ajout du mot de poids faible . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction WORD_AS_DWORD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie IX Conversion physique . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 43 Celsius_TO_Fahrenheit: Conversion de Celsius en
Fahrenheit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction Celsius_TO_Fahrenheit . . . . . . . . . . . . . . . . . . . . .
Chapitre 44 Celsius_TO_Kelvin: Conversion de Celsius en Kelvin . .
Bloc fonction Celsius_TO_Celsius . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000000097 06/2019
229
229
231
231
233
233
237
237
239
241
241
243
243
7
Chapitre 45 Fahrenheit_TO_Celsius: Conversion de Fahrenheit en
Celsius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction Fahrenheit_TO_Celsius . . . . . . . . . . . . . . . . . . . . .
Chapitre 46 Frequency_TO_Period: Calcul de la période temporelle
d'une fréquence donnée. . . . . . . . . . . . . . . . . . . . . . . . . .
Fonction Frequency_TO_Period . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 47 Kelvin_TO_Celsius: Conversion de Kelvin en Celsius . . .
Bloc fonction Kelvin_TO_Celsius . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 48 Period_TO_Frequency: Calcul de la fréquence du temps
donné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonction Period_TO_Frequency . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie X Utilitaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 49 Hour_Meter : Accumulation d'heures de fonctionnement .
Bloc fonction Hour_Meter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Broche d'entrée – sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structures utilisées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des bits du mot de commande . . . . . . . . . . . . . . . . . . . . .
Mot d'état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instanciation et exemple d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 50 Operation_Mode : Sélection du mode de fonctionnement
Bloc fonction Operation_Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des bits du mot de commande . . . . . . . . . . . . . . . . . . . . .
Mot d'état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie XI Commande de vanne . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 51 Bistable_Valve: Commandes vannes bistables . . . . . . . .
Bloc fonction Bistable_Valve . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des bits du mot de commande . . . . . . . . . . . . . . . . . . . . .
Mot d'état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instanciation et exemple d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . .
8
245
245
247
247
249
249
251
251
253
255
256
258
259
259
260
260
261
262
265
266
267
268
269
270
271
273
274
277
278
278
279
279
280
EIO0000000097 06/2019
Chapitre 52 Monostable_Valve: Commande de vannes monostables
Bloc fonction Monostable_Valve. . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des bits du mot de commande . . . . . . . . . . . . . . . . . . . . .
Mot d'état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 53 Proportional_Valve: Commande de vannes
proportionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloc fonction Proportional_Valve . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des broches de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Broche d'entrée/sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structures utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Description des bits du mot de commande . . . . . . . . . . . . . . . . . . . . .
Mot d'état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instanciation et exemple d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . .
Glossaire
Index
EIO0000000097 06/2019
.........................................
.........................................
281
282
284
285
285
286
286
287
288
291
292
293
293
294
295
296
297
303
9
10
EIO0000000097 06/2019
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.
EIO0000000097 06/2019
11
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.
QUALIFICATION DU PERSONNEL
Une personne qualifiée est une personne qui a les qualifications suivantes :
Compétences et connaissances liées à la construction et à l'exploitation d'équipements
électriques et à l'installation.
 Connaissance de l'exploitation des fonctionnalités de la machine dans l'implémentation du
logiciel.
 A reçu une formation en sécurité permettant de reconnaître et d'éviter les dangers potentiels.

La personne qualifiée doit être capable de détecter d'éventuels dangers qui pourraient découler
du paramétrage, de modifications des valeurs de paramétrage et plus généralement des
équipements mécaniques, électriques ou électroniques. La personne qualifiée doit connaître les
normes, dispositions et régulations liées à la prévention des accidents de travail, et doit les
observer lors de la conception et de l'implémentation du système.
INSTRUCTIONS D'UTILISATION
Ce produit est une bibliothèque à utiliser avec un système de commande et des servoamplificateurs. La bibliothèque n'est conçue qu'en vue d'une utilisation telle que décrite dans la
présente documentation, appliquée au secteur industriel.
Observez en permanence les instructions applicables liées à la sécurité, les conditions spécifiques
et les données techniques.
Réalisez une analyse des risques en rapport avec l'utilisation spécifique avant d'utiliser ce produit.
Prenez les mesures de sécurité qui découlent des résultats.
Étant donné que ce produit est utilisé au sein d'un système qui l'englobe, vous devez assurer la
sécurité du personnel par la conception même du système global (la conception de la machine,
par exemple).
Aucune autre utilisation n'est prévue. Toute autre utilisation pourrait être dangereuse.
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.
12
EIO0000000097 06/2019
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.
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.
EIO0000000097 06/2019
13
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.

14
EIO0000000097 06/2019
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.
EIO0000000097 06/2019
15
16
EIO0000000097 06/2019
A propos de ce manuel
Présentation
Objectif du document
Ce document décrit les fonctions de la bibliothèque Toolbox EcoStruxure Machine Expert.
Champ d'application
Ce document a été actualisé pour le lancement d’EcoStruxureTM Machine Expert V1.1.
Information spécifique au produit
AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT


N'utiliser 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.
EIO0000000097 06/2019
17
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 contrôle cruciales.
Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de
commande critique.
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.
18
EIO0000000097 06/2019
AVERTISSEMENT
UTILISATION INCORRECTE DES UNITES ORGANISATIONNELLES DU PROGRAMME






Effectuez une analyse de la sécurité de l'application et des équipements installés.
Vérifiez que les POU sont compatibles avec les équipements 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 fonctionnement à 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.
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
IEC 61131-2:2007
Automates programmables - Partie 2 : exigences et essais des équipements
ISO 13849-1:2015
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
ISO 14119:2013
Sécurité des machines - Dispositifs de verrouillage associés à des protecteurs
- Principes de conception et de choix
ISO 13850:2015
Sécurité des machines - Fonction d'arrêt d'urgence - Principes de conception
EIO0000000097 06/2019
19
Norme
Description
IEC 62061:2015
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é : prescriptions 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:2016
Réseaux de communication industriels - Profils - Partie 3 : Bus de terrain de
sécurité fonctionnelle - Règles générales et définitions de profils.
2006/42/EC
Directive Machines
2014/30/EU
Directive sur la compatibilité électromagnétique
2014/35/EU
Directive sur les basses tensions
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.
20
EIO0000000097 06/2019
EcoStruxure Machine Expert
EIO0000000097 06/2019
Partie I
Exigences des fonctions
Exigences des fonctions
EIO0000000097 06/2019
21
22
EIO0000000097 06/2019
EcoStruxure Machine Expert
Exigences des fonctions
EIO0000000097 06/2019
Chapitre 1
Exigences des fonctions
Exigences des fonctions
Configuration requise pour la bibliothèque de fonctions Toolbox
Configuration matérielle requise
La bibliothèque de fonctions Toolbox s'utilise avec tous les contrôleurs Schneider Electric gérés
par le logiciel EcoStruxure Machine Expert.
Utilisation de la bibliothèque
AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT


Vérifiez que les bibliothèques EcoStruxure Machine Expert incluses dans votre programme
ont la version correcte après mise à jour du logiciel EcoStruxure Machine Expert.
Vérifiez que les versions des bibliothèques mises à jour correspondent aux spécifications de
l'application.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Pour obtenir des informations détaillées, consultez Bibliothèques de Schneider Electric
(voir EcoStruxure Machine Expert, Libraries Overview).
EIO0000000097 06/2019
23
Exigences des fonctions
24
EIO0000000097 06/2019
EcoStruxure Machine Expert
Fonctions de bits
EIO0000000097 06/2019
Partie II
Fonctions de bits
Fonctions de bits
Vue d’ensemble
Cette partie décrit la famille de Fonctions de bits.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
2
Organisation de bits
27
3
SetBitTo: Activation/désactivation d'un bit
29
4
TestBit: Test d'un bit
31
EIO0000000097 06/2019
25
Fonctions de bits
26
EIO0000000097 06/2019
EcoStruxure Machine Expert
Organisation de bits
EIO0000000097 06/2019
Chapitre 2
Organisation de bits
Organisation de bits
Organisation des bits pour le type DWORD
Organisation des bits pour le type DWORD
Cette figure présente la règle de codage des positions de bit dans un DWORD. Un exemple est
donné pour 16#AAAAAAAA correspondant à la valeur de 2863311530.
Description des types de données entiers
Ce tableau présente les types de données entiers. Chacun des différents types de nombre
correspond à une gamme de types différente.
Type
Limite inférieure
Limite supérieure
BYTE
0
255
8 bits
WORD
0
65 535
16 bits
DWORD
0
4 294 967 295
LWORD
0
2 -1
64 bits
SINT
-128
127
8 bits
USINT
0
255
8 bits
INT
-32 768
32 767
16 bits
UINT
0
65 535
16 bits
DINT
-2147483648
214 7483 647
32 bits
UDINT
0
4 294 967 295
32 bits
LINT
-263
263-1
64 bits
ULINT
0
264-1
64 bits
EIO0000000097 06/2019
64
Espace mémoire
32 bits
27
Organisation de bits
Description des types de données REAL/LREAL
Ce tableau présente les types de données REAL/LREAL. Les types REAL et LREAL sont appelés
types à virgule flottante. Ils sont indispensables pour représenter des nombres rationnels.
Type
Plage
Résolution
Espace mémoire
REAL utilise 4 octets
-3,402e+38 à 3,402e+38
(-2^128...2^128)
1,175e-38
(2^-126)
32 bits
LREAL utilise 8 octets
-1,797e+308 à 1,797e+308
(-2^1024...2^1024)
2,225e-308
(2^-1022)
64 bits
NOTE : La prise en charge du type de données LREAL dépend de l'équipement cible. Consultez
la documentation correspondante pour savoir si le type LREAL 64 bits est converti en REAL lors de
la compilation (éventuellement avec perte d'informations) ou s'il est conservé en l'état.
28
EIO0000000097 06/2019
EcoStruxure Machine Expert
SetBitTo
EIO0000000097 06/2019
Chapitre 3
SetBitTo: Activation/désactivation d'un bit
SetBitTo: Activation/désactivation d'un bit
Fonction SetBitTo
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction SetBitTo :
Description fonctionnelle
La fonction SetBitTo règle ou réinitialise (selon l'entrée) un bit spécifié par le bit dans l'entrée
DWORD donnée. Les bits sont rangés du poids faible au poids fort en commençant à 0.
La plage valide est comprise entre 0 et 31.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée de la fonction SetBitTo :
Entrée
Type de données
Description
i_dwIput
DWORD
Valeur d'entrée
Plage : 0 à 4 294 967 295
i_iPos
INT
Position du bit
Plage : 0 à 31
i_xSet
BOOL
TRUE: régler
FALSE : réinitialiser.
Description des broches de sortie
Ce tableau décrit les broches de sortie de la fonction SetBitTo :
Sortie
Type de données
Description
SetBitTo
DWORD
Valeur de sortie
Plage : 0 à 4 294 967 295
Limitations
Si l'entrée i_iPos n'est pas dans la plage valable, l'entrée est interprétée en mode modulo.
EIO0000000097 06/2019
29
SetBitTo
30
EIO0000000097 06/2019
EcoStruxure Machine Expert
TestBit
EIO0000000097 06/2019
Chapitre 4
TestBit: Test d'un bit
TestBit: Test d'un bit
Fonction TestBit
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction TestBit :
Description fonctionnelle
La fonction TestBit teste un bit spécifié par le bit dans l'entrée DWORD. Les bits sont rangés du
poids faible au poids fort en commençant à 0.
La sortie affiche l'état de présence du bit dans la position spécifiée. La plage valide est comprise
entre 0 et 31.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée de la fonction TestBit :
Entrée
Type de données
Description
i_dwIput
DWORD
Valeur d'entrée
Plage : 0...4294967295
i_iPos
INT
Rang du bit
Plage : 0...31
Description des broches de sortie
Ce tableau décrit les broches de sortie de la fonction TestBit :
Sortie
Type de données
Description
TestBit
BOOL
Le résultat est True ou False.
Limitations
Si l'entrée i_iPos n'est pas dans la plage valable, l'entrée est interprétée an mode modulo.
EIO0000000097 06/2019
31
TestBit
Exemple d'utilisation
Cette figure constitue un exemple de la fonction TestBit :
32
EIO0000000097 06/2019
EcoStruxure Machine Expert
EIO0000000097 06/2019
Partie III
Fonctions en boucle fermée
Fonctions en boucle fermée
Présentation
Cette partie décrit la famille de fonctions en boucle fermée.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
5
FB_2points : Elément de transfert en boucle fermée à 2 points
35
6
FB_3points : élément de transfert de 3 points en boucle fermée
41
7
FB_3points_Ext : Extension de boucle fermée pour l'élément de transfert en 3
points
47
8
FB_P : Boucle de commande avec algorithme proportionnel seulement
55
9
FB_PI: Commande de processus proportionnelle et intégrale
61
10
FB_PID : Commande de processus de fonctionnement en mode manuel
69
11
FB_PI_PID : Boucle de commande en cascade PI_PID
87
EIO0000000097 06/2019
33
34
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_2points
EIO0000000097 06/2019
Chapitre 5
FB_2points : Elément de transfert en boucle fermée à 2 points
FB_2points : Elément de transfert en boucle fermée à 2 points
Vue d’ensemble
Ce chapitre décrit le bloc fonction d'élément de transfert FB_2points.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_2points
36
Modes de fonctionnement
36
Description des broches d'entrée
39
Structure utilisée
39
Description des broches de sortie
40
EIO0000000097 06/2019
35
FB_2points
Bloc fonction FB_2points
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_2points :
Description fonctionnelle
Le bloc fonction FB_2points fournit une fonction de transfert en 2 points basé sur une entrée
d'hystérésis.
Modes de fonctionnement
Mode automatique
En mode automatique (i_xEn a la valeur TRUE et i_xManMode a la valeur FALSE), si l'erreur de
processus calculée est supérieure à 50 % de l'hystérésis dans le sens positif, alors q_xOput a la
valeur TRUE.
q_xOput n'est réinitialisé que si l'erreur de processus calculée descend en dessous de 50 % de
l'hystérésis dans le sens négatif.
Erreur de processus = Valeur du point de consigne - Valeur réelle
Mode manuel
Si i_xManMode a la valeur TRUE, quelles que soient les entrées en cours, la sortie est mise à
l'état de i_xManVal.
36
EIO0000000097 06/2019
FB_2points
Cette figure présente le chronogramme du bloc fonction FB_2points :
EIO0000000097 06/2019
37
FB_2points
Chronogramme du mode
Cette figure présente la fonction de transfert du bloc fonction FB_2points.
Etat d'erreur détectée
Un paramètre non valable aux entrées du bloc fonction conduit à une erreur détectée et à la
génération d'un ID d'erreur détectée correspondant.
Pendant l'état d'erreur détectée, la valeur de sortie est mise à zéro. L'erreur détectée ne peut être
réinitialisée que par un front montant de l'entrée i_xErrRst.
La sortie q_xBusy a la valeur TRUE, chaque fois que le bloc fonction est activé et qu'il n'y a pas
d'erreur détectée.
38
EIO0000000097 06/2019
FB_2points
Description des broches d'entrée
Tableau des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_2points :
Entrée
Type de
données
Description
i_xEn
BOOL
TRUE : Active le bloc fonction
FALSE : Désactive le bloc fonction
i_rSp
REAL
Valeur de point de consigne
Plage : ±3,4e+38
i_rActVal
REAL
Valeur réelle
Plage : ±3,4e+38
i_xManVal
BOOL
Valeur manuelle
(optionnel)
i_xManMode
BOOL
Mode Manuel
(optionnel)
i_stPara
STRUCT
stPtPara
Paramètre de structure
(Consultez le tableau ci-dessous).
i_xErrRst
BOOL
Réinitialiser l'erreur détectée
(Le front montant réinitialise l'erreur détectée).
(optionnel)
Structure utilisée
stPtPara
Elément de structure Type
Description
tCyclTime
TIME
Durée de cycle de tâche
Plage : 1 à 1e32 ms
rHyst
REAL
La plage de l'hystérésis doit être supérieure à 0,0.
Plage : ±3,4e+38
EIO0000000097 06/2019
39
FB_2points
Description des broches de sortie
Tableau des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_2points :
40
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE : FB activé
FALSE : Désactivé
q_xBusy
BOOL
TRUE : Bloc fonction actif et pas d'erreur détectée.
FALSE : Bloc fonction désactivé ou le bloc fonction
a détecté une erreur
q_xOput
BOOL
TRUE : Si l'erreur de processus est supérieure à
50% de l'hystérésis
FALSE : Si q_xOput a la valeur TRUE et que
l'erreur détectée descend en dessous de 50% de
l'hystérésis dans le sens négatif.
q_xErr
BOOL
TRUE : Pendant une erreur détectée
FALSE : Si aucune erreur n'est détectée
q_uiErrId
UNITE
0 = Aucune erreur détectée
1 = Paramètre non valable Temps de cycle de
tâche = 0
2 = Paramètre non valable i_rHyst <= 0.
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_3points
EIO0000000097 06/2019
Chapitre 6
FB_3points : élément de transfert de 3 points en boucle fermée
FB_3points : élément de transfert de 3 points en boucle
fermée
Présentation
Ce chapitre décrit le bloc fonction d'élément de transfert FB_3points.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_3points
42
Modes de fonctionnement
43
Description des broches d'entrée
45
Structure utilisée
45
Description des broches de sortie
46
EIO0000000097 06/2019
41
FB_3points
Bloc fonction FB_3points
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_3points :
Description fonctionnelle
Le bloc fonction FB_3points fournit un élément de transfert en 3 points dans le logigramme
fonctionnel.
42
EIO0000000097 06/2019
FB_3points
Modes de fonctionnement
Mode automatique
Ce bloc fonction vérifie la valeur de l'erreur de processus (point de consigne - valeur réelle).
Si l'erreur de processus est positive et supérieure à la valeur de seuil supérieur pour le côté positif
rPstvOutOn, elle active le signal de sortie q_xPstv.
La sortie q_xPstv est réinitialisée si l'erreur de processus descend en dessous de la valeur de
seuil inférieure pour le côté positif rPstvOutOff.
Si l'erreur de processus est négative, le signal de sortie q_xNgtv est activé lors du dépassement
de cible de la valeur seuil supérieure pour le côté négatif rNgtvOutOn.
q_xNgtv est réinitialisé lors de la descente en dessous de la valeur de seuil inférieure pour le
côté négatif rNgtvOutOff.
Mode Manuel
La sortie du bloc fonction est définie manuellement selon la valeur de la broche d'entrée
i_rManVal.
If
i_iManVal >= 1 then q_xPstv = TRUE, q_xNgtv = FALSE.
i_iManVal <= -1 then q_xPstv = FALSE, q_xNgtv = TRUE.
Else
q_xPstv = FALSE, q_xNgtv = FALSE
Cette figure présente la fonction de transfert pour le bloc fonction FB_3points :
EIO0000000097 06/2019
43
FB_3points
Diagramme de temps
Cette figure présente le diagramme de temps pour le bloc fonction FB_3points :
Etat d'erreur détectée
Un paramètre non valable aux entrées du bloc fonction conduit à une d'erreur détectée et à la
génération d'un ID d'erreur détectée correspondant.
Pendant l'état d'erreur détectée, les valeurs de sortie sont mises à zéro. L'erreur détectée ne peut
être réinitialisée que par un front montant de l'entrée i_xErrRst.
La sortie q_xBusy a la valeur TRUE chaque fois que le bloc fonction est activé et qu'il n'y a pas
d'erreur détectée.
44
EIO0000000097 06/2019
FB_3points
Description des broches d'entrée
Tableau des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_3points :
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : active le bloc fonction.
FALSE : bloc fonction désactivé.
i_rSp
REAL
Valeur du point de consigne du processus
Plage : ±3,4e+38
i_rActVal
REAL
Valeur réelle du processus
Plage : ±3,4e+38
i_iManVal
INT
Valeur d'entrée pour le mode manuel.
Plage : -32 768 à 32 767
i_xManMode
BOOL
TRUE : bloc fonction en mode manuel.
FALSE : bloc fonction en mode automatique.
(Facultatif)
i_xErrRst
BOOL
Réinitialise l'erreur détectée
(Déclenché par un front montant).
(Facultatif)
i_stPara
STRUCT
st3PointsPara
Variable de structure du bloc fonction
Structure utilisée
st3PointsPara
Elément de structure
Type
Description
rPstvOutOn
REAL
Valeur de seuil supérieure pour le côté positif de
l'erreur de processus
Plage : 0...1e38
rPstvOutOff
REAL
Valeur de seuil inférieure pour le côté positif de
l'erreur de processus
Plage : 0...1e38
rNgtvOutOn
REAL
Valeur de seuil supérieure pour le côté négatif de
l'erreur de processus
Plage : 0...1e38
rNgtvOutOff
REAL
Valeur de seuil inférieure pour le côté négatif de
l'erreur de processus
Plage : 0...1e38
EIO0000000097 06/2019
45
FB_3points
Description des broches de sortie
Tableau des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_3points :
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE : Bloc fonction activé
FALSE : Désactivé
q_xBusy
BOOL
TRUE : Bloc fonction actif et pas d'erreur détectée.
FALSE : Bloc fonction désactivé ou erreur détectée
q_xPstv
BOOL
Cette sortie de l'élément 3 points a la valeur TRUE
si la branche supérieure de la courbe d'hystérésis
est active.
q_xNgtv
BOOL
Cette sortie de l'élément 3 points a la valeur TRUE
si la branche inférieure de la courbe d'hystérésis
est active.
q_xErr
BOOL
Signal d'erreur détectée
q_uiErrId
UINT
Fournit l'ID d'erreur détectée quand la sortie
q_xErr est active.
Plage : 0...3
q_uiErrId
Cette valeur entière unique indique une erreur détectée spécifique :
46
ID d'erreur détectée
Description
0
Aucune erreur détectée
1
Valeurs de paramètre non valables (si rPstvOutOn < 0 ou
rPstvOutOff < 0 ou rNgtvOutOff < 0 ou rNgtvOutOn < 0)
2
Valeurs de paramètre non valables (rPstvOutOn < rPstvOutOff
ou rNgtvOutOn < rNgtvOutOff)
3
Erreur interne détectée (bloc fonction en état inconnu)
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_3points_Ext
EIO0000000097 06/2019
Chapitre 7
FB_3points_Ext : Extension de boucle fermée pour l'élément de transfert en 3 points
FB_3points_Ext : Extension de boucle fermée pour l'élément
de transfert en 3 points
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_3points_Ext.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_3points_Ext
48
Modes de fonctionnement
49
Description des broches d'entrée
52
Structure utilisée
52
Description des broches de sortie
53
EIO0000000097 06/2019
47
FB_3points_Ext
Bloc fonction FB_3points_Ext
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
FB_3points_Ext :
Description fonctionnelle
Le bloc fonction FB_3points_Ext fournit un élément de transfert en 3 points dans le logigramme
fonctionnel.
Ce bloc fonction est une extension du bloc fonction FB_3points. Il produit une sortie de
commande q_rOput sous forme de boucle d'hystérésis à 3 points. La sortie dépend de l'erreur de
processus, des valeurs de gain et de décalage données par l'utilisateur.
48
EIO0000000097 06/2019
FB_3points_Ext
Modes de fonctionnement
Mode automatique
Ce bloc fonction vérifie la valeur de l'erreur de processus (différence entre le point de consigne et
la valeur réelle). Si l'erreur de processus est positive et supérieure à la valeur supérieure de seuil
rOutOn, elle calcule la sortie de commande comme suit.
q_rOput = Erreur de processus x rGain + rOfst
Si l'erreur de processus descend en dessous de la valeur inférieure de seuil rOutOff, elle
réinitialise la sortie de commande à zéro.
De même sii l'erreur de processus est négative et si sa valeur absolue est supérieure à la valeur
supérieure de seuil rOutOn, elle calcule la sortie de commande comme suit,
q_rOput = Erreur de processus x rGain - rOfst
q_rOput est remis à zéro si la valeur absolue de l'erreur de processus devient inférieure à la
valeur de seuil inférieure rOutOff.
Mode Manuel
La sortie du bloc fonction est définie manuellement selon la valeur de la broche d'entrée
i_rManVa:.
IF
AND IF
THEN
Abs(i_rManVal) < 1
-
q_rOput = 0,0
Abs(i_rManVal) >= 1
rE > 0
q_rOput = rE x rGain + rOfst
Abs(i_rManVal) >= 1
rE < 0
q_rOput = rE x rGain - rOfst
Abs(i_rManVal) >= 1
rE = 0
q_rOput = 0,0
rE = i_rSp - i_rActVal
Abs() Fonction valeur absolue.
EIO0000000097 06/2019
49
FB_3points_Ext
Cette figure présente la fonction de transfert pour le bloc fonction FB_3points_Ext :
50
EIO0000000097 06/2019
FB_3points_Ext
Diagramme de temps
Cette figure présente le diagramme de temps pour le bloc fonction FB_3points_Ext :
Etat d'erreur détectée
Un paramètre non valable à l'entrée du bloc fonction conduit à un état d'erreur détectée et à la
génération d'un ID d'erreur détectée correspondant.
Pendant l'état d'erreur détectée, les valeurs de sortie sont mises à zéro. L'erreur détectée ne peut
être réinitialisée que par un front montant de l'entrée i_xErrRst.
La sortie q_xBusy a la valeur TRUE chaque fois que le bloc fonction est activé et qu'il n'y a pas
d'erreur détectée.
EIO0000000097 06/2019
51
FB_3points_Ext
Description des broches d'entrée
Tableau des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_3points_Ext :
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : Active le bloc fonction
FALSE : Bloc fonction désactivé
i_rSp
REAL
Valeur de point de consigne du
processus
Plage : ±3,4e+38
i_rActVal
REAL
Valeur réelle du processus
Plage : ±3,4e+38
i_rManVal
REAL
Valeur d'entrée pour le mode
manuel.
Plage : ±3,4e+38
(optionnel)
i_xManMode
BOOL
TRUE : Bloc fonction en mode
manuel
FALSE : Bloc fonction en mode
automatique
(optionnel)
i_xErrRst
BOOL
Réinitialiser l'erreur détectée
(Déclenché par un front montant)
(optionnel)
i_stPara
STRUCTst3PtsExtendedPara
Variable structure de bloc fonction
Structure utilisée
st3PtsExtendedPara
52
Elément de structure
Type
Description
rOutOn
REAL
Valeur du seuil supérieur
Plage : 0...1e38
rOutOff
REAL
Valeur du seuil inférieur
Plage : 0...1e38
rGain
REAL
Gain
Plage : 0...1e38
rOfst
REAL
Décalage
Plage : 0...1e38
EIO0000000097 06/2019
FB_3points_Ext
Description des broches de sortie
Tableau des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_3points_Ext :
Sortie
DataType
Description
q_xEn
BOOL
TRUE : FB activé
FALSE : Désactivé
q_xBusy
BOOL
TRUE : Bloc fonction actif et pas d'erreur détectée.
FALSE : Bloc fonction désactivé ou erreur détectée
q_rOput
REAL
Sortie du bloc fonction.
Plage : ±3,4e+38
q_xErr
BOOL
Signal d'erreur détectée
q_uiErrId
Cette valeur entière unique indique une erreur détectée spécifique :
ID d'erreur détectée
Description
0
Aucune erreur détectée
1
Valeurs de paramètre non valables (rOutOn < 0 OU rOutOff < 0)
2
Valeurs de paramètre non valables (rOutOn < rOutOff)
3
Valeurs de paramètre non valables (rGain < 0)
4
Valeurs de paramètre non valables (rOfst < 0)
5
Erreur interne détectée (bloc fonction en état inconnu)
EIO0000000097 06/2019
53
FB_3points_Ext
54
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_P
EIO0000000097 06/2019
Chapitre 8
FB_P : Boucle de commande avec algorithme proportionnel seulement
FB_P : Boucle de commande avec algorithme proportionnel
seulement
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_P.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_P
56
Modes de fonctionnement
57
Description des broches d'entrée
59
Description des broches de sortie
60
EIO0000000097 06/2019
55
FB_P
Bloc fonction FB_P
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_P :
Description fonctionnelle
Ce bloc fonction FB_P est conçu pour fournir une boucle de commande avec algorithme
proportionnel seulement.
56
EIO0000000097 06/2019
FB_P
Modes de fonctionnement
Mode automatique
Ce bloc fonction donne une réponse proportionnelle, c'est-à-dire que la sortie est l'erreur de
processus multipliée par le gain.
Cette équation présente la fonction de transfert :
Avec :
Kp = Gain proportionnel
q_rOput = G(s) * Erreur processus
Mode Manuel
La sortie du bloc fonction q_rOput est définie égale à i_rManVal.
Cette figure présente le diagramme fonctionnel du bloc fonction FB_P :
EIO0000000097 06/2019
57
FB_P
Diagramme de temps
Cette figure présente le diagramme de temps pour le bloc fonction FB_P :
Etat d'erreur détectée
Un paramètre non valable aux entrées du bloc fonction conduit à une erreur détectée et à la
génération d'un ID d'erreur détectée correspondant.
Pendant l'état d'erreur détectée, les valeurs de sortie sont mises à zéro. L'erreur détectée ne peut
être réinitialisée que par un front montant de l'entrée i_xErrRst.
La sortie q_xBusy a la valeur TRUE chaque fois que le bloc fonction est activé et qu'il n'y a pas
d'erreur détectée.
58
EIO0000000097 06/2019
FB_P
Description des broches d'entrée
Tableau des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_P :
Entrée
Type de
données
Description
i_xEn
BOOL
TRUE : Active le bloc fonction
FALSE : Bloc fonction désactivé
i_rSp
REAL
Valeur de point de consigne du processus
Plage : ±3,4e+38
i_rActVal
REAL
Valeur réelle du processus
Plage : ±3,4e+38
i_rManVal
REAL
Valeur d'entrée pour le mode manuel.
Plage : ±3,4e+38
(optionnel)
i_rKp
REAL
Gain proportionnel
Plage : 0...3,4e+38
i_xManMode
BOOL
TRUE : Bloc fonction en mode manuel
FALSE : Bloc fonction en mode automatique
(optionnel)
i_xHold
BOOL
TRUE : Maintenir l'état interne et la sortie du bloc fonction
constante à sa valeur en cours.
FALSE : Désactivé
(optionnel)
i_xErrRst
BOOL
Réinitialisation d'erreur détectée (déclenchée par un front
montant).
(optionnel)
EIO0000000097 06/2019
59
FB_P
Description des broches de sortie
Tableau des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_P :
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE : Bloc fonction activé
FALSE : Désactivé
q_xBusy
BOOL
TRUE : Bloc fonction actif et pas d'erreur détectée.
FALSE : Bloc fonction désactivé ou erreur détectée
q_rOput
REAL
Sortie du bloc fonction
Plage : ±3,4e+38
q_xErr
BOOL
Signal d'erreur détectée
q_uiErrId
UINT
Fournit l'ID d'erreur détectée quand la sortie q_xErr est active.
0: Aucune erreur détectée
1: Valeurs de paramètre non valables (si i_rKp < 0)
2: Erreur interne détectée (bloc fonction en état inconnu)
q_uiErrId
Cette valeur entière unique indique une erreur détectée spécifique
60
ID d'erreur détectée
Description
0
Aucune erreur détectée
1
Valeurs de paramètre non valables (i_rKp < 0)
2
Erreur interne détectée (bloc fonction en état inconnu)
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_PI
EIO0000000097 06/2019
Chapitre 9
FB_PI: Commande de processus proportionnelle et intégrale
FB_PI: Commande de processus proportionnelle et intégrale
Vue d’ensemble
Ce chapitre décrit le bloc fonction de commande de processus en boucle fermée FB_PI.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_PI
62
Description des broches d'entrée
64
Structure utilisée
66
Description des broches de sortie
68
EIO0000000097 06/2019
61
FB_PI
Bloc fonction FB_PI
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_PI :
Description fonctionnelle
Le bloc fonction FB_PI est un bloc fonction PI standard avec optimisation manuelle, fonction de
maintien et saturation antiréinitialisation.
Le contrôleur PI génère une sortie de commande basée sur l'erreur de processus dans le système
(Erreur de processus = Point de consigne – Valeur réelle). A l'aide des paramètres du bloc
fonction, la sortie de commande peut être optimisée pour réduire l'erreur de processus.
Les valeurs proportionnelles et intégrales du processus sont calculées en continu à partir de la
valeur réelle, du point de consigne et des paramètres d'entrée. Le bloc fonction limite aussi la sortie
de commande en fonction des paramètres de limite.
Fonction de transfert
L'équation ci-dessous est la fonction de transfert du bloc fonction FB_PI :
Où :
Kp = Gain proportionnel.
sTn = Temps intégral
62
EIO0000000097 06/2019
FB_PI
Schéma fonctionnel
Cette figure présente le schéma fonctionnel du bloc fonction FB_PI :
Ce bloc fonction permet de commander les processus en boucle fermée avec les variables
d'entrée et de sortie continues.
Etat d'erreur détectée
Un paramètre non valable aux entrées du bloc fonction génère une erreur détectée et un ID
d'erreur détectée correspondant.
Pendant l'état d'erreur détectée, la valeur de sortie est mise à zéro.
L'erreur détectée ne peut être réinitialisée que par un front montant de l'entrée i_xErrRst. La
sortie q_xBusy a la valeur TRUE, chaque fois que le bloc fonction est activé et qu'il n'y a pas
d'erreur détectée.
EIO0000000097 06/2019
63
FB_PI
Description des broches d'entrée
Tableau des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_PI :
Entrée
Type de
données
Description
i_xEn
BOOL
TRUE : active le bloc fonction.
FALSE : désactive le bloc fonction.
i_rSp
REAL
Valeur du point de consigne
Plage : ±3,4e+38
i_rActVal
REAL
Valeur réelle
Plage : ±3,4e+38
i_rManVal
REAL
Valeur manuelle
Plage : ±3,4e+38
(Facultatif)
i_xManMode
BOOL
Valeur manuelle
(Facultatif)
i_xHold
BOOL
Maintien
(Facultatif)
i_xErrRst
BOOL
Réinitialise l'erreur détectée (le front montant réinitialise l'erreur détectée)
(Facultatif)
i_stPara
STRUCT
stPiPara
Paramètre de structure
(Consultez la description de stPiPara (voir page 66).)
i_xManMode
i_xManMode détermine le mode manuel du bloc fonction FB_PI.
Si le bloc fonction est activé et que manuel a la valeur TRUE, le bloc fonction définit la valeur
manuelle (i_rManVal) comme la sortie PI et arrête l'algorithme PI comme indiqué dans le
schéma fonctionnel du bloc fonction en mode manuel.
Si le mode auto est activé, l'algorithme PI s'exécute en continu.
64
EIO0000000097 06/2019
FB_PI
La figure ci-dessous présente le chronogramme du bloc fonction en mode manuel :
i_xHold
i_xHold maintient la sortie PI au niveau en cours.
Si cette entrée a la valeur TRUE, la sortie PI est maintenue à la dernière valeur et les calculs
internes de l'algorithme PI sont arrêtés comme indiqué dans le schéma fonctionnel du bloc fonction
en maintien.
Si cette entrée a la valeur FALSE, l'algorithme PI est exécuté cycliquement. La nouvelle sortie PI
est calculée à partir de la dernière valeur.
Chronogramme du bloc fonction en pause :
EIO0000000097 06/2019
65
FB_PI
Structure utilisée
stPiPara
Elément de structure
Type
Description
tCyclTime
TIME
Durée de cycle de tâche
Plage : 10 ms à 60 s
xEnArw
BOOL
Activer la saturation antiréinitialisation
tTn
TIME
Temps d'action intégrale
Plage : 1 à 1e32 ms
rKp
REAL
Valeur de gain proportionnel
Plage : ±3,4e+38
rMaxLim
REAL
Limite de sortie maximale
Plage : ±3,4e+38
rMinLim
REAL
Limite de sortie minimale
Plage : ±3,4e+38
tCyclTime
tCyclTime est le temps entre deux exécutions du bloc fonction. Si la tâche est définie comme
cyclique, il est égal au temps de cycle de tâche de la tâche cyclique.
xEnArw
xEnArw active une opération de saturation antiréinitialisation (ARW).
Si la valeur est FALSE, maintient la partie intégrale si la sortie de commande complète atteint une
limite.
Si la valeur est TRUE, le bloc fonction ne maintient que la partie intégrale si celle-ci atteint une
limite. La sortie est égale à la somme de la valeur limite et de la partie proportionnelle, si la partie
intégrale atteint une limite comme indiqué dans le schéma fonctionnel du bloc fonction en cas
d'activation de ARW.
66
EIO0000000097 06/2019
FB_PI
Cette figure présente le bloc fonction en cas d'activation du mode ARW :
tTn
Temps intégral de la boucle PI
rKp
Gain proportionnel de la boucle PI
rMaxLim
La sortie supérieure à cette limite est limitée à la valeur rMaxLim.
EIO0000000097 06/2019
67
FB_PI
rMinLim
La sortie inférieure à cette limite est limitée à la valeur rMinLim.
NOTE : Si la valeur rMinLim est supérieure à 0, le fonctionnement de l'algorithme PI commence
à la valeur rMinLim.
Description des broches de sortie
Tableau des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_PI :
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE : bloc fonction activé
q_xBusy
BOOL
TRUE : bloc fonction actif et aucune erreur
détectée.
FALSE : bloc fonction désactivé ou ayant détecté
une erreur
q_rOput
REAL
Sortie PI calculée
Plage : ±3,4e+38
q_xArwActv
BOOL
TRUE : sortie limitée, saturation antiréinitialisation
active.
q_xErr
BOOL
Signal d'erreur détectée
q_uiErrId
UNIT
ID de l'erreur détectée
Plage : 0 à 5
q_uiErrId
Cette valeur entière unique identifie l'erreur détectée.
68
ID d'erreur détectée
Description
0
Aucune erreur détectée
1
Temps de cycle de tâche non valable = zéro
2
Paramètre non valable i_rOputMaxLim < i_rOputMinLim
3
Paramètre non valable rKp < zéro
4
Paramètre non valable tTn = zéro
5
Erreur interne détectée (bloc fonction en état inconnu)
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_PID
EIO0000000097 06/2019
Chapitre 10
FB_PID : Commande de processus de fonctionnement en mode manuel
FB_PID : Commande de processus de fonctionnement en
mode manuel
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_PID.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_PID
70
Description des broches d'entrée
74
Structure utilisée
76
Description des broches de sortie
78
Instanciation et exemple d'utilisation
80
EIO0000000097 06/2019
69
FB_PID
Bloc fonction FB_PID
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_PID :
Description fonctionnelle
Le bloc fonction FB_PID est un bloc fonction PID standard avec optimisation manuelle, fonction
de maintien, transfert sans à-coup et temps d'amortissement pour l'action dérivée.
Ce bloc fonction dispose des fonctionnalités suivantes :
70

Différents modes : P, PI, PD et PID.

Fonctionnement en mode manuel pour commander la sortie PID en mode manuel.

Saturation antiréinitialisation pour éviter la saturation dans l'action intégrale : si la variable de
commande atteint la limite de l'actionneur, l'erreur du processus continue à intégrer un terme
intégral très important (appelé (saturation).

Temps d'amortissement (Td) pour filtrer le dépassement de cible dû à l'action dérivée.

Le transfert sans à-coup est activé quand le mode passe de manuel à auto.
Le transfert sans à-coup évite des variations brutales de la sortie PID aux changements de
mode.

L'état d'erreur détectée est généré par un bloc fonction pour afficher les erreurs détectées.

Les fonctions de fenêtre intérieure et extérieure sont utilisées dans les calculs d'intégrale.
Si la valeur absolue de l'erreur de processus est inférieure à la fenêtre intérieure, la partie
intégrale est dimensionnée selon le facteur [ABS (err)/Fenêtre intérieure].
Ceci permet de réduire le dépassement de cible dans la sortie PID.
Si la valeur absolue de l'erreur de processus est supérieure à la fenêtre intérieure, mais
inférieure à la fenêtre supérieure, les calculs d'intégrale normaux sont effectués.
Si la valeur absolue de l'erreur de processus est supérieure à la fenêtre extérieure, la saturation
antiréinitialisation est active et la sortie intégrale maintient la dernière valeur.
EIO0000000097 06/2019
FB_PID
Sortie PID
L'équation ci-dessous présente la sortie PID :
Où :
y (t) = Sortie PID
Kp = Gain proportionnel
Tn = Temps d'intégrale
Tv = Temps de dérivée
Td = Temps de filtre de la dérivée
e (t) = Erreur de processus entre le point de consigne et la valeur de rétroaction.
Schéma de principe
Cette figure présente le schéma fonctionnel du bloc fonction FB_PID :
EIO0000000097 06/2019
71
FB_PID
Schéma de comportement normal
La figure présente le schéma de comportement normal du bloc fonction FB_PID :
72
EIO0000000097 06/2019
FB_PID
Schéma d'erreur détectée
Cette figure présente le schéma de bloc fonction FB_PID avec erreur détectée :
EIO0000000097 06/2019
73
FB_PID
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_PID :
Entrée
Type de
données
Description
i_xEn
BOOL
TRUE : active le bloc fonction FB_PID.
FALSE : désactive le bloc fonction FB_PID.
i_rSp
REAL
Point de consigne
Plage : ±3,4e+38
i_rPv1
REAL
Valeur de rétroaction du processus.
Plage : ±3,4e+38
i_iPv2
INT
Valeur de rétroaction du processus.
Plage : -32768 à 32767
i_xHold
BOOL
TRUE : maintient la sortie PID au niveau en cours
et arrête les calculs du PID.
FALSE : fonctionnement normal du mode PID.
(Facultatif)
i_rKp
REAL
Gain proportionnel du PID
Plage : 0,0 à 3,4e+38
i_rTn
REAL
Temps intégral du PID
Plage : 0,0 à 60 000 millisecondes
i_rTv
REAL
Temps de dérivation de la commande PID
Plage : 0,0 à 60 000 millisecondes
i_rTd
REAL
Temps d'amortissement de l'action de dérivation
Plage : 60 000,0 > i_rTd >
i_stPid.rTargCyclTime
i_xManMode
BOOL
TRUE : mode manuel
FALSE : mode auto (réglage d'usine)
(Facultatif)
i_rManVal
REAL
Valeur de sortie du PID manuel quand
i_xManMode a la valeur TRUE.
Plage : ±3,4e+38
(Facultatif)
74
i_stPid
STRUCT
st_Pid
Structure de paramètre
(Consultez la description de
(voir page 76)i_stPid.)
i_xErrRst
BOOL
TRUE : réinitialiser l'erreur détectée
(Facultatif)
(Le front montant réinitialise l'erreur détectée)
EIO0000000097 06/2019
FB_PID
i_xEn
La valeur TRUE active le bloc fonction.
Si la valeur est FALSE, la sortie du PID est mise à zéro, l'état d'erreur détectée (q_xErr) est effacé
et l'ID d'erreur détectée (q_uiErrId) est mis à zéro.
i_xHold
Si la valeur est TRUE, la sortie du PID est maintenue à la dernière valeur et les calculs internes de
l'algorithme PID sont arrêtés.
Si la valeur est FALSE, l'algorithme du PID est exécuté cycliquement.
La nouvelle sortie PID est calculée à partir de la dernière valeur.
i_xErrRst
Ceci réinitialise l'erreur détectée en cours.
L'erreur détectée est réinitialisée sur le front montant de cette entrée.
La sortie PID est mise à zéro.
i_xManMode
Si la valeur est TRUE, la sortie PID est égale à i_rManVal.
Si la valeur est FALSE, selon le transfert sans à-coups, la sortie PID commence à i_rManVal et
l'algorithme PID commence à s'exécuter.
EIO0000000097 06/2019
75
FB_PID
Structure utilisée
stPid
Elément de structure
Type
Description
xActValType
BOOL
TRUE : i_rPv1 est la valeur de processus.
FALSE : i_iPv2 est la valeur de processus.
rDbnd
REAL
Valeur de plage morte pour calcul d'erreur de
processus interne.
Plage : 0,0 à 100,0
(Facultatif)
rTargCyclTime
REAL
Temps de cycle de la cible
Plage : 60 000,0 > rTargCyclTime > 0,0
Unité : ms
rLowLim
REAL
Limite inférieure de la sortie PID
Plage : ±3,4e+38
rHighLim
REAL
Limite haute de la sortie PID
Plage : ±3,4e+38
rInerWndo
REAL
Fenêtre intérieure pour la partie intégrale réduite.
Plage : 0,0 à 3,4e+38
rOterWndo
REAL
Fenêtre extérieure pour la désactivation de la
partie intégrale.
Plage : 0,0 à 3,4e+38
NOTE : xActValType, rLowLim, rHighLim, rInerWndo, rOterWndo acceptent le nouvel état
ou le changement de valeur sur le front montant de i_xEn.
xActValType
Sélectionne la valeur de processus.
rDbnd
La valeur de plage morte est utilisée pour le calcul d'erreur de processus.
Si la valeur absolue de l'erreur de processus est supérieure à la plage morte, l'erreur de processus
est calculée comme suit : Erreur de processus = Point de consigne - Valeur de rétroaction réelle.
Si la valeur absolue de l'erreur de processus est inférieure à la plage morte, alors l'erreur de
processus = 0,0.
76
EIO0000000097 06/2019
FB_PID
rTargCyclTime
Temps de cycle de la cible du PID
Le temps de cycle peut être mesuré et entré sous la forme d'une valeur fixe ou le temps de cycle
courant peut être mesuré à chaque scrutation du contrôleur comme le temps de cycle cible.
Le paramètre stPid.rTargCyclTime = 0 conduit à une erreur détectée avec ID20 (temps de
cycle incorrect).
Le paramètre stPid.rTargCyclTime supérieur au temps de vidage dérivé (Td) conduit à une
erreur détectée avec ID201 (paramètre Td incorrect).
rLowLim
Limite inférieure de la sortie PID.
Si la sortie PID interne est inférieure à rLowLim, alors la sortie PID est fixée à rLowLim.
rHighLim
Limite supérieure de la sortie PID
Si la sortie PID interne est supérieure à rHighLim, alors la sortie PID est fixée à rHighLim.
rInerWndo
Si la valeur absolue de l'erreur de processus est inférieure à rInerWndo, les calculs d'intégrale
sont mis à l'échelle selon le facteur [ABS (erreur détectée) / Fenêtre intérieure].
L'erreur de processus est la différence entre le point de consigne et la valeur réelle du processus.
Si l'erreur de processus est supérieure à rInerWndo et inférieure à rOterWndo, les calculs
d'intégrale normaux sont effectués.
Cette fenêtre permet de réduire le dépassement de cible de la sortie PID.
Erreur de processus = Point de consigne - Valeur de processus
rOterWndo
Si la valeur absolue de l'erreur de processus est supérieure à rOterWndo, les calculs d'intégrale
sont arrêtés et la sortie intégrale maintenue à la dernière valeur.
Dans la sortie PID, la contribution maximale est due à l'action intégrale.
Si l'erreur de processus ne se réduit pas malgré une variation de la sortie PID, alors la sortie PID
se sature suite à la saturation de l'action intégrale.
Pour éviter la saturation et cet effet, le paramètre rOterWndo est indispensable.
EIO0000000097 06/2019
77
FB_PID
Description des broches de sortie
Tableau des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_PID :
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE : bloc fonction activé.
FALSE : bloc fonction désactivé.
q_xBusy
BOOL
TRUE : le PID est actif et aucune erreur interne n'est détectée.
FALSE : le PID n'est pas actif ou une erreur est détectée.
q_rPidOput
REAL
Sortie du contrôleur PID.
Plage : i_stPid.rLowLim à i_stPid.rHighLim
q_xMinLimActv
BOOL
TRUE : si la sortie du PID est inférieure ou égale à
i_stPid.rLowLim (limite minimale).
FALSE : si la sortie du PID est supérieure à i_stPid.rLowLim
(limite minimale).
q_xMaxLimActv
BOOL
TRUE : si la sortie du PID est supérieure ou égale à
i_stPid.rHighLim (limite maximale).
FALSE : si la sortie du PID est inférieure à i_stPid.rHighLim
(limite maximale).
q_xARWActv
BOOL
TRUE : la saturation antiréinitialisation est active.
FALSE : la saturation antiréinitialisation n'est pas active.
q_xErr
BOOL
TRUE : le bloc fonction a détecté une erreur
FALSE : aucune erreur détectée.
q_uiErrId
UNIT
Indique le numéro d'erreur détectée quand la sortie d'erreur
détectée est active.
Plage : 0, 100, 103, 104, 105, 106, 107
q_sErrMsge
STRING
Message d'erreur détectée
q_sFBstat
STRING
Etat du bloc fonction
q_xEn
True pour indiquer l'état d'activation du bloc fonction.
q_xBusy
TRUE si le bloc fonction est démarré sans erreur détectée.
Si une erreur détectée survient, la sortie occupée passe à l'état bas.
q_rPidOput
Le bloc fonction FB_PID calcule la sortie à chaque cycle s'il n'y a pas d'erreur détectée.
78
EIO0000000097 06/2019
FB_PID
q_xARWActv
Indique l'état de la saturation antiréinitialisation.
Si le temps d'intégrale est supérieur à zéro, l'action intégrale est active.
S'il est TRUE, l'action intégrale est l'arrêt et la sortie intégrale est le maintien à la dernière valeur.
TRUE :


Cas 1 : temps intégral > 0,0 et ((Sortie PID >= limite maximale) et (Erreur processus > 0,0))
Cas 2 : temps intégral > 0,0 et ((Sortie PID <= limite minimale) et (Erreur processus < 0,0))
q_xErr
TRUE indique l'erreur détectée et la sortie du PID est mise à zéro.
q_uiErrId et q_sErrMsge
Ceci donne le numéro d'erreur détectée et le message d'erreur détectée quand q_xErr a la valeur
TRUE.
ID d'erreur détectée
Description
0
Aucune erreur détectée
1
Erreur interne détectée
20
Temps de cycle non valable
114
Paramètre de limite non valable
115
Limite de bande morte non valable
200
Paramètre PID incorrect
201
Paramètre Td incorrect
202
Fenêtre I incorrecte
q_sFBstat
Bloc fonction actif : Le bloc fonction est actif et s'exécute sans erreur détectée.
Erreur détectée dans le bloc fonction : Le bloc fonction est actif et une erreur est détectée.
Bloc fonction désactivé : Le bloc fonction est désactivé.
EIO0000000097 06/2019
79
FB_PID
Instanciation et exemple d'utilisation
Instanciation et exemple d'utilisation
Cette figure présente une instance du bloc fonction FB_PID :



80
Un signal carré est généré à l'aide du GEN, les paramètres essentiels sont SqrPeriod et
SignalAmplitude.
Le système à commander est un filtre simple de premier ordre, les paramètres essentiels sont
SystemResponseTime et SystemStaticGain.
Un tracé est effectué en boucle ouverte avec SystemResponse_1 et en boucle fermée à l'aide
du bloc fonction FB_PID.
EIO0000000097 06/2019
FB_PID
Les données de cet exemple sont :
EIO0000000097 06/2019
81
FB_PID
Avec le paramètre précédent, la réponse de point de consigne/boucle ouverte/boucle fermée est :
82
EIO0000000097 06/2019
FB_PID
L'entrée i_tCyclTime des filtres de premier ordre System_1 et System_2 (dataCyclTime)
doivent avoir exactement la même valeur que la période du POU dans la tâche MAST, ici 50
millisecondes.
EIO0000000097 06/2019
83
FB_PID
Quand GEN MODE passe de RECTANGLE à SINUS avec les autres paramètres identiques, la
réponse de Sinus est :
84
EIO0000000097 06/2019
FB_PID
Cette figure présente la visualisation du bloc fonction FB_PID :
Etat d'erreur détectée
Ce tableau décrit certaines erreurs détectées générales :
Problème
Cause
Solution
Etat d'erreur détectée
Paramètre d'entrée non
valable
Entrez un paramètre valable, puis
réinitialisez l'erreur détectée
NOTE : Si le bloc fonction est désactivé, les sorties sont mises à zéro.
EIO0000000097 06/2019
85
FB_PID
86
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_PI_PID
EIO0000000097 06/2019
Chapitre 11
FB_PI_PID : Boucle de commande en cascade PI_PID
FB_PI_PID : Boucle de commande en cascade PI_PID
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_PI_PID.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_PI_PID
88
Modes de fonctionnement
89
Description des broches d'entrée
92
Structures utilisées
93
Description des broches de sortie
94
EIO0000000097 06/2019
87
FB_PI_PID
Bloc fonction FB_PI_PID
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_PI_PID :
Description fonctionnelle
Le bloc fonction FB_PI_PID donne un fonctionnement en cascade de FB_PI, FB_Limiter et
FB_PID.
Ce bloc fonction est constitué d'un élément PI, d'un limiteur de contrôle et d'un élément PID.
88
EIO0000000097 06/2019
FB_PI_PID
Modes de fonctionnement
Mode automatique
Le bloc fonction calcule la réponse PI pour le point de consigne i_rSp et la valeur réelle de la
boucle extérieure i_rActValPI. Cette réponse PI est ajoutée à la valeur de précommande
i_rPreCtrlVal et limitée par les entrées de seuil maximale et minimale, et sert de point de
consigne pour la boucle PID interne.
La boucle interne calcule une réponse PID avec i_rActValPID comme valeur réelle de boucle
interne.
Cette équation présente la fonction de transfert de l'élément PI :
Avec :
Kp = Gain proportionnel
Tn = Temps d'intégrale
Cette équation présente la fonction de transfert de l'élément PID :
Avec
Kp = Gain proportionnel
Tn = Temps d'intégrale
Mode automatique :
Td = Temps de dérivée
Tv = Temps de filtrage
Mode Manuel
La boucle PI et la boucle PID peuvent être configurées individuellement en mode manuel par les
broches d'entrée i_xManModePI et i_xManModePID respectivement. En mode manuel, la sortie
de la boucle PI et les sorties de boucle PID sont remplacées par des valeurs sur les broches
d'entrée i_rManValPI et i_rManValPID respectivement.
EIO0000000097 06/2019
89
FB_PI_PID
Cette figure présente la fonction de transfert pour le bloc fonction FB_PI_PID :
Diagramme de temps
Cette figure présente le diagramme de temps pour le bloc fonction FB_PI_PID :
90
EIO0000000097 06/2019
FB_PI_PID
Etat d'erreur détectée
Un paramètre non valable aux entrées du bloc fonction conduit à une d'erreur détectée et à la
génération d'un ID d'erreur détectée correspondant.
Pendant l'état d'erreur détectée, les valeurs de sortie sont mises à zéro.
L'erreur détectée ne peut être réinitialisée que par un front montant de l'entrée i_xErrRst.
La sortie q_xBusy a la valeur TRUE chaque fois que le bloc fonction est activé et qu'il n'y a pas
d'erreur détectée.
EIO0000000097 06/2019
91
FB_PI_PID
Description des broches d'entrée
Tableau des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_PI_PID :
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : Active le bloc fonction
FALSE : Désactive le bloc fonction
i_rSp
REAL
Valeur de point de consigne du processus
Plage : ±3,4e+38
i_rActValPI
REAL
Valeur réelle du processus vers la boucle extérieure PI
Plage : ±3,4e+38
i_rActValPID
REAL
Valeur réelle du processus vers la boucle intérieure PID
Plage : ±3,4e+38
i_rPreCtrlVal
REAL
Valeur de précontrôle ajoutée à la sortie de la boucle extérieure PI
Plage : ±3,4e+38
i_rManValPI
REAL
Entrée manuelle pour la boucle extérieure PI
Plage : ±3,4e+38
(optionnel)
i_xManModePI
BOOL
TRUE : Fonctionnement de la boucle extérieure PI en mode manuel.
FALSE : Fonctionnement de la boucle extérieure PI en mode auto
(optionnel)
i_xHoldPI
BOOL
TRUE : Maintenir la sortie de la boucle extérieure PI et l'étant interne
constant
FALSE : Désactivé
(optionnel)
i_rManValPID
REAL
Entrée manuelle pour la boucle intérieure PID
Plage : ±3,4e+38
(optionnel)
i_xManModePID
BOOL
TRUE : Fonctionnement de la boucle intérieure PID en mode manuel.
FALSE : Fonctionnement de la boucle intérieure PID en mode auto
(optionnel)
i_xHoldPID
BOOL
TRUE : Maintenir la sortie de la boucle intérieure PID et l'étant interne
constant
FALSE : Désactivé
(optionnel)
i_xErrRst
BOOL
Réinitialiser l'erreur détectée
(Le front montant réinitialise l'erreur détectée).
(optionnel)
i_stParaPID
STRUCT
stPIPIDOutLoop
Paramètres de commande de la boucle intérieure PID
92
EIO0000000097 06/2019
FB_PI_PID
Entrée
Type de données
Description
i_stParaPI
STRUCT
stPIPIDInLoop
Réinitialiser l'erreur détectée
Structures utilisées
stPIPIDOutLoop
Elément de structure
Type
Description
rKp
REAL
Gain proportionnel
Plage : 0.0...1e38
tTn
TIME
Temps d'intégrale
Plage : 0...60000 ms
tTv
TIME
Temps de dérivée
Plage : 0...60000 ms
tTd
TIME
Temps de filtrage
Plage : 0...60000 ms
rMaxLim
REAL
Limite de sortie maximale pour la boucle PID intérieure
Plage : ±3,4e+38
rMinLim
REAL
Limite de sortie maximale pour la boucle PID intérieure
Plage : ±3,4e+38
rInerWndo
REAL
Fenêtre intérieure pour la partie I réduite.
Plage : ±3,4e+38
rOterWndo
REAL
Fenêtre extérieure pour la partie I désactivée.
Plage : ±3,4e+38
stPIPIDInLoop
Elément de structure
Type
Description
tCyclTime
TIME
Durée de cycle de tâche.
Plage : 1...60000 ms
rKp
REAL
Gain proportionnel
Plage : 0...1e38
tTn
TIME
Temps d'intégrale
Plage : 0...60000 ms
rMaxLim
REAL
Limite de sortie maximale pour la boucle PI extérieure
Plage : ±3,4e+38
rMinLim
REAL
Limite de sortie minimale pour la boucle PI extérieure
Plage : ±3,4e+38
EIO0000000097 06/2019
93
FB_PI_PID
Description des broches de sortie
Tableau des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_PI_PID :
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE : Le bloc fonction est activé
FALSE : Désactivé
q_xBusy
BOOL
TRUE : Le bloc fonction est actif et aucune erreur n'est détectée.
FALSE : Le bloc fonction est désactivé ou une erreur est détectée
q_rOput
REAL
Sortie de la boucle PID en cascade PI.
Plage : ±3,4e+38
q_xLimActvPI
BOOL
TRUE : La sortie de la boucle extérieure PI est limitée
FALSE : La sortie de la boucle extérieure PI n'est pas limitée
q_xLimActvPID
BOOL
TRUE : La sortie de la boucle intérieure PID est limitée
FALSE : La sortie de la boucle intérieure PID n'est pas limitée
q_xErrPI
BOOL
Erreur détectée dans la boucle PI
q_uiErrIdPI
UNITE
Affiche l'ID de l'erreur détectée pour la boucle PI quand q_xErrPI
prend la valeur TRUE
Plage : 0...4
q_xErrPID
BOOL
Erreur détectée dans la boucle PID
q_uiErrIdPID
UNITE
Affiche l'ID de l'erreur détectée pour la boucle PID quand
q_xErrPID prend la valeur TRUE
Plage : 0...4
q_uiErrIdPI
Cette valeur entière unique indique une erreur détectée spécifique :
94
ID d'erreur détectée
Description
0
Aucune erreur détectée
1
i_stParaPI.tCyclTime hors plage
2
i_stParaPI.rMaxLim < i_stParaPI.rMinLim
3
i_stParaPI.rKp inférieur à zéro
4
i_stParaPI.tTn hors plage
EIO0000000097 06/2019
FB_PI_PID
q_uiErrIdPID
Cette valeur entière unique indique une erreur détectée spécifique :
ID d'erreur détectée
Description
0
Aucune erreur détectée
1
i_stParaPID.tTv hors plage ou i_stParaPID.tTn hors plage
ou i_stParaPID.tTd hors plage ou i_stParaPID.rKp inférieur
à zéro.
2
i_stParaPID.tTd < (i_stParaPI.tCyclTime / 2)
3
i_stParaPID.rMaxLim < i_stParaPID.rMinLim
4
i_stParaPID.rOterWndo<i_stParaPID.rInerWndo ou
i_stParaPID.rOterWndo<0 ou
i_stParaPID.rInerWndo<0
EIO0000000097 06/2019
95
FB_PI_PID
96
EIO0000000097 06/2019
EcoStruxure Machine Expert
Fonctions de commande d'équipement
EIO0000000097 06/2019
Partie IV
Fonctions de commande d'équipement
Fonctions de commande d'équipement
Présentation
Cette partie décrit les fonctionnalités et la mise en œuvre des blocs fonction de commande
d'équipement.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
12
FB_Cyclic_Monitoring : Surveillance cyclique
13
FB_DeadBand: Suppression d'oscillations d'amplitude
99
14
FB_Limiter : Limitation des signaux d'entrée
109
15
FB_PWM : Fourniture d'une sortie PWM
115
105
16
FB_Redundant_Sensor_Monitoring : Surveillance de capteur redondant
125
17
FB_Scaling : Mise à l'échelle des signaux d'entrée
133
18
FB_Sensor_Monitoring : Surveillance de capteur
137
EIO0000000097 06/2019
97
Fonctions de commande d'équipement
98
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_Cyclic_Monitoring
EIO0000000097 06/2019
Chapitre 12
FB_Cyclic_Monitoring : Surveillance cyclique
FB_Cyclic_Monitoring : Surveillance cyclique
Vue d’ensemble
Ce chapitre explique le bloc fonction FB_Cyclic_Monitoring.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_Cyclic_Monitoring
100
Description des broches d'entrée
102
Description des broches de sortie
102
Instanciation et exemple d'utilisation
103
EIO0000000097 06/2019
99
FB_Cyclic_Monitoring
Bloc fonction FB_Cyclic_Monitoring
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_Cyclic_Monitoring :
Description fonctionnelle
Le bloc fonction FB_Cyclic_Monitoring surveille le signal d'entrée pour y détecter une valeur
maximale (pourcentage de la valeur maximale absolue), sur un nombre prédéfini de cycles
d'automate avant détection d'une limite de dépassement empêchant le fonctionnement.
Ce bloc fonction permet de surveiller un signal d'entrée réel et de transférer le signal d'entrée à la
sortie seulement si l'entrée est dans les limites. Il fait rester la valeur d'entrée au-dessus d'une
valeur de limitation prédéfinie pendant plus d'un nombre prédéfini de cycles consécutifs.
En fonctionnement normal, le signal d'entrée est transféré à la sortie en fonction des conditions
suivantes
 Si le signal d'entrée est inférieur ou égal à la limite haute de limite de dépassement (%).
 Si le signal d'entrée dépasse la limite haute pendant un nombre "n" de cycles consécutifs
inférieur à l'entrée de cycle.
100
EIO0000000097 06/2019
FB_Cyclic_Monitoring
Diagramme de temps
Cette figure présente le diagramme de temps pour le bloc fonction FB_Cyclic_Monitoring :
Etat d'erreur détectée
Si le signal d'entrée dépasse la limite de dépassement (%) de la limite haute pendant un nombre
n de cycles supérieur ou égal à l'entrée de cycle, la sortie est mise à zéro et la sortie d'erreur
détectée mise à TRUE. L'erreur détectée est réinitialisée automatiquement si le signal d'entrée
revient dans les limites.
EIO0000000097 06/2019
101
FB_Cyclic_Monitoring
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_Cyclic_Monitoring :
Entrée
Type de
données
Description
i_wHighLim
WORD
Limite haute du signal
Plage : 0...65535
i_uiOvlim
UINT
% de i_wHighLim définissant la plage de
dépassement de limite.
Plage : 0...100
La valeur d'entrée dépassant 100% est limitée à
100%.
i_rVal
REAL
Signal d'entrée à surveiller
Plage : ±3,4e+38
i_uiCycl
UINT
Nombre de cycles d'automate que le bloc fonction
autorise d'entrée en sortie quand l'entrée dépasse
la plage de dépassement de limite.
Plage : 0...65535
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_Cyclic_Monitoring :
Sortie
Type de
données
Description
q_rVal
REAL
Valeur de sortie surveillée.
Plage : ±3,4e+38
q_xErr
BOOL
Bit d'erreur détectée
q_rPerc
REAL
Valeur d'entrée surveillée (i_rVal) en % de
i_wHighLim.
Plage : ±3,4e+38
102
EIO0000000097 06/2019
FB_Cyclic_Monitoring
Instanciation et exemple d'utilisation
Instanciation et exemple d'utilisation
Cette figure présente une instance du bloc fonction FB_Cyclic_Monitoring :
Exemple
Ce tableau présente un exemple du fonctionnement du bloc fonction FB_Cyclic_Monitoring :
Exemple
Entrées
Sorties
Remarques
1
i_wHighLim = 200,
i_uiOvLim = 50,
i_rVal = 40,
i_uiCycle = 10
q_rVal = 40,
q_rPerc = 20,
q_xErr = FALSE
Valeur d'entrée (i_rVal) inférieure ou égale à la valeur
limite de dépassement calculé (c'est-à-dire
[(i_uiOvLim/100) x i_wHighLim]).
Sortie : L'entrée i_rVal est affectée à la sortie q_rVal et la
sortie q_xErr a la valeur FALSE.
2
i_wHighLim = 200,
i_uiOvLim = 50,
i_rVal = 110,
i_uiCycle = 10
q_rVal = 110
q_rPerc = 55
q_xErr = FALSE
La valeur d'entrée (i_rVal) est supérieure à la valeur limite
de dépassement calculé (c'est-à-dire [(i_uiOvLim/100) x
i_wHighLim]) et le nombre de cycles de scrutation terminés
est inférieur au nombre de cycles définis.
Sortie : L'entrée i_rVal est affectée à la sortie q_rVal et la
sortie q_xErr a la valeur FALSE.
3
i_wHighLim = 200,
i_uiOvLim = 50,
i_rVal = 110,
i_uiCycle = 10
q_rVal = 0
q_rPerc = 55
q_xErr = TRUE
La valeur d'entrée (i_rVal) est supérieure à la valeur limite
de dépassement calculé (c'est-à-dire [(i_uiOvLim/100) x
i_wHighLim]) et le nombre de cycles de scrutation terminés
est égal ou supérieur au nombre de cycles définis.
Sortie : La sortie q_rVal est égale à zéro et la sortie q_xErr
a la valeur TRUE.
Etat d'erreur détectée
Ce tableau présente quelques problème généraux avec leur solution :
Problème
Cause
Etat d'erreur La valeur d'entrée (i_rVal) n'est pas dans la
détectée
limite de dépassement (%) de i_wHighLim
pendant le nombre de cycles n
EIO0000000097 06/2019
Résolution
Une valeur d'entrée (i_rVal) inférieure à la valeur
limite de dépassement réinitialise automatiquement
l'erreur détectée.
103
FB_Cyclic_Monitoring
104
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_DeadBand
EIO0000000097 06/2019
Chapitre 13
FB_DeadBand: Suppression d'oscillations d'amplitude
FB_DeadBand: Suppression d'oscillations d'amplitude
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_DeadBand.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_DeadBand
106
Description des broches d'entrée
108
Description des broches de sortie
108
EIO0000000097 06/2019
105
FB_DeadBand
Bloc fonction FB_DeadBand
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_DeadBand
:
Description fonctionnelle
Le bloc fonction FB_DeadBand est un bloc fonction de plage morte permettant de faire passer
l'entrée à la sortie seulement si elle est supérieure à la limite de la plage morte.
Ce bloc fonction supprime les oscillations de faible amplitude causées par du bruit, la quantification
ou le calcul de paramètre. Il supprime le signal d'entrée s'il se trouve à l'intérieur du seuil comme
indiqué sur la figure ci-dessous illustrant la fonction de transfert.
Sur le diagramme de temps :
Si i_rIput est inférieur à la plage de seuil définie, q_rOput est mis à zéro et
q_xSigUndThsh a la valeur TRUE.
 Si la valeur d'entrée (i_rIput) est supérieure ou égale à la plage de seuil, q_rOput est égal
à la valeur i_rIput.

q_xEn a la valeur TRUE tant que i_xEn a la valeur TRUE indépendamment d'une erreur
détectée.
Cette figure présente la fonction de transfert pour le bloc fonction FB_DeadBand :
106
EIO0000000097 06/2019
FB_DeadBand
Diagramme de temps
Cette figure présente le diagramme de temps pour le bloc fonction FB_DeadBand :
Etat d'erreur détectée
Un paramètre non valable aux entrées du bloc fonction conduit à une d'erreur détectée et à la
génération d'un ID d'erreur détectée correspondant. Pendant l'état d'erreur détectée, la valeur de
sortie est mise à zéro.
L'erreur détectée ne peut être réinitialisée que par un front montant de l'entrée i_xErrRst.
q_xBusy a la valeur TRUE chaque fois que le bloc fonction est activé et qu'il n'y a pas d'erreur
détectée.
EIO0000000097 06/2019
107
FB_DeadBand
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_DeadBand :
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : Active le bloc fonction.
FALSE : Désactive le bloc fonction.
i_rIput
REAL
Valeur d'entrée
Plage : ±3,4e+38
i_rThshVal
REAL
Valeur du seuil
Plage : 0.0...3,4e+38
i_xErrRst
BOOL
Réinitialise l'erreur détectée (sur front
montant)
(optionnel)
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_DeadBand :
Sortie
108
Type de
données
Description
q_xEn
BOOL
TRUE si le bloc fonction est activé.
q_xBusy
BOOL
TRUE si le bloc fonction est activé et sans erreur
détectée.
q_rOput
REAL
Sortie de l'entrée donnée.
Plage : ±3,4e+38
q_xSigUndThsh
BOOL
TRUE si l'entrée est en dessous de la limite du seuil.
q_xErr
BOOL
Erreur détectée
q_uiErrId
UINT
0 = Aucune erreur détectée
1 = Paramètre non valable i_rThsh < 0.
Plage : 0...1
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_Limiter
EIO0000000097 06/2019
Chapitre 14
FB_Limiter : Limitation des signaux d'entrée
FB_Limiter : Limitation des signaux d'entrée
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_Limiter.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_Limiter
110
Description des broches d'entrée
112
Description des broches de sortie
113
EIO0000000097 06/2019
109
FB_Limiter
Bloc fonction FB_Limiter
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_Limiter :
Description fonctionnelle
Le bloc fonction FB_Limiter est un bloc fonction limiteur permettant de limiter un signal d'entrée
dans une plage définie.
Le signal d'entrée est limité à une plage définie par les valeurs i_rMaxOput et i_rMinOput dont
la fonction de transfert est présentée sur la figure ci-dessus.
Si l'entrée dépasse la limite supérieure ou inférieure, la sortie est limitée aux valeurs maximale ou
minimale, respectivement.
Sur le diagramme de temps ci-dessous :
 Si l'entrée est dans la plage définie, la sortie est égale à la valeur d'entrée.
 Si la valeur d'entrée dépasse la limite maximale, la sortie est limitée à la valeur de sortie
maximale.
 De même; si l'entrée descend en dessous de la valeur de sortie minimale, la sortie est limitée
à la valeur de sortie minimale.
 Si le bloc fonction limite la sortie, q_xMinLimActv ou q_xMaxLimActv a la valeur TRUE,
selon le type de limite franchie.
q_xEn a la valeur TRUE tant que i_xEn a la valeur TRUE, indépendamment d'une erreur
détectée.
110
EIO0000000097 06/2019
FB_Limiter
Cette figure présente la fonction de transfert du bloc fonction FB_Limiter :
Diagramme de temps
Cette figure présente le diagramme de temps du bloc fonction FB_Limiter :
EIO0000000097 06/2019
111
FB_Limiter
Etat d'erreur détectée
Un paramètre non valable aux entrées du bloc fonction conduit à une d'erreur détecté et à la
génération d'un ID d'erreur détectée correspondant.
Pendant l'état d'erreur détectée, la sortie est mise à zéro.
L'erreur détectée ne peut être réinitialisée que par un front montant de l'entrée i_xErrRst. La
sortie q_xBusy a la valeur TRUE chaque fois que le bloc fonction est activé et qu'il n'y a pas
d'erreur détectée.
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_Limiter :
112
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : Active le bloc fonction.
FALSE : Désactive le bloc fonction.
i_rIput
REAL
Valeur d'entrée devant être limitée.
Plage : ±3,4e+38
i_rMinOput
REAL
Valeur de sortie minimale.
Plage : ±3,4e+38
i_rMaxOput
REAL
Valeur de sortie maximale.
Plage : ±3,4e+38
i_xErrRst
BOOL
Réinitialise l'erreur détectée (sur front montant)
(optionnel)
EIO0000000097 06/2019
FB_Limiter
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches d'entrée du bloc fonction FB_Limiter :
Sortie
Type de données
Description
q_xEn
BOOL
TRUE si le bloc fonction est activé.
q_xBusy
BOOL
TRUE si le bloc fonction est activé et sans erreur détectée.
q_rOput
REAL
Sortie de l'entrée donnée.
Plage : ±3,4e+38
q_xMinLimActv
BOOL
TRUE si l'entrée est égale ou inférieure à la valeur de sortie minimale.
q_xMaxLimActv
BOOL
TRUE si l'entrée est égale ou supérieure à la valeur de sortie maximale.
q_xErr
BOOL
Erreur détectée
q_uiErrId
UINT
0 = Aucune erreur détectée
1 = Paramètre non valable i_rMaxOput < i_rMinOput
Plage : 0 ... 1
EIO0000000097 06/2019
113
FB_Limiter
114
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_PWM
EIO0000000097 06/2019
Chapitre 15
FB_PWM : Fourniture d'une sortie PWM
FB_PWM : Fourniture d'une sortie PWM
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_PWM.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_PWM
116
Description des broches d'entrée
122
Structure utilisée
122
Description des broches de sortie
123
EIO0000000097 06/2019
115
FB_PWM
Bloc fonction FB_PWM
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_PWM :
Description fonctionnelle
Le bloc fonction FB_PWM est conçu pour fournir une sortie PWM (modulation de largeur
d'impulsion) en fonction du paramètre d'entrée.
La sortie PWM est générée avec un temps d'activation ON et un temps de désactivation OFF
conformes à l'entrée indiquée dans le premier chronogramme ci-dessous.
Par rapport au deuxième chronogramme :
Si i_rIput est une valeur positive, la sortie PWM est disponible dans q_xPstv. L'entrée
i_rIput doit être comprise entre -100 et 100. Le temps d'activation du bloc fonction PWM est
calculé comme suit : Temps d'activation de PWM = (i_rIput x tPwmPeriod) / 100.
 Si i_rIput a une valeur négative, la sortie PWM est disponible dans q_xNgtv.
 Si i_rIput est supérieur à 100, la valeur est limitée à 100. Si i_rIput est inférieur à –100, la
valeur est limitée à –100.
 Si i_xPwmInstUpdt a la valeur TRUE, la variation du paramètre d'entrée est mise à jour dans
le cycle PWM en cours, comme indiqué sur le chronogramme.
 Si i_xPwmInstUpdt a la valeur FALSE, la variation d'entrée n'est mise à jour qu'au démarrage
d'un nouveau cycle PWM.

q_xEn a la valeur TRUE tant que l'entrée i_xEn a la valeur TRUE, quelle que soit l'erreur
détectée.
116
EIO0000000097 06/2019
FB_PWM
Cette figure présente le chronogramme du calcul de FB_PWM :
Chronogramme
Cette figure présente le chronogramme du bloc fonction FB_PWM :
EIO0000000097 06/2019
117
FB_PWM
Exemple avec un signal de fréquence
Le programme crée un signal sinusoïdal avec une période définie (5 secondes/0,2 Hz). Ce signal
sinusoïdal est l'entrée de FB_PWM.
118
EIO0000000097 06/2019
FB_PWM
Définition du bloc fonction SinGen :
L'entrée stPwmPara.tCycTime du bloc fonction FB_PWM doit avoir exactement la même valeur
que la période du POU dans la tâche MAST, ici 10 millisecondes (voir la zone encadrée en rouge).
EIO0000000097 06/2019
119
FB_PWM
120
EIO0000000097 06/2019
FB_PWM
Résultat du POU précédent :
Bleu Signal sinusoïdal de i_rIput à 0,2 Hz (bloc fonction My_Filter_PT1_1).
Vert q_xPstv (un décalage est ajouté pour le tracé).
Rouge q_xNgtv (le signal est inversé pour le tracé).
Etat d'erreur détectée
Un paramètre non valable aux entrées du bloc fonction conduit à une erreur détectée et à la
génération d'un ID d'erreur détectée correspondant.
Pendant l'état d'erreur détectée, la sortie est mise à zéro.
L'erreur détectée ne peut être réinitialisée que par un front montant de l'entrée i_xErrRst. La
sortie q_xBusy a la valeur TRUE, chaque fois que le bloc fonction est activé et qu'il n'y a pas
d'erreur détectée.
EIO0000000097 06/2019
121
FB_PWM
Description des broches d'entrée
Description des broches d'entrée
Ce tableau présente les broches d'entrée du bloc fonction FB_PWM :
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : Active le bloc fonction.
FALSE : Désactive le bloc fonction.
i_rIput
REAL
Valeur d'entrée PWM
Plage : -100...100
i_stPara
STRUCT stPwmPara Paramètre de structure
i_xErrRst
BOOL
Réinitialise l'erreur détectée (sur front
montant)
(optionnel)
Elément de structure
Type
Description
tCyclTime
TIME
Durée de cycle de tâche
Plage : 1...1e32 ms
tPwmPeriod
TIME
Période de temps PWM
Plage : 1...1e32 ms
xPwmInstUpdt
BOOL
TRUE : une nouvelle valeur d'entrée est
adoptée immédiatement, même à l'intérieur
du cycle PWM en cours.
(optionnel)
Structure utilisée
stPwmPara
122
EIO0000000097 06/2019
FB_PWM
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches d'entrée du bloc fonction FB_PWM :
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE si le bloc fonction est activé.
q_xBusy
BOOL
TRUE si le bloc fonction est activé et sans erreur détectée.
q_xPstv
BOOL
La sortie PWM est positive si l'entrée PWM >0.
q_xNgtv
BOOL
La sortie PWM est négative si l'entrée PWM <0.
q_xErr
BOOL
Erreur détectée
q_uiErrId
UINT
0 = Aucune erreur détectée
1 = Paramètre non valable i_ tCyclTime = 0.
2 = Paramètre non valable i_ tPwmPeriod <=
i_tCyclTime.
Plage : 0...2
EIO0000000097 06/2019
123
FB_PWM
124
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_Redundant_Sensor_Monitoring
EIO0000000097 06/2019
Chapitre 16
FB_Redundant_Sensor_Monitoring : Surveillance de capteur redondant
FB_Redundant_Sensor_Monitoring : Surveillance de capteur
redondant
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_Redundant_Sensor_Monitoring.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_Redundant_Sensor_Monitoring
126
Description des broches d'entrée
128
Description des broches de sortie
131
EIO0000000097 06/2019
125
FB_Redundant_Sensor_Monitoring
Bloc fonction FB_Redundant_Sensor_Monitoring
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_Redundant_Sensor_Monitoring :
Description fonctionnelle
Le bloc fonction FB_Redundant_Sensor_Monitoring surveille les signaux provenant de deux
sources redondantes de signaux analogiques ou capteurs de terrain de même plage et
caractéristiques.
Le bloc fonction effectue les fonctions suivantes :
Gère la sortie en fonction de la ou les valeurs lues sur les capteurs (valeur moyenne).
 Surveille si les 2 valeurs lues sur les capteurs sont dans la limite de différence spécifiée, sinon
prend une action corrective.
 Effectue l'action prédéfinie au cas où un capteur est signalé comme non opérationnel.
 Sélection automatique du capteur opérationnel pour la sortie au cas où un autre capteur n'est
pas opérationnel.
 Possibilité de sélection manuelle de capteur.
 Un algorithme de "transition douce" polynomial du second degré élimine toute variation brutale
en créneaux dans la sortie du bloc.
 La sortie pour une différence détectée entre les deux capteurs est mise à TRUE quand la
différence entre les deux valeurs de capteur n'est pas dans les limites. La différence entre les
valeurs d'entrée de capteur est réinitialisée juste après que la différence entre les entrées de
capteur est revenue dans les limites.

126
EIO0000000097 06/2019
FB_Redundant_Sensor_Monitoring
Cette figure présente le schéma fonctionnel du bloc fonction FB_Redundant_Sensor_Monitoring :
Ce tableau contient les conditions de l'algorithme polynomial du second degré de transition douce :
Exemple
Condition
1
La différence absolue entre la sortie calculée Sortie précédente du bloc fonction - ((0.07 *
et la sortie précédente du bloc fonction est (Sortie calculée - Sortie précédente du bloc
supérieure ou égale à 15, la sortie calculée fonction)) - 23)
est supérieure à la sortie précédente du bloc
fonction.
2
La différence absolue entre la sortie calculée Sortie précédente du bloc fonction - ((0.07 *
et la sortie précédente du bloc fonction est (Sortie calculée - Sortie précédente du bloc
supérieure ou égale à 15, la sortie calculée fonction)) + 23)
est inférieure ou égale à la sortie précédente
du bloc fonction.
3
La différence absolue entre la sortie calculée Sortie calculée
et la sortie précédente du bloc fonction est
inférieure à 15.
EIO0000000097 06/2019
Sortie du bloc fonction
127
FB_Redundant_Sensor_Monitoring
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_Redundant_Sensor_Monitoring :
128
Sortie
Type de
données
Description
i_uiLimDiff
UINT
La différence entre les valeurs sensor-1 et sensor-2 en % de la
plage de capteur dans laquelle les capteurs redondants doivent
travailler.
Plage : 0...100
La valeur dépassant 100% est limitée à 100%.
0%: Il ne doit y avoir aucune différence entre les capteurs.
100%: Accepter toute valeur qui se présente ou toujours faire la
moyenne entre Sen1_ip et Sen2_ip.
i_wHighLim
WORD
Limite haute des entrées de capteur
Plage : 0...65535
i_wLowLim
WORD
Limite basse des entrées de capteur
Plage : 0...65535
i_uiDflt
UINT
Valeur par défaut en % de la plage d'entrée du capteur
Plage : 0...100
i_xSen1Flt
BOOL
TRUE : Le capteur a une erreur détectée
FALSE : Le capteur est opérationnel.
(optionnel)
i_xSen2Flt
BOOL
TRUE : Le capteur a une erreur détectée.
FALSE : Le capteur est opérationnel.
(optionnel)
i_xAut
BOOL
TRUE : Mode automatique
FALSE : Mode Manuel.
i_wSen1
WORD
Valeur brute Sensor-1
Plage : 0...65535
(On suppose que sensor-1 et 2 ont la même plage et les mêmes
caractéristiques).
i_wSen2
WORD
Valeur brute Sensor-2
Plage : 0...65535
(On suppose que sensor-1 et 2 ont la même plage et les mêmes
caractéristiques).
i_xSenSel
BOOL
TRUE : Sensor 2 sélectionné
FALSE : Sensor 1 sélectionné
Applicable seulement pour le mode manuel.
EIO0000000097 06/2019
FB_Redundant_Sensor_Monitoring
i_uiLimDiff
Différence limite en %. La sortie moyenne (q_wSenCorr) n'est générée que si la différence entre
les deux entrées de capteur est inférieure à la différence limite.
 La différence limite se calcule par l'équation ci-dessous
Différence limite = (i_uiLimDiff x (i_wHighLim - i_wLowLim))/100
 Si la différence entre l'entrée Sensor 1 et l'entrée Sensor 2 est inférieure à la différence limite,
la sortie est la moyenne des deux capteurs comme indiqué sur la figure ci-dessous.
Cette figure présente la fonction de calcul de moyenne dans le bloc fonction FB_Redundant_Sensor_Monitoring :
i_uiDflt
Cette entrée est la valeur par défaut en %, utilisée pour générer la sortie la plus appropriée si la
différence n'est pas dans la limite et que les deux capteurs sont opérationnels.
 La valeur par défaut est calculée à partir de l'équation ci-dessous :
Valeur par défaut = (i_uiDflt x (i_wHighLim - i_wLowLim))/100
 Si la différence entre l'entrée des 2 capteurs est hors limite, le bloc fonction donne en sortie la
valeur du capteur le plus proche de la valeur par défaut comme indiqué sur la figure ci-dessous.
EIO0000000097 06/2019
129
FB_Redundant_Sensor_Monitoring
Cette figure présente la fonction de valeur par défaut dans le bloc fonction FB_Redundant_Sensor_Monitoring :
130
EIO0000000097 06/2019
FB_Redundant_Sensor_Monitoring
i_xSen1Flt et i_xSen2Flt
Ces entrées permettent de détecter si les deux capteurs sont opérationnels ou non.
 Si les deux capteurs ne sont pas opérationnels, la sortie (q_wSenCorr) est mise à zéro.
 Si le capteur sensor 1 n'est pas opérationnel, la sortie est définie à l'entrée de sensor 2. De
même si le capteur sensor 2 n'est pas opérationnel, la sortie est définie à l'entrée de sensor 1.
i_xAut
Cette entrée permet de sélectionner le mode auto ou manuel.
Si l'entrée a la valeur TRUE, le bloc fonction fonctionne en mode auto. En mode auto, selon les
entrées de capteur et la différences entre ces entrées, le bloc fonction génère une sortie
appropriée.
 Si l'entrée a la valeur FALSE, le bloc fonction est en mode manuel. En mode manuel, selon
l'entrée i_xSenSel, la sortie est forcée à la valeur de sensor 1 ou sensor 2.
 Si i_xSenSel a la valeur FALSE, c'est l'entrée sensor 1 qui est sélectionnée. De même si
i_xSenSel a la valeur TRUE, c'est l'entrée sensor 2 qui est sélectionnée.

Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_Redundant_Sensor_Monitoring :
Sortie
Type de
données
Description
q_xStat
BOOL
TRUE : Mode automatique
FALSE : Mode Manuel
q_wSenCorr
WORD
Valeur traitée de capteur redondant
Plage : 0...65535
q_xFltDiff
BOOL
TRUE : Erreur détectée
FALSE : Normal
Cette sortie est à l'état TRUE quand la différence entre les
capteurs n'est pas dans la limite pendant plus de 3 cycles
consécutifs d'automate en mode auto.
NOTE : La sortie du bloc fonction q_wSenCorr ne change pas brutalement en fonction de l'entrée.
Une fonction polynomiale du second degré est appliquée pour éviter les variations en créneaux
brutaux dans la sortie du bloc.
EIO0000000097 06/2019
131
FB_Redundant_Sensor_Monitoring
132
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_Scaling
EIO0000000097 06/2019
Chapitre 17
FB_Scaling : Mise à l'échelle des signaux d'entrée
FB_Scaling : Mise à l'échelle des signaux d'entrée
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_Scaling.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_Scaling
134
Description des broches d'entrée
136
Description des broches de sortie
136
EIO0000000097 06/2019
133
FB_Scaling
Bloc fonction FB_Scaling
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction FB_Scaling :
Description fonctionnelle
Le bloc fonction FB_Scaling est conçu pour convertir une valeur d'entrée linéairement dans une
plage de sortie spécifiée, une erreur est détectée en cas de paramètre non valable.
Ce bloc fonction met à l'échelle un signal d'entrée en une sortie linéaire par rapport à une plage
définie par un maximum et un minimum.
Le signal d'entrée est mis à l'échelle linéairement par rapport à la plage délimitée par deux valeurs
comme indiqué sur la figure ci-dessous :
La sortie est modifiée dynamiquement en fonction de la variation de l'entrée :
 Pente = (i_rMaxOput-i_rMinOput) / (i_rMaxIput - i_rMinIput)
 Décalage = i_rOutMax - (Pente * i_rMaxIput)
 q_rOput = (Pente * i_rIput) + Décalage
134
EIO0000000097 06/2019
FB_Scaling
Pour une valeur i_rIput dans la plage de i_rMinIput et i_rMaxIput, q_rOput est mis à
l'échelle dans une plage de i_rMinOput et i_rMaxOput. q_xEn a la valeur TRUE tant que
l'entrée i_xEn a la valeur TRUE, indépendamment d'une erreur détectée, comme indiqué sur la
figure :
Etat d'erreur détectée
Un paramètre non valable aux entrées du bloc fonction conduit à une erreur détectée et à la
génération d'un ID d'erreur détectée correspondant. La sortie est mise à zéro pendant une erreur
détectée. L'erreur détectée ne peut être réinitialisée que par un front montant de i_xErrRst.
L'entrée q_xBusy a la valeur TRUE chaque fois que le bloc fonction est activé et qu'il n'y a pas
d'erreur détectée.
EIO0000000097 06/2019
135
FB_Scaling
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_Scaling :
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : Active le bloc fonction.
FALSE : Désactive le bloc fonction.
i_rIput
REAL
Valeur d'entrée à mettre à l'échelle.
Plage : ±3,4e+38
i_rMinIput
REAL
Valeur d'entrée minimale
Plage : ±3,4e+38
i_rMaxIput
REAL
Valeur d'entrée maximale
Plage : ±3,4e+38
i_rMinOput
REAL
Valeur de sortie minimale
Plage : ±3,4e+38
i_rMaxOput
REAL
Valeur de sortie maximale
Plage : ±3,4e+38
i_xErrRst
BOOL
Réinitialise l'erreur détectée (sur front montant)
(optionnel)
Description des broches de sortie
Description des broches de sortie
Le tableau ci-dessous inclut les différentes sorties du bloc fonction avec la description des identificateurs ou commandes.
136
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE si le bloc fonction est activé.
q_xBusy
BOOL
TRUE si le bloc fonction est activé et sans erreur détectée.
q_rOput
REAL
Sortie mise à l'échelle de l'entrée donnée.
Plage : ±3,4e+38
q_xErr
BOOL
Erreur détectée
q_uiErrId
UINT
0 = Aucune erreur détectée
1 = Paramètre non valable i_rMinIput = i_rMaxIput
Plage : 0...1
EIO0000000097 06/2019
EcoStruxure Machine Expert
FB_Sensor_Monitoring
EIO0000000097 06/2019
Chapitre 18
FB_Sensor_Monitoring : Surveillance de capteur
FB_Sensor_Monitoring : Surveillance de capteur
Vue d’ensemble
Ce chapitre décrit le bloc fonction FB_Sensor_Monitoring.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction FB_Sensor_Monitoring
138
Description des broches d'entrée
139
Description des broches de sortie
140
Instanciation et exemple d'utilisation
140
EIO0000000097 06/2019
137
FB_Sensor_Monitoring
Bloc fonction FB_Sensor_Monitoring
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
FB_Sensor_Monitoring :
Description fonctionnelle
Le bloc fonction FB_Sensor_Monitoring surveille et/ou met à l'échelle et/ou filtre la plage morte
d'un signal analogique d'entrée.
Ce bloc fonction effectue les opérations ci-dessous sur un signal d'entrée analogique :
Vérifie si le relevé du capteur est dans la plage spécifiée par l'opérateur, sinon une sortie
d'erreur est détectée.
 Surveille le matériel d'E/S et génère une alarme en cas de détection d'une erreur.
 Permet d'activer/désactiver la fonction de surveillance du matériel d'E/S dans le bloc.
 Met à l'échelle la valeur d'entrée dans la plage de sortie voulue.
 Passe la sortie finale par un filtre de plage morte. La plage morte supprime l'oscillation relative
entre l'entrée précédente et l'entrée présente, puis génère une sortie.

Cette figure présente le schéma fonctionnel du bloc fonction FB_Sensor_Monitoring :
138
EIO0000000097 06/2019
FB_Sensor_Monitoring
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction FB_Sensor_Monitoring :
Entrée
Type de
données
Description
i_xHwEn
BOOL
TRUE : Surveillance matérielle activée
FALSE : Surveillance matérielle désactivée
i_xHwFlt
BOOL
TRUE : Erreur matérielle détectée
FALSE : Aucune erreur matérielle détectée
(optionnel)
i_wSen
WORD
Valeur de capteur
Plage : 0...65535
i_wHighLim
WORD
Limite haute d'entrée de capteur.
Plage : 0...65535
i_wHighLim devrait être supérieur à i_wLowLim
i_wLowLim
WORD
Limite basse d'entrée de capteur
Plage : 0...65535
i_wOutHigh
WORD
Limite haute de plage de sortie pour la fonction de mise à l'échelle.
Plage : 0..65535
Pour la fonction de mise à l'échelle, i_wOutHigh, i_wOutLow,
i_wInHigh et i_wInLow sont utilisés
i_wOutLow
WORD
Limite basse de plage de sortie pour la fonction de mise à l'échelle.
Plage : 0...65535
i_wInHigh
WORD
Limite haute de plage d'entrée pour la fonction de mise à l'échelle.
Plage : 0...65535
i_wInLow
WORD
Limite basse de plage d'entrée pour la fonction de mise à l'échelle.
Plage : 0...65535
i_rDbnd
REAL
Définit la largeur de la "plage morte" dans le filtre de plage morte,
en % de la plage.
Plage : 0.0...100.0
0.0: Pas de filtrage de plage morte.
100.0: Bloque tous les signaux.
Dans l'idéal la valeur est donc inférieure à 100.0
(optionnel)
EIO0000000097 06/2019
139
FB_Sensor_Monitoring
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction FB_Sensor_Monitoring :
Sortie
Type de
données
Description
q_wSen
WORD
Sortie de capteur valable
Plage : 0...65535
q_xErr
BOOL
TRUE : En cas d'erreur matérielle détectée ou si la sortie mise à
l'échelle n'est pas dans les limites de capteur pendant plus de
3 cycles consécutifs de scrutation de l'automate.
FALSE : Aucune erreur détectée
Instanciation et exemple d'utilisation
Instanciation et exemple d'utilisation
Cette figure présente une instance du schéma d'affectation des broches du bloc fonction
FB_Sensor_Monitoring :
Exemple
Cet exemple illustre diverses fonctionnalités du bloc fonction FB_Sensor_Monitoring :
Exemple
étapes,
Entrées
Sorties
1
Mise à l'échelle :
A partir des paramètres d'entrée de mise à l'échelle,
l'entrée de capteur i_wSen est mise à l'échelle
linéairement et la valeur de sortie mise à l'échelle
passée pour vérification de limite.
i_wSen = 1000,
i_wOutHigh = 2000,
i_wOutLow = 100,
i_wInHigh = 1000,
i_wInLow = 10.
Sortie mise à
l'échelle interne
calculée = 2000
140
EIO0000000097 06/2019
FB_Sensor_Monitoring
Exemple
étapes,
Entrées
Sorties
2
Vérification de limite :
 Si la sortie mise à l'échelle calculée est supérieure
à l'entrée de limitation maximale, i_wHighLim, la
sortie est limitée à i_wHighLim
 Si la sortie mise à l'échelle calculée est inférieure à
l'entrée de limitation minimale, i_wLowLim, la
sortie est limitée à i_wLowLim
 Si la sortie mise à l'échelle calculée est dans les
limites, elle est passée pour traitement ultérieur aux
fonctions de plage morte.
i_wSen = 1000,
i_wHighLim = 20000,
i_wLowLim = 4000,
i_wOutHigh = 2000,
i_wOutLow = 100,
i_wInHigh = 1000,
i_wInLow = 10,
i_rDbnd = 10.
Sortie interne après
vérification de limite
= 4000
q_xErr = FALSE/T
RUE.
q_xErr a la valeur TRUE si la sortie mise à l'échelle
calculée est en dehors de la plage pendant plus de 3
cycles consécutifs de scrutation de l'automate.
3
Surveillance d'erreur matérielle détectée : La sortie
q_xErr a la valeur TRUE et q_wSen maintient sa
dernière valeur quand la surveillance d'erreur
matérielle détectée est activée et que l'entrée d'erreur
matérielle détectée (i_xHwFlt) a la valeur TRUE.
i_xHwEn=1,
i_xHwFlt=1,
i_wSen=1000,
i_wOutHigh=2000,
i_wOutLow=100,
i_wInHigh=1000,
i_wInLow=10,
i_rDbnd=10.
q_wSen = 4000,
q_xErr = TRUE.
4
Filtrage de plage morte :
 Si la différence entre la sortie mise à l'échelle
calculée et la sortie précédente du bloc fonction est
inférieure ou égale à la valeur de différence de
plage morte calculée (c'est-à-dire [(i_rDbnd/100) x
(i_wHighLim-i_wLowLim)]), la sortie finale du
bloc fonction est égale à la sortie précédente de ce
bloc fonction.
 Si la différence entre la sortie mise à l'échelle
calculée et la sortie précédente du bloc fonction est
supérieure à la valeur de différence de plage morte
calculée (c'est-à-dire [(i_rDbnd/100) x
(i_wHighLim-i_wLowLim)]), la sortie finale du
bloc fonction est égale à la sortie mise à l'échelle
calculée.
i_wSen = 1000,
i_wHighLim = 20000,
i_wLowLim = 4000,
i_wOutHigh = 2000,
i_wOutLow = 100,
i_wInHigh = 1000,
i_wInLow = 10,
i_rDbnd = 10.
q_wSen = 4000,
q_xErr = False.
La sortie d'état q_xErr peut être égale à 0 ou 1 selon
les fonctionnalités de vérification de limite et de
surveillance d'erreur matérielle détectée détaillées cidessus.
Remarque : i_rDbnd = 0: Pas de filtrage de plage
morte. i_rDbnd >= 100: Bloque tous les signaux.
EIO0000000097 06/2019
141
FB_Sensor_Monitoring
142
EIO0000000097 06/2019
EcoStruxure Machine Expert
Fonctions de filtrage
EIO0000000097 06/2019
Partie V
Fonctions de filtrage
Fonctions de filtrage
Vue d’ensemble
Cette partie décrit les fonctionnalités et la mise en œuvre des blocs fonction de filtrage.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
19
Liste des paramètres globaux
145
20
Filter_AnalogInput : Vérification de la variabilité d'entrée analogique
147
21
Filter_Arithmetic: Fourniture de moyenne arithmétique
151
22
Filter_MovingAverage : Fourniture d'une valeur de moyenne mobile
155
23
Filter_PT1 : Fourniture d'une fonction de transfert PT1
161
EIO0000000097 06/2019
143
Fonctions de filtrage
144
EIO0000000097 06/2019
EcoStruxure Machine Expert
Liste des paramètres globaux
EIO0000000097 06/2019
Chapitre 19
Liste des paramètres globaux
Liste des paramètres globaux
Liste des paramètres globaux (GPL)
Présentation
Type :
Paramètres globaux
Disponible à partir de :
3.0.1.0
Description
La liste des paramètres globaux (GPL) contient les constantes globales utilisées par les blocs de
fonction de filtrage 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.
Paramètres globaux
Variable
Type de données
Valeur par défaut
Plage
Description
Gc_uiMaxAvgeSmpl
UINT
100
100 à
1000
Le nombre maximal
d'échantillons comptés par
l'entrée (voir page 158)
i_uiSmplCnt.
EIO0000000097 06/2019
145
Liste des paramètres globaux
146
EIO0000000097 06/2019
EcoStruxure Machine Expert
Filter_AnalogInput
EIO0000000097 06/2019
Chapitre 20
Filter_AnalogInput : Vérification de la variabilité d'entrée analogique
Filter_AnalogInput : Vérification de la variabilité d'entrée
analogique
Vue d’ensemble
Ce chapitre décrit le bloc fonction Filter_AnalogInput.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Filter_AnalogInput
148
Description des broches d'entrée
150
Description des broches de sortie
150
EIO0000000097 06/2019
147
Filter_AnalogInput
Bloc fonction Filter_AnalogInput
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Filter_AnalogInput :
Description fonctionnelle
Le bloc fonction Filter_AnalogInput vérifie la plausibilité d'une entrée analogique mesurée.
En état normal de fonctionnement, si la différence entre la valeur d'entrée présente et la valeur
précédente :
 est inférieure ou égale à la valeur spécifiée i_rMaxIputDiff, la sortie suit la valeur d'entrée.
 est supérieure à la valeur spécifiée i_rMaxIputDiff, la sortie est remplacée par la valeur de
sortie précédente pendant au maximum trois cycles de scrutation de l'automate. Le bit d'état de
remplacement de sortie q_xOputOvwr est à TRUE dans ce cas.
 dépasse la valeur spécifiée i_rMaxIputDiff pendant plus de trois cycles consécutifs de
scrutation de l'automate, la sortie suit à nouveau la valeur d'entrée.
NOTE : A l'activation du bloc fonction, pendant le premier cycle de scrutation l'entrée est affectée
à la sortie.
Exemple
Différence maximale entre les entrées présente et précédente (i_rMaxIputDiff) = 1.5 :
148
Cycle de
scrutation
Valeur
d'entrée
(i_rIput)
Valeur de sortie
(q_rOput)
Bit de remplacement de sortie
(q_xOputOvwr)
Premier
2.0
2.0
FALSE
Deuxième
3.0
3.0
FALSE
Troisième
5.0
3.0
TRUE
Quatrième
3.0
3.0
TRUE
Cinquième
1.0
3.0
TRUE
Sixième
4.0
4.0
FALSE
EIO0000000097 06/2019
Filter_AnalogInput
La figure ci-dessous présente le comportement normal du bloc fonction Filter_AnalogInput :
Etat d'erreur détectée
Un paramètre non valable tel que i_rMaxIputDiff < 0 conduit à une erreur détectée et à la
génération d'un ID d'erreur détectée correspondant. Pendant l'état d'erreur détectée, la sortie est
mise à zéro.
L'erreur détectée ne peut être réinitialisée que par un front montant de l'entrée i_xErrRst.
Comme indiqué dans le comportement de la sortie figure ci-dessus, q_xBusy a la valeur TRUE
chaque fois que le bloc fonction est activé et qu'il n'y a pas d'erreur détectée.
EIO0000000097 06/2019
149
Filter_AnalogInput
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Filter_AnalogInput :
Entrée
Type de
données
Description
i_xEn
BOOL
TRUE : Activé
FALSE : Désactivé
i_rIput
REAL
Variable d'entrée analogique
Plage : 1,17e-38...3,4e+38
i_rMaxIputDiff
REAL
Différence maximale entre les entrées en cours et
précédente pour vérification de plausibilité
Plage : 0...3,4e+38
i_rMaxIputDiff < 0 génère une erreur détectée
i_xErrRst
BOOL
TRUE : Réinitialise l'erreur détectée (sur front
montant)
(optionnel)
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Filter_AnalogInput :
150
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE: activé
FALSE : désactivé
q_xBusy
BOOL
TRUE : actif et aucune erreur détectée.
FALSE : désactivé ou erreur détectée.
q_xOputOvwr
BOOL
TRUE : si la sortie présente est remplacée par la
sortie précédente.
FALSE : si la sortie suit l'entrée présente.
q_rOput
REAL
Valeur de sortie analogique de
Plage : ±3,4e+38.
q_xErr
BOOL
TRUE : erreur détectée.
FALSE : aucune erreur détectée.
q_uiErrId
UINT
Indique le numéro d'erreur détectée quand la sortie
d'erreur détectée est active.
0 : aucune erreur détectée.
1 : paramètre non valable i_rMaxIputDiff < 0.
EIO0000000097 06/2019
EcoStruxure Machine Expert
Filter_Arithmetic
EIO0000000097 06/2019
Chapitre 21
Filter_Arithmetic: Fourniture de moyenne arithmétique
Filter_Arithmetic: Fourniture de moyenne arithmétique
Vue d’ensemble
Ce chapitre décrit le bloc fonction Filter_Arithmetic.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Filter_Arithmetic
152
Description des broches d'entrée
154
Description des broches de sortie
154
EIO0000000097 06/2019
151
Filter_Arithmetic
Bloc fonction Filter_Arithmetic
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Filter_Arithmetic :
Description fonctionnelle
Le bloc fonction Filter_Arithmetic calcule la valeur moyenne arithmétique du nombre
d'échantillons d'entrée défini par l'utilisateur.
Le calcul de la sortie commence à l'activation du bloc fonction.
Quand le nombre d'échantillons enregistrés est égal à la valeur spécifiée i_uiSmplCnt, le bloc
fonction donne en sortie la moyenne calculée et le bit de validité de sortie q_xOputVld passe à
TRUE.
La sortie du bloc fonction maintient cette valeur jusqu'à la désactivation du bloc fonction ou le
passage dans l'état d'erreur détectée.
Exemple
Nombre d'échantillons dont la moyenne doit être calculée (i_uiSmplCnt) = 4:
152
Cycle de
scrutation
Valeur d'entrée
(i_rIput)
Valeur de sortie
(q_rOput)
Bit de validité de sortie (q_rOput)
Premier
2.0
0
FALSE
Deuxième
4.0
0
FALSE
Troisième
3.0
0
FALSE
Quatrième
5.0
3.5
TRUE
Cinquième
6.0
3.5
TRUE
Sixième
5.0
3.5
TRUE
EIO0000000097 06/2019
Filter_Arithmetic
Cette figure présente un comportement de sortie normal :
Complément mathématique
Cette équation présente la valeur moyenne arithmétique généralisée :
Avec :
n = Nombre d'échantillons entré par l'utilisateur pour le calcul de valeur moyenne,
Xn = Echantillons d'entrée,
= Sortie calculée.
Etat d'erreur détectée
Un paramètre non valable tel que i_uiSmplCnt = 0 conduit à une erreur détectée et à la
génération d'un ID d'erreur détectée correspondant. Pendant l'état d'erreur détectée, la sortie est
mise à zéro.
L'erreur détectée ne peut être réinitialisée que par un front montant de l'entrée i_xErrRst.
Comme indiqué dans la figure de comportement de sortie ci-dessus, q_xBusy a la valeur TRUE
chaque fois que le bloc fonction est activé et qu'il n'y a pas d'erreur détectée.
EIO0000000097 06/2019
153
Filter_Arithmetic
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Filter_Arithmetic :
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : Activé
FALSE : Désactivé
i_rIput
REAL
Valeur d'entrée
Plage : ±3,4e+38
i_uiSmplCnt
UINT
Nombre d'échantillons (valeurs d'entrée) dont la
moyenne doit être calculée
Plage : 1...65535
i_uiSmplCnt = 0 génère une erreur détectée.
i_xErrRst
BOOL
TRUE : Réinitialise l'erreur détectée (sur front
montant)
(optionnel)
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Filter_Arithmetic :
154
Sortie
Type de données
Description
q_xEn
BOOL
TRUE : Activé
FALSE : Désactivé
q_xBusy
BOOL
TRUE : Actif et pas d'erreur détectée.
FALSE : Désactivé ou erreur détectée.
q_xOputVId
BOOL
TRUE : Si le nombre d'échantillons enregistrés est
supérieur ou égal à l'entrée i_uiSmplCnt.
q_rOput
REAL
Valeur de sortie de ±3,4e+38
q_xErr
BOOL
TRUE : Erreur détectée.
FALSE : Aucune erreur détectée.
q_uiErrId
UINT
Numéro d'erreur détectée quand la sortie d'erreur
détectée est active.
0: Aucune erreur détectée.
1: Paramètre non valable i_uiSmplCnt = 0.
EIO0000000097 06/2019
EcoStruxure Machine Expert
Filter_MovingAverage
EIO0000000097 06/2019
Chapitre 22
Filter_MovingAverage : Fourniture d'une valeur de moyenne mobile
Filter_MovingAverage : Fourniture d'une valeur de moyenne
mobile
Vue d’ensemble
Ce chapitre décrit le bloc fonction Filter_MovingAverage.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Filter_MovingAverage
156
Description des broches d'entrée
158
Description des broches de sortie
159
EIO0000000097 06/2019
155
Filter_MovingAverage
Bloc fonction Filter_MovingAverage
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction Filter_MovingAverage :
Description fonctionnelle
Le bloc fonction Filter_MovingAverage calcule la valeur de la moyenne mobile sur le nombre
d'échantillons d'entrée défini par l'utilisateur.
Quand le nombre d'échantillons enregistrés est :
Inférieur à la valeur spécifiée i_uiSmplCnt, le bloc fonction calcule la valeur moyenne avec
le nombre d'entrées disponibles et donne la sortie correspondante.
 Egal ou supérieur à la valeur spécifiée i_uiSmplCnt, le bloc fonction calcule la valeur
moyenne avec le nombre d'entrées i_uiSmplCnt et fournit la sortie correspondante. Il
fonctionne comme filtre de moyenne mobile.
 Pour i_uiSmplCnt = 0, la valeur d'entrée est affectée à la sortie.

Exemple
Nombre d'échantillons dont la moyenne doit être calculée (i_uiSmplCnt) = 3 :
156
Cycle de
scrutation
Valeur d'entrée (i_rIput) Valeur de sortie (q_rOput)
1
2,0
2,0
2
3,0
2,5
3
4.0
3,0
4
2,0
3,0
5
1,5
2,5
6
4.0
2,5
EIO0000000097 06/2019
Filter_MovingAverage
Cette figure présente un comportement normal :
Complément mathématique
Cette équation présente l'équation généralisée de la fonction Filter_MovingAverage :
n = Nombre d'échantillons,
xi = Echantillons d'entrée,
k = GPL.Gc_uiMaxAvgeSmpl, constante interne,
= Sortie calculée.
EIO0000000097 06/2019
157
Filter_MovingAverage
Remarque
En cas de diminution du nombre d'échantillons (i_uiSmplCnt), la sortie (q_rOput) dans les
scrutations ultérieures est calculée par réduction du nombre d'échantillons d'une unité à chaque
scrutation consécutive.
Etat d'erreur détectée
Un paramètre non valable tel que i_uiSmplCnt > GPL.Gc_uiMaxAvgeSmpl entraîne une erreur
détectée et la génération d'un ID d'erreur détectée correspondant.
Pendant l'état d'erreur détectée, la sortie est mise à zéro.
L'erreur détectée ne peut être réinitialisée que par un front montant de l'entrée i_xErrRst.
Comme indiqué dans le comportement de la sortie figure ci-dessus, q_xBusy a la valeur TRUE
chaque fois que le bloc fonction est activé et qu'il n'y a pas d'erreur détectée.
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Filter_MovingAverage :
158
Entrée
Type de données
Description
i_xEn
BOOL
TRUE: activé
FALSE : désactivé
i_rIput
REAL
Valeur d'entrée
Plage : ±3,4e+38
i_uiSmplCnt
UINT
Nombre d'échantillons (valeurs d'entrée) dont la moyenne doit être
calculée
Plage : 0 à GPL.Gc_uiMaxAvgeSmpl
i_uiSmplCnt > GPL.Gc_uiMaxAvgeSmpl génère une erreur
détectée.
i_xErrRst
BOOL
Réinitialise l'erreur détectée (sur front montant)
(Facultatif)
EIO0000000097 06/2019
Filter_MovingAverage
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Filter_MovingAverage :
Sortie
Type de données
Description
q_xEn
BOOL
TRUE: activé
FALSE : désactivé
q_xBusy
BOOL
TRUE : Actif et aucune erreur détectée.
FALSE : désactivé ou erreur détectée.
q_rOput
REAL
Valeur de la sortie
Plage : ±3,4e+38
q_xErr
BOOL
TRUE : erreur détectée.
FALSE : aucune erreur détectée.
q_uiErrId
UINT
Numéro d'erreur détectée quand la sortie d'erreur détectée est active.
0 : aucune erreur détectée.
1 : Paramètre non valide i_uiSmplCnt > GPL.Gc_uiMaxAvgeSmpl.
EIO0000000097 06/2019
159
Filter_MovingAverage
160
EIO0000000097 06/2019
EcoStruxure Machine Expert
Filter_PT1
EIO0000000097 06/2019
Chapitre 23
Filter_PT1 : Fourniture d'une fonction de transfert PT1
Filter_PT1 : Fourniture d'une fonction de transfert PT1
Vue d’ensemble
Ce chapitre décrit le bloc fonction Filter_PT1.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Filter_PT1
162
Description des broches d'entrée
164
Description des broches de sortie
165
Instanciation et exemple d'utilisation
166
EIO0000000097 06/2019
161
Filter_PT1
Bloc fonction Filter_PT1
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction Filter_PT1 :
Description fonctionnelle
Le bloc fonction Filter_PT1 fournit une fonction de transfert PT1. La valeur de sortie augmente
à 63% de la valeur d'entrée dans un temps égal à la constante de temps du filtre. La valeur de
sortie atteint 95% de la valeur d'entrée après une durée égale à 3 * Constante de temps du filtre
puis monte progressivement à 100% de la valeur d'entrée.
Cette figure présente la fonctionnalité de profil de sortie du bloc fonction Filter_PT1 :
Quand la période est égale à :
 La constante de temps du filtre, la valeur de sortie augmente à 63% de la valeur d'entrée.
 Trois fois la constante de temps du filtre, la valeur de sortie augmente à 95% de la valeur
d'entrée puis monte progressivement à 100% de l'entrée.
Exemple
Si la valeur d'entrée (i_rIput) est égale à 10 et la constante de temps du filtre (i_tFltrTime)
est une seconde pour un gain de filtrage de 10, la valeur de sortie (q_rOput) est égale à 63 après
une durée de une seconde.
162
EIO0000000097 06/2019
Filter_PT1
La valeur de sortie est égale à 95 après une durée de trois secondes (trois fois la constante de
temps du filtre), puis la sortie monte progressivement à 100.
Cette figure présente un comportement normal :
Complément mathématique
Cette équation présente la fonction de transfert :
Avec :
Kp = Gain ou amplification de la fonction PT1
Ts = Constante de temps du filtre de la fonction PT1
G(s) = Fonction de transfert
L'équation présentée ci-dessus est en notation de Laplace pour le filtre passe-bas de premier
ordre.
Dans les systèmes temporels numériques, cette fonction est souvent appelée pulse-transfer
(fonction PT1).
EIO0000000097 06/2019
163
Filter_PT1
Etat d'erreur détectée
Un paramètre non valable tel que i_tCyclTime = 0 ou i_tFltrTime < i_tCyclTime conduit
à une erreur détectée et à la génération d'un ID d'erreur détectée correspondant. Pendant l'état
d'erreur détectée, la sortie est mise à zéro.
L'erreur détectée ne peut être réinitialisée que par un front montant de l'entrée i_xErrRst.
Comme indiqué dans la figure de sortie du bloc fonction, q_xBusy a la valeur TRUE tant que le
bloc fonction est activé et qu'il n'y a pas d'erreur détectée.
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches de sortie du bloc fonction Filter_PT1 :
164
Entrée
Type de
données
Description
i_xEn
BOOL
TRUE : Activé
FALSE : Désactivé
i_rIput
REAL
Valeur d'entrée pour traitement
Plage : ±3,4e+38
i_tCyclTime
TIME
Durée de cycle de tâche
Plage : 0...4294967295 ms
i_tCyclTime < 0 génère une erreur détectée.
i_rKp
REAL
Gain/amplification de la fonction PT1
Plage : ±3,4e+38
i_tFltrTime
TIME
Constante de temps du filtre
Plage : 0...4294967295 ms
Réglage d'usine = t#0ms,
i_tFltrTime < i_tCyclTime génère une erreur
détectée.
i_xErrRst
BOOL
TRUE : Réinitialise l'erreur détectée (sur front montant)
(optionnel)
EIO0000000097 06/2019
Filter_PT1
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Filter_PT1 :
Sortie
Type de
données
Description
q_xEn
BOOL
TRUE : Activé
FALSE : Désactivé
q_xBusy
BOOL
TRUE : Actif et pas d'erreur détectée.
FALSE : Désactivé ou erreur détectée.
q_rOput
REAL
Valeur de sortie
Plage : ±3,4e+38
q_xErr
BOOL
TRUE : Erreur détectée.
FALSE : Aucune erreur détectée.
q_uiErrId
UINT
Numéro d'erreur détectée quand la sortie d'erreur détectée
est active.
0: Aucune erreur détectée.
1: Paramètre non valable i_tCyclTime < 0.
2: Paramètre non valable i_tFltrTime < i_tCyclTime.
EIO0000000097 06/2019
165
Filter_PT1
Instanciation et exemple d'utilisation
Exemple avec un signal de fréquence
Le programme crée un signal sinusoïdal avec une certaine période (5 secondes/0,2 Hz) et un
signal sinusoïdal plus élevé d'une décade (0,5 secondes/2 Hz).
166
EIO0000000097 06/2019
Filter_PT1
L'entrée i_tCyclTime du bloc fonction Filter_PT1 doit avoir exactement la même valeur que
la période du POU dans le MAST, ici 10 millisecondes (voir zone encadrée en rouge).
EIO0000000097 06/2019
167
Filter_PT1
Résultat du POU précédent quand l'entrée i_tFltrTime est égale à 100 ms :
Bleu i_rIput signal sinusoïdal à 0,5 Hz (bloc fonction My_Filter_PT1_1).
Vert q_rOput signal filtré (bloc fonction My_Filter_PT1_1)
Rouge i_rIput signal sinusoïdal à 5 Hz (bloc fonction My_Filter_PT1_2).
Gris q_rOput signal filtré (bloc fonction My_Filter_PT1_2)
168
EIO0000000097 06/2019
Filter_PT1
Résultat du POU précédent quand l'entrée i_tFltrTime est égale à 500 ms :
Bleu i_rIput signal sinusoïdal à 0,5 Hz (bloc fonction My_Filter_PT1_1).
Vert q_rOput signal filtré (bloc fonction My_Filter_PT1_1)
Rouge i_rIput signal sinusoïdal à 5 Hz (bloc fonction My_Filter_PT1_2).
Gris q_rOput signal filtré (bloc fonction My_Filter_PT1_2)
EIO0000000097 06/2019
169
Filter_PT1
170
EIO0000000097 06/2019
EcoStruxure Machine Expert
Retournements
EIO0000000097 06/2019
Partie VI
Retournements
Retournements
Vue d’ensemble
Cette partie décrit la famille de Retournements.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
24
JK_FlipFlop : Initialisation/réinitialisation de l'entrée vers sortie de
retournement
173
25
JK_FlipFlop_MasterSlave: Initialisation/réinitialisation de l'entrée de la sortie
de retournement
175
26
RS_FlipFlop: Activation/réinitialisation de l'entrée/sortie de retournement
179
27
SR_FlipFlop: Activation/réinitialisation de l'entrée/sortie de retournement
181
28
Toggle_FlipFlop: Basculement de l'entrée/sortie de retournement
183
EIO0000000097 06/2019
171
Retournements
172
EIO0000000097 06/2019
EcoStruxure Machine Expert
JK_FlipFlop
EIO0000000097 06/2019
Chapitre 24
JK_FlipFlop : Initialisation/réinitialisation de l'entrée vers sortie de retournement
JK_FlipFlop : Initialisation/réinitialisation de l'entrée vers sortie
de retournement
Bloc fonction JK_FlipFlop
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction JK_FlipFlop
:
Description fonctionnelle
Le bloc fonction JK_FlipFlop assure la mise en œuvre de la table de vérité du retournement JK.
Ce bloc fonction fait référence à un retournement obéissant à la table de vérité ci-dessous :
i_xClk
i_xJ
i_xK
q_xQ(n)
q_xQ(n+1)
Fonctionnement
0
X
X
X
Q(n)
Maintien
RE
0
0
0
0
Maintien
RE
0
0
1
1
Maintien
RE
0
1
0
0
Reset
RE
0
1
1
0
Reset
RE
1
0
0
1
Activer
RE
1
0
1
1
Activer
RE
1
1
0
1
Toggle
RE
1
1
1
0
Toggle
r
"n" est l'état présent et (n+1) l'état suivant.
RE Front montant
EIO0000000097 06/2019
173
JK_FlipFlop
L'entrée Reset (i_xRst) réinitialise la sortie du retournement q_xQ, alors que l'entrée Set
(i_xSet) active la sortie du retournement q_xQ.
Table de vérité sous forme de diagramme temporel :
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction JK_FlipFlop :
Entrée
Type de données
Description
i_xJ
BOOL
TRUE : Entrée i_xJ active.
FALSE : Désactivé (réglage usine)
i_xK
BOOL
TRUE : Entrée i_xK active.
FALSE : Désactivé (réglage usine)
i_xClk
BOOL
TRUE : Signal d'horloge actif.
FALSE : Désactivé (réglage usine)
i_xSet
BOOL
TRUE : Active la sortie de retournement.
FALSE : Désactivé (réglage usine)
i_xRst
BOOL
TRUE : Réinitialise la sortie de retournement.
FALSE : Désactivé (réglage usine)
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction JK_FlipFlop :
Sortie
Type de données
Description
q_xQ
BOOL
Sortie de retournement
Limitations
Dans le retournement JK, les entrées i_xSet et i_xRst ont une priorité supérieure aux entrées
i_xJ et i_xK. Quand les deux entrées i_xSet et i_xRst sont à l'état soit FALSE /TRUE, la
sortie du bloc fonction q_xQ dépend des entrées i_xJ, i_xK et i_xClk.
174
EIO0000000097 06/2019
EcoStruxure Machine Expert
JK_FlipFlop_MasterSlave
EIO0000000097 06/2019
Chapitre 25
JK_FlipFlop_MasterSlave: Initialisation/réinitialisation de l'entrée de la sortie de retournement
JK_FlipFlop_MasterSlave: Initialisation/réinitialisation de
l'entrée de la sortie de retournement
Bloc fonction JK_FlipFlop_MasterSlave
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
JK_FlipFlop_MasterSlave :
Description fonctionnelle
Le bloc fonction JK_FlipFlop_MasterSlave assure la mise en œuvre de la table de vérité du
retournement maître/esclave JK. La sortie du maître est capturée sur le front montant du signal
d'horloge et la sortie de l'esclave est mise à jour sur le front descendant du signal d'horloge.
Ce schéma représente l'architecture interne du bloc fonction JK_FlipFlop_MasterSlave :
NOTE : La sortie complémenaire \q_xQ n'est pas une sortie du bloc fonction.
EIO0000000097 06/2019
175
JK_FlipFlop_MasterSlave
Le bloc fonction JK_FlipFlop_MasterSlave fait référence à un retournement obéissant à la
table de vérité suivante :
Activer
Reset
CLK
J
K
Q
1
0
X
X
X
1
0
1
X
X
X
0
1
1
X
X
X
1*
0
0
↑
0
0
Inv.
0
0
↑
1
0
1
0
0
↑
0
1
0
0
0
↑
1
1
Toggle
0
0
0
X
X
Inv.
L'entrée Reset (i_xRst) réinitialise la sortie du retournement q_xQ, alors que l'entrée Set
(i_xSet) active la sortie du retournement q_xQ.
Table de vérité sous forme de diagramme temporel :
176
EIO0000000097 06/2019
JK_FlipFlop_MasterSlave
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction JK_FlipFlop_MasterSlave :
Entrée
Type de données
Description
i_xJ
BOOL
TRUE : Entrée i_xJ active.
FALSE : Désactivé (réglage usine)
i_xK
BOOL
TRUE : Entrée i_xK active.
FALSE : Désactivé (réglage usine)
i_xClk
BOOL
TRUE : Signal d'horloge actif.
FALSE : Désactivé (réglage usine)
i_xSet
BOOL
TRUE : Active la sortie de retournement.
FALSE : Désactivé (réglage usine)
i_xRst
BOOL
TRUE : Réinitialise la sortie de retournement.
FALSE : Désactivé (réglage usine)
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction JK_FlipFlop_MasterSlave :
Sortie
Type de données
Description
q_xQ
BOOL
Sortie du retournement (True /False)
Limitations
Dans le retournement maître/esclave JK, les entrées i_xSet et i_xRst ont une priorité
supérieure aux entrées i_xJ et i_xK. Quand les deux entrées i_xSet et i_xRst sont à l'état
soit FALSE /TRUE, la sortie du bloc fonction q_xQ dépend des entrées i_xJ, i_xK et i_xClk.
EIO0000000097 06/2019
177
JK_FlipFlop_MasterSlave
178
EIO0000000097 06/2019
EcoStruxure Machine Expert
RS_FlipFlop
EIO0000000097 06/2019
Chapitre 26
RS_FlipFlop: Activation/réinitialisation de l'entrée/sortie de retournement
RS_FlipFlop: Activation/réinitialisation de l'entrée/sortie de
retournement
Bloc fonction RS_FlipFlop
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction RS_FlipFlop
:
Description fonctionnelle
Le bloc fonction RS_FlipFlop met en œuvre la table de vérité pour le retournement RS avec
priorité à la réinitialisation.
Le bloc fonction RS_FlipFlop fait référence à un retournement obéissant à la table de vérité
suivante :
i_xClk
i_xSet
0
X
X
Q(n)
1
0
0
Q(n)
1
0
1
0
1
1
0
1
1
1
0
1
r
i_xRst
q_xQ(n+1)
"n" est l'état présent et (n+1) l'état suivant.
Il a deux entrées, une entrée d'activation ou i_xSet et une entrée de réinitialisation, ou i_xRst.
Il a aussi une sortie q_xQ. Quand les deux entrées d'activation et de réinitialisation sont à l'état
haut, la priorité est donnée à l'entrée de réinitialisation (i_xSet=1 et i_xRst=1).
EIO0000000097 06/2019
179
RS_FlipFlop
Table de vérité sous forme de diagramme temporel :
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction RS_FlipFlop :
Entrée
Type de données
Description
i_xClk
BOOL
TRUE : Signal d'horloge actif.
FALSE : Désactivé (réglage usine)
i_xSet
BOOL
TRUE : Active la sortie de retournement.
FALSE : Désactivé (réglage usine)
i_xRst
BOOL
TRUE : Réinitialise la sortie de retournement.
FALSE : Désactivé (réglage usine)
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction RS_FlipFlop :
180
Sortie
Type de données
Description
q_xQ
BOOL
Sortie de retournement
EIO0000000097 06/2019
EcoStruxure Machine Expert
SR_FlipFlop
EIO0000000097 06/2019
Chapitre 27
SR_FlipFlop: Activation/réinitialisation de l'entrée/sortie de retournement
SR_FlipFlop: Activation/réinitialisation de l'entrée/sortie de
retournement
Bloc fonction SR_FlipFlop
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction SR_FlipFlop
:
Description fonctionnelle
Le bloc fonction SR_FlipFlop met en œuvre la table de vérité pour le retournement SR avec
priorité à l'activation.
Le bloc fonction SR_FlipFlop fait référence à un retournement obéissant à la table de vérité
suivante :
i_xClk
i_xSet
0
X
X
Q(n)
1
0
0
Q(n)
1
0
1
0
1
1
0
1
1
1
1
1
r
i_xRst
q_xQ(n+1)
"n" est l'état présent et (n+1) l'état suivant.
Il a deux entrées, une entrée d'activation ou i_xSet et une entrée de réinitialisation, ou i_xRst.
Il a aussi une sortie q_xQ. Quand les deux entrées d'activation et de réinitialisation sont à l'état
haut, la priorité est donnée à l'entrée d'activation (i_xSet=1 et i_xRst=1).
EIO0000000097 06/2019
181
SR_FlipFlop
Table de vérité sous forme de diagramme temporel :
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction SR_FlipFlop :
Entrée
Type de données
Description
i_xClk
BOOL
TRUE : Signal d'horloge actif.
FALSE : Désactivé (réglage usine)
i_xSet
BOOL
TRUE : Active la sortie de retournement.
FALSE : Désactivé (réglage usine)
i_xRst
BOOL
TRUE : Réinitialise la sortie de retournement.
FALSE : Désactivé (réglage usine)
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction SR_FlipFlop :
182
Sortie
Type de données
Description
q_xQ
BOOL
Sortie de retournement
EIO0000000097 06/2019
EcoStruxure Machine Expert
Toggle_FlipFlop
EIO0000000097 06/2019
Chapitre 28
Toggle_FlipFlop: Basculement de l'entrée/sortie de retournement
Toggle_FlipFlop: Basculement de l'entrée/sortie de
retournement
Bloc fonction Toggle_FlipFlop
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Toggle_FlipFlop :
Description fonctionnelle
Le bloc fonction Toggle_FlipFlop met en œuvre la table de vérité pour le retournement
T(Toggle) avec priorité à l'activation.
Le bloc fonction Toggle_FlipFlop est un type de retournement obéissant à la table de vérité
suivante :
i_xRst
i_xT(n-1)
i_xT(n)
q_xQ(n)
q_xQ(n+1)
0
0
0
X
Q(n)
0
0
1
0
1
0
0
1
1
0
0
1
x
x
Q(n)
1
x
x
x
0
r
"n" est l'état présent et (n+1) l'état suivant.
Il a deux entrées, soit l'entrée i_xT et une entrée de réinitialisation, ou i_xRst. Il a aussi une
sortie q_xQ.
EIO0000000097 06/2019
183
Toggle_FlipFlop
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Toggle_FlipFlop :
Entrée
Type de données
Description
i_xT
BOOL
Le front montant 0...1 bascule le retournement.
Réglage usine : FALSE
i_xRst
BOOL
TRUE : Réinitialise la sortie de retournement.
FALSE : Désactivé (réglage usine)
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Toggle_FlipFlop :
184
Sortie
Type de données
Description
q_xQ
BOOL
Sortie de retournement
EIO0000000097 06/2019
EcoStruxure Machine Expert
Fonctions mathématiques
EIO0000000097 06/2019
Partie VII
Fonctions mathématiques
Fonctions mathématiques
Vue d’ensemble
Cette partie décrit la famille de Fonctions mathématiques.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
29
Analysis: Calcul de valeurs intégrales et dérivées
187
30
Frequency_Multiplier: Mise en œuvre de 32 clignoteurs
189
31
Frequency_Output: Mise en œuvre d'une fréquence
195
32
Normalizer_With_Limiter: Mise à l'échelle de l'entrée Minimale et Maximale
203
33
ONE_SEC_PULSE: Fourniture d'impulsions à chaque seconde
207
34
Quantizer: Numérisation de la valeur d'entrée pour l'intervalle
209
35
Signal_Saturation: Limitation aux limites supérieure et inférieure de saturation
211
36
Signal_Statistics: Calcul de Maximum, de Minimum, de Moyenne et de
Variance
217
37
Check_Divisor: Vérification de condition de division par zéro
221
EIO0000000097 06/2019
185
Fonctions mathématiques
186
EIO0000000097 06/2019
EcoStruxure Machine Expert
Analyse
EIO0000000097 06/2019
Chapitre 29
Analysis: Calcul de valeurs intégrales et dérivées
Analysis: Calcul de valeurs intégrales et dérivées
Bloc fonction Analysis
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction Analysis :
Description fonctionnelle
Le bloc fonction Analysis calcule les valeurs intégrale et dérivée d'une série d'entrées. La sortie
commence à zéro au front montant de i_xEn. La valeur intégrale augmente par multiples de
l'entrée d'intervalle.
A chaque scrutation la sortie intégrale et la sortie dérivée sont mises à jour à partir de la valeur
d'intervalle.
Une erreur est détectée si la valeur d'intervalle est égale ou inférieure à zéro ou si l'entrée est hors
de la plage ou encore si la sortie intégrale ou dérivée dépasse 3,4e+38.
Intégrale = Intégrale + (Entrée en cours + Entrée précédente) / 2 * Intervalle.
Dérivée = (Entrée en cours + Entrée précédente)/ Intervalle.
Exemple
Entrée = 10 (Entrée précédente : 0), Intervalle = 10, la sortie après le premier cycle d'exécution est
comme suit :
 Intégrale = 0 + (10+0) / 2 * 10 = 50
 Dérivée = (10-0)/ 10 = 1
EIO0000000097 06/2019
187
Analyse
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Analysis :
Entrée
Type de
données
Description
i_xEn
BOOL
TRUE : Bloc fonction activé
FALSE : Bloc fonction désactivé
i_rIput
REAL
Valeur d'entrée
Plage : 1,17e-38...3,4e38
i_rItvl
REAL
Valeur d'entrée
Plage : 1,17e-38...3,4e38
i_xErrRst
BOOL
TRUE : Réinitialiser l'erreur détectée. (Sur le front
montant)
(optionnel)
Description des broches de sortie
Ce tableau décrit les broches de sortie :
sortie
Type de
données
Description
q_xActv
BOOL
Sortie d'état du bloc fonction
q_rItgr
REAL
Valeur intégrale
Plage : 1,17e-38...3,4e38
q_rDrvt
REAL
Valeur dérivée
Plage : 1,17e-38...3,4e38
q_xErr
BOOL
TRUE : Entrée i_rItvl <= 0
ou i_rIput < 1,17e-38
ou i_rIput > 3,4e+38
ou q_rItgr > 3,4e+38
ou q_rDrvt > 3,4e+38
FALSE : Aucune erreur détectée
188
EIO0000000097 06/2019
EcoStruxure Machine Expert
Frequency_Multiplier
EIO0000000097 06/2019
Chapitre 30
Frequency_Multiplier: Mise en œuvre de 32 clignoteurs
Frequency_Multiplier: Mise en œuvre de 32 clignoteurs
Vue d’ensemble
Ce chapitre décrit le bloc fonction Frequency_Multiplier.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Frequency_Multiplier
190
Sans maintien Description
191
Fonctionnalité avec description de condition
193
EIO0000000097 06/2019
189
Frequency_Multiplier
Bloc fonction Frequency_Multiplier
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Frequency_Multiplier :
Description fonctionnelle
Le bloc fonction Frequency_Multiplier met en œuvre 32 clignoteurs représentés par les bits
de sortie.
Sur chaque front montant du signal d'activation, la sortie du clignoteur commence à zéro. Le bit de
poids le plus faible change d'état après une durée égale à la base de temps. Le deuxième bit
clignote à une fréquence moitié de la fréquence initiale. Le troisième bit clignote à la moitié de la
fréquence du deuxième et ainsi de suite, jusqu'à la réinitialisation du signal d'activation. Si l'entrée
i_xHold est activée, l'état en cours des clignoteurs est Hold (maintien). Si des clignoteurs de type
BOOL sont nécessaires, il est possible d'utiliser le bloc fonction DWORD_AS_BIT (bibliothèque Util).
La sortie est réinitialisée sur le front montant de l'entrée Enable.
Exemple
Fréquences (Enable = TRUE, Timebase = t#100ms, Hold = FALSE)
DWORD_AS_BIT (Entrée = Sortie de fréquence)
DWORD_AS_BIT.B00 clignote toutes les 100 ms
DWORD_AS_BIT.B01 clignote toutes les 200 ms
DWORD_AS_BIT.B02 clignote toutes les 400 ms
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Frequency_Multiplier :
190
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : FB activé
FALSE : Désactivé
i_tBase
TIME
Période de temps
Plage : 1...4294967295 ms (≥ temps de cycle de l'automate)
i_xHold
BOOL
TRUE : Active
FALSE : Désactivé
EIO0000000097 06/2019
Frequency_Multiplier
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Frequency_Multiplier :
Sortie
Type de données
Description
q_xActv
BOOL
TRUE : Bloc fonction activé
FALSE : Désactivé
q_dwOput
DWORD
Etat de sortie
Plage : 0...4294967295
Sans maintien Description
Sans maintien
Si l'entrée de la broche i_xEn est à l'état haut, le temps i_tBase est mis à 1 s et l'entrée
i_xHold a la valeur FALSE, q_dwOput est augmenté d'une unité, après l'achèvement de la
période i_tBase.
DWORD_AS_BIT (Input: = Frequency_Multiplier. q_dwOput) :
 DWORD_AS_BIT.q_x00 est ON après 1 s d'activation du bloc fonction pour la durée de la base
de temps Time base
 DWORD_AS_BIT.q_x01 est ON après 2 s d'activation du bloc fonction pour 2 * durée de la base
de temps Time base
 DWORD_AS_BIT.q_x02 est ON après 4 s d'activation du bloc fonction pour 4 * durée de la base
de temps Time base
EIO0000000097 06/2019
191
Frequency_Multiplier
Diagramme de temps
Cette figure présente le diagramme de temps pour le bloc fonction Frequency_Multiplier
sans maintien d'entrée :
192
EIO0000000097 06/2019
Frequency_Multiplier
Fonctionnalité avec description de condition
Description de la fonctionnalité
Si l'entrée de la broche i_xEn est à l'état haut, le temps i_tBase est réglé à 1s et l'entrée
i_xHold a la valeur TRUE, alors q_dwOput maintient l'état précédent des clignoteurs. FB
reprend son fonctionnement normal quand l'entrée i_xHold passe à FALSE.
Diagramme de temps
Cette figure présente le diagramme de temps pour le bloc fonction Frequency_Multiplier
avec maintien d'entrée :
EIO0000000097 06/2019
193
Frequency_Multiplier
194
EIO0000000097 06/2019
EcoStruxure Machine Expert
Frequency_Output
EIO0000000097 06/2019
Chapitre 31
Frequency_Output: Mise en œuvre d'une fréquence
Frequency_Output: Mise en œuvre d'une fréquence
Bloc fonction Frequency_Output
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Frequency_Output :
Description fonctionnelle
Le bloc fonction Frequency_Output assure la mise en œuvre des fréquences.
Un signal positif sur i_xEn active le bloc. Le signal de sortie commence à TRUE et maintient ce
signal pendant une durée égale à (TimeBase * i_rIput) puis passe à FALSE pendant une durée
égale à TimeBase * (1-i_rIput).
Si le signal d'entrée entre dans la plage frontière 0 à i_rEdge, le signal de sortie n'alterne plus et
reste continuellement à l'état FALSE. S'il entre dans la plage 1-i_rEdge à 1, le signal de sortie a
en permanence la valeur TRUE.
Si le signal i_xEn est supprimé, le signal de sortie reste à sa valeur en cours jusqu'au
redémarrage du bloc fonction par un signal positif sur i_xEn.
EIO0000000097 06/2019
195
Frequency_Output
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Frequency_Output :
Entrée
Type de données
Description
i_xEn
BOOL
TRUE : FB activé
FALSE : Désactivé
i_rIput
REAL
Valeur d'entrée
Plage : 0.0...1.0
i_rEdge
REAL
Valeur d'entrée
Plage : 0.0...1.0
i_tBase
TIME
Période de temps
Plage : 0...4294967295 ms
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Frequency_Output :
sortie
Type de données
Description
q_xActv
BOOL
Etat actif du bloc fonction
q_xOput
BOOL
Valeur de sortie
Instanciation et exemple d'utilisation
L'exemple utilise les générateurs de signaux personnalisés suivants qui créent 2 signaux :
 Un signal de période 5 secondes qui sera utilisé comme entrée du bloc fonction
Frequency_Output.
 Un signal de période 50 secondes qui sera utilisé comme front pour le bloc fonction
Frequency_Output.
196
EIO0000000097 06/2019
Frequency_Output
Ce POU a une période de 10 ms dans le MAST.
EIO0000000097 06/2019
197
Frequency_Output
Cette figure présente le générateur de signal personnalisé :
198
EIO0000000097 06/2019
Frequency_Output
Cet exemple donne les résultats suivants :
Bleu Signal i_rEdge, période de 50 secondes.
Vert Signal i_rIput, période de 5 secondes.
Rouge q_xOput, sortie du bloc fonction Frequency_Output.
Ce tableau présente la table de vérité :
Niveau de front
Niveau d'entrée
Sortie
i_rEdge < 0,5
i_rIput < i_rEdge
FALSE
i_rEdge < i_rIput < (1-i_rEdge)
PWM; rapport cyclique = i_rIput
(1 - i_rEdge) < i_rIput
TRUE
i_rIput < i_rEdge
FALSE
i_rEdge <= i_rIput
TRUE
i_rEdge >= 0,5
EIO0000000097 06/2019
199
Frequency_Output
Exemple avec i_rEdge < 0,5 :
200
EIO0000000097 06/2019
Frequency_Output
Exemple avec i_rEdge >= 0,5 :
Exemple : Si l'entrée à la broche i_xEn est à l'état haut, l'entrée i_rIput et au départ l'entrée
i_rEdge sont à 0,5 et l'entrée i_tBase est définie à 1 sec, alors q_xOput est défini à 500 ms et
réinitialisée pour une durée de 500 ms. Après quelque temps l'entrée i_rEdge passe à 0,7.
EIO0000000097 06/2019
201
Frequency_Output
Cette figure présente le diagramme de temps de l'exemple ci-dessus :
202
EIO0000000097 06/2019
EcoStruxure Machine Expert
Normalizer_With_Limiter
EIO0000000097 06/2019
Chapitre 32
Normalizer_With_Limiter: Mise à l'échelle de l'entrée Minimale et Maximale
Normalizer_With_Limiter: Mise à l'échelle de l'entrée Minimale
et Maximale
Bloc fonction Normalizer_With_Limiter
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction Normalizer_With_Limiter :
Description fonctionnelle
Le bloc fonction Normalizer_With_Limiter met à l'échelle la valeur d'entrée maximale et
minimale selon la plage de sortie minimale et maximale. La valeur d'entrée peut être limitée aux
valeurs de sortie minimale et maximale.
La valeur de sortie peut être limitée aux valeurs de sortie minimale et maximale par
i_xIputMinLim et i_xIputMaxLim.
Quand l'entrée dépasse la valeur limite d'entrée maximale/minimale, q_xIputLimExcd a la
valeur TRUE.
Complément mathématique
EIO0000000097 06/2019
203
Normalizer_With_Limiter
Exemple
204
i_xIputMaxLim
i_xIputMinLim
i_rIput
q_rOput
q_xIputL
imExcd
FALSE
FALSE
12.5
3072
TRUE
TRUE
FALSE
12.5
2048
TRUE
TRUE
FALSE
10
2048
FALSE
TRUE
FALSE
7.5
1024
FALSE
TRUE
TRUE
5
0
FALSE
FALSE
TRUE
2.5
-1024
FALSE
FALSE
TRUE
0
-2048
FALSE
FALSE
TRUE
-2.5
-2048
TRUE
FALSE
FALSE
-2.5
-3072
TRUE
EIO0000000097 06/2019
Normalizer_With_Limiter
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Normalizer_With_Limiter :
Entrée
Type de
données
Description
i_rIput
REAL
Valeur d'entrée
Plage : ±3,4e+38
i_rIputMin
REAL
Entrée minimale
Plage : ±3,4e+38
i_rIputMax
REAL
Valeur d'entrée maximale
Plage : ±3,4e+38
i_rOputMin
REAL
Valeur de sortie minimale
Plage : ±3,4e+38
i_rOputMax
REAL
Valeur de sortie maximale
Plage : ±3,4e+38
i_xIputMinLim
BOOL
TRUE : Limite activée pour la valeur d'entrée
minimale
FALSE : Limite désactivée
i_xIputMaxLim
BOOL
TRUE : Limite activée pour la valeur d'entrée
maximale
FALSE : Limite désactivée
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Normalizer_With_Limiter :
Sortie
Type de
données
Description
q_rOput
REAL
Mise à l'échelle de la valeur de sortie
Plage : ±3,4e+38
q_xIputLimExcd
BOOL
La valeur d'entrée dépasse la valeur limite
EIO0000000097 06/2019
205
Normalizer_With_Limiter
206
EIO0000000097 06/2019
EcoStruxure Machine Expert
ONE_SEC_PULSE
EIO0000000097 06/2019
Chapitre 33
ONE_SEC_PULSE: Fourniture d'impulsions à chaque seconde
ONE_SEC_PULSE: Fourniture d'impulsions à chaque seconde
Bloc fonction ONE_SEC_PULSE
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
ONE_SEC_PULSE :
Description fonctionnelle
Le bloc fonction ONE_SEC_PULSE génère des impulsions d'une durée de une seconde sur la sortie
q_xOput.
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction ONE_SEC_PULSE :
sortie
Type de
données
Description
q_xOput
BOOL
Impulsion de sortie
Etat de sortie = TRUE pendant 1 cycle de tâche
Fréquence = 1 Hz
Instanciation et exemple d'utilisation
Cette figure ci-dessus présente une instance du bloc fonction ONE_SEC_PULSE :
EIO0000000097 06/2019
207
ONE_SEC_PULSE
208
EIO0000000097 06/2019
EcoStruxure Machine Expert
Quantizer
EIO0000000097 06/2019
Chapitre 34
Quantizer: Numérisation de la valeur d'entrée pour l'intervalle
Quantizer: Numérisation de la valeur d'entrée pour l'intervalle
Bloc fonction Quantizer
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction Quantizer :
Description fonctionnelle
Le bloc fonction Quantizer discrétise la valeur d'entrée (–32768 à 32767) pour un intervalle
donné.
Si l'entrée est supérieure à la plage d'entrée, la sortie d'erreur détectée à la valeur TRUE et la
sortie affiche une valeur zéro.
Complément mathématique
Avec Itvl = intervalle.
EIO0000000097 06/2019
209
Quantizer
Exemple
Entrée
Intervalle
Sortie
32766.7
1
32767
Erreur détectée = FALSE
32768
15
0
Erreur détectée = TRUE
-32768
20
-32760
Erreur détectée = FALSE
36.89
15
30
Erreur détectée = FALSE
-47.98
-10
-50
Erreur détectée = FALSE
-42.14
-10
-40
Erreur détectée = FALSE
3456.78
80
3440
Erreur détectée = FALSE
De -4,99 à 4,99
10
0
De 5 à 14,99
10
10
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Quantizer :
Entrée
Type de
données
Description
i_rIput
REAL
Valeur d'entrée
Plage : -32768...32767
i_rItvl
REAL
Valeur d'entrée d'intervalle de quantification
Plage : ±3,4e+38
i_xErrRst
BOOL
Réinitialiser l'erreur détectée. (Sur le front montant)
(optionnel)
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Quantizer :
210
sortie
Type de
données
Description
q_rOput
REAL
Valeur de sortie
Plage : -32768...32767
q_xErr
BOOL
TRUE : Limite d'entrée dépassée
FALSE : Aucune erreur détectée
EIO0000000097 06/2019
EcoStruxure Machine Expert
Signal_Saturation
EIO0000000097 06/2019
Chapitre 35
Signal_Saturation: Limitation aux limites supérieure et inférieure de saturation
Signal_Saturation: Limitation aux limites supérieure et
inférieure de saturation
Bloc fonction Signal_Saturation
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Signal_Saturation :
Description fonctionnelle
Le bloc fonction Signal_Saturation limite le signal d'entrée à la limite de saturation supérieure
et inférieure.
Quand la valeur d'entrée basse est supérieure à la valeur haute, la sortie d'erreur détectée a la
valeur TRUE et la sortie affiche zéro.
Quand l'entrée dépasse la valeur limite d'entrée haute/basse, q_xIputLimExcd a la valeur
TRUE.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Signal_Saturation :
Entrée
Type de
données
Description
i_rIput
REAL
Valeur d'entrée
Plage : ±3,4e+38
i_rLow
REAL
Valeur d'entrée inférieure
Plage : ±3,4e+38
i_rHigh
REAL
Valeur d'entrée supérieure
Plage : ±3,4e+38
i_xErrRst
BOOL
Réinitialiser l'erreur détectée. (Sur le front montant)
(Facultatif)
EIO0000000097 06/2019
211
Signal_Saturation
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Signal_Saturation :
Sortie
Type de
données
Description
q_rOput
REAL
Valeur de sortie : ±3,4e+38
q_xIputLimExcd
BOOL
TRUE : la valeur d'entrée dépasse la valeur limite.
q_xErr
BOOL
TRUE : limite d'entrée incorrecte
FALSE : aucune erreur détectée.
Instanciation et exemple d'utilisation
Cette figure présente une instance du bloc fonction Signal_Saturation :
Si l'entrée i_rIput est réglée sur 4, i_rLow sur 5 et i_rHigh sur 10, la valeur de sortie de
saturation i_rLow prend la valeur 5 et q_xIputLimExcd la valeur TRUE.
212
EIO0000000097 06/2019
Signal_Saturation
Exemple CFC
Cette figure présente l'exemple CFC d'une mise en œuvre de Signal_Saturation :
EIO0000000097 06/2019
213
Signal_Saturation
Chronogramme
Cette figure présente le chronogramme du bloc fonction Signal_Saturation :
Bleu Signal d'entrée
Rouge Signal de sortie, limité dans la plage [Bas ; Haut]/[-0,4 ; +0,6].
Vert IputLimExcd, TRUE quand le signal d'entrée est hors plage.
214
EIO0000000097 06/2019
Signal_Saturation
Cette figure présente le chronogramme de la sortie q_xErr :
Bleu : Signal d'entrée i_rLow
Vert : Signal d'entrée i_rHigh
Rouge : Signal de sortie q_xErr, TRUE dès que i_rLow est supérieur à i_rHigh.
Gris : signal d'entrée i_xErrRst, réinitialise le signal de sortie q_xErr sur le front montant tant que i_rLow
est inférieur à i_rHigh.
EIO0000000097 06/2019
215
Signal_Saturation
216
EIO0000000097 06/2019
EcoStruxure Machine Expert
Signal_Statistics
EIO0000000097 06/2019
Chapitre 36
Signal_Statistics: Calcul de Maximum, de Minimum, de Moyenne et de Variance
Signal_Statistics: Calcul de Maximum, de Minimum, de
Moyenne et de Variance
Bloc fonction Signal_Statistics
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction Signal_Statistics :
Description fonctionnelle
Ce bloc fonction calcule le maximum, le minimum, la moyenne et la variance d'une série de valeurs
d'entrée.
Ce bloc fonction prend en compte la valeur d'entrée dans chaque cycle de scrutation d'automate
comme un échantillon.
Valeur minimum
La valeur de sortie minimum est la valeur constituant le minimum de tous les échantillons
enregistrés.
Valeur maximun
La valeur de sortie maximum est la valeur constituant le maximum de tous les échantillons
enregistrés.
Valeur moyenne
La valeur moyenne est égale à la somme des observations (échantillons) divisée par le nombre
d'observations (échantillons).
EIO0000000097 06/2019
217
Signal_Statistics
Avec :
 n = Nombre d'échantillons enregistrés
 Xn = Echantillons d'entrée

= Sortie calculée
Valeur de variance
La variance est égale à la moyenne des carrés des échantillons moins le carré de la moyenne
(valeur de sortie moyenne).
Avec :
n = Nombre d'échantillons enregistrés
 Xn = Echantillons d'entrée


= Sortie calculée
Exemple





218
Statistiques (Enable: = TRUE, Input: = 1, 2
Sortie minimum =1
Sortie maximum = 2
Moyenne = (1 + 2) / 2 = 1,5
Variance = ((1 * 1 + 2 * 2) / 2) - (1,5 * 1,5) = 2,5 – 2,25 = 0,25
EIO0000000097 06/2019
Signal_Statistics
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Signal_Statistics :
Entrée
Type de
données
Description
i_xEn
BOOL
TRUE : Bloc fonction activé
FALSE : Bloc fonction désactivé
i_rIput
REAL
Rang du bit
Plage : ±3,4e+38
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Signal_Statistics :
sortie
Type de
données
Description
q_xActv
BOOL
Sortie d'état du bloc fonction
q_rMin
REAL
Valeur minimum
Plage : ±3,4e+38
q_rMax
REAL
Valeur maximun
Plage : ±3,4e+38
q_rAvge
REAL
Valeur moyenne
Plage : ±3,4e+38
q_rVrnc
REAL
Valeur de variance
Plage : ±3,4e+38
EIO0000000097 06/2019
219
Signal_Statistics
220
EIO0000000097 06/2019
EcoStruxure Machine Expert
Check_Divisor
EIO0000000097 06/2019
Chapitre 37
Check_Divisor: Vérification de condition de division par zéro
Check_Divisor: Vérification de condition de division par zéro
Bloc fonction Check_Divisor
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Check_Divisor :
Description fonctionnelle
Le bloc fonction Check_Divisor vérifie un état de division par zéro.
Si le diviseur i_rDvsr est égal à zéro, la sortie q_rChkDiv est égale à 1, sinon si le diviseur n'est
pas égal à 0, la sortie est égale au diviseur.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Check_Divisor :
Entrée
Type de données Description
i_rDvsr
REAL
Sortie de diviseur
Plage : ±3,4e+38
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Check_Divisor :
sortie
Type de données Description
q_rChkDiv
REAL
Vérification de sortie de division
Plage : ±3,4e+38
NOTE : Cette sortie n'est pas valable pour la
valeur 0.
EIO0000000097 06/2019
221
Check_Divisor
222
EIO0000000097 06/2019
EcoStruxure Machine Expert
Fonctions de conversion numérique
EIO0000000097 06/2019
Partie VIII
Fonctions de conversion numérique
Fonctions de conversion numérique
Vue d’ensemble
Cette partie décrit la famille de Conversion numérique.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
38
ArrayOfByte_TO_String: Conversion d'un tableau en format octet au format
chaîne
225
39
DT_AS_WORD: Conversion de Date et Heure sous forme d'un mot
229
40
DWORD_AS_WORD: Division d'un mot double en deux mots
231
41
String_TO_ArrayOfByte: Tableau de sortie et valeur ASCII de la chaîne
d'entrée
233
42
WORD_AS_DWORD: Décalage du mot de poids fort et ajout du mot de poids
faible
237
EIO0000000097 06/2019
223
Fonctions de conversion numérique
224
EIO0000000097 06/2019
EcoStruxure Machine Expert
ArrayOfByte_TO_String
EIO0000000097 06/2019
Chapitre 38
ArrayOfByte_TO_String: Conversion d'un tableau en format octet au format chaîne
ArrayOfByte_TO_String: Conversion d'un tableau en format
octet au format chaîne
Fonction ArrayOfByte_TO_String
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches de la fonction
ArrayOfByte_TO_String :
Description fonctionnelle
La chaîne de sortie [255] est l'ensemble des caractères de chaîne, correspondant à la valeur ASCII
du tableau d'entrées donné au format Byte.
Si l'entrée ORDER a la valeur TRUE, l'ordre des caractères dans la chaîne de sortie correspond
à l'ordre des octets dans le tableau d'entrée. Il existe donc une correspondance biunivoque entre
l'ordre des octets d'entrée et l'ordre des caractères de chaîne renvoyés en sortie comme expliqué
à l'exemple 1.
Si l'entrée ORDER a la valeur FALSE, l'ordre des caractères de la chaîne de sortie est tel que le
caractère de chaîne correspondant à la valeur ASCII de input[1] est affiché en sortie en position[2]
de output[1..255]. Le caractère de chaîne correspondant à la valeur ASCII de input[2] est affiché
en sortie en position[1] de output[1..255].
De même le caractère de chaîne correspondant à la valeur ASCII de input[3] est affiché en sortie
en position[4] de output[1..255]. Le caractère de chaîne correspondant à la valeur ASCII de
input[4] est affiché en sortie en position[3] de output[1..255] comme expliqué dans l'exemple 2.
Si et uniquement si l'entrée ORDER a la valeur FALSE et si l'entrée SPACE a la valeur TRUE avec
un nombre d'octets d'entrée impair, un caractère d'espace est ajouté avant le dernier caractère de
la chaîne de sortie comme indiqué dans les exemples 3 et 4.
Mais si l'entrée ORDER a la valeur TRUE, l'entrée d'espace n'a aucune influence sur la sortie
comme l'indique l'exemple 6.
EIO0000000097 06/2019
225
ArrayOfByte_TO_String
Exemple 1
Entrée : ARRAY [1..255] OF BYTE = 72, 69, 76, 76, 79;
Order : TRUE
Space : FALSE
Chaîne : 'HELLO'
Comme indiqué ci-dessus, l'ordre des caractères dans la chaîne de sortie correspond à l'ordre des
octets d'entrée, c'est-à-dire que la valeur d'octet en première position de Array[1..255] est 72, ce
qui correspond à la valeur de chaîne en première position de sortie, soit H. La valeur d'octet en
deuxième position de Array[1..255] est 69, ce qui correspond à la valeur chaîne en deuxième
position de la sortie, soit E, etc.
Exemple 2
Entrée : ARRAY [1..255] OF BYTE = 65, 66, 67, 68, 69, 70, 71;
ByteOrder : FALSE
InsertSpace : FALSE
Chaîne : ‘BADCFEG’
Comme indiqué ci-dessus, l'ordre des caractères dans la chaîne de sortie est modifié, c'est-à-dire
que la valeur d'octet en première position dans Array [1 à 255] est 65, ce qui correspond à la valeur
chaîne en deuxième position de la sortie, soit A. La valeur d'octet en deuxième position dans
Array[1 à 255] est 66, ce qui correspond à la valeur chaîne en première position de la sortie, soit
B. De même, la valeur d'octet en troisième position dans Array[1 à 255] est 67, ce qui correspond
à la valeur de chaîne en quatrième position de la sortie, soit C. La valeur d'octet en quatrième
position dans Array[1 à 255] est 68, ce qui correspond à la valeur de chaîne en troisième position
de la sortie, soit D, etc.
Exemple 3
Entrée : ARRAY [1..255] OF BYTE = 72, 69, 76, 76, 79;
Order : FALSE
Space : TRUE
Chaîne : ‘EHLL O’
Exemple 4
Entrée : ARRAY [1..255] OF BYTE = 65, 66, 67, 68, 69, 70, 71;
Order : FALSE
Space : TRUE
Chaîne : ‘BADCFE G’
226
EIO0000000097 06/2019
ArrayOfByte_TO_String
Comme indiqué ci-dessus dans les exemples 3 et 4, le nombre d'entrées est de 5 dans l'exemple 3
et de 7 dans l'exemple 4. Comme 5 et 7 sont impairs, l'entrée ORDER a la valeur FALSE et
l'entrée SPACE a la valeur TRUE. Donc, les sorties de chaîne sont "EHLL O" et "BADCFE G"
respectivement.
NOTE : Mais si le nombre d'octets en entrée est 255, l'entrée ORDER a la valeur FALSE et l'entrée
SPACE a la valeur TRUE. L'entrée SPACE devient non significative, comme expliqué dans
l'exemple 5 ci-dessus.
Exemple 5
Entrée : ARRAY [1..250] OF BYTE = 65 et ARRAY [251..255] OF BYTE = 66, 67, 68, 69, 70;
Order : TRUE
Space : TRUE/FALSE
Chaîne[1 à 250] : 'A' et chaîne[251 à 255] = ‘CBEDF’
Comme indiqué dans l'exemple ci-dessus, si le nombre d'octets en entrée est 255, la chaîne de
sortie n'est pas affectée par l'entrée SPACE.
Exemple 6
Entrée : ARRAY [1..255] OF BYTE = 65, 66, 67, 68, 69, 70, 71;
Order : TRUE
Space : TRUE
Chaîne : ‘ABCDEFG’
Comme indiqué ci-dessus, si l'entrée ORDER a la valeur TRUE, l'entrée SPACE devient non
significative.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction ArrayOfByte_TO_String :
Entrée
Type de
données
Description
i_abyIput
ARRAY[0..25
5] OF BYTE
Valeur d'entrée
Plage : 0 à 255
i_xOrdr
BOOL
TRUE : dans l'ordre de l'entrée
FALSE : intervertit les octets de poids fort et de poids faible.
i_xSpce
BOOL
TRUE : insère un espace quand i_xOrdr est à l'état bas.
FALSE : aucun espace n'est inséré.
NOTE : I_xSpce insère un caractère d'espace juste avant le dernier caractère de la chaîne de
sortie, quand l'entrée ORDER a la valeur FALSE et que le nombre d'octets en entrée est impair.
EIO0000000097 06/2019
227
ArrayOfByte_TO_String
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction ArrayOfByte_TO_String :
Sortie
Type de données Description
ArrayOfByte_TO_String
STRING(255)
Sortie de caractères de chaîne
NOTE : L'utilisateur doit obligatoirement définir une taille de [255] pour la chaîne de sortie, sinon
la taille choisie par défaut est 80.
Instanciation et exemple d'utilisation
Cette figure présente une instance du bloc fonction ArrayOfByte_TO_String :
Avec l'entrée ORDER et sans l'entrée SPACE
Si l'entrée est :
 i_abyIput [255]
 Entrée [1] = 65
 Entrée [2] = 66
 Entrée [3] = 67
 Entrée [4] = 68
 Entrée [5] = 69


i_xOrdr : TRUE
i_xSpce : FALSE
La fonction ArrayOfByte_TO_String affiche "ABCDE".
Avec l'entrée ORDER et l'entrée SPACE
Si l'entrée est :
i_abyIput [255]
 Entrée [1] = 65
 Entrée [2] = 66
 Entrée [3] = 67
 Entrée [4] = 68
 Entrée [5] = 69



i_xOrdr : FALSE
i_xSpce : TRUE
La fonction ArrayOfByte_TO_String affiche "BADC E".
228
EIO0000000097 06/2019
EcoStruxure Machine Expert
DT_AS_WORD
EIO0000000097 06/2019
Chapitre 39
DT_AS_WORD: Conversion de Date et Heure sous forme d'un mot
DT_AS_WORD: Conversion de Date et Heure sous forme d'un
mot
Bloc fonction DT_AS_WORD
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction DT_AS_WORD :
Description fonctionnelle
Le bloc fonction DT_AS_WORD extrait les données d'une date et les convertit en mots équivalents.
L'entrée DATE_AND_TIME est convertie en sortie sous forme d'un WORD séparant année, mois,
date, heure, minute et seconde.
Exemple
Avec l'entrée DT#2008-08-15-11:05:30, les sorties sont :
Sortie année : 2008
 Sortie mois : 8
 Sortie jour : 15
 Sortie heures : 11
 Sortie minutes : 5
 Sortie secondes : 30

Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction DT_AS_WORD :
Entrée
Type de données
Description
i_dtDttm
DT
Entrée date et heure
Plage : 1970-01-01-00:00:00...
2106-02-07-06:28:15
EIO0000000097 06/2019
229
DT_AS_WORD
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction DT_AS_WORD :
Sortie
Type de données
Description
q_wYear
WORD
Sortie année
Plage : 1970...2106
q_wMnth
WORD
Sortie mois
Plage : 1...12
q_wDay
WORD
Sortie date
Plage : 1...31
q_wHrs
WORD
Sortie heures
Plage : 1...23
q_wMin
WORD
Sortie minutes
Plage : 1...59
q_wSec
WORD
Sortie secondes
Plage : 1...59
Instanciation et exemple d'utilisation
Cette figure présente une instance du bloc fonction DT_AS_WORD :
L'utilisation du bloc fonction est donnée dans l'exemple ci-dessous :
 i_dtDttm: DT#2008-08-15-11:05:30
 q_wYear: 2008
 q_wMnth: 8
 q_wDay: 15
 q_wHrs: 11
 q_wMin: 5
 q_wSec: 30
230
EIO0000000097 06/2019
EcoStruxure Machine Expert
DWORD_AS_WORD
EIO0000000097 06/2019
Chapitre 40
DWORD_AS_WORD: Division d'un mot double en deux mots
DWORD_AS_WORD: Division d'un mot double en deux mots
Bloc fonction DWORD_AS_DWORD
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
DWORD_AS_DWORD :
Description fonctionnelle
Le bloc fonction DWORD_AS_WORD convertit une valeur d'entrée de type de données DWORD en
sortie de poids faible et de poids fort de type WORD.
Le mot double d'entrée i_dwIput est divisé en deux mots, de poids fort q_wHigh et de poids
faible q_wLow.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction DWORD_AS_DWORD :
Entrée
Type de données
Description
i_dwIput
DWORD
Valeur d'entrée
Plage : 0...4294967295
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction DWORD_AS_DWORD :
Sortie
Type de données
Description
q_wLow
WORD
Valeur de sortie mot de poids faible
Plage : 0...65535
q_wHigh
WORD
Valeur de sortie mot de poids fort
Plage : 0...65535
EIO0000000097 06/2019
231
DWORD_AS_WORD
232
EIO0000000097 06/2019
EcoStruxure Machine Expert
String_TO_ArrayOfByte
EIO0000000097 06/2019
Chapitre 41
String_TO_ArrayOfByte: Tableau de sortie et valeur ASCII de la chaîne d'entrée
String_TO_ArrayOfByte: Tableau de sortie et valeur ASCII de
la chaîne d'entrée
Fonction String_TO_ArrayOfByte
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches de la fonction String_TO_ArrayOfByte :
Description fonctionnelle
La fonction String_TO_ArrayOfByte est une sortie Array [255] d'octets représentant la valeur
ASCII de la chaîne d'entrée.
Si l'entrée ORDER a la valeur TRUE, l'ordre des valeurs de sortie correspond à l'ordre des
caractères de la chaîne en entrée. Il existe donc une correspondance biunivoque 1:1 dans l'ordre
des entrées et l'ordre des valeurs ASCII renvoyées en sortie comme expliqué à l'exemple 1.
Si l'entrée ORDER a la valeur FALSE, la sortie est telle que la valeur ASCII du caractère chaîne
en input[1] de l'entrée est array[1..255] affichée en position[2] de la sortie. La valeur ASCII du
caractère chaîne en input[2] de l'entrée array[1..255] est affichée en position 1 de la sortie. De
même la valeur ASCII du caractère chaîne en input[3] de l'entrée array[1..255] est affichée en
position 4 de la sortie et la valeur ASCII du caractère chaîne en input[4] de l'entrée array[1..255]
est affichée en position 3 de la sortie comme expliqué dans l'exemple 2.
Exemple 1
Si l'entrée ORDER a la valeur TRUE, seul le tableau de sortie est affiché dans l'ordre de l'entrée
chaîne comme indiqué ci-dessous :
i_sIput='ABCDE'
i_xOrdr= TRUE
Alors la sortie de la conversion de chaîne en tableau d'octets est :
output [1] = 65
 output [2] = 66
 output [3] = 67
 output [4] = 68

EIO0000000097 06/2019
233
String_TO_ArrayOfByte


output [5] = 69
output [6] = 0
Comme indiqué dans l'exemple ci-dessus, Input [1] = A, son code ASCII correspondant est 65,
affiché en position output [1].
De même input [2] = B, son code ASCII correspondant est 66, affiché en position output [2], etc.
Exemple 2
i_sIput='ABCDE'
i_xOrdr= FALSE
Alors la sortie de la conversion de chaîne en tableau d'octets est :
output [1] = 66
 output [2] = 65
 output [3] = 68
 output [4] = 67
 output [6] = 0
 output [5] = 69

Comme indiqué dans l'exemple ci-dessus,
Input [1] = A, son code ASCII correspondant est 65, affiché en position output [2].
Input [2] = B, son code ASCII correspondant est 66, affiché en position output [1].
De même Input [3] = C, son code ASCII correspondant est 67, affiché en position output [4].
Input [4] = D, son code ASCII correspondant est 68, affiché en position output [3].
De même Input [5] = E, son code ASCII correspondant est 69, affiché en position output [6].
Input [6] = (espace), son code ASCII correspondant est " " (c'est-à-dire un espace), il est affiché
en position output [5].
NOTE : Mais si le nombre d'octets en entrée est 255, l'entrée ORDER a la valeur FALSE. La valeur
ASCII reste alors à la même position (voir exemple 3 ci-dessous).
Input:
i_sIput [1...250]='A'
 i_sIput [251...255]='BCDEF'

Order: FALSE
Sortie
 Output [1...250]:='65'
 Output [251...255]='CBEDF'
234
EIO0000000097 06/2019
String_TO_ArrayOfByte
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction String_TO_ArrayOfByte :
Entrée
Type de données
Description
i_sIput
STRING
[1...255]
Valeur chaîne d'entrée (1...255)
i_xOrdr
BOOL
TRUE : Sortie dans l'ordre de l'entrée
FALSE : La sortie échange les octets de poids
fort et de poids faible.
NOTE : L'utilisateur doit obligatoirement définir la taille de la chaîne input[255], sinon la chaîne est
prise comme 80 par défaut.
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction String_TO_ArrayOfByte :
Sortie
Type de données
Description
String_TO_Array
OfByte
ARRAY
[0...255] OF
BYTE
Tableau de valeurs ASCII
Plage : 0...255
Instanciation et exemple d'utilisation
Cette figure présente une instance du bloc fonction String_TO_ArrayOfByte :
Avec l'entrée Order
i_sIput [255]:
 Input [1] = A
 Input [2] = B
 Input [3] = C
 Input [4] = D
 Input [5] = E
i_xOrdr: TRUE
La fonction String_TO_ArrayOfByte affiche "65, 66, 67, 68, 69"
EIO0000000097 06/2019
235
String_TO_ArrayOfByte
Sans l'entrée Order
i_sIput [255]:
Input [1] = A
 Input [2] = B
 Input [3] = C
 Input [4] = D
 Input [5] = E

i_xOrdr: FALSE
La fonction String_TO_ArrayOfByte affiche "66, 65, 68, 67, 69"
236
EIO0000000097 06/2019
EcoStruxure Machine Expert
WORD_AS_DWORD
EIO0000000097 06/2019
Chapitre 42
WORD_AS_DWORD: Décalage du mot de poids fort et ajout du mot de poids faible
WORD_AS_DWORD: Décalage du mot de poids fort et ajout
du mot de poids faible
Bloc fonction WORD_AS_DWORD
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
WORD_AS_DWORD :
Description fonctionnelle
Le bloc fonction WORD_AS_DWORD fusionne deux valeurs d'entrée de type WORD en une seule
sortie de type DWORD.
Le mot d'entrée de poids fort i_wHigh est décalé vers la gauche de 4 demi-octets et s'ajoute au
mot de poids faible d'entrée i_wLow pour obtenir une sortie Dword q_dwOput.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction WORD_AS_DWORD :
Entrée
Type de données
Description
i_wLow
WORD
Valeur d'entrée du mot de poids faible
Plage : 0 à 65 535
i_wHigh
WORD
Valeur d'entrée du mot de poids fort
Plage : 0 à 65 535
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction WORD_AS_DWORD :
Sortie
Type de données
Description
q_dwOput
DWORD
Valeur de sortie Dword
Plage : 0 à 4 294 967 295
EIO0000000097 06/2019
237
WORD_AS_DWORD
238
EIO0000000097 06/2019
EcoStruxure Machine Expert
Conversion physique
EIO0000000097 06/2019
Partie IX
Conversion physique
Conversion physique
Vue d’ensemble
Cette partie décrit la famille de Conversion physique.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
43
Celsius_TO_Fahrenheit: Conversion de Celsius en Fahrenheit
241
44
Celsius_TO_Kelvin: Conversion de Celsius en Kelvin
243
45
Fahrenheit_TO_Celsius: Conversion de Fahrenheit en Celsius
245
46
Frequency_TO_Period: Calcul de la période temporelle d'une fréquence
donnée
247
47
Kelvin_TO_Celsius: Conversion de Kelvin en Celsius
249
48
Period_TO_Frequency: Calcul de la fréquence du temps donné
251
EIO0000000097 06/2019
239
Conversion physique
240
EIO0000000097 06/2019
EcoStruxure Machine Expert
Celsius_TO_Fahrenheit
EIO0000000097 06/2019
Chapitre 43
Celsius_TO_Fahrenheit: Conversion de Celsius en Fahrenheit
Celsius_TO_Fahrenheit: Conversion de Celsius en Fahrenheit
Bloc fonction Celsius_TO_Fahrenheit
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Celsius_TO_Fahrenheit :
Description fonctionnelle
La fonction Celsius_TO_Fahrenheit convertit une température de Celsius en Fahrenheit.
Utilisez Fahrenheit_TO_Celsius pour la procédure inverse.
Formule : T_Fahrenheit = [(T_Celsius * 1,8) + 32]
Description des broches d'entrée
Ce tableau décrit les broches d'entrée de la fonction Celsius_TO_Fahrenheit :
Entrée
Type de
données
Description
i_rIput
REAL
Valeur d'entrée en Celsius
Plage : ±1,89e38 (les valeurs
supérieures donnent un résultat infini en
sortie).
Description des broches de sortie
Ce tableau décrit les broches de sortie de la fonction Celsius_TO_Fahrenheit :
Sortie
Type de
données
Description
Celsius_TO_Fahrenheit
REAL
Valeur de sortie en Fahrenheit
EIO0000000097 06/2019
241
Celsius_TO_Fahrenheit
242
EIO0000000097 06/2019
EcoStruxure Machine Expert
Celsius_TO_Kelvin
EIO0000000097 06/2019
Chapitre 44
Celsius_TO_Kelvin: Conversion de Celsius en Kelvin
Celsius_TO_Kelvin: Conversion de Celsius en Kelvin
Bloc fonction Celsius_TO_Celsius
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Celsius_TO_Kelvin :
Description fonctionnelle
Le bloc fonction Celsius_TO_Kelvin convertit la valeur en unité Celsius de type REAL en unité
Kelvin. Le résultat est un nombre de type REAL.
La broche i_rIput sert à l'entrée de la valeur en Celsius.
La broche q_rOput renvoie la valeur équivalente en Kelvin sous forme d'un type de données
REAL.
Formule : Kelvin = Celsius + 273,15
Erreur d'entrée détectée
La broche q_xErr prend l'état TRUE si une valeur non valable en Celsius est entrée sur la broche
i_rIput et la broche q_rOput renvoie 0 car la température en unité Kelvin ne peut pas être
inférieure à 0.
Cette broche d'erreur détectée est réinitialisée sur une valeur d'entrée valable.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Celsius_TO_Kelvin :
Entrée
Type de
données
Description
i_rIput
REAL
Valeur d'entrée en Celsius
Plage : -273,15...3,4e+38
EIO0000000097 06/2019
243
Celsius_TO_Kelvin
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Celsius_TO_Kelvin :
Sortie
Type de
données
Description
q_xErr
BOOL
TRUE : Entrée non valable
FALSE : Entrée valable
q_rOput
REAL
Valeur de sortie en Kelvin
Plage : 0...3,4e+38
L'entrée i_rIput ne peut pas être définie à moins de -273.15 parce que la valeur équivalente en
Kelvin est inférieure à 0, ce qui est théoriquement impossible.
244
EIO0000000097 06/2019
EcoStruxure Machine Expert
Fahrenheit_TO_Celsius
EIO0000000097 06/2019
Chapitre 45
Fahrenheit_TO_Celsius: Conversion de Fahrenheit en Celsius
Fahrenheit_TO_Celsius: Conversion de Fahrenheit en Celsius
Bloc fonction Fahrenheit_TO_Celsius
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Fahrenheit_TO_Celsius :
Description fonctionnelle
La fonction Fahrenheit_TO_Celsius convertit une température de Fahrenheit en Celsius.
Utilisez Celsius_TO_Fahrenheit pour la procédure inverse.
Formule : T_Celsius = [(T_Fahrenheit - 32) / 1,8]
Description des broches d'entrée
Ce tableau décrit les broches d'entrée de la fonction Fahrenheit_TO_Celsius :
Entrée
Type de
données
Description
i_rIput
REAL
Valeur d'entrée en Fahrenheit
Plage : ±3,4e+38
Description des broches de sortie
Ce tableau décrit la sortie de la fonction Fahrenheit_TO_Celsius :
Sortie
Type de
données
Description
Fahrenheit_TO_Celsius
REAL
Valeur de sortie en Celsius
Plage : ±1,89e+38
EIO0000000097 06/2019
245
Fahrenheit_TO_Celsius
246
EIO0000000097 06/2019
EcoStruxure Machine Expert
Frequency_TO_Period
EIO0000000097 06/2019
Chapitre 46
Frequency_TO_Period: Calcul de la période temporelle d'une fréquence donnée
Frequency_TO_Period: Calcul de la période temporelle d'une
fréquence donnée
Fonction Frequency_TO_Period
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches de la fonction
Frequency_TO_Period :
Description fonctionnelle
La fonction Frequency_TO_Period convertit une valeur de fréquence (en Hertz) de type REAL
en temps. Ce résultat est du type TIME.
La période de temps est calculée à partir de la fréquence donnée. La fréquence est définie sur la
broche i_rIput au format de données REAL. La valeur de temps équivalente est renvoyée sur la
broche Frequency_TO_Period au format de données TIME.
Période = 1 / Fréquence
NOTE : Si l'entrée n'est pas dans la plage précédente, la sortie est égale à zéro.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Frequency_TO_Period :
Entrée
Type de données
Description
i_rIput
REAL
Fréquence d'entrée 0,0...1000,0 Hz
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Frequency_TO_Period :
Sortie
Type de données
Description
Frequency_TO_Period
TIME
Période de temps de l'entrée en fréquence.
0...4294967295 ms
EIO0000000097 06/2019
247
Frequency_TO_Period
248
EIO0000000097 06/2019
EcoStruxure Machine Expert
Kelvin_TO_Celsius
EIO0000000097 06/2019
Chapitre 47
Kelvin_TO_Celsius: Conversion de Kelvin en Celsius
Kelvin_TO_Celsius: Conversion de Kelvin en Celsius
Bloc fonction Kelvin_TO_Celsius
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction Kelvin_TO_Celsius :
Description fonctionnelle
Le bloc fonction Kelvin_TO_Celsius convertit la valeur en unité Kelvin de type REAL en unité
Celsius. Le résultat est un nombre de type REAL.
La broche i_rIput sert à l'entrée de la valeur en Kelvin.
La broche q_rOput renvoie la valeur équivalente en Celsius sous forme d'un type de données
REAL.
Formule : Celsius = Kelvin – 273,15
Erreur d'entrée détectée
La broche q_xErr de type BOOL prend l'état TRUE si une valeur en Kelvin non valable (c'est-àdire < 0) est entrée par la broche i_rIput et la broche q_rOput renvoie –273.15, parce que la
valeur équivalente en Celsius de la valeur minimale en Kelvin est –273.15.
Cette broche d'erreur détectée est réinitialisée sur une valeur d'entrée valable.
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Kelvin_TO_Celsius :
Entrée
Type de
données
Description
i_rIput
REAL
Valeur d'entrée en Kelvin
Plage : 0...3,4e+38
EIO0000000097 06/2019
249
Kelvin_TO_Celsius
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Kelvin_TO_Celsius :
Sortie
Type de
données
Description
q_xErr
BOOL
TRUE : Entrée non valable
FALSE : Entrée valable.
q_rOput
REAL
Valeur de sortie en Celsius
Plage : -273,15...3,4e+38
Limitations
L'entrée i_rIput ne peut pas être définie à moins de 0 parce que en théorie la valeur en Kelvin
ne peut pas être inférieure à 0.
250
EIO0000000097 06/2019
EcoStruxure Machine Expert
Period_TO_Frequency
EIO0000000097 06/2019
Chapitre 48
Period_TO_Frequency: Calcul de la fréquence du temps donné
Period_TO_Frequency: Calcul de la fréquence du temps donné
Fonction Period_TO_Frequency
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches de la fonction Period_TO_Frequency :
Description fonctionnelle
La fonction Period_TO_Frequency convertit un temps de type TIME en fréquence (Hertz). Ce
résultat est un nombre de type REAL.
Cette fonction calcule la fréquence d'une période sous forme d'un temps donné. Le temps est
défini par la broche i_rIput au format de données TIME. La valeur de fréquence équivalente est
renvoyée sur la broche Period_TO_Frequency au format de données REAL.
Fréquence = 1 / Période
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Period_TO_Frequency :
Entrée
Type de données
Description
i_tIput
TIME
Valeur d'entrée de temps
Plage : 0...4294967295 ms
NOTE : Si l'entrée n'est pas dans la plage précédente, la sortie est mise à zéro.
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Period_TO_Frequency :
Sortie
Type de données
Description
Period_TO_Frequency
REAL
Fréquence équivalente à l'entrée de temps
Plage : 0 à 1000 Hz
EIO0000000097 06/2019
251
Period_TO_Frequency
252
EIO0000000097 06/2019
EcoStruxure Machine Expert
Utilitaires
EIO0000000097 06/2019
Partie X
Utilitaires
Utilitaires
Vue d’ensemble
Cette partie décrit la famille de blocs fonction utilitaires.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
49
Hour_Meter : Accumulation d'heures de fonctionnement
255
50
Operation_Mode : Sélection du mode de fonctionnement
265
EIO0000000097 06/2019
253
Utilitaires
254
EIO0000000097 06/2019
EcoStruxure Machine Expert
Hour_Meter
EIO0000000097 06/2019
Chapitre 49
Hour_Meter : Accumulation d'heures de fonctionnement
Hour_Meter : Accumulation d'heures de fonctionnement
Vue d’ensemble
Ce chapitre décrit le bloc fonction Hour_Meter.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Hour_Meter
256
Description des broches d'entrée
258
Description des broches de sortie
259
Broche d'entrée – sortie
259
Structures utilisées
260
Description des bits du mot de commande
260
Mot d'état
261
Instanciation et exemple d'utilisation
262
EIO0000000097 06/2019
255
Hour_Meter
Bloc fonction Hour_Meter
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction Hour_Meter :
Description fonctionnelle
Le bloc fonction Hour_Meter permet de cumuler les heures de fonctionnement de différents
équipements.
Limitations






256
Si une erreur est détectée, le temps n'est pas calculé tant que l'erreur détectée n'a pas été
acquittée. Ensuite le calcul de temps reprend à partir de la valeur au moment où l'erreur a été
détectée. Donc, si l'équipement dont le temps de disponibilité est calculé est actif pendant l'état
d'erreur détectée, le temps cumulé est inférieur au temps réel.
Pour une valeur erronée d'unité de temps spécifiée dans la variable i_strPara.wTypeTime,
le bloc fonction affiche la valeur précédente du temps calculé au moment où l'entrée d'unité de
temps était correcte. Mais le bloc fonction n'informe pas l'utilisateur de cette erreur.
Même si le bloc est verrouillé par une entrée de verrouillage externe, le bloc fonction peut
recevoir, générer et afficher une erreur détectée.
En mode verrouillé, le bloc fonction peut réinitialiser l'erreur détectée en recevant l'entrée
d'acquittement.
La valeur de temps calculée en sortie n'est qu'en secondes, minutes ou heures. L'utilisateur doit
le convertir en un format tel que HH:MM:SS si nécessaire.
La variable de structure i_strPara contient la valeur de temps d'avertissement et l'unité de
temps. L'utilisateur doit prendre des précautions spécifiques pour ne pas modifier accidentellement l'unité de temps, car ceci pourrait générer des alarmes intempestives.
EIO0000000097 06/2019
Hour_Meter
Modes de fonctionnement
Le cumul peut s'effectuer en mode manuel ou en mode automatique :
Mode automatique : le mode automatique est sélectionné par la broche d'entrée i_xAut.
Quand l'entrée i_xIn est réglée sur TRUE, le bloc cumule le temps et s'arrête quand i_xIn
prend la valeur FALSE. Le temps cumulé est disponible sur la broche de sortie q_diHr.
 Mode manuel : le mode manuel est activé par la broche i_xMan. Quand l'entrée i_xIn est
réglée sur TRUE, le bloc cumule le temps et s'arrête quand i_xIn prend la valeur FALSE. Le
temps cumulé est disponible sur la broche de sortie q_diHr. Le cumul peut être inhibé par le
bit de commande i_dwCtrl.

Le bloc est désactivé au démarrage du contrôleur et reste dans le mode spécifié jusqu'à la
sélection d'un autre mode. Si les deux entrées sont mises à 1, le mode de fonctionnement n'est
pas valable.
Réinitialisation de valeur
La réinitialisation de la sortie q_diHr est effectuée par un front montant sur l'entrée i_xRst en
mode automatique ou par un bit de commande en mode manuel.
La valeur de réinitialisation de la sortie q_diHr est définie à la valeur i_strPara.diSp (point de
consigne). De plus, le signal détecté q_xWarn est activé quand la sortie q_diHr dépasse la limite
d'erreur détectée spécifiée par le paramètre i_strPara.diWaitTime.
Définition du type de la valeur de sortie
Le paramètre i_strPara.wTypeTime définit l'unité de la valeur de sortie. Les choix possibles
sont secondes, minutes et heures. La fonction de cumul ne dépend pas de cette valeur, mais elle
s'effectue toujours en secondes.
Conditions de fonctionnement
Le comptage ne s'effectue que si l'entrée de verrouillage i_xLock a la valeur FALSE. Un signal
de verrouillage actif inhibe le fonctionnement du compteur d'heures. Un verrouillage actif est
indiqué sur la sortie q_xLock.
Le bloc fonction active le signal d'erreur détectée si l'entrée d'erreur détectée i_xErr est TRUE
(erreur externe détectée) ou si le mode de fonctionnement n'est pas valable (erreurs internes
détectées). Les erreurs détectées sont indiquées dans l'IHM. Pour réinitialiser la sortie d'erreur
détectée, l'erreur détectée doit être acquittée par un front montant sur l'entrée i_xAckn ou par
utilisation du bit 16 du signal i_dwCtrl.
EIO0000000097 06/2019
257
Hour_Meter
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Hour_Meter :
258
Entrée
Type de données
Description
i_xAut
BOOL
TRUE : Mode auto activé
FALSE : Désactivé (réglage usine)
i_xMan
BOOL
TRUE : Mode manuel activé
FALSE : Désactivé (réglage usine)
i_xIn
BOOL
TRUE : Le bloc cumule le temps
FALSE : Désactivé (réglage usine)
i_xRst
BOOL
TRUE : Ramène la sortie à la valeur prédéfinie entrée à l'entrée
i_strPara.
FALSE : Désactivé (réglage usine)
(optionnel)
i_xLock
BOOL
Entrée de verrouillage pour fonctionnement
TRUE : Le verrouillage est actif
FALSE : Pas de verrouillage. (Réglage usine)
(optionnel)
i_xErr
BOOL
TRUE : L'erreur externe détectée est active.
FALSE : Aucune erreur externe détectée (réglage d'usine).
i_xAckn
BOOL
Acquittement par un front montant.
L'entrée pour acquittement d'erreurs internes et externes détectées
est indiquée à la sortie q_xErr.
i_strPara
STRUCT Par_HM
Structure contenant les paramètres de ce bloc.
Consultez la description de (voir page 260)Par_HM.
i_dwCtrl
DWORD
Bits de commande pour interaction depuis l'IHM.
Plage : 0...4294967295
Consultez la description des bits des mots de commande
(voir page 260).
EIO0000000097 06/2019
Hour_Meter
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Hour_Meter :
Sortie
Type de
données
Description
q_xAut
BOOL
TRUE : Mode automatique activé
FALSE : Désactivé
q_xMan
BOOL
TRUE : Mode manuel activé
FALSE : Désactivé
q_diHr
DINT
Temps cumulé de fonctionnement en secondes, minutes ou
heures.
Plage : -2147483648...2147483647
q_xWarn
BOOL
TRUE : Signal indiquant que le temps à l'heure a dépassé une
valeur d'avertissement
FALSE : Désactivé.
q_xLock
BOOL
TRUE : Le verrouillage est actif.
FALSE : Pas de verrouillage
Indique que l'opération est bloquée par un verrouillage (entrée
i_xLock)
q_xErr
BOOL
TRUE : Erreur détectée active
FALSE : Aucune erreur détectée
q_wUnit
WORD
Indique l'unité du temps de fonctionnement affiché à l'heure de
sortie :
 16#01: Secondes
 16#02: Minutes
 16#04: Heures
q_dwStat
DWORD
Bits d'état à afficher dans l'IHM
Plage : 0...4294967295
Broche d'entrée – sortie
Entrée - sortie de l'IHM
Ce tableau décrit la broche d'entrée – sortie du bloc fonction Hour_Meter :
Entrée - sortie
Type de données
Description
iq_strHmi
STRUCT HMI_HM
Structure d'interface avec l'IHM
Consultez les structures utilisées (voir page 260).
EIO0000000097 06/2019
259
Hour_Meter
Structures utilisées
Par_HM
Elément de structure
Type
Description
diSp
DINT
Valeur prédéfinie par la sortie de temps de
compteur d'heures utilisée à la réinitialisation
diWaitTime
DINT
Valeur de temps pour activation du signal d'erreur
détectée
wTypeTime
WORD
Définit l'unité du temps cumulé en sortie en
secondes, minutes ou heures :
 16#01: Secondes
 16#02: Minutes
 16#04: Heures
HMI_HM
Elément de structure
Type
Description
diVal
DINT
Temps cumulé de fonctionnement en secondes,
minutes ou heures.
diSp
DINT
Valeur prédéfinie par la sortie de temps de
compteur d'heures utilisée à la réinitialisation
diWaitTime
DINT
Valeur de temps pour activation du signal d'erreur
détectée
wTypeTime
WORD
Indication de l'unité du temps de fonctionnement
affiché à l'heure de sortie
Description des bits du mot de commande
Fonctionnalité
Ce tableau décrit les bits du mot de commande :
260
Rang du bit
Description
0...3
Inutilisé
4
Réinitialise la sortie q_diHr à la valeur de i_strPara.diSp
5
Comptage de temps de pause
6...15
Inutilisé
16
Un changement de ce bit acquitte l'erreur détectée.
17...31
Inutilisé
EIO0000000097 06/2019
Hour_Meter
Mot d'état
Fonctionnalité
Le tableau décrit les bits de mot d'état :
Rang du bit
Description
0
Le mode auto est actif
1
Le mode manuel est actif
2
Aucun mode n'est sélectionné.
3
Le bloc fonction est verrouillé par l'entrée de verrouillage i_xLock
4
Inutilisé
5
Le comptage de temps est en pause
6
Le temps de fonctionnement en i_strPara.diWaitTime est
dépassé.
7...15
Inutilisé
16
L'erreur détectée est réinitialisée
17
L'erreur détectée est présente
18...23
Inutilisé
24
L'erreur interne détectée est présente
25
L'erreur externe détectée est présente
26...31
Inutilisé
EIO0000000097 06/2019
261
Hour_Meter
Instanciation et exemple d'utilisation
Instanciation et exemple d'utilisation
Le programme suivant réinitialise et active périodiquement l'entrée d'un bloc fonction
Hour_Meter :
262
EIO0000000097 06/2019
Hour_Meter
HourMeterReset et HourMeterEnable sont gérés pour le POU suivant :
EIO0000000097 06/2019
263
Hour_Meter
Toutes les 25 secondes, les données de HourMeterCounter sont réinitialisées avec une valeur
initiale de 5. Quand HourMeterReset a la valeur FALSE, le compteur maintient sa valeur en
cours.
Bleu HourMeterCounter
Vert HourMeterReset
Rouge HourMeterEnable
Dans cet exemple, le temps de cycle du POU dans le MAST n'a aucune influence. Pour cet
exemple, la périodicité est de 100 millisecondes.
264
EIO0000000097 06/2019
EcoStruxure Machine Expert
Operation_Mode
EIO0000000097 06/2019
Chapitre 50
Operation_Mode : Sélection du mode de fonctionnement
Operation_Mode : Sélection du mode de fonctionnement
Vue d’ensemble
Ce chapitre décrit le bloc fonction Operation_Mode.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Operation_Mode
266
Description des broches d'entrée
267
Description des broches de sortie
268
Description des bits du mot de commande
269
Mot d'état
270
EIO0000000097 06/2019
265
Operation_Mode
Bloc fonction Operation_Mode
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Operation_Mode :
Description fonctionnelle
Le bloc fonction Operation_Mode permet de sélectionner entre les modes de fonctionnement
auto et manuel depuis deux sources différentes :
 Interrupteurs/programme d'automate
 IHM
Limitations


Si aucun mode de fonctionnement n'est actuellement sélectionné, le mode précédemment actif
est maintenu. Si par exemple le mode auto avec commande locale était activé précédemment,
à la réinitialisation l'entrée auto est maintenue jusqu'à la définition d'un autre mode.
Le mode local a une priorité supérieure à la commande de l'IHM. Un interrupteur en mode de
fonctionnement n'est pas pris en compte automatiquement quand le mode local est réinitialisé
et que la commande d'IHM est activée précédemment en même temps que le mode local.
Mode local
Le mode local peut être activé avec le mode auto ou manuel. Le mode local s'active à partir de
l'entrée i_xLoc et interdit l'interaction manuelle depuis l'IHM par l'entrée du mot de commande
i_dwCtrl.
Quand le mode local est actif, le mode de fonctionnement peut être activé à l'aide des entrées
i_xAut et i_xMan:
 Si i_xAut est activé, le mode automatique est activé et indiqué à la sortie q_xAut.
 Si i_xMan est activé, le mode manuel est activé et indiqué à la sortie q_xMan.
Si le mode local n'est pas actif, l'activation des bits de i_dwCtrl permet aussi d'activer les modes
de fonctionnement depuis l'IHM.
NOTE : Quand q_xHmiCtrl est activé, les entrées i_xAut et i_xMan sont ignorées
266
EIO0000000097 06/2019
Operation_Mode
Priorité
i_xLoc a une priorité supérieure au mot de commande i_dwCtrl. Ainsi dès que i_xLoc est
activé, le mode de fonctionnement est à nouveau activé par les entrées i_xAut et i_xMan.
Réinitialisation d'une erreur détectée
Le bloc génère un mode de fonctionnement non valable si les deux modes auto et manuel sont
sélectionnés (erreur interne détectée) et s'affiche sur la sortie q_xErr. Ceci active aussi le signal
d'erreur détectée si l'entrée d'erreur détectée i_xErr est mise à 1 (erreur externe détectée). Les
erreurs détectées sont indiquées dans les bits du mot d'état q_dwStat. Pour réinitialiser la sortie
d'erreur détectée, l'erreur détectée doit être acquittée par un front montant sur l'entrée input Ack
ou à l'aide du bit d'acquittement de l'entrée i_dwCtrl.
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Operation_Mode :
Entrée
Type de
données
Description
i_xAut
BOOL
TRUE : Mode automatique activé
FALSE : Désactivé (réglage usine)
i_xMan
BOOL
TRUE : Mode manuel activé.
FALSE : Désactivé. (Réglage usine)
i_xLoc
BOOL
TRUE : Mode local activé
FALSE : Désactivé. (Réglage usine)
i_xErr
BOOL
TRUE : Erreur externe détectée active.
FALSE : Aucune erreur externe détectée. (Réglage
usine)
i_xAckn
BOOL
Acquittement par un front montant.
L'entrée pour acquittement d'erreurs internes et
externes détectées est indiquée à la sortie
q_xErr.
i_dwCtrl
DWORD
Bits de commande pour interaction depuis l'IHM.
Plage : 0...4294967295
Consultez la description des mots d'état
(voir page 269)
EIO0000000097 06/2019
267
Operation_Mode
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Operation_Mode :
268
Sortie
Type de
données
Description
q_xAut
BOOL
TRUE : Mode automatique activé
FALSE : Désactivé
q_xMan
BOOL
TRUE : Mode manuel activé
FALSE : Désactivé
q_xLoc
BOOL
TRUE : Mode local activé
Le mode de fonctionnement ne peut pas être
modifié par l'IHM et les blocs fonction ne peuvent
pas être actionnés depuis l'IHM.
FALSE : Désactivé
q_xHmiCtrl
BOOL
TRUE : Le mode de fonctionnement est donné par
l'IHM.
q_xHmiCtrl est remplacé par le mode local.
FALSE : Désactivé
q_xErr
BOOL
TRUE : Erreur détectée active.
FALSE : Aucune erreur détectée
q_dwStat
DWORD
Bits d'état à afficher dans l'IHM
Plage : 0...4294967295
Consultez la description des mots d'état
(voir page 270).
EIO0000000097 06/2019
Operation_Mode
Description des bits du mot de commande
Fonctionnalité
Ce tableau décrit les bits du mot de commande :
Rang du bit
Description
0
Active le mode automatique
1
Active le mode manuel
2, 3
Inutilisé
4
Activé : commande IHM active. Ce n'est qu'après l'activation de ce bit
que les sélections par le bit 0 et le bit 1 s'effectuent
5...15
Inutilisé
16
Le front montant de ce bit vaut acquittement de l'erreur détectée.
17...31
Inutilisé
Ce tableau présente la table de vérité :
i_xAut
i_xMan
i_xLoc
i_dwCtrl
bit0 Aut
bit1
Man
bit4
IHM
q_xAut
q_xMan
q_xL
oc
q_xHm
iCtrl
q_xE
rr
0
0
0
0
0
0
0
0
0
0
0
0
0
1
X
X
X
0
0
1
0
0
1
1
1
X
X
X
0
0
1
0
1
1
0
1
X
X
X
1
0
1
0
0
0
1
1
X
X
X
0
1
1
0
0
X
X
1→0
X
X
0
PS
PS
0
0
0
X
X
0
0
0
1
0
0
0
1
0
X
X
0
1
0
1
1
0
0
1
0
X
X
0
0
1
1
0
1
0
1
0
X
X
0
X
X
1→0
PS
PS
0
0
0
X
X
0
1
1
1
0
0
0
1
1
PS Etat précédent
EIO0000000097 06/2019
269
Operation_Mode
Mot d'état
Fonctionnalité
Le tableau décrit les bits de mot d'état :
270
Rang du bit
Description
0
Le mode auto est actif
1
Le mode manuel est actif
2
Le mode local est actif
3
Inutilisé
4
Le mode de commande IHM est actif
5...15
Inutilisé
16
Indique la réinitialisation de l'erreur détectée
17
L'erreur détectée est présente
18...23
Inutilisé
24
L'erreur interne détectée est présente
25
L'erreur externe détectée est présente
26...31
Inutilisé
EIO0000000097 06/2019
EcoStruxure Machine Expert
Commande de vanne
EIO0000000097 06/2019
Partie XI
Commande de vanne
Commande de vanne
Vue d’ensemble
Cette part décrit la bibliothèque de fonctions de commande de vanne.
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
51
Bistable_Valve: Commandes vannes bistables
273
52
Monostable_Valve: Commande de vannes monostables
281
53
Proportional_Valve: Commande de vannes proportionnelles
287
EIO0000000097 06/2019
271
Commande de vanne
272
EIO0000000097 06/2019
EcoStruxure Machine Expert
Bistable_Valve
EIO0000000097 06/2019
Chapitre 51
Bistable_Valve: Commandes vannes bistables
Bistable_Valve: Commandes vannes bistables
Vue d’ensemble
Ce chapitre décrit le bloc fonction Bistable_Valve.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Bistable_Valve
274
Description des broches d'entrée
277
Description des broches de sortie
278
Structure utilisée
278
Description des bits du mot de commande
279
Mot d'état
279
Instanciation et exemple d'utilisation
280
EIO0000000097 06/2019
273
Bistable_Valve
Bloc fonction Bistable_Valve
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Bistable_Valve :
Description fonctionnelle
Le bloc fonction Bistable_Valve permet de commander la vanne bistable.
Modes de fonctionnement
Le bloc fonction Bistable_Valve autorise trois modes de fonctionnement :
Mode automatique : Le mode automatique est activé par la broche d'entrée i_xAut. Dans ce
mode, la vanne est ouverte et fermée par les entrées i_xAutOpen et i_xAutCls respectivement, que le mode local soit activé ou non.
 Mode Manuel : Le mode manuel est activé par la broche i_xMan.
Cas 1 : Le mode local n'est pas actif. La vanne est ouverte ou fermée par les commandes de
bit du signal i_dwCtrl.
Cas 2 : Le mode local est actif. La vanne est ouverte ou fermée par les signaux d'entrée
i_xLocOpen et i_xLocCls respectivement.
 Mode local : Le mode local est activé par une broche d'entrée i_xLoc et défini en plus du mode
automatique ou manuel. Le mode local n'influence pas le mode automatique, mais modifie la
source du fonctionnement manuel.

Comportement de sortie
La sortie q_xOpen reste active tant que le signal de rétroaction i_xFbckOpen reste à l'état bas.
La sortie q_xCls reste aussi active tant que le signal de rétroaction i_xFbckCls reste à l'état
bas. Ce comportement de sortie est valable pour les modes manuel et local.
274
EIO0000000097 06/2019
Bistable_Valve
Comportement au démarrage de l'automate
Le bloc est désactivé au démarrage de l'automate et reste dans le même mode de fonctionnement,
à moins qu'un nouveau mode soit sélectionné. Si les deux modes automatique et manuel sont
sélectionnés simultanément (entrées i_xAut et i_xMan mises à 1), le mode de fonctionnement
n'est pas valable, cet état est indiqué sur la sortie q_xErr.
Supervision de la vanne
La position de la vanne est supervisée par les signaux de rétroaction i_xFbckOpen et
i_xFbckCls. Au démarrage du fonctionnement, les entrées de rétroaction doivent signaler la
position correcte de la vanne dans un temps défini. Si ce temps est dépassé, le bloc indique une
erreur détectée. Ce temps peut être défini par l'élément de structure iFbckDly à l'entrée
i_strPara.
Quand les deux signaux de rétroaction d'ouverture et de fermeture sont manquants
(i_xFbckOpen et i_xFbckCls mis à 0), et si la position de la vanne est inconnue (QOpen_bi et
QClose_bi mis à 0), une erreur de position inconnue est détectée.
Quand l'entrée xFbckEn a la valeur FALSE, la supervision de temps n'est PAS activée. Consultez
la section Comportement de sortie (voir page 274).
Fonctionnement de la vanne
La vanne ne peut être actionnée que si l'entrée i_xLock est mise à 0. Un signal de verrouillage
actif inhibe le fonctionnement de la vanne. Un verrouillage actif est indiqué par la sortie q_xLock.
La vanne ne peut être actionnée que si la sortie q_xErr est mise à 0. Un signal d'erreur détectée
actif inhibe le fonctionnement de la vanne.
Gestion d'erreurs détectées
La sortie q_xErr est à l'état haut si une erreur est détectée. L'erreur détectée peut être :
 Erreur interne détectée (mode de fonctionnement non valable, signal de rétroaction manquant
ou position inconnue).
 Erreur externe détectée
Les erreurs détectées sont indiquées comme alarmes dans l'IHM. Si un verrouillage ou une erreur
est détecté pendant le fonctionnement de la vanne, le comportement du bloc fonction dépend de
l'élément de structure i_strPara.xFrceEn sur l'entrée i_strPara. Si cet élément est mis à 1,
le bloc active le déplacement de la vanne à sa position par défaut, et la sortie correspondante est
à l'état haut (q_xOpen ou q_xCls) pendant un temps de i_strPara.iFbckDly secondes.
Sinon le fonctionnement est arrêté et doit être redémarré après la disparition du verrouillage.
Pour réinitialiser q_xErr, l'erreur détectée doit être acquittée par un front montant sur l'entrée
i_xAckn ou par utilisation du bit 16 du signal i_dwCtrl.
EIO0000000097 06/2019
275
Bistable_Valve
Définition de la position par défaut
La position par défaut de la vanne peut être définie par i_strPara.xPosDflt. Cette description
suppose une fermeture par défaut. Si i_strPara.xPosDflt est mis à 1, c'est l'ouverture qui est
la position par défaut.
276
EIO0000000097 06/2019
Bistable_Valve
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Bistable_Valve :
Entrée
Type de données Description
i_xAut
BOOL
TRUE : Mode automatique activé
FALSE : Désactivé
i_xMan
BOOL
TRUE : Mode manuel activé
FALSE : Désactivé
i_xLoc
BOOL
TRUE : Mode local activé
FALSE : Désactivé
i_xLocOpen
BOOL
Le front montant de 0 à 1 ouvre
manuellement la vanne en mode local.
Les modes manuel et local doivent
être simultanément mis à 1.
i_xLocCls
BOOL
Le front montant de 0 à 1 ferme
manuellement la vanne en mode local.
Les modes manuel et local doivent
être simultanément mis à 1.
i_xAutOpen
BOOL
Le front montant de 0 à 1 ouvre la vanne en
mode automatique.
i_xAutCls
BOOL
Le front montant de 0 à 1 ferme la vanne en
mode automatique.
i_xFbckOpen
BOOL
TRUE : Le signal de rétroaction d'ouverture
est actif.
FALSE : Pas de rétroaction d'ouverture
i_xFbckCls
BOOL
TRUE : Le signal de rétroaction de
fermeture est actif.
FALSE : Pas de rétroaction de fermeture
i_xLock
BOOL
TRUE : Le verrouillage est actif
FALSE : Pas de verrouillage
(optionnel)
i_xErr
BOOL
TRUE : Erreur externe détectée active.
FALSE : Aucune erreur externe détectée
i_xAckn
BOOL
Acquittement par un front montant.
L'entrée pour acquittement
d'erreurs internes et externes
détectées est indiquée à la sortie
q_xErr.
i_strPara
STRUCT
Par_Val_Bi
Structure contenant les paramètres de ce
bloc.
Consultez la description des
structures utilisées
(voir page 278).
i_dwCtrl
DWORD
Bits de commande pour interaction depuis
l'IHM.
Plage : 0...4294967295
Consultez la description des mots
de commande (voir page 279).
EIO0000000097 06/2019
Remarques
277
Bistable_Valve
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Bistable_Valve :
Sortie
Type de
données
Description
Remarques
q_xAut
BOOL
TRUE : Mode automatique activé
FALSE : Désactivé
-
q_xMan
BOOL
TRUE : Mode manuel activé
FALSE : Désactivé
-
q_xOpen
BOOL
TRUE : Commande d'ouverture
active
FALSE : Désactivé
-
q_xCls
BOOL
TRUE : Commande de fermeture
active
FALSE : Désactivé
-
q_xLock
BOOL
TRUE : Le verrouillage est actif
FALSE : Pas de verrouillage
Indique que l'opération
est bloquée par un
verrouillage (entrée
i_xLock)
q_xErr
BOOL
TRUE : Erreur détectée active
FALSE : Aucune erreur détectée
-
q_dwStat
DWORD
Bits d'état à afficher dans l'IHM
Plage : 0...4294967295
Consultez la description
des mots d'état
(voir page 279).
Structure utilisée
Par_Val_Bi
278
Elément de structure
Type
Description
xFbckEn
BOOL
Active la supervision du signal de rétroaction
iFbckDly
INT
Temporisation en secondes pour obtenir le signal
de rétroaction de la vanne.
iRevDly
INT
Temporisation en secondes d'actionnement de la
vanne en sens opposé
xPosDflt
BOOL
Position par défaut de la vanne
(FALSE : fermée, TRUE : ouverte)
xFrceEn
BOOL
Active l'application de la position par défaut en cas
de verrouillage ou d'erreur détectée.
EIO0000000097 06/2019
Bistable_Valve
Description des bits du mot de commande
Fonctionnalité
Ce tableau décrit les bits du mot de commande :
Rang du bit
Description
0...7
Inutilisé
8
Le front montant de 0 à 1 ouvre manuellement la vanne (la sortie q_xOpen a la valeur TRUE) en mode
manuel.
9
Le front montant de 0 à 1 ferme manuellement la vanne (la sortie q_xCls a la valeur TRUE) en mode
manuel.
10...15
Inutilisé
16
Acquittements d'erreurs internes et externes détectée est indiquée à la sortie q_xErr. Le
déclenchement s'effectue sur front montant.
17...31
Inutilisé
Mot d'état
Fonctionnalité
Le tableau décrit le mot d'état :
Rang du bit Description
0
Le mode auto est actif.
1
Le mode manuel est actif.
2
Le mode local est sélectionné.
3
Indique que l'opération est bloquée par un verrouillage (entrée i_xLock).
4...7
Inutilisé
8
Signal pour ouvrir la vanne.
9
Signal pour fermer la vanne.
10...13
Inutilisé
14
Signal de rétroaction de vanne ouverte.
15
Signal de rétroaction de vanne fermée.
16
Réinitialise l'erreur détectée (q_xErr).
17
Indique que l'opération est bloquée par une erreur détectée interne ou externe (entrée i_xErr), qui
n'est pas acquittée.
18
Inutilisé
19
Active la supervision du signal de rétroaction.
20
Position par défaut de la vanne (FALSE : fermée, TRUE : ouverte)
EIO0000000097 06/2019
279
Bistable_Valve
Rang du bit Description
21...23
Inutilisé
24
Erreur détectée mode de fonctionnement non valable.
25
Erreur externe détectée.
26
Erreur détectée rétroaction manquante.
27
Erreur détectée position inconnue.
28...31
Inutilisé
Instanciation et exemple d'utilisation
Instanciation et exemple d'utilisation
Cette figure présente une instance du bloc fonction Bistable_Valve :
Limitations
Quand l'entrée d'activation forcée est active (xFrceEn), la vanne est forcée en position par défaut
(xPosDflt) seulement pendant iFbckDly secondes. Elle est réinitialisée si un signal de
rétroaction approprié est activé, ou si un signal de verrouillage est supprimé, ou si la sortie q_xErr
est acquittée.
Assurez-vous que le signal de rétroaction est activé avant d'exécuter le bloc ; sinon une erreur de
position inconnue est détectée après une temporisation de iFbckDly secondes.
280
EIO0000000097 06/2019
EcoStruxure Machine Expert
Monostable_Valve
EIO0000000097 06/2019
Chapitre 52
Monostable_Valve: Commande de vannes monostables
Monostable_Valve: Commande de vannes monostables
Vue d’ensemble
Ce chapitre décrit le bloc fonction Monostable_Valve.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Monostable_Valve
282
Description des broches d'entrée
284
Description des broches de sortie
285
Structure utilisée
285
Description des bits du mot de commande
286
Mot d'état
286
EIO0000000097 06/2019
281
Monostable_Valve
Bloc fonction Monostable_Valve
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction
Monostable_Valve :
Description fonctionnelle
Le bloc fonction Monostable_Valve permet de commander la vanne monostable.
Modes de fonctionnement
Le bloc fonction Monostable_Valve autorise trois modes de fonctionnement :
Mode automatique : Le mode automatique est activé par la broche d'entrée i_xAut. Dans ce
mode, la vanne est ouverte et fermée par les entrées i_xAutOpen (la position par défaut est
fermée) et i_xAutCls (la position par défaut est ouverte) respectivement, que le mode local
soit activé ou non. La sortie q_xValvPos reste active tant que les entrées
i_xAutOpen/i_xAutCls restent actives.
 Mode Manuel : Le mode manuel est activé par la broche i_xMan.
Cas 1 : Le mode local n'est pas actif. La vanne est ouverte ou fermée par les commandes de
bit du signal i_dwCtrl.
Cas 2 : Le mode local est actif. La vanne est ouverte ou fermée par les signaux d'entrée
i_xLocOpen et i_xLocCls respectivement.
 Mode local : Le mode local est activé par une broche d'entrée i_xLoc et défini en plus du mode
automatique ou manuel. Le mode local n'influence pas le mode automatique, mais modifie la
source du fonctionnement manuel.

NOTE : Si les deux modes automatique et manuel sont sélectionnés simultanément (entrées
i_xAut et i_xMan mises à 1), le mode de fonctionnement n'est pas valable, cet état est indiqué
sur la sortie q_xErr.
282
EIO0000000097 06/2019
Monostable_Valve
Comportement au démarrage de l'automate
Le bloc est désactivé au démarrage de l'automate et reste dans le même mode de fonctionnement,
à moins qu'un nouveau mode soit sélectionné.
Supervision de la vanne
La position de la vanne est supervisée par les signaux de rétroaction i_xFbckOpen et
i_xFbckCls. Au démarrage du fonctionnement, les entrées de rétroaction doivent signaler la
position correcte de la vanne dans un temps défini. Si ce temps est dépassé, le bloc indique une
erreur détectée (erreur détectée rétroaction manquante). Ce temps peut être défini par l'élément
de structure iFbckDly sur l'entrée i_strPara. La supervision peut être désactivée par l'élément
de structure xFbckEn à l'entrée i_strPara.
Fonctionnement de la vanne
La vanne peut être actionnée que si l'entrée i_xLock est mise à 0. Un signal de verrouillage actif
inhibe le fonctionnement de la vanne et est indiqué par la broche de sortie q_xLock.
La vanne ne peut être actionnée que si la sortie q_xErr est mise à 0. Un signal d'erreur détectée
actif inhibe le fonctionnement de la vanne.
Gestion d'erreurs détectées
La sortie q_xErr est à l'état haut si une erreur est détectée. L'erreur détectée peut être :
 Erreur interne détectée (mode de fonctionnement non valable, signal de rétroaction manquant
ou position inconnue).
 Erreur externe détectée
Les erreurs détectées sont indiquées comme alarmes dans l'IHM. Si un verrouillage ou une erreur
est détecté pendant le fonctionnement de la vanne, le comportement du bloc fonction dépend de
l'élément de structure i_strPara.xFrceEn sur l'entrée i_strPara. Si cet élément est mis à 1,
le bloc active le déplacement de la vanne à sa position par défaut, et la sortie correspondante est
à l'état haut (q_xOpen ou q_xCls) pendant un temps de i_strPara.iFbckDly secondes.
Sinon le fonctionnement est arrêté et doit être redémarré après la disparition du verrouillage.
Pour réinitialiser q_xErr, l'erreur détectée doit être acquittée par un front montant sur l'entrée
i_xAckn ou par utilisation du bit 16 du signal i_dwCtrl.
Définition de la position par défaut
La position par défaut de la vanne peut être définie par i_strPara.xPosDflt. Cette description
suppose une fermeture par défaut. Si i_strPara.xPosDflt est mis à 1, c'est l'ouverture qui est
la position par défaut.
EIO0000000097 06/2019
283
Monostable_Valve
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Monostable_Valve :
Entrée
Type de données
Description
Remarques
i_xAut
BOOL
TRUE : Mode automatique activé
FALSE : Désactivé
-
i_xMan
BOOL
TRUE : Mode manuel activé
FALSE : Désactivé
-
i_xLoc
BOOL
TRUE : Mode local activé
FALSE : Désactivé
-
i_xLocOpen
BOOL
Le front montant de 0 à 1 ouvre
manuellement la vanne en mode local.
Les modes manuel et local doivent
être simultanément mis à 1.
i_xLocCls
BOOL
Le front montant de 0 à 1 ferme
manuellement la vanne en mode local.
Les modes manuel et local doivent
être simultanément mis à 1.
i_xAutOpen
BOOL
TRUE : La commande d'ouverture de
vanne est activée.
FALSE : Désactivé
-
i_xAutCls
BOOL
TRUE : La commande de fermeture de
vanne est activée.
FALSE : Désactivé
-
i_xFbckOpen BOOL
TRUE : Le signal de rétroaction
d'ouverture est actif.
FALSE : Pas de rétroaction d'ouverture
-
i_xFbckCls
BOOL
TRUE : Le signal de rétroaction de
fermeture est actif.
FALSE : Pas de rétroaction de fermeture
-
i_xLock
BOOL
TRUE : Le verrouillage est actif
FALSE : Pas de verrouillage
Entrée de verrouillage pour le
fonctionnement de la vanne. Le
fonctionnement de la vanne est
inhibé, quand l'entrée est mise à 1.
i_xErr
BOOL
TRUE : Erreur externe détectée active.
FALSE : Aucune erreur externe détectée
-
i_xAckn
BOOL
Acquittement par un front montant.
L'entrée pour acquittement
d'erreurs internes et externes
détectées est indiquée à la sortie
q_xErr.
i_strPara
STRUCT
PAR_Val_Mono
Structure contenant les paramètres de ce
bloc.
Consultez la description des
structures utilisées (voir page 285).
i_wCtrl
WORD
Bits de commande pour interaction depuis Consultez la description des mots
l'IHM.
de commande (voir page 286).
Plage : 0...65535
284
EIO0000000097 06/2019
Monostable_Valve
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Monostable_Valve :
Identificateurs
Type de
sortie
Description
Remarques
q_xAut
BOOL
TRUE : Mode automatique activé
FALSE : Désactivé
-
q_xMan
BOOL
TRUE : Mode manuel activé
FALSE : Désactivé
-
q_xValvPos
BOOL
TRUE : Commande
d'ouverture/fermeture active
FALSE : Désactivé
La commande d'ouverture est active si la
position par défaut est fermée/la commande
de fermeture est active si la position par
défaut est ouverte.
q_xLock
BOOL
TRUE : Le verrouillage est actif.
FALSE : Pas de verrouillage
Indique que l'opération est bloquée par un
verrouillage (entrée i_xLock)
q_xErr
BOOL
TRUE : Erreur détectée active.
FALSE : Aucune erreur détectée
-
q_wStat
WORD
Bits d'état à afficher dans l'IHM
Plage : 0...65535
Consultez la description des mots d'état
(voir page 286).
Structure utilisée
PAR_Val_Mono
Elément de structure
Type
Description
xFbckEn
BOOL
Active la supervision du signal de rétroaction
iFbckDly
INT
Temporisation en secondes pour obtenir le signal
de rétroaction de la vanne
xPosDflt
BOOL
Position par défaut de la vanne (0 : fermé, 1 : ouvert)
EIO0000000097 06/2019
285
Monostable_Valve
Description des bits du mot de commande
Fonctionnalité
Ce tableau décrit les bits du mot de commande :
Rang du bit
Description
0
Le front montant de 0 à 1 ouvre manuellement la vanne en mode manuel.
1
Le front montant de 0 à 1 ferme manuellement la vanne en mode manuel.
2
L'entrée pour acquittement d'erreurs internes et externes détectées est
indiquée à la sortie q_xErr. Acquittement par un front montant
3...15
Inutilisé
Mot d'état
Fonctionnalité
Le tableau décrit le mot d'état :
286
Rang du bit
Description
0
Le mode auto est actif.
1
Le mode manuel est actif.
2
Le mode local est actif.
3
La vanne est ouverte/fermée en fonction de la position par défaut.
4
Position par défaut de la vanne.
5
Le signal de verrouillage est actif.
6
Signal de rétroaction de vanne ouverte.
7
Signal de rétroaction de vanne fermée.
8
Erreur détectée active.
9
Erreur détectée mode de fonctionnement non valable.
10
Erreur externe détectée.
11
Erreur détectée rétroaction manquante.
12
Active la supervision de rétroaction.
13-15
Inutilisé.
EIO0000000097 06/2019
EcoStruxure Machine Expert
Proportional_Valve
EIO0000000097 06/2019
Chapitre 53
Proportional_Valve: Commande de vannes proportionnelles
Proportional_Valve: Commande de vannes proportionnelles
Vue d’ensemble
Ce chapitre décrit le bloc fonction Proportional_Valve.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Bloc fonction Proportional_Valve
288
Description des broches d'entrée
291
Description des broches de sortie
292
Broche d'entrée/sortie
293
Structures utilisées
293
Description des bits du mot de commande
294
Mot d'état
295
Instanciation et exemple d'utilisation
296
EIO0000000097 06/2019
287
Proportional_Valve
Bloc fonction Proportional_Valve
Schéma d'affectation des broches
La figure ci-dessous présente le schéma d'affectation des broches du bloc fonction Proportional_Valve :
Description fonctionnelle
Le bloc fonction Proportional_Valve s'utilise pour la commande de la vanne proportionnelle.
Modes de fonctionnement
Le bloc fonction Proportional_Valve propose trois modes de fonctionnement :
Mode automatique : Le mode automatique est activé par la broche d'entrée i_xAut. Dans ce
mode, la vanne est ouverte et fermée par l'entrée i_xMove, que le mode local soit activé ou
non. Le nouveau point de consigné est donné par l'entrée i_rSp.
 Mode Manuel : Le mode manuel est activé par la broche i_xMan.
Cas 1 : Le mode local n'est pas actif. La vanne est ouverte et fermée par une commande de
bit dans la variable i_dwCtrl et la valeur du point de consigne est donnée par rSP sur l'entréesortie iq_strHmi

288
EIO0000000097 06/2019
Proportional_Valve

Cas 2 : Le mode local est actif. La vanne est actionnée par les entrées i_xManOpen et
i_xManCls.
Mode local : Le mode local est activé par une broche d'entrée i_xLoc et défini en plus du mode
automatique ou manuel. Le mode local n'influence pas le mode automatique, mais modifie la
source du fonctionnement manuel. La sortie q_iValvPos est définie automatiquement à
i_strPara.rMinSp en cas d'utilisation de i_xManCls ou i_strPara.rMaxSp en cas
d'utilisation de i_xManOpen.
NOTE : Si le mode de fonctionnement passe de manuel ou IHM en mode automatique, tout
mouvement de la vanne est arrêté. Toute autre modification du mode de fonctionnement
n'influence pas le mouvement de la vanne, mais le point de consigne est ajusté à la valeur du mode
de fonctionnement en cours.
Comportement de sortie
La sortie q_xMove reste active tant que la nouvelle position donnée par le point de consigne n'est
pas atteinte.
Définition d'une plage morte
Il est possible de définir une plage morte par i_strPara.rBnd, de façon que q_xMove soit
désactivé quand l'écart entre la position réelle et le point de consigne est inférieur à la plage morte.
En cas d'utilisation des entrées i_xManOpen et i_xManCls en mode local, la sortie q_xMove est
active tant que les entrées sont actives ou si la position maximale ou minimale est atteinte (en
prenant en compte la plage morte).
Supervision de la vanne
La position de la vanne est supervisée par les signaux de rétroaction i_xFbckOpen et
i_xFbckCls. Au démarrage du fonctionnement, les entrées de rétroaction doivent signaler la
position correcte de la vanne dans un temps défini. Si ce temps est dépassé, le bloc indique une
erreur détectée. Ce temps peut être défini par l'élément de structure iFbckDly à l'entrée
i_strPara. La supervision peut être désactivée par l'élément de structure xFbckEn à l'entrée
i_strPara.
Fonctionnement de la vanne
La vanne peut être actionnée si l'entrée i_xLock est mise à 0. Un signal de verrouillage actif
inhibe le fonctionnement de la vanne. Un verrouillage actif est indiqué par la sortie q_xLock.
La vanne ne peut être actionnée que si la sortie q_xErr est mise à 0. Un signal d'erreur détectée
actif inhibe le fonctionnement de la vanne.
EIO0000000097 06/2019
289
Proportional_Valve
Gestion d'erreurs détectées
La sortie q_xErr est à l'état haut si une erreur est détectée. L'erreur détectée peut être :
Erreur interne détectée (mode de fonctionnement non valable, signal de rétroaction manquant
ou position inconnue).
 Erreur externe détectée

Les erreurs détectées sont indiquées comme alarmes dans l'IHM. Si un verrouillage ou une erreur
est détecté pendant le fonctionnement de la vanne, le comportement du bloc fonction dépend de
l'élément de structure i_strPara.xFrceEn sur l'entrée i_strPara. Si cet élément est mis à 1,
le bloc active le déplacement de la vanne à sa position par défaut, et la sortie est à l'état haut
(q_xMove) pendant un temps de i_strPara.iFbckDly secondes. Sinon le fonctionnement est
arrêté et doit être redémarré après la disparition du verrouillage.
Pour réinitialiser q_xErr, l'erreur détectée doit être acquittée par un front montant sur l'entrée
i_xAckn ou par utilisation du bit 16 du signal i_dwCtrl.
Définition de la position par défaut
La position par défaut de la vanne peut être définie par i_strPara.xPosDfltSet. Cette
description suppose une fermeture par défaut. Si i_strPara.xPosDflt est mis à 1, c'est
l'ouverture qui est la position par défaut.
290
EIO0000000097 06/2019
Proportional_Valve
Description des broches d'entrée
Description des broches d'entrée
Ce tableau décrit les broches d'entrée du bloc fonction Proportional_Valve :
Entrée
Type de données Description
i_xAut
BOOL
TRUE : Mode automatique activé
FALSE : Désactivé
-
i_xMan
BOOL
TRUE : Mode manuel activé
FALSE : Désactivé
-
i_xLoc
BOOL
TRUE : Mode local activé
FALSE : Désactivé
-
i_xManOpen
BOOL
TRUE : Ouvre manuellement la vanne
(sortie q_xMove) en mode local tant que le
signal est activé.
FALSE : Désactivé
i_xManCls
BOOL
TRUE : Ferme manuellement la vanne
(sortie q_xMove) en mode local tant que le
signal est activé.
FALSE : Désactivé
i_xMove
BOOL
TRUE : Déplace la vanne à une nouvelle
position en mode automatique
FALSE : Désactivé
i_rSp
REAL
Nouvelle position pour le déplacement de la vanne en mode automatique.
Plage : 1,17e-38...3,4e+38
i_xFbckMove
BOOL
TRUE : Rétroaction pour le déplacement de la vanne
FALSE : Désactivé
i_iPosFbck
INT
Rétroaction de la position de la vanne.
Plage : 0...31
-
i_xLock
BOOL
TRUE : Verrouillage activé.
FALSE : Désactivé
Entrée de verrouillage pour le
fonctionnement de la vanne. Le
fonctionnement de la vanne est
inhibé, quand l'entrée est mise à 1.
i_xErr
BOOL
TRUE : Erreur externe détectée active.
FALSE : Aucune erreur externe détectée
-
i_xAckn
BOOL
Acquittement par un front montant.
L'entrée pour acquittement
d'erreurs internes et externes
détectées est indiquée à la sortie
q_xErr.
EIO0000000097 06/2019
Remarques
-
291
Proportional_Valve
Entrée
Type de données Description
i_strPara
STRUCT
Par_Valpro
Structure contenant les paramètres de ce
bloc.
Consultez les descriptions des
structures utilisées
(voir page 293).
Remarques
i_dwCtrl
DWORD
Bits de commande pour interaction depuis
l'IHM.
Plage : 0...4294967295
Consultez les descriptions des
mots de commande
(voir page 294).
Description des broches de sortie
Description des broches de sortie
Ce tableau décrit les broches de sortie du bloc fonction Proportional_Valve :
292
Identificateurs
Type de
sortie
Description
Remarques
q_xAut
BOOL
TRUE : Mode automatique activé
FALSE : Désactivé
-
q_xMan
BOOL
TRUE : Mode manuel activé
FALSE : Désactivé
-
q_xMove
BOOL
TRUE : Commande d'ouverture
active
FALSE : Désactivé
-
q_iValvPos
INT
Signal indiquant la nouvelle
position de la vanne. La valeur est
donnée par le point de consigne en
mode automatique ou manuel. En
cas d'actionnement manuel de la
vanne en mode local, la valeur est
définie en position ouverture à fond
ou fermée à fond.
Plage : 0...31
Si l'application de la
position par défaut est
active, le signal est
défini à la position par
défaut de la vanne en
cas de verrouillage ou
d'erreur détectée.
q_rPos
REAL
Position réelle de la vanne.
Plage : ±3,4e+38
-
q_xLock
BOOL
TRUE : Le verrouillage est actif.
FALSE : Pas de verrouillage
Indique que l'opération
est bloquée par un
verrouillage (entrée
i_xLock)
q_xErr
BOOL
TRUE : Erreur détectée active.
FALSE : Aucune erreur détectée
-
q_dwStat
DWORD
Bits d'état à afficher dans l'IHM
Plage : 0...4294967295
Consultez la description
des mots d'état
(voir page 295).
EIO0000000097 06/2019
Proportional_Valve
Broche d'entrée/sortie
Description
Ce tableau décrit l'entrée/sortie iq_strHmi :
Identificateur
Type
Description
iq_strHmi
STRUCT
HMI_Valpro
Structure d'interface avec l'IHM
Consultez les structures utilisées
(voir page 293).
Structures utilisées
Par_Valpro
Elément de structure
Type
Description
xFbEn
BOOL
Active la supervision du signal de rétroaction
iFbTime
INT
Temporisation en secondes pour obtenir le signal de
rétroaction et que la vanne atteigne le point de
consigne
xPosDflt
BOOL
Position par défaut de la vanne (0 : fermé, 1 : ouvert)
xPosDfltSet
BOOL
Active l'application de la position par défaut en cas de
verrouillage ou d'erreur détectée
rMinSp
REAL
Valeur minimale de point de consigne : position
fermée
rMaxSp
REAL
Valeur maximale de point de consigne : position
ouverte
rCnvrFact
REAL
Facteur de conversion pour la sortie de position et
l'entrée de position de rétroaction
rBnd
REAL
Ecart autorisé entre le point de consigne et la position
Elément de structure
Type
Description
rVal
REAL
Position réelle de la vanne
rSp
REAL
Point de consigne pour le mode manuel
rHighLim
REAL
Limite basse pour la génération d'une erreur détectée
et alarme
rLowLim
REAL
Limite haute pour la génération d'une erreur détectée
et alarme
HMI_Valpro
EIO0000000097 06/2019
293
Proportional_Valve
Description des bits du mot de commande
Fonctionnalité
Ce tableau décrit les bits du mot de commande :
Rang du bit
Description
0...9
Inutilisé
10
Déplace la vanne vers le point de consigne. Le bit est déclenché par le
front
11...15
Inutilisé
16
Le front montant de ce bit vaut acquittement de l'erreur détectée.
17...31
Inutilisé
NOTE : A réception du déclencheur de front (1->0 ou 0->1) sur ce bit (bit 10 du mot de commande),
la commande de déplacement de la vanne est active et mise à TRUE tant que la vanne n'atteint
pas le point de consigne défini. La commande de déplacement devient inactive et réinitialisée à
FALSE quand la vanne atteint la valeur de point de consigne surveillée par l'entrée i_iPosFbck
OU siq_xErr a la valeur TRUE.
294
EIO0000000097 06/2019
Proportional_Valve
Mot d'état
Fonctionnalité
Le tableau décrit le mot d'état :
Rang du bit
Description
0
Le mode auto est actif.
1
Le mode manuel est actif.
2
Le mode local est actif.
3
Le bloc fonction est verrouillé par l'entrée de verrouillage i_xLock.
4...7
Inutilisé
8
Point de consigne maximum atteint par la vanne (lu à l'entrée i_iPosFbck.
9
Point de consigne minimum atteint par la vanne (lu à l'entrée i_iPosFbck.
10
Indique un déplacement de la vanne.
11...13
Inutilisé
14
Ce bit est mis à 1,
si i_strPara.xFbEn a la valeur TRUE et qu'il y a une rétroaction de
déplacement de vanne
ou
si i_strPara.xFbEn a la valeur FALSE et qu'il y a une commande de
déplacement de vanne
15
Inutilisé
16
Indique la réinitialisation de l'erreur détectée.
17
L'erreur détectée est présente.
18
Inutilisé
19
Équivalent à i_strPara.xFbEn (activation de rétroaction).
20
Équivalent à i_strPara.xPosDflt (position par défaut).
21...23
Inutilisé
24
Mode de fonctionnement non valable.
25
L'erreur externe détectée est présente.
26
Rétroaction manquante.
27
La vanne a atteint la limite basse spécifiée par i_strPara.rMinSp.
28
La vanne a atteint la limite haute spécifiée par i_strPara.rMaxSp.
29...31
Inutilisé
EIO0000000097 06/2019
295
Proportional_Valve
Instanciation et exemple d'utilisation
Instanciation et exemple d'utilisation
Cette figure présente une instance du bloc fonction Proportional_Valve :
Limitations
Si la rétroaction est activée en mettant i_strPara.xFbEn = 1, la rétroaction de déplacement doit
non seulement parvenir à l'entrée i_xFbckMove mais la vanne doit aussi atteindre le point de
consigne dans le temps spécifié i_strPara.iFbTime.
Si i_strPara.rMinSp = i_strPara.rMaxSp = i_rSP et que le bloc est mis en mode auto, les
deux bits du mot d'état q_dwStat d'ouverture et de fermeture de la vanne sont mis à 1.
En fonctionnement avec rétroaction activée, même si aucune rétroaction de déplacement n'est
reçue par le bloc mais que la vanne atteigne le point de consigne dans le temps spécifié, aucune
erreur n'est détectée.
Limitations de gestion de priorité
En fonctionnement en mode manuel avec commande locale, les entrées i_xManOpen et
i_xManCls activées ensemble ne produisent aucun résultat jusqu'au retrait de l'une d'entre elles.
Mais dans ce cas, la valeur de sortie q_iValvPos est imprévisible tant que les deux entrées sont
à l'état haut.
296
EIO0000000097 06/2019
EcoStruxure Machine Expert
Glossaire
EIO0000000097 06/2019
Glossaire
!
%
Selon la norme IEC, % est un préfixe qui identifie les adresses mémoire internes des contrôleurs
logiques pour stocker la valeur de variables de programme, de constantes, d'E/S, etc.
A
ARRAY
Agencement systématique d'objets de données d'un même type sous la forme d'un tableau défini
dans la mémoire d'un Logic Controller. La syntaxe est la suivante : ARRAY [<dimension>] OF
<Type>
Exemple 1 : ARRAY [1..2] OF BOOL est un tableau à 1 dimension comportant 2 éléments de
type BOOL.
Exemple 2 : ARRAY [1..10, 1..20] OF INT est un tableau à 2 dimensions comportant
10 x 20 éléments de type INT.
ARW
ASCII
Acronyme de anti-reset windup (saturation antiréinitialisation). Fonction qui arrête l'action de
réinitialisation lorsque la mesure est en dehors de la bande proportionnelle afin d'éviter la
surcharge du circuit de réinitialisation. L'action de réinitialisation recommence lorsque la mesure
revient dans la bande proportionnelle. La saturation antiréinitialisation est une fonction standard
dans la plupart des contrôleurs PID de qualité.
Acronyme de American Standard Code for Information Interchange. Protocole utilisé pour
représenter les caractères alphanumériques (lettres, chiffres, ainsi que certains caractères
graphiques et de contrôle).
B
boucle fermée
Un contrôle en boucle fermée est un système de contrôle de mouvement qui utilise à la fois les
informations de retour de positionnement et de vitesse pour générer un signal de correction. Pour
cela, il compare sa position et sa vitesse aux valeurs de paramètres spécifiés. Les équipements
qui fournissent les informations de retour sont généralement des encodeurs, des résolveurs, des
LVTD et des tachymètres.
Voir aussi : boucle ouverte
EIO0000000097 06/2019
297
Glossaire
boucle ouverte
Un système de contrôle de mouvement en boucle ouverte n'utilise pas de capteurs externes pour
fournir les signaux de correction de position ou de vitesse.
Voir aussi : boucle fermée
C
CFC
chaîne
Acronyme de continuous function chart (diagramme fonctionnel continu). Langage de
programmation graphique (extension de la norme IEC 61131-3) basé sur le langage de diagramme
à blocs fonction et qui fonctionne comme un diagramme de flux. Toutefois, il n'utilise pas de
réseaux et le positionnement libre des éléments graphiques est possible, ce qui permet les boucles
de retour. Pour chaque bloc, les entrées se situent à gauche et les sorties à droite. Vous pouvez
lier les sorties de blocs aux entrées d'autres blocs pour créer des expressions complexes.
Variable composée d'une série de caractères ASCII.
consigne
Dans un contrôleur PID, valeur cible définie par l'utilisateur. Le principal objectif du contrôleur PID
est de garantir que la valeur de processus (PV) atteint la valeur de consigne (SV).
Voir aussi valeur PV
D
DWORD
Abréviation de double word, mot double. Codé au format 32 bits.
E
E/S
Entrée/sortie
élément
Raccourci pour l'élément d'un ARRAY.
entrée analogique
Convertit les niveaux de tension ou de courant reçus en valeurs numériques. Vous pouvez stocker
et traiter ces valeurs au sein du Logic Controller.
entrée/sortie
Index d'un ARRAY.
298
EIO0000000097 06/2019
Glossaire
équipement
Partie d'une machine comprenant des sous-ensembles tels que des transporteurs, des plaques
tournantes, etc.
F
FB
Acronyme de function block, bloc fonction. Mécanisme de programmation commode qui consolide
un groupe d'instructions de programmation visant à effectuer une action spécifique et normalisée
telle que le contrôle de vitesse, le contrôle d'intervalle ou le comptage. Un bloc fonction peut
comprendre des données de configuration, un ensemble de paramètres de fonctionnement interne
ou externe et généralement une ou plusieurs entrées et sorties de données.
fonction
Unité de programmation possédant 1 entrée et renvoyant 1 résultat immédiat. Contrairement aux
blocs fonction (FBs), une fonction est appelée directement par son nom (et non via une instance),
elle n'a pas d'état persistant d'un appel au suivant et elle peut être utilisée comme opérande dans
d'autres expressions de programmation.
Exemples : opérateurs booléens (AND), calculs, conversion (BYTE_TO_INT).
H
HMI
Acronyme de human machine interface, interface homme-machine (IHM). Interface opérateur
(généralement graphique) permettant le contrôle d'équipements industriels par l'homme.
I
ID
(identificateur/identification)
M
MAST
ms
Tâche de processeur exécutée par le biais de son logiciel de programmation. La tâche MAST
comprend deux parties :
 IN : les entrées sont copiées dans la section IN avant l'exécution de la tâche MAST.
 OUT : les sorties sont copiées dans la section OUT après l'exécution de la tâche MAST.
Abréviation de milliseconde
EIO0000000097 06/2019
299
Glossaire
O
octet
Type codé sur 8 bits, de 00 à FF au format hexadécimal.
P
PID
POU
Acronyme de proportional, integral, derivative, proportionnel-intégral-dérivé. Mécanisme de retour
de boucle de contrôle générique (contrôleur) largement utilisé dans les systèmes de contrôle
industriels.
Acronyme de program organization unit, unité organisationnelle de programme. Déclaration de
variables dans le code source et jeu d'instructions correspondant. Les POUs facilitent la
réutilisation modulaire de programmes logiciels, de fonctions et de blocs fonction. Une fois
déclarées, les POUs sont réutilisables.
programme
Composant d'une application constitué de code source compilé qu'il est possible d'installer dans
la mémoire d'un Logic Controller.
PWM
Acronyme de pulse width modulation, modulation de largeur d'impulsion. Sortie rapide qui oscille
entre OFF et ON au cours d'un cycle de service réglable, ce qui produit une forme d'onde
rectangulaire (ou carrée selon le réglage).
Q
quartet
Demi-octet (soit 4 bits)
R
réseau de commande
Réseau incluant des contrôleurs logiques, des systèmes SCADA, des PC, des IHM, des
commutateurs, etc.
Deux types de topologies sont pris en charge :
à plat : tous les modules et équipements du réseau appartiennent au même sous-réseau.
 à 2 niveaux : le réseau est divisé en un réseau d'exploitation et un réseau intercontrôleurs.

Ces deux réseaux peuvent être indépendants physiquement, mais ils sont généralement liés par
un équipement de routage.
300
EIO0000000097 06/2019
Glossaire
S
scrutation
Fonction comprenant les actions suivantes :
 lecture des entrées et insertion des valeurs en mémoire
 exécution du programme d'application instruction par instruction et stockage des résultats en
mémoire
 utilisation des résultats pour mettre à jour les sorties
sortie analogique
Convertit des valeurs numériques stockées dans le Logic Controller et envoie des niveaux de
tension ou de courant proportionnels.
STOP
Commande ordonnant au contrôleur de cesser d'exécuter un programme d'application.
T
tâche
Ensemble de sections et de sous-programmes, exécutés de façon cyclique ou périodique pour la
tâche MAST, ou périodique pour la tâche FAST.
Une tâche présente un niveau de priorité et des entrées et sorties du contrôleur lui sont associées.
Ces E/S sont actualisées par rapport à la tâche.
Un contrôleur peut comporter plusieurs tâches.
tâche cyclique
Le temps de scrutation cyclique a une durée fixe (intervalle) spécifiée par l'utilisateur. Si le temps
de scrutation réel est plus court que le temps de scrutation cyclique, le contrôleur attend que le
temps de scrutation cyclique soit écoulé avant de commencer une nouvelle scrutation.
V
variable
Unité de mémoire qui est adressée et modifiée par un programme.
EIO0000000097 06/2019
301
Glossaire
302
EIO0000000097 06/2019
EcoStruxure Machine Expert
Index
EIO0000000097 06/2019
Index
A
Analysis, 187
ArrayOfByte_TO_String, 225
B
bibliothèque Toolbox
GPL, 145
Bistable_Valve, 273
C
Filter_Arithmetic, 151
Filter_MovingAverage, 155
Filter_PT1, 161
Frequency_Multiplier, 189
Frequency_Output, 195
Frequency_TO_Period, 247
G
GPL
bibliothèque Toolbox, 145
Celsius_TO_Fahrenheit, 241
Celsius_TO_Kelvin, 243
Check_Divisor, 221
configuration système requise, 23
H
D
JK_FlipFlop, 173
JK_FlipFlop_MasterSlave, 175
DT_AS_WORD, 229
DWORD_AS_WORD, 231
F
Fahrenheit_TO_Celsius, 245
FB_2points, 35
FB_3points, 41
FB_3points_Ext, 47
FB_Cyclic_Monitoring, 99
FB_DeadBand, 105
FB_Limiter, 109
FB_P, 55
FB_PI, 61
FB_PI_PID, 87
FB_PID, 69
FB_PWM, 115
FB_Redundant_Sensor_Monitoring, 125
FB_Scaling, 133
FB_Sensor_Monitoring, 137
Filter_AnalogInput, 147
EIO0000000097 06/2019
Hour_Meter, 255
J
K
Kelvin_TO_Celsius, 249
M
Monostable_Valve, 281
N
Normalizer_With_Limiter, 203
O
ONE_SEC_PULSE, 207
Operation_Mode, 265
organisation des bits pour le type DWORD,
27
303
Index
P
Period_TO_Frequency, 251
PI, 33
PID, 33
Proportional_Valve, 287
Q
Quantizer, 209
R
RS_FlipFlop, 179
S
SetBitTo, 29
Signal_Saturation, 211
Signal_Statistics, 217
SR_FlipFlop, 181
String_TO_ArrayOfByte, 233
T
TestBit, 31
Toggle_FlipFlop, 183
304
Toolbox
Analysis, 187
ArrayOfByte_TO_String, 225
Bistable_Valve, 273
Celsius_TO_Fahrenheit, 241
Celsius_TO_Kelvin, 243
Check_Divisor, 221
configuration système requise, 23
DT_AS_WORD, 229
DWORD_AS_WORD, 231
Fahrenheit_TO_Celsius, 245
FB_2points, 35
FB_3points, 41
FB_3points_Ext, 47
FB_Cyclic_Monitoring, 99
FB_DeadBand, 105
FB_Limiter, 109
FB_P, 55
FB_PI, 61
FB_PI_PID, 87
FB_PID, 69
FB_PWM, 115
FB_Redundant_Sensor_Monitoring, 125
FB_Scaling, 133
FB_Sensor_Monitoring, 137
Filter_AnalogInput, 147
Filter_Arithmetic, 151
Filter_MovingAverage, 155
Filter_PT1, 161
Frequency_Multiplier, 189
Frequency_Output, 195
Frequency_TO_Period, 247
Hour_Meter, 255
JK_FlipFlop, 173
JK_FlipFlop_MasterSlave, 175
Kelvin_TO_Celsius, 249
Monostable_Valve, 281
Normalizer_With_Limiter, 203
ONE_SEC_PULSE, 207
Operation_Mode, 265
organisation des bits pour le type
EIO0000000097 06/2019
Index
DWORD, 27
Period_TO_Frequency, 251
Proportional_Valve, 287
Quantizer, 209
RS_FlipFlop, 179
SetBitTo, 29
Signal_Saturation, 211
Signal_Statistics, 217
SR_FlipFlop, 181
String_TO_ArrayOfByte, 233
TestBit, 31
Toggle_FlipFlop, 183
WORD_AS_DWORD, 237
W
WORD_AS_DWORD, 237
EIO0000000097 06/2019
305
EcoStruxure Machine Expert
EIO0000000947 09/2020
EcoStruxure Machine Expert
Gestion d'un intervalle de tâche
cyclique
Toolbox_Advance
Guide de bibliothèque
EIO0000000947.03
09/2020
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.
© 2020 Schneider Electric. Tous droits réservés.
2
EIO0000000947 09/2020
Table des matières
Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . .
A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 2 Descriptions de fonctions . . . . . . . . . . . . . . . . . . . . . . . .
GetCurrentTaskCycle : Extrait l'intervalle de tâche cyclique en cours
SetCurrentTaskCycle : Définit l'intervalle de tâche cyclique . . . . . . . .
Annexes
.........................................
Annexe A Représentation des fonctions et blocs fonction . . . . . . .
Différences entre une fonction et un bloc fonction . . . . . . . . . . . . . . .
Utilisation d'une fonction ou d'un bloc fonction en langage IL . . . . . . .
Utilisation d'une fonction ou d'un bloc fonction en langage ST . . . . . .
Glossaire
Index
EIO0000000947 09/2020
.........................................
.........................................
5
11
17
17
19
20
22
25
27
28
29
33
37
39
3
4
EIO0000000947 09/2020
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.
EIO0000000947 09/2020
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.
QUALIFICATION DU PERSONNEL
Une personne qualifiée est une personne qui a les qualifications suivantes :
Compétences et connaissances liées à la construction et à l'exploitation d'équipements
électriques et à l'installation.
 Connaissances et expérience en programmation de contrôle industriel.
 A reçu une formation en sécurité permettant de reconnaître et d'éviter les dangers potentiels.

La personne qualifiée doit être capable de détecter d'éventuels dangers qui pourraient découler
du paramétrage, de modifications des valeurs de paramétrage et plus généralement des
équipements mécaniques, électriques ou électroniques. La personne qualifiée doit connaître les
normes, dispositions et régulations liées à la prévention des accidents de travail, et doit les
observer lors de la conception et de l'implémentation du système.
INSTRUCTIONS D'UTILISATION
Ce produit est une bibliothèque à utiliser avec un système de commande et des servoamplificateurs. La bibliothèque n'est conçue qu'en vue d'une utilisation telle que décrite dans la
présente documentation, appliquée au secteur industriel.
Observez en permanence les instructions applicables liées à la sécurité, les conditions spécifiques
et les données techniques.
Réalisez une analyse des risques en rapport avec l'utilisation spécifique avant d'utiliser ce produit.
Prenez les mesures de sécurité qui découlent des résultats.
Étant donné que ce produit est utilisé au sein d'un système qui l'englobe, vous devez assurer la
sécurité du personnel par la conception même du système global (la conception de la machine,
par exemple).
Aucune autre utilisation n'est prévue. Toute autre utilisation pourrait être dangereuse.
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.
6
EIO0000000947 09/2020
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.
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.
EIO0000000947 09/2020
7
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.

8
EIO0000000947 09/2020
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.
EIO0000000947 09/2020
9
10
EIO0000000947 09/2020
A propos de ce manuel
Présentation
Objectif du document
Cette documentation décrit les fonctions de bibliothèque Toolbox_Advance utilisées pour extraire
et définir l'intervalle d'une tâche cyclique.
Champ d'application
Ce document a été actualisé pour le lancement d’EcoStruxureTM Machine Expert V1.2.5.
Document(s) à consulter
Titre du document
Numéro de référence
Modicon M258 Logic Controller - Guide de programmation
EIO0000000402 (ENG)
EIO0000000403 (FRE)
EIO0000000404 (GER)
EIO0000000405 (SPA)
EIO0000000406 (ITA)
EIO0000000407 (CHS)
Modicon LMC058 Logic Controller - Guide de programmation
EIO0000000408 (ENG)
EIO0000000409 (FRE)
EIO0000000410 (GER)
EIO0000000411 (SPA)
EIO0000000412 (ITA)
EIO0000000413 (CHS)
XBTGC HMI Controller - Guide de programmation
EIO0000000650 (ENG)
EIO0000000651 (FRE)
EIO0000000652 (GER)
EIO0000000653 (SPA)
EIO0000000654 (ITA)
EIO0000000655 (CHS)
XBTGT, XBTGK HMI Controller - Guide de programmation
EIO0000000638 (ENG)
EIO0000000639 (FRE)
EIO0000000640 (GER)
EIO0000000641 (SPA)
EIO0000000642 (ITA)
EIO0000000643 (CHS)
EIO0000000947 09/2020
11
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 contrôle cruciales.
Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de
commande critique.
Les liaisons de communication peuvent faire partie des canaux de commande du système.
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 les documents suivants ou leurs équivalents pour votre site
d'installation : 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 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, d'installation et d'exploitation de variateurs de vitesse).
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.
12
EIO0000000947 09/2020
AVERTISSEMENT
UTILISATION INCORRECTE DES UNITES ORGANISATIONNELLES DU PROGRAMME






Effectuez une analyse de la sécurité de l'application et des équipements installés.
Vérifiez que les POU sont compatibles avec les équipements 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 fonctionnement à 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 IMPRÉVU DE L'ÉQUIPEMENT


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.
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
IEC 61131-2:2007
Automates programmables - Partie 2 : exigences et essais des équipements
EIO0000000947 09/2020
13
Norme
Description
ISO 13849-1:2015
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
ISO 14119:2013
Sécurité des machines - Dispositifs de verrouillage associés à des protecteurs
- Principes de conception et de choix
ISO 13850:2015
Sécurité des machines - Fonction d'arrêt d'urgence - Principes de conception
IEC 62061:2015
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é : prescriptions 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:2016
Réseaux de communication industriels - Profils - Partie 3 : Bus de terrain de
sécurité fonctionnelle - Règles générales et définitions de profils.
2006/42/EC
Directive Machines
2014/30/EU
Directive sur la compatibilité électromagnétique
2014/35/EU
Directive sur les basses tensions
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.
14
EIO0000000947 09/2020
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.
EIO0000000947 09/2020
15
16
EIO0000000947 09/2020
EcoStruxure Machine Expert
Présentation
EIO0000000947 09/2020
Chapitre 1
Présentation
Présentation
Présentation
Vue d’ensemble
La bibliothèque Toolbox_Advance propose 2 fonctions pouvant être utilisées dans un POU
(Program Organisation Unit) pour extraire (GetCurrentTaskCycle) et définir
(SetCurrentTaskCycle) l'intervalle de la tâche cyclique associée.
NOTE : Ces fonctions ne peuvent s'utiliser que dans des POU associés aux tâches cycliques. Pour
en savoir sur la configuration de tâches et les associations de POU, consultez le chapitre Tâches
de votre Guide de programmation d'automate.
Ajout de la bibliothèque Toolbox_Advance
Pour accéder aux fonctions Toolbox_Advance, il faut ajouter manuellement la bibliothèque :
Etapes
Action
1
Faites un double-clic sur le nœud Gestionnaire de bibliothèque du nœud
Application de l'automate dans la fenêtre Équipements.
2
Cliquez sur Ajouter une bibliothèque.
Résultat : La boîte de dialogue Ajouter une bibliothèque s'ouvre.
3
Parcourez jusqu'à Util, visible quand le filtre Société est sur Schneider Electric
ou Toutes les sociétés.
Résultat : La liste de bibliothèques Util apparaît.
4
Sélectionnez la bibliothèque Toolbox_Advance et appuyez sur OK.
Résultat : La bibliothèque est ajoutée à la liste du Gestionnaire de
bibliothèques.
EIO0000000947 09/2020
17
Présentation
18
EIO0000000947 09/2020
EcoStruxure Machine Expert
Descriptions de fonctions
EIO0000000947 09/2020
Chapitre 2
Descriptions de fonctions
Descriptions de fonctions
Vue d’ensemble
Ce chapitre décrit les fonctions de la bibliothèque Toolbox_Advance.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
GetCurrentTaskCycle : Extrait l'intervalle de tâche cyclique en cours
20
SetCurrentTaskCycle : Définit l'intervalle de tâche cyclique
22
EIO0000000947 09/2020
19
Descriptions de fonctions
GetCurrentTaskCycle : Extrait l'intervalle de tâche cyclique en cours
Description de la fonction
Cette fonction renvoie un diagnostic d'opération et l'intervalle en cours de la tâche cyclique
associée à la tâche en microsecondes (μs).
Représentation graphique
Représentation en IL et en ST
Pour voir la représentation générale en langage IL ou ST, reportez-vous au chapitre Représentation des fonctions et blocs fonction (voir page 27).
Description des variables d'E/S
Le tableau suivant décrit la variable de sortie :
Sortie
Type
GetCurrentTaskCycle UDINT
Description
Diagnostic de fonctionnement :
0 = Pas d'erreur détectée ou tâche non
cyclique
2 = Paramètre non valable détecté
12 = Fonction non mise en œuvre dans
l'automate
Le tableau ci-dessous décrit la variable d'entrée/sortie :
Entrée/sortie
Type
Description
currentTime
UDINT
Intervalle en cours de la tâche associée au
POU en microsecondes (μs).
NOTE : Renvoie 0 en cas de détection
d'erreur,
NOTE : Si cette fonction est appelée dans un POU associé à une tâche non cyclique, la fonction
renvoie 0 et currentTime est mis à 0.
20
EIO0000000947 09/2020
Descriptions de fonctions
Exemple
L'exemple ci-dessous décrit la façon d'extraire l'intervalle en cours de la tâche cyclique associée
à un POU GetTaskInterval en langage ST. Si une erreur d'opération de fonction est détectée,
un drapeau de diagnostic est mis à TRUE et le code d'erreur est enregistré.
Si aucune erreur n'est détectée, le drapeau de diagnostic est mis à FALSE et l'intervalle de tâche
valable est enregistré.
Déclaration d'une variable :
PROGRAM GetTaskInterval
VAR
// Dernier intervalle de tâche
TaskInterval: UDINT := 0;
// Dernier intervalle de tâche valable
TaskInterval_Memo: UDINT := 0;
// Diagnostic d'opération de la fonction GetCurrentTaskCycle
GetTaskCycle_Diag: UDINT := 0;
// Mémorisation de la dernière erreur détectée GetCurrentTaskCycle
code
GetTaskCycle_Diag_Memo: UDINT := 0;
// Drapeau d'erreur détectée par GetCurrentTaskCycle
GetTaskCycle_Err: BOOL := FALSE;
END_VAR
Programme :
// Extraction du dernier intervalle de tâche cyclique
GetTaskCycle_Diag:=GetCurrentTaskCycle(TaskInterval);
// Vérification du diagnostic
IF TaskInterval=0 OR GetTaskCycle_Diag<>0
THEN // Erreur détectée
GetTaskCycle_Diag_Memo:=GetTaskCycle_Diag;
GetTaskCycle_Err:=TRUE;
ELSE // Intervalle de tâche valable
TaskInterval_Memo:=TaskInterval;
GetTaskCycle_Err:=FALSE;
END_IF;
EIO0000000947 09/2020
21
Descriptions de fonctions
SetCurrentTaskCycle : Définit l'intervalle de tâche cyclique
Description de la fonction
Cette fonction définit l'intervalle de tâche cyclique avec une valeur de paramètre d'entrée en
microsecondes (μs), elle renvoie un diagnostic d'opération. Si l'opération s'est exécutée
correctement, le nouvel intervalle est valable au début de la prochaine itération de la tâche cyclique
(sans effet sur l'exécution en cours).
NOTE : La valeur passée à la fonction doit être un multiple de mille. Sinon, un code d'erreur est
renvoyé.
Si vous définissez un intervalle trop court pour une tâche cyclique (plus court que la durée effective
de la tâche et que tout autre traitement exigé par l'application), celle-ci répète immédiatement
après l'écriture des sorties sans exécuter les autres tâches de priorité inférieure ni tout autre
traitement système. Ceci concerne l'exécution de toutes les tâches et conduit l'automate à
dépasser les limites de chien de garde du système, ce qui génère une exception de chien de garde
système et arrête votre automate.
AVIS
INTERRUPTION IMPRÉVUE D'EXÉCUTION DE PROGRAMME
Testez votre nouveau temps d'intervalle de tâche cyclique pour vérifier qu'il est approprié et éviter
une exception de chien de garde du système avant d'appeler la fonction
SetCurrentTaskCycle.
Le non-respect de ces instructions peut provoquer des dommages matériels.
NOTE : Vous devez tester la gamme de valeurs possibles avant toute réception de votre
application et vous assurer que votre code valide le nouvel intervalle par rapport à ces conditions
de test.
Représentation graphique
Représentation en IL et en ST
Pour voir la représentation générale en langage IL ou ST, reportez-vous au chapitre Représentation des fonctions et blocs fonction (voir page 27).
22
EIO0000000947 09/2020
Descriptions de fonctions
Description des variables d'E/S
Le tableau suivant décrit la variable d'entrée :
Entrée
Type
Description
newTime
UDINT
Nouvelles valeur de l'intervalle de tâche associé au POU en
microsecondes (μs).
NOTE : Si la valeur est valable, la nouvelle valeur sera
opérationnelle au cycle suivant.
Le tableau suivant décrit la variable de sortie :
Sortie
Type
Description
SetCurrentTaskCycle
UDINT
Diagnostic de fonctionnement :
0 = Aucune erreur détectée
1 = Erreur générale (interne) détectée
2 = Paramètre non valable détecté (valeur hors plage)
12 = Fonction non mise en œuvre dans l'automate
24 = Fonctionnalité non prise en charge (tâche non cyclique)
NOTE : Cette fonction modifie l'intervalle de tâche cyclique en cours. Elle ne remplace pas la
valeur du paramètre d'intervalle de tâche cyclique défini dans la configuration de la tâche. Les
paramètres de configuration initiaux sont restaurés par une commande Reset, Reboot ou
Download.
Consultez le guide de programmation de votre automate pour en savoir plus sur les états et
comportements de votre automate.
NOTE : N'utilisez pas la fonction SetCurrentTaskCycle dans la même tâche que celle définie
comme tâche de cycle de bus des gestionnaires CANopen. Le changement du temps de cycle de
cette tâche affecte la durée heartbeat de la surveillance de nœud, ce qui peut entraîner la détection
d'une erreur par les équipements CANopen qui peuvent alors passer en état de repli.
ATTENTION
INTERRUPTION IMPRÉVUE D'EXÉCUTION DE PROGRAMME
N'utilisez pas la fonction SetCurrentTaskCycle dans une tâche définie comme tâche de cycle
de bus.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
Exemple
L'exemple ci-dessous décrit la façon de définir l'intervalle en cours de la tâche cyclique associée
à un POU SetTaskInterval en langage CFC, FBD ou LD.
EIO0000000947 09/2020
23
Descriptions de fonctions
La fonction SetCurrentTaskCycle est exécutée quand le drapeau SetTaskInterval_Flag
a la valeur TRUE (ce drapeau est réinitialisé automatiquement à FALSE après exécution) et le
diagnostic d'opération de fonction est stocké dans la variable SetTaskInterval_Diag.
NOTE :
La fonction d'activation d'entrée/sortie (EN/ENO) est activée :
 En CFC : cliquez à droite sur la fonction et sélectionnez la commande EN/ENO.
 En FBD : ajoutez la fonction par la commande Insérer l'appel de module avec EN/ENO du menu
FBD/LD/IL.
 En LD : passez en vue FBD par la commande Vue du menu FBD/LD/IL, insérez la fonction
comme indiqué ci-dessus et revenez en vue LD.
Déclaration d'une variable :
PROGRAM SetTaskInterval
VAR
// Définit un nouveau drapeau de commande d'intervalle de tâche
SetTaskInterval_Flag: BOOL := FALSE;
// Valeurs du nouvel intervalle de tâche cyclique (μs).
newTaskInterval: UDINT;
// Diagnostic d'opération de la fonction SetCurrentTaskCycle
SetTaskInterval_Diag: UDINT := 0;
END_VAR
Programme en langage CFC :
Programme en langage FBD :
Programme en langage LD :
24
EIO0000000947 09/2020
EcoStruxure Machine Expert
EIO0000000947 09/2020
Annexes
EIO0000000947 09/2020
25
26
EIO0000000947 09/2020
EcoStruxure Machine Expert
Représentation des fonctions et blocs fonction
EIO0000000947 09/2020
Annexe A
Représentation des fonctions et blocs fonction
Représentation des fonctions et blocs fonction
Présentation
Chaque fonction peut être représentée dans les langages suivants :
IL : (Instruction List) liste d'instructions
 ST : (Structured Text) littéral structuré
 LD : (Ladder Diagram) schéma à contacts
 FBD : Function Block Diagram (Langage à blocs fonction)
 CFC : Continuous Function Chart (Diagramme fonctionnel continu)

Ce chapitre fournit des exemples de représentations de fonctions et blocs fonction et explique
comment les utiliser dans les langages IL et ST.
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Différences entre une fonction et un bloc fonction
28
Utilisation d'une fonction ou d'un bloc fonction en langage IL
29
Utilisation d'une fonction ou d'un bloc fonction en langage ST
33
EIO0000000947 09/2020
27
Représentation des fonctions et blocs fonction
Différences entre une fonction et un bloc fonction
Fonction
Une fonction :
est une POU (Program Organization Unit ou unité organisationnelle de programme) qui renvoie
un résultat immédiat ;
 est directement appelée par son nom (et non par une instance) ;
 ne conserve pas son état entre deux appels ;
 peut être utilisée en tant qu'opérande dans des expressions.

Exemples : opérateurs booléens (AND), calculs, conversions (BYTE_TO_INT)
Bloc fonction
Un bloc fonction :
 est une POU qui renvoie une ou plusieurs sorties ;
 doit être appelé par une instance (copie de bloc fonction avec nom et variables dédiées).
 Chaque instance conserve son état (sorties et variables internes) entre deux appels à partir
d'un bloc fonction ou d'un programme.
Exemples : temporisateurs, compteurs
Dans l'exemple, Timer_ON est une instance du bloc fonction TON :
28
EIO0000000947 09/2020
Représentation des fonctions et blocs fonction
Utilisation d'une fonction ou d'un bloc fonction en langage IL
Informations générales
Cette partie explique comment mettre en œuvre une fonction et un bloc fonction en langage IL.
Les fonctions IsFirstMastCycle et SetRTCDrift, ainsi que le bloc fonction TON, sont utilisés
à titre d'exemple pour illustrer les mises en œuvre.
Utilisation d'une fonction en langage IL
La procédure suivante explique comment insérer une fonction en langage IL :
Étape
Action
1
Ouvrez ou créez une POU en langage IL (Instruction List, ou liste d'instructions).
NOTE : La procédure de création d'une POU n'est pas détaillée ici. Pour plus d'informations,
reportez-vous à la section Ajout et appel de POU (voir EcoStruxure Machine Expert, Programming
Guide).
2
Créez les variables nécessaires à la fonction.
3
Si la fonction possède une ou plusieurs entrées, chargez la première entrée en utilisant
l'instruction LD.
4
Insérez une nouvelle ligne en dessous et :
 saisissez le nom de la fonction dans la colonne de l'opérateur (champ de gauche), ou
 utilisez l'Aide à la saisie pour sélectionner la fonction (sélectionnez Insérer l'appel de module
dans le menu contextuel).
5
Si la fonction a plus d'une entrée et que l'assistant Aide à la saisie est utilisé, le nombre requis de
lignes est automatiquement créé avec ??? dans les champs situés à droite. Remplacez les ??? par
la valeur ou la variable appropriée compte tenu de l'ordre des entrées.
6
insérez une nouvelle ligne pour stocker le résultat de la fonction dans la variable appropriée :
saisissez l'instruction ST dans la colonne de l'opérateur (champ de gauche) et le nom de la variable
dans le champ de droite.
Pour illustrer la procédure, utilisons les fonctions IsFirstMastCycle (sans paramètre d'entrée)
et SetRTCDrift (avec paramètres d'entrée) représentées graphiquement ci-après :
Fonction
Représentation graphique
sans paramètre d'entrée :
IsFirstMastCycle
EIO0000000947 09/2020
29
Représentation des fonctions et blocs fonction
Fonction
Représentation graphique
avec paramètres d'entrée :
SetRTCDrift
En langage IL, le nom de la fonction est utilisé directement dans la colonne de l'opérateur :
Fonction
Représentation dans l'éditeur IL de POU
Exemple en IL d'une
fonction sans paramètre
d'entrée :
IsFirstMastCycle
30
EIO0000000947 09/2020
Représentation des fonctions et blocs fonction
Fonction
Représentation dans l'éditeur IL de POU
Exemple IL d'une
fonction avec des
paramètres d'entrée :
SetRTCDrift
Utilisation d'un bloc fonction en langage IL
La procédure suivante explique comment insérer un bloc fonction en langage IL :
Étape Action
1
Ouvrez ou créez une POU en langage IL (Instruction List, ou liste d'instructions).
NOTE : La procédure de création d'une POU n'est pas détaillée ici. Pour plus d'informations,
reportez-vous à la section Ajout et appel de POU (voir EcoStruxure Machine Expert, Programming
Guide).
2
3
Créez les variables nécessaires au bloc fonction (y compris le nom de l'instance).
L'appel de blocs fonction nécessite l'utilisation d'une instruction CAL :
 Utilisez l'Aide à la saisie pour sélectionner le bloc fonction (cliquez avec le bouton droit et
sélectionnez Insérer l'appel de module dans le menu contextuel).
 L'instruction CAL et les E/S nécessaires sont automatiquement créées.
Chaque paramètre (E/S) est une instruction :
 Les valeurs des entrées sont définies à l'aide de « := ».
 Les valeurs des sorties sont définies à l'aide de =>.
4
Dans le champ CAL de droite, remplacez les ??? par le nom de l'instance.
5
Remplacez les autres ??? par une variable ou une valeur immédiate appropriée.
EIO0000000947 09/2020
31
Représentation des fonctions et blocs fonction
Pour illustrer la procédure, utilisons le bloc fonction TON représenté graphiquement ci-après :
Bloc fonction
Représentation graphique
TON
En langage IL, le nom du bloc fonction est utilisé directement dans la colonne de l'opérateur :
Bloc fonction
Représentation dans l'éditeur IL de POU
TON
32
EIO0000000947 09/2020
Représentation des fonctions et blocs fonction
Utilisation d'une fonction ou d'un bloc fonction en langage ST
Informations générales
Cette partie décrit comment mettre en œuvre une fonction ou un bloc fonction en langage ST.
La fonction SetRTCDrift et le bloc fonction TON sont utilisés à titre d'exemple pour illustrer les
mises en œuvre.
Utilisation d'une fonction en langage ST
La procédure suivante explique comment insérer une fonction en langage ST :
Étape
Action
1
Ouvrez ou créez une POU en langage ST (Structured Text ou Littéral structuré).
NOTE : La procédure de création d'une POU n'est pas détaillée ici. Pour plus d'informations,
reportez-vous à la section Ajout et appel de POU (voir EcoStruxure Machine Expert, Programming
Guide).
2
Créez les variables nécessaires à la fonction.
3
Utilisez la syntaxe générale dans l'éditeur ST de POU pour la représentation en langage ST d'une
fonction. La syntaxe générale est la suivante :
RésultatFonction:= NomFonction(VarEntrée1, VarEntrée2, … VarEntréex);
Pour illustrer la procédure, utilisons la fonction SetRTCDrift représentée graphiquement ciaprès :
Fonction
Représentation graphique
SetRTCDrift
EIO0000000947 09/2020
33
Représentation des fonctions et blocs fonction
La représentation en langage ST de cette fonction est la suivante :
Fonction
Représentation dans l'éditeur ST de POU
SetRTCDrift
PROGRAM MyProgram_ST
VAR myDrift: SINT(-29..29) := 5;
myDay: DAY_OF_WEEK := SUNDAY;
myHour: HOUR := 12;
myMinute: MINUTE;
myRTCAdjust: RTCDRIFT_ERROR;
END_VAR
myRTCAdjust:= SetRTCDrift(myDrift, myDay, myHour, myMinute);
Utilisation d'un bloc fonction en langage ST
La procédure suivante explique comment insérer un bloc fonction en langage ST :
Étape Action
1
Ouvrez ou créez une POU en langage ST (Structured Text ou Littéral structuré).
NOTE : La procédure de création d'une POU n'est pas détaillée ici. Pour plus
d'informations, reportez-vous à la section Ajout et appel de POU (voir EcoStruxure
Machine Expert, Programming Guide).
2
Créez les variables d'entrée, les variables de sortie et l'instance requises pour le bloc
fonction :
 Les variables d'entrée sont les paramètres d'entrée requis par le bloc fonction.
 Les variables de sortie reçoivent la valeur renvoyée par le bloc fonction.
3
Utilisez la syntaxe générale dans l'éditeur ST de POU pour la représentation en
langage ST d'un bloc fonction. La syntaxe générale est la suivante :
FunctionBlock_InstanceName(Input1:=VarInput1,
Input2:=VarInput2,... Ouput1=>VarOutput1,
Ouput2=>VarOutput2,...);
Pour illustrer la procédure, examinez cet exemple avec le bloc fonction TON représenté
graphiquement ci-après :
Bloc fonction
Représentation graphique
TON
34
EIO0000000947 09/2020
Représentation des fonctions et blocs fonction
Le tableau suivant montre plusieurs exemples d'appel de bloc fonction en langage ST :
Bloc fonction
Représentation dans l'éditeur ST de POU
TON
EIO0000000947 09/2020
35
Représentation des fonctions et blocs fonction
36
EIO0000000947 09/2020
EcoStruxure Machine Expert
Glossaire
EIO0000000947 09/2020
Glossaire
C
CFC
Acronyme de continuous function chart (diagramme fonctionnel continu). Langage de
programmation graphique (extension de la norme IEC 61131-3) basé sur le langage de diagramme
à blocs fonction et qui fonctionne comme un diagramme de flux. Toutefois, il n'utilise pas de
réseaux et le positionnement libre des éléments graphiques est possible, ce qui permet les boucles
de retour. Pour chaque bloc, les entrées se situent à gauche et les sorties à droite. Vous pouvez
lier les sorties de blocs aux entrées d'autres blocs pour créer des expressions complexes.
F
FB
Acronyme de function block, bloc fonction. Mécanisme de programmation commode qui consolide
un groupe d'instructions de programmation visant à effectuer une action spécifique et normalisée
telle que le contrôle de vitesse, le contrôle d'intervalle ou le comptage. Un bloc fonction peut
comprendre des données de configuration, un ensemble de paramètres de fonctionnement interne
ou externe et généralement une ou plusieurs entrées et sorties de données.
I
IL
INT
Acronyme de instruction list, liste d'instructions. Un programme écrit en langage IL est composé
d'instructions textuelles qui sont exécutées séquentiellement par le contrôleur. Chaque instruction
comprend un numéro de ligne, un code d'instruction et un opérande (voir la norme IEC 61131-3).
Abréviation de integer, nombre entier codé sur 16 bits.
L
langage en blocs fonctionnels
Un des 5 langages de programmation de logique ou de commande pris en charge par la norme
IEC 61131-3 pour les systèmes de commande. FBD est un langage de programmation orienté
graphique. Il fonctionne avec une liste de réseaux où chaque réseau contient une structure
graphique de zones et de lignes de connexion représentant une expression logique ou
arithmétique, un appel de bloc fonction ou une instruction de retour.
EIO0000000947 09/2020
37
Glossaire
LD
Acronyme de ladder diagram, schéma à contacts. Représentation graphique des instructions d'un
programme de contrôleur, avec des symboles pour les contacts, les bobines et les blocs dans une
série de réseaux exécutés séquentiellement par un contrôleur (voir IEC 61131-3).
O
octet
Type codé sur 8 bits, de 00 à FF au format hexadécimal.
P
POU
Acronyme de program organization unit, unité organisationnelle de programme. Déclaration de
variables dans le code source et jeu d'instructions correspondant. Les POUs facilitent la
réutilisation modulaire de programmes logiciels, de fonctions et de blocs fonction. Une fois
déclarées, les POUs sont réutilisables.
S
ST
Acronyme de structured text, texte structuré. Langage composé d'instructions complexes et
d'instructions imbriquées (boucles d'itération, exécutions conditionnelles, fonctions). Le langage
ST est conforme à la norme IEC 61131-3.
V
variable
Unité de mémoire qui est adressée et modifiée par un programme.
38
EIO0000000947 09/2020
EcoStruxure Machine Expert
Index
EIO0000000947 09/2020
Index
F
fonctions
différences entre une fonction et un bloc
fonction, 28
utilisation d'une fonction ou d'un bloc
fonction en langage IL, 29
utilisation d'une fonction ou d'un bloc
fonction en langage ST, 33
G
GetCurrentTaskCycle
Toolbox_Advance, 20
S
SetCurrentTaskCycle
Toolbox_Advance, 22
T
Toolbox_Advance
GetCurrentTaskCycle, 20
SetCurrentTaskCycle, 22
EIO0000000947 09/2020
39
EcoStruxure Machine Expert
EIO0000002957 06/2019
EcoStruxure Machine Expert
Twido Emulation Support
Guide de la bibliothèque
EIO0000002957.00
06/2019
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.
© 2019 Schneider Electric. Tous droits réservés.
2
EIO0000002957 06/2019
Table des matières
Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . .
A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1 Informations générales sur la bibliothèque
TwidoEmulationSupport . . . . . . . . . . . . . . . . . . . . . . . . .
Informations générales sur la bibliothèque TwidoEmulationSupport. .
Chapitre 2 Blocs fonction standard . . . . . . . . . . . . . . . . . . . . . . . . .
FB_Timer : temporisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_Counter : compteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_FiFo et FB_LiFo : bloc fonction Registre . . . . . . . . . . . . . . . . . .
FB_ShiftBitRegister : registre de bits à décalage . . . . . . . . . . .
Chapitre 3 Blocs fonction avancés . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_ScheduleBlock : bloc fonction ScheduleBlock . . . . . . . . . . . . .
FB_Drum : programmateur cyclique . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_StepCounter : compteur d'étapes . . . . . . . . . . . . . . . . . . . . . . .
FB_PID : bloc fonction PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 4 Blocs fonction de communication . . . . . . . . . . . . . . . . . .
FB_EXCH : bloc fonction d'échange . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_ReadVar : bloc fonction de lecture de données . . . . . . . . . . . . . .
FB_WriteVar : bloc fonction d'écriture de données . . . . . . . . . . . . .
FB_WriteReadVar : bloc fonction de lecture et d'écriture. . . . . . . . .
FB_SendRecvMsg : bloc fonction d'envoi et de réception de message
Chapitre 5 Fonctions Twido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonctions Twido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Glossaire
Index
EIO0000002957 06/2019
.........................................
.........................................
5
11
17
17
19
20
23
25
27
29
30
33
36
37
41
42
45
47
49
51
53
53
71
73
3
4
EIO0000002957 06/2019
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.
EIO0000002957 06/2019
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.
QUALIFICATION DU PERSONNEL
Une personne qualifiée est une personne qui a les qualifications suivantes :
Compétences et connaissances liées à la construction et à l'exploitation d'équipements
électriques et à l'installation.
 Connaissance de l'exploitation des fonctionnalités de la machine dans l'implémentation du
logiciel.
 A reçu une formation en sécurité permettant de reconnaître et d'éviter les dangers potentiels.

La personne qualifiée doit être capable de détecter d'éventuels dangers qui pourraient découler
du paramétrage, de modifications des valeurs de paramétrage et plus généralement des
équipements mécaniques, électriques ou électroniques. La personne qualifiée doit connaître les
normes, dispositions et régulations liées à la prévention des accidents de travail, et doit les
observer lors de la conception et de l'implémentation du système.
INSTRUCTIONS D'UTILISATION
Ce produit est une bibliothèque à utiliser avec un système de commande et des servoamplificateurs. La bibliothèque n'est conçue qu'en vue d'une utilisation telle que décrite dans la
présente documentation, appliquée au secteur industriel.
Observez en permanence les instructions applicables liées à la sécurité, les conditions spécifiques
et les données techniques.
Réalisez une analyse des risques en rapport avec l'utilisation spécifique avant d'utiliser ce produit.
Prenez les mesures de sécurité qui découlent des résultats.
Étant donné que ce produit est utilisé au sein d'un système qui l'englobe, vous devez assurer la
sécurité du personnel par la conception même du système global (la conception de la machine,
par exemple).
Aucune autre utilisation n'est prévue. Toute autre utilisation pourrait être dangereuse.
6
EIO0000002957 06/2019
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.
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.
EIO0000002957 06/2019
7
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.

8
EIO0000002957 06/2019
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.
EIO0000002957 06/2019
9
10
EIO0000002957 06/2019
A propos de ce manuel
Présentation
Objectif du document
Ce document décrit la bibliothèque TwidoEmulationSupport, qui fournit les fonctions et blocs
fonction permettant de convertir les projets de EcoStruxure Machine Expert - Basic / TwidoSoft /
TwidoSuite en une mise en œuvre compatible dans EcoStruxure Machine Expert. Pour plus
d'informations sur Twido, consultez Conversion de projets EcoStruxure Machine Expert - Basic et
Twido (voir EcoStruxure Machine Expert, Guide de programmation) et les listes Ensembles de
fonctionnalités du contrôleur relatives à la migration (voir EcoStruxure Machine Expert, Guide de
programmation).
Champ d'application
Ce document a été actualisé pour le lancement de EcoStruxureTM Machine Expert - Basic V1.0.
Ce document a été actualisé pour le lancement d’EcoStruxureTM Machine Expert V1.1.
Document(s) à consulter
Titre de documentation
Référence
EcoStruxure Machine Expert - Guide de programmation
EIO0000002854 (ENG) ;
EIO0000002855 (FRE) ;
EIO0000002856 (GER) ;
EIO0000002857 (ITA) ;
EIO0000002858 (SPA) ;
EIO0000002859 (CHS)
EcoStruxure Machine Expert - Basic - Fonctions génériques - Guide
de la bibliothèque
EIO0000003289 (ENG) ;
EIO0000003290 (FRE) ;
EIO0000003291 (GER) ;
EIO0000003292 (SPA) ;
EIO0000003293 (ITA) ;
EIO0000003294 (CHS) ;
EIO0000003295 (POR) ;
EIO0000003296 (TUR)
EIO0000002957 06/2019
11
Titre de documentation
Référence
EcoStruxure Machine Expert - Basic - Guide d'utilisation
EIO0000003281 (ENG) ;
EIO0000003282 (FRE) ;
EIO0000003283 (GER) ;
EIO0000003284 (SPA) ;
EIO0000003285 (ITA) ;
EIO0000003286 (CHS) ;
EIO0000003287 (POR) ;
EIO0000003288 (TUR)
EcoStruxure Machine Expert - Fonctions Lecture/Ecriture Modbus et EIO0000002962 (ENG) ;
EIO0000002963 (FRE) ;
ASCII - Guide de la bibliothèque PLCCommunication
EIO0000002964 (GER) ;
EIO0000002965 (SPA) ;
EIO0000002966 (ITA) ;
EIO0000002967 (CHS)
Vous pouvez télécharger ces publications et autres informations techniques depuis notre site web
à l'adresse : https://www.schneider-electric.com/en/download
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 contrôle cruciales.
Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de
commande critique.
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.
12
EIO0000002957 06/2019
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.
AVERTISSEMENT
UTILISATION INCORRECTE DES UNITES ORGANISATIONNELLES DU PROGRAMME






Effectuez une analyse de la sécurité de l'application et des équipements installés.
Vérifiez que les POU sont compatibles avec les équipements 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 fonctionnement à 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 IMPRÉVU DE L'ÉQUIPEMENT


N'utiliser 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.
EIO0000002957 06/2019
13
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 :
14
Norme
Description
IEC 61131-2:2007
Automates programmables - Partie 2 : exigences et essais des équipements
ISO 13849-1:2015
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
ISO 14119:2013
Sécurité des machines - Dispositifs de verrouillage associés à des protecteurs
- Principes de conception et de choix
ISO 13850:2015
Sécurité des machines - Fonction d'arrêt d'urgence - Principes de conception
IEC 62061:2015
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é : prescriptions 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:2016
Réseaux de communication industriels - Profils - Partie 3 : Bus de terrain de
sécurité fonctionnelle - Règles générales et définitions de profils.
2006/42/EC
Directive Machines
2014/30/EU
Directive sur la compatibilité électromagnétique
2014/35/EU
Directive sur les basses tensions
EIO0000002957 06/2019
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.
EIO0000002957 06/2019
15
16
EIO0000002957 06/2019
EcoStruxure Machine Expert
Informations générales sur la bibliothèque TwidoEmulationSupport
EIO0000002957 06/2019
Chapitre 1
Informations générales sur la bibliothèque TwidoEmulationSupport
Informations générales sur la bibliothèque
TwidoEmulationSupport
Informations générales sur la bibliothèque TwidoEmulationSupport
Conversion de blocs fonction
Les options suivantes sont fournies pour la conversion de blocs fonction :
Le bloc fonction est converti en un type qui existe déjà dans EcoStruxure Machine Expert, par
exemple dans la bibliothèque standard.
Pour plus d'informations sur les bibliothèques standard, reportez-vous à la rubrique relative aux
bibliothèques CoDeSys/Standard dans l'aide en ligne.
 Un nouveau bloc fonction entièrement compatible avec EcoStruxure Machine Expert - Basic est
mis en œuvre et fait partie de la bibliothèque TwidoEmulationSupport.
 Pour les fonctions et blocs fonction non conçus pour être utilisés dans un projet EcoStruxure
Machine Expert, le convertisseur peut générer un type sans mise en œuvre.

Pour plus d'informations sur la conversion de blocs fonction, consultez la section Conversion de
projets EcoStruxure Machine Expert - Basic et Twido (voir EcoStruxure Machine Expert, Guide de
programmation).
EIO0000002957 06/2019
17
Informations générales sur la bibliothèque TwidoEmulationSupport
18
EIO0000002957 06/2019
EcoStruxure Machine Expert
Blocs fonction standard
EIO0000002957 06/2019
Chapitre 2
Blocs fonction standard
Blocs fonction standard
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
FB_Timer : temporisateur
20
FB_Counter : compteur
23
FB_FiFo et FB_LiFo : bloc fonction Registre
25
FB_ShiftBitRegister : registre de bits à décalage
27
EIO0000002957 06/2019
19
Blocs fonction standard
FB_Timer : temporisateur
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction FB_Timer :
Le bloc fonction %TM dans EcoStruxure Machine Expert - Basic peut configurer 3 types de
temporisateur :
 TON (Timer On-Delay, temporisateur de délai à l'activation) : ce type de temporisateur permet
de réguler les actions de délai à l'activation.
 TOF (Timer Off-Delay, temporisateur de délai à la désactivation) : ce type de temporisateur
permet de réguler les actions de délai à la désactivation.
 TP (Timer-Pulse, temporisateur de pulsations) : ce type de temporisateur permet de générer
des impulsions d'une durée précise.
Pour plus d'informations consultez l'aide en ligne de CoDeSys dans EcoStruxure Machine Expert :
CoDesSys-Libraries/Standard Library/Timer.
NOTE : lorsque le type de temporisateur est modifié en ligne et que i_xEnable est TRUE,
l'ancien type de temporisateur sélectionné est réinitialisé et le nouveau type de temporisateur
démarre. Le comportement des sorties des blocs fonction est conforme au nouveau temporisateur
sélectionné.
20
EIO0000002957 06/2019
Blocs fonction standard
Description des variables d'E/S
La bibliothèque TwidoEmulationSupport fournit la fonction FB_Timer, qui appelle le type de
temporisateur TON, TOF ou TP selon l'entrée i_etTimerType. La valeur TimeBase indiquée
permet de calculer la durée prédéfinie.
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xEnable
BOOL
Le front montant commence à compter
q_iCurrentValue.
i_iPreset
INT
Valeur initiale de la valeur de présélection (0
à 32 767)
i_etTimerType
ET_TimerType
Indique le type de temporisateur : TON, TOF
ou TP
i_etTimeBase
ET_TimerTimeBases
Base de temps de 1 ms, 10 ms, 100 ms, 1 s,
1 min
Par défaut : 1 min
i_etMaxVal
ET_TimerCounterMaxVal
Valeur maximale
i_xRetentive
BOOL
Comportement du temporisateur :
 TRUE : le temporisateur conserve la
valeur de la sortie q_iCurrentValue
lorsqu'il est désactivé et continue de
compter à partir de la valeur précédente
lorsqu'il est réactivé.
 FALSE : le temporisateur réinitialise la
sortie q_iCurrentValue lorsqu'il est
désactivé.
Le type de données de la variable d'entrée i_etTimerType est :
TYPE ET_TimeType:
(
TON
:= 1,
//
TOF
:= 2,
//
TP
:= 3,
//
) INT;
END_TYPE
On-delay Timer
Off-delay Timer
Pulse Timer
NOTE : Si une valeur non valide est transmise à i_etTimerType, q_xOutput conserve la valeur
FALSE et q_iCurrentValue reste à 0.
EIO0000002957 06/2019
21
Blocs fonction standard
Le type de données de la variable d'entrée i_etTimeBase est :
TYPE ET_TimerTimeBases:
(
tb1MS
:= 1,
//
1 millisecond time base
tb10MS
:= 2,
//
10 millisecond time base
tb100MS
:= 3,
//
100 millisecond time base
tb1S
:= 4,
//
10 second time base
tb1M
:= 5,
//
1 minute time base
) INT;
ET_TYPE
Le type de données de la variable d'entrée i_etMaxVal est :
TYPE ET_TimerCounterMaxVal:
(
Val9999
:= 0, //
Value
Val32767 := 1
//
Value
) INT
END_TYPE
9999
3267
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
22
Type de données
Description
q_xOutput
BOOL
Sortie du temporisateur
q_iCurrentValue
INT
Temps écoulé
EIO0000002957 06/2019
Blocs fonction standard
FB_Counter : compteur
Présentation
Le bloc fonction FB_Counter permet de compter ou de décompter des événements.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_Counter :
Description des variables d'E/S
La bibliothèque TwidoEmulationSupport fournit un bloc fonction FB_Counter qui appelle le bloc
fonction CTUD. Le comportement standard de CTUD est étendu par un traitement des valeurs de
présélection et un comportement de dépassement conforme à Twido.
Pour plus d'informations sur les compteurs, consultez l'aide en ligne de CoDeSys dans
EcoStruxure Machine Expert Standard Library / Counter.
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xLoad
BOOL
Règle la valeur courante sur la valeur de
présélection.
i_xReset
BOOL
Réinitialise l'entrée.
i_xCountUp
BOOL
Comptage croissant de l'entrée.
i_xCountDown
BOOL
Comptage décroissant de l'entrée.
i_iPreset
INT
Valeur de présélection
Par défaut : 32767
i_etMaxVal
ET_TimerCounterMaxVal
Valeur maximale du compteur et de
présélection
EIO0000002957 06/2019
23
Blocs fonction standard
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
24
Sortie
Type de données
Description
q_xUnderflow
BOOL
Comptage décroissant du dépassement
par valeur inférieure / vide
q_xDone
BOOL
q_iCounterValue = i_iPreset /
présélection atteinte / terminé
q_iCounterValue
INT
Valeur courante (0 à 32767)
q_xOverflow
BOOL
Comptage croissant du dépassement par
valeur supérieure / plein
EIO0000002957 06/2019
Blocs fonction standard
FB_FiFo et FB_LiFo : bloc fonction Registre
Présentation
Le bloc fonction registre dans EcoStruxure Machine Expert - Basic possède 2 types :
File d'attente (FIFO)
 Pile (LIFO)

Les graphiques suivants présentent les schémas d'affectation des broches des blocs fonction
FB_FiFo et FB_LiFo :
Description des variables d'E/S
Le tableau décrit les variables d'entrée/sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée/sortie
Type de données
iq_iInput
Description
INT
Mot d'entrée (variable en lecture et écriture)
iq_iOutput
INT
Mot de sortie (variable en lecture et écriture)
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xReset
BOOL
L'entrée de réinitialisation initialise le registre à
l'état 1.
i_xStorage
BOOL
L'entrée de stockage stocke le contenu dans le
registre, en cas de front montant.
i_xRetrieve
BOOL
L'entrée de récupération charge un mot de
données du registre, en cas de front montant.
EIO0000002957 06/2019
25
Blocs fonction standard
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
26
Sortie
Type de données
Description
q_xEmpty
BOOL
Cette sortie indique que le registre est vide.
q_xFull
BOOL
Cette sortie indique que le registre est plein.
EIO0000002957 06/2019
Blocs fonction standard
FB_ShiftBitRegister : registre de bits à décalage
Présentation
Le bloc fonction FB_ShiftBitRegister provoque un décalage vers la gauche ou la droite des
bits de données binaires. Il ne s'agit pas d'un décalage de bits circulaire. Les bits de dépassement
sont perdus.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_ShiftBitRegister :
Description des variables d'E/S
Le tableau décrit les variables d'entrée/sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée/sortie
Type de données
Description
iq_iRegister (16 bits)
INT
Bit de registre
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xReset
BOOL
L'entrée de réinitialisation remet tous les bits à 0.
i_xShiftLeft
BOOL
En cas de front montant, décale un bit de registre
vers la gauche.
i_xShiftRight
BOOL
En cas de front montant, décale un bit de registre
vers la droite.
EIO0000002957 06/2019
27
Blocs fonction standard
28
EIO0000002957 06/2019
EcoStruxure Machine Expert
Blocs fonction avancés
EIO0000002957 06/2019
Chapitre 3
Blocs fonction avancés
Blocs fonction avancés
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
FB_ScheduleBlock : bloc fonction ScheduleBlock
30
FB_Drum : programmateur cyclique
33
FB_StepCounter : compteur d'étapes
36
FB_PID : bloc fonction PID
37
EIO0000002957 06/2019
29
Blocs fonction avancés
FB_ScheduleBlock : bloc fonction ScheduleBlock
Vue d'ensemble
Le bloc fonction FB_ScheduleBlock sert à contrôler les actions à un mois, un jour et une heure
définis.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_ScheduleBlock :
30
EIO0000002957 06/2019
Blocs fonction avancés
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
i_xEnable
Description
BOOL
Activez le bloc fonction FB_ScheduleBlock.
i_etStartMonth
ET_Month
Mois auquel initialiser la sortie. (janvier à
décembre).
i_etEndMonth
ET_Month
Mois auquel réinitialiser la sortie. (janvier à
décembre).
i_uiStartDay
UINT
[1 à 31] Jour de début d'activation
i_uiEndDay
UINT
[1 à 31] Jour de fin d'activation
i_uiStartHour
UINT
[0 à 23] Heure de début d'activation
i_uiEndHour
UINT
[0 à 23] Heure de fin d'activation
i_uiStartMinute
UINT
[0 à 59] Minute de début d'activation
i_uiEndMinute
UINT
[0 à 59] Minute de fin d'activation
i_xMonday
BOOL
Exécuter l'activité le lundi
i_xTuesday
BOOL
Exécuter l'activité le mardi
i_xWednesday
BOOL
Exécuter l'activité le mercredi
i_xThursday
BOOL
Exécuter l'activité le jeudi
i_xFriday
BOOL
Exécuter l'activité le vendredi
i_xSaturday
BOOL
Exécuter l'activité le samedi
i_xSunday
BOOL
Exécuter l'activité le dimanche
EIO0000002957 06/2019
31
Blocs fonction avancés
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_xOutput
BOOL
Cette sortie est mise à 1 lorsque les
paramètres d'horodatage courants sont
compris entre les paramètres de début et de
fin de la période active.
q_etScheduleBlockDiag
ET_ScheduleBlockDiag
Code de diagnostic ET_ScheduleBlockDiag.
q_sMsg
String
Message de diagnostic
La structure de données DTU.ERROR (ENUM) décrit les erreurs qui se produisent lors de
l'utilisation des fonctions de la bibliothèque CAA_DtUtility. Dans cette bibliothèque, la plage de
codes d'erreur 5750-5799 est réservée à l'enregistrement du préfixe des bibliothèques. Pour plus
d'informations, consultez CAA libraries/CAA_DTUtil.library/Data
types/Enumerations/DTU.ERROR (ENUM).
32
EIO0000002957 06/2019
Blocs fonction avancés
FB_Drum : programmateur cyclique
Présentation
Le programmateur cyclique fonctionne selon un principe semblable à celui des programmateurs
cycliques électromécaniques. Il peut fournir jusqu'à 8 états qui sont activés de façon cyclique. Bien
qu'un front montant sur l'entrée i_xNextStep fasse tourner le programmateur, le numéro de
l'étape peut également être défini par le logiciel.
Chaque état du programmateur active un schéma pouvant comporter jusqu'à 16 bits de contrôle,
de sorte que le programmateur cyclique représente une sorte de machine à états.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction FB_Drum :
EIO0000002957 06/2019
33
Blocs fonction avancés
Description des variables d'E/S
Le tableau décrit les variables d'entrée/sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée/sortie
Type de données
Description
iq_iStepNumberAct
INT
Numéro d'étape courante qui peut être lu et écrit.
Une fois écrite, la valeur sera prise en compte à
la prochaine exécution du bloc fonction.
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xReset
BOOL
L'entrée de réinitialisation règle le
programmateur cyclique sur l'étape 0.
i_xNextStep
BOOL
Un front montant sur cette entrée fait passer le
programmateur cyclique à l'étape suivante et met
à jour les bits de contrôle.
i_iNumberOfSteps
INT
1-8 (nombre d'étapes)
i_abyAssignOutputsToSteps
ARRAY OF BYTE
Attribution des sorties 0..15 aux étapes 0..7
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
34
Sortie
Type de données
Description
q_xFull
BOOL
La sortie "plein" indique que l'étape courante est
égale à la dernière étape définie.
q_x00 - q_x15
BOOL
Sorties ou bits internes associés à l'étape (16 bits
de contrôle) et définis dans l'éditeur de
configuration de EcoStruxure Machine Expert Basic.
EIO0000002957 06/2019
Blocs fonction avancés
La configuration de FB_Drum n'en est pas réellement une, mais représente un tableau d'entrées
du bloc fonction. Le graphique suivant représente l'Assistant Drum dans EcoStruxure Machine
Expert - Basic :
1
2
3
Nombre d'étapes disponibles dans le programmateur cyclique (jusqu'à 8).
Masque de bits 8x16 permettant d'attribuer des états à toutes les sorties en bits (ARRAY [0..15] OF BYTE
représente ce masque).
Sorties 16 bits
Nouveau bloc fonction dans la bibliothèque TwidoEmulationSupport :
EIO0000002957 06/2019
35
Blocs fonction avancés
FB_StepCounter : compteur d'étapes
Présentation
Le bloc fonction FB_StepCounter fournit une série d'étapes auxquelles il est possible d'attribuer
des actions. Le passage d'une étape à l'autre dépend d'événements internes ou externes.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_StepCounter :
Description des variables d'E/S
Le tableau décrit les variables d'entrée/sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée/sortie
Type de données
Description
iq_axCurrentStep
ARRAY OF BOOL
Bits de ///compteur d'étape de 0 à 255.
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xReset
BOOL
Réinitialise le compteur d'étapes.
i_xUp
BOOL
Le passage à l'entrée de gauche incrémente le
compteur d'une étape, en cas de front montant.
i_xDown
BOOL
L'entrée de décalage à droite décrémente le
///compteur d'étapes d'une étape, en cas de front
montant.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_byCurrentStepNumber
BYTE
Bits de ///compteur d'étape de 0 à 255.
Chaque fois qu'une étape est active, le bit associé est réglé sur 1. Le ///compteur d'étapes peut
contrôler les bits de sortie (bits de mémoire). Une seule étape d'une ///fonction pas à pas peut être
active à la fois. Si un bit dans iq_axCurrentStep est défini en externe, tous les autres bits sont
réinitialisés et q_byCurrentStepNumber est réglé en conséquence.
36
EIO0000002957 06/2019
Blocs fonction avancés
FB_PID : bloc fonction PID
Vue d'ensemble
Le bloc fonction FB_PID fournit un contrôleur PID
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction FB_PID :
L'algorithme principal est représenté par l'organigramme suivant :
Il est calculé comme suit :
Bien qu'une constante de temps dérivée Td nulle désactive la branche dérivée du contrôleur PID,
un gain proportionnel Kp de 0 est interdit. Cela entraînerait un gain de 100 %.
EIO0000002957 06/2019
37
Blocs fonction avancés
La définition d'une constante de temps intégrale Ti nulle permet de passer à une autre règle de
calcul :
Cela permettrait de centrer le signal de sortie analogique qui se trouve dans la plage [0..10000].
La valeur mesurée peut être convertie en une plage de valeurs paramétrées. Cette nouvelle plage
est alors appliquée au point de consigne ainsi qu'aux niveaux d'alarme de mesure.
Dans chaque cas, la sortie figure dans la plage [0..10000] mais peut être limitée.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_iMeasure
INT
Variable de contrôle [1 à 10000]
i_iSetpoint
INT
Point de consigne de l'automate [1..10000] ou [min
configuré..max configuré]
i_etOpMode
ET_PidOpMode
PID / PI - Dans le cas d'un PID, elle peut être remplacée
par etCorrectorType pour assurer la compatibilité.
i_xMeasConversion
BOOL
Active la conversion des valeurs mesurées aux limites
données, de [0 à 10000] en [i_iConversionMin à
i_iConversionMax].
i_iConversionMin
INT
Conversion de la valeur minimale.
i_iConversionMax
INT
Conversion de la valeur maximale.
i_xMeasAlarm
BOOL
Active les alarmes de la plage de valeurs mesurée.
i_iAlarmHigh
INT
Valeur haute de seuil d'alarme pour q_iAnalogOutput.
i_iAlarmLow
INT
Valeur basse de seuil d'alarme pour q_iAnalogOutput.
i_iKp
INT
Facteur de gain proportionnel
i_iTi
INT
Constante de temps intégrale
i_iTd
INT
Constante de temps dérivée (ignorée dans le cas de PI)
i_xDirectOutput
BOOL
TRUE : action directe
FALSE : action inverse
i_xLimitOutput
BOOL
Active la limite de sortie.
i_iLimitMin
INT
Limite inférieure de sortie
i_iLimitMax
INT
Limite supérieure de sortie
i_iPWMPeriod
INT
Signal PWM
38
EIO0000002957 06/2019
Blocs fonction avancés
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_iAnalogOutput
INT
Sortie numérique de l'automate à convertir en analogique
[1 à 10000]
q_rDutyCycleOutput
REAL
Réduction à une valeur [0 à 1] pouvant être attribuée à un
module PWM manuellement.
q_xPWM
BOOL
Sortie PWM générée par voie logicielle
q_xMeasureValueLowAlarm
BOOL
Surveillance de la variable de pilotage.
Réglé sur 1 si le niveau d'alarme bas n'est pas atteint.
q_xMeasureValueHighAlarm
BOOL
Surveillance de la variable de pilotage.
Réglé sur 1 si le niveau d'alarme haut est dépassé.
q_etPidDiag
ET_PidDiag
Code de diagnostic émis par le contrôleur PID
q_sMsg
STRING
Message de diagnostic
La configuration du bloc PID dans EcoStruxure Machine Expert - Basic fournit la ///période
d'échantillonnage de paramètres supplémentaires (dans l'onglet PID de l'Assistant PID). La
période d'échantillonnage est le temps de cycle de la tâche qui exécute le bloc PID. Pour s'assurer
que le signal au niveau de q_xPWM est correctement généré, la période i_iPWMPeriod
configurée doit être un multiple du temps d'échantillonnage. Une période PWM nulle désactive la
génération de signal.
L'entrée i_etOpMode est du type suivant :
EIO0000002957 06/2019
39
Blocs fonction avancés
La sortie i_etPidDiag est du type suivant :
40
EIO0000002957 06/2019
EcoStruxure Machine Expert
Blocs fonction de communication
EIO0000002957 06/2019
Chapitre 4
Blocs fonction de communication
Blocs fonction de communication
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
FB_EXCH : bloc fonction d'échange
42
FB_ReadVar : bloc fonction de lecture de données
45
FB_WriteVar : bloc fonction d'écriture de données
47
FB_WriteReadVar : bloc fonction de lecture et d'écriture
49
FB_SendRecvMsg : bloc fonction d'envoi et de réception de message
51
EIO0000002957 06/2019
41
Blocs fonction de communication
FB_EXCH : bloc fonction d'échange
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction FB_EXCH :
Le contrôleur M221 peut communiquer avec un équipement esclave Modbus ou envoyer/recevoir
des messages en mode caractère (ASCII).
Twido et EcoStruxure Machine Expert - Basic fournissent les fonctions suivantes pour la
communication :
 Instruction EXCH permettant d'émettre/recevoir des messages
 Bloc fonction de contrôle d'échange (MSG) assurant le contrôle des échanges de données
La bibliothèque TwidoEmulationSupport gère la communication avec le bloc fonction FB_EXCH.
Ce bloc fonction utilise le bloc fonction SEN.SEND_RECV_MSG de la bibliothèque PLCCommunication. Il permet d'envoyer et de recevoir les messages définis par l'utilisateur et attend une
réponse.
42
EIO0000002957 06/2019
Blocs fonction de communication
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction démarre sur le front montant.
i_xReset
BOOL
L'émission de message courante s'arrête sur le
front montant et la communication est
réinitialisée.
i_byPort
BYTE
Port de communication [1..3]
1 = Port série 1
2 = Port série 2
3 = Ethernet
i_pbyBuffer
POINTER TO BYTE
Pointeur vers le tampon d'envoi et/ou de
réception. Les 2 premiers mots sont des mots de
commande.
2 premiers mots : 4 octets de contrôle :
1. Longueur d'octet de contrôle : L'octet de
longueur contient la longueur de la table
d'émission (250 octets au maximum), qui est
remplacée par le nombre de caractères reçus
à la fin de la réception (si la réception est
demandée).
2. Commande d'octet de contrôle : [0..2]
0 = émission seule
1 = émission/réception
2 = réception seule
3. Octet de contrôle SndBytePosDiscard : la
position de l'octet n'est pas envoyée.
4. Octet de contrôle RcvBytePosDiscard : la
position de l'octet reçu est rejetée.
i_uiLengthInByte
UINT
Longueur du tampon d'émission/réception +
2 mots de commande
i_xAsciiMode
BOOL
TRUE = mode ASCII configuré.
FALSE = mode Modbus TCP configuré.
EIO0000002957 06/2019
43
Blocs fonction de communication
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la
fonction est en cours d'exécution.
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la
fonction s'est exécutée correctement.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la
fonction est arrêtée suite à la détection d'une
erreur.
q_etExchDiag
ET_ExchDiag
Code de diagnostic.
q_sMsg
STRING [80]
Message de diagnostic.
Le bloc fonction FB_EXCH a les codes d'erreur suivants :
44
EIO0000002957 06/2019
Blocs fonction de communication
FB_ReadVar : bloc fonction de lecture de données
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_ReadVar :
le bloc fonction FB_ReadVar lit les données d'un équipement externe à l'aide du protocole
Modbus SL ou Modbus TCP.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction est exécutée sur le front montant de cette
entrée.
NOTE : lorsque ixExecute prend la valeur TRUE lors du
premier cycle de tâche en mode RUN après un
redémarrage à chaud ou à froid, le front montant n'est pas
détecté.
i_xAbort
BOOL
Annule l'opération en cours sur le front montant.
i_iLink
INT
Indique le port utilisé pour communiquer.
 1 = Port série 1
 2 = Port série 2
 3 = Ethernet / Modbus TCP
i_iId
INT
Identificateur de l'équipement externe ciblé :
 Adresse esclave de ligne série : 1 à 247 ou
 Index Ethernet : 1 à 16
i_iTimeout
INT
(Selon la configuration de liaison)
EIO0000002957 06/2019
Définit la durée d'attente maximale de la réponse du
modem. Spécifié en ms. La valeur 0 signifie aucun délai.
45
Blocs fonction de communication
Entrée
Type de données
Description
i_etObjType
SEN.ObjectType
La valeur du type de données énuméré
(SEN.ObjectType (voir EcoStruxure Machine
Expert, Fonctions Lecture/Ecriture Modbus
et ASCII, Guide de la bibliothèque
PLCCommunication)) contient les types d'objet pouvant
être écrits :
 MW : lecture du registre de maintien (16 bits)
 I : lecture de l'entrée numérique (1 bit)
 Q : lecture des bits de sortie (1 bit)
 IW : lecture du registre d'entrée (16 bits)
i_diFirstObj
DINT
Adresse du premier objet à partir duquel les valeurs sont
lues.
i_iQuantity
INT
Nombre d'objets à lire.
i_pbyBuffer
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet lues
sont stockées.
i_astRemoteDevices
ARRAY
[1..Gc_uiRemoteAddr
essTableLen] OF
ST_RemoteDevice
Contient la liste des adresses d'équipement distant pour la
communication Modbus TCP.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la fonction s'est
exécutée correctement.
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la fonction est en
cours d'exécution.
q_xAborted
BOOL
q_xAborted prend la valeur TRUE lorsque la fonction est
annulée à l'aide de l'entrée i_xAbort.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la fonction est
arrêtée suite à la détection d'une erreur.
q_etCommError
SEN.Communication
ErrorCodes
q_etCommError contient la valeur des codes d'erreur de
communication SEN.CommunicationErrorCodes
(voir EcoStruxure Machine Expert, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de
la bibliothèque PLCCommunication).
q_etOperError
SEN.OperationError
Codes
q_etOperError contient la valeur des codes d'erreur de
fonctionnement SEN.OperationErrorCodes
(voir EcoStruxure Machine Expert, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de
la bibliothèque PLCCommunication).
46
EIO0000002957 06/2019
Blocs fonction de communication
FB_WriteVar : bloc fonction d'écriture de données
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_WriteVar :
Le bloc fonction FB_WriteVar écrit les données sur un équipement externe à l'aide du protocole
Modbus SL ou Modbus TCP.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction est exécutée sur le front montant de cette entrée.
NOTE : lorsque xExecute prend la valeur TRUE lors du
premier cycle de tâche en mode RUN après un redémarrage à
chaud ou à froid, le front montant n'est pas détecté.
i_xAbort
BOOL
Annule l'opération en cours sur le front montant.
i_iLink
INT
Indique le port utilisé pour communiquer.
 1 = Port série 1
 2 = Port série 2
 3 = Ethernet / Modbus TCP
i_iId
INT
Identificateur de l'équipement externe ciblé :
 Adresse esclave de ligne série : 1 à 247 ou
 Index Ethernet : 1 à 16
(Selon la configuration de liaison)
NOTE : La valeur 0 est non valide et ne représente pas un
message de diffusion.
i_iTimeout
EIO0000002957 06/2019
INT
Définit la durée d'attente maximale de la réception d'une
réponse. Spécifié en ms. La valeur 0 signifie aucun délai.
47
Blocs fonction de communication
Entrée
Type de données
Description
i_etObjType
SEN.ObjectType
La valeur du type de données énuméré (SEN.ObjectType
(voir EcoStruxure Machine Expert, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de la
bibliothèque PLCCommunication)) contient les types
d'objet pouvant être écrits :
 MW : écriture de plusieurs registres (16 bits)
 Q : écriture de plusieurs bits de sortie (1 bit)
i_diFirstObj
DINT
Adresse du premier objet à partir duquel les valeurs sont écrites.
i_iQuantity
INT
Nombre d'objets à écrire.
i_pbyBuffer
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet à écrire sont
stockées.
i_astRemoteDevices ARRAY
[1..Gc_uiRemoteAd
dressTableLen] OF
ST_RemoteDevice
Contient la liste des adresses d'équipement distant pour la
communication Modbus TCP.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la fonction s'est exécutée
correctement.
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la fonction est en cours
d'exécution.
q_xAborted
BOOL
q_xAborted prend la valeur TRUE lorsque la fonction est
annulée à l'aide de l'entrée i_xAbort.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la fonction est arrêtée
suite à la détection d'une erreur.
q_etCommError
SEN.Communication
ErrorCodes
q_etCommError contient la valeur des codes d'erreur de
communication SEN.CommunicationErrorCodes
(voir EcoStruxure Machine Expert, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de la
bibliothèque PLCCommunication).
q_etOperError
SEN.OperationError q_etOperError contient la valeur des codes d'erreur de
Codes
fonctionnement SEN.OperationErrorCodes
(voir EcoStruxure Machine Expert, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de la
bibliothèque PLCCommunication).
48
EIO0000002957 06/2019
Blocs fonction de communication
FB_WriteReadVar : bloc fonction de lecture et d'écriture
Vue d'ensemble
Le bloc fonction FB_WriteReadVar sert à :
écrire des registres internes consécutifs et relire leurs valeurs pendant le même cycle
d'exécution du bloc fonction (transaction unique) ;
 écrire des registres internes consécutifs et lire différents registres.

Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_WriteReadVar :
Le bloc fonction FB_WriteReadVar lit et écrit des registres internes (de type MW uniquement)
sur un équipement externe utilisant le protocole Modbus. Ces opérations de lecture et d'écriture
s'effectuent au cours d'une transaction unique. Notez que l'opération d'écriture intervient en
premier.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction est exécutée sur le front montant de cette entrée.
NOTE : lorsque i_xExecute prend la valeur TRUE lors du
premier cycle de tâche en mode RUN après un redémarrage à
chaud ou à froid, le front montant n'est pas détecté.
i_xAbort
BOOL
i_iLink
INT
Annule l'opération en cours sur le front montant.
Indique le port utilisé pour communiquer.
 1 = Port série 1
 2 = Port série 2
 3 = Ethernet / Modbus TCP
i_iId
INT
Identificateur de l'équipement externe ciblé :
 Adresse esclave de ligne série : 1 à 247 ou
 Index Ethernet : 1 à 16
(Selon la configuration de liaison)
EIO0000002957 06/2019
49
Blocs fonction de communication
Entrée
Type de données
Description
i_iTimeout
INT
Définit la durée d'attente maximale de la réponse du modem.
Spécifié en ms. La valeur 0 signifie aucun délai.
i_diFirstReadObj
DINT
Adresse du premier objet à partir duquel les valeurs sont lues.
i_iReadQuantity
INT
Nombre d'objets à lire.
i_pbyReadBuffer
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet lues sont
stockées.
i_diFirstWriteObj
DINT
Adresse du premier objet à partir duquel les valeurs sont écrites.
i_iWriteQuantity
INT
Nombre d'objets à écrire.
i_pbyWriteBuffer
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet à écrire sont
stockées.
i_astRemoteDevices ARRAY
[1..Gc_uiRemoteAd
dressTableLen] OF
ST_RemoteDevice
Contient la liste des adresses d'équipement distant pour la
communication Modbus TCP.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la fonction s'est
exécutée correctement.
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la fonction est en cours
d'exécution.
q_xAborted
BOOL
q_xAborted prend la valeur TRUE lorsque la fonction est
annulée à l'aide de l'entrée i_xAbort.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la fonction est arrêtée
suite à la détection d'une erreur.
q_etCommError
SEN.Communication
ErrorCodes
q_etCommError contient la valeur des codes d'erreur de
communication SEN.CommunicationErrorCodes
(voir EcoStruxure Machine Expert, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de la
bibliothèque PLCCommunication).
q_etOperError
SEN.OperationError q_etOperError contient la valeur des codes d'erreur de
Codes
fonctionnement SEN.OperationErrorCodes
(voir EcoStruxure Machine Expert, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de la
bibliothèque PLCCommunication).
50
EIO0000002957 06/2019
Blocs fonction de communication
FB_SendRecvMsg : bloc fonction d'envoi et de réception de message
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc
fonctionFB_SendRecvMsg :
Le bloc fonction FB_SendRecvMsg envoie et reçoit des messages définis par l'utilisateur. Il envoie
un message sur une ligne série, puis attend une réponse. Vous pouvez également
envoyer/recevoir un message sans attendre/envoyer de réponse. Cette fonction doit être utilisée
avec un gestionnaire ASCII.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction est exécutée sur le front montant de cette
entrée.
NOTE : lorsque i_xExecute prend la valeur TRUE lors
du premier cycle de tâche en mode RUN après un
redémarrage à chaud ou à froid, le front montant n'est
pas détecté.
i_xAbort
BOOL
Annule l'opération en cours sur le front montant.
i_iLink
INT
Indique le port utilisé pour communiquer.
 1 = Port série 1
 2 = Port série 2
i_iTimeout
INT
Définit la durée d'attente maximale de la réception d'une
réponse. Spécifié en ms. La valeur 0 signifie aucun délai.
i_iQuantityToSend
INT
Nombre d'objets à envoyer.
i_pbyBufferToSend
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet à
envoyer sont stockées. Les 2 premiers mots sont des
mots de commande.
i_iSizeRecvBuffer
INT
Nombre d'objets à recevoir.
i_pbyBufferToRecv
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet
reçues sont stockées.
EIO0000002957 06/2019
51
Blocs fonction de communication
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
52
Sortie
Type de données
Description
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la fonction s'est
exécutée correctement.
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la fonction est en
cours d'exécution.
q_Aborted
BOOL
q_Aborted prend la valeur TRUE lorsque la fonction est
annulée à l'aide de l'entrée i_xAbort.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la fonction est
arrêtée suite à la détection d'une erreur.
q_etCommError
SEN.Communication
ErrorCodes
q_etCommError contient la valeur des codes d'erreur
de communication SEN.CommunicationErrorCodes
(voir EcoStruxure Machine Expert,
Fonctions Lecture/Ecriture Modbus et
ASCII, Guide de la bibliothèque
PLCCommunication).
q_etOperError
SEN.OperationError q_etOperError contient la valeur des codes d'erreur
Codes
de fonctionnement SEN.OperationErrorCodes
(voir EcoStruxure Machine Expert,
Fonctions Lecture/Ecriture Modbus et
ASCII, Guide de la bibliothèque
PLCCommunication).
q_iQuantiyRecv
INT
Nombre d'objets reçus
EIO0000002957 06/2019
EcoStruxure Machine Expert
Fonctions Twido
EIO0000002957 06/2019
Chapitre 5
Fonctions Twido
Fonctions Twido
Fonctions Twido
Présentation
La liste suivante présente les fonctions Twido :
FC_AsciiCharToInt (voir page 54)
 FC_AsciiToInt (voir page 54)
 FC_AsciiToReal (voir page 55)
 FC_ConcatOfInt (voir page 56)
 FC_CopyArrDint (voir page 56)
 FC_CopyArrInt (voir page 56)
 FC_CopyArrReal (voir page 56)
 FC_CopyBitString (voir page 57)
 FC_CopyPackedBitString (voir page 57)
 FC_DegToRad (voir page 57)
 FC_EqualArrDint (voir page 58)
 FC_EqualArrReal (voir page 58)
 FC_FindEqDint (voir page 59)
 FC_FindEqReal (voir page 59)
 FC_FindGtDint (voir page 59)
 FC_FindGtReal (voir page 60)
 FC_FindLtDint (voir page 60)
 FC_FindLtReal (voir page 60)
 FC_HiOfDint (voir page 61)
 FC_IntToAscii (voir page 61)
 FC_Lkup (voir page 61)
 FC_LoOfDint (voir page 63)
 FC_MaxArrDint (voir page 63)
 FC_MaxArrReal (voir page 63)
 FC_MeanArrReal (voir page 63)
 FC_MinArrDint (voir page 64)
 FC_MinArrReal (voir page 64)
 FC_MoveArrDint (voir page 64)
 FC_MoveArrInt (voir page 65)
 FC_MoveArrReal (voir page 65)
 FC_OccurArrDint (voir page 65)

EIO0000002957 06/2019
53
Fonctions Twido












FC_OccurArrReal (voir page 66)
FC_RadToDeg (voir page 66)
FC_RealToAscii (voir page 67)
FC_RolArrDint (voir page 67)
FC_RolArrReal (voir page 67)
FC_RorArrDint (voir page 68)
FC_RorArrReal (voir page 68)
FC_Round (voir page 68)
FC_SortArrDint (voir page 69)
FC_SortArrReal (voir page 69)
FC_SumArrDint (voir page 70)
FC_SumArrReal (voir page 70)
FC_AsciiCharToInt
Cette fonction renvoie les deux caractères sous la forme d'une valeur entière.
Valeurs d'entrée
i_sChar : STRING avec 2 caractères.
Valeurs renvoyées
Renvoie les caractères sous la forme d'une valeur entière.
Si la chaîne est non valide, la variable globale G_xSystemBitS18 prend la valeur TRUE.
FC_AsciiToInt
La fonction de conversion d'ASCII en entier convertit une valeur de type chaîne ASCII en sa valeur
entière correspondante.
54
Nom dans EcoStruxure Machine Expert Basic / Twido
ASCII_TO_INT
Valeurs d'entrée
i_psStartAddr : POINTER TO STRING ;
Valeurs renvoyées
ASCII_TO_INT : INT
EIO0000002957 06/2019
Fonctions Twido
Les règles de conversion d'une valeur ASCII en valeur entière sont les suivantes :
 La valeur ASCII doit être comprise entre -32 768 et 32 767.
 La fonction lit toujours l'octet de poids fort en premier.
 Tout caractère ASCII en dehors de l'intervalle [0...9] ([30 hex - 39 hex]]) est considéré
comme un caractère de fin, à l'exception du signe moins '-' (2D hex) lorsqu'il est le premier
caractère.
 En cas de dépassement (> 32 767 ou < -32 768), la variable globale G_xSystemBitS18
(erreur détectée ou dépassement arithmétique) est réglée sur 1 et la valeur 32 767 ou -32 768
est renvoyée.
 Si le premier caractère de l'opérande est un caractère de « fin », la valeur 0 est renvoyée et la
variable globale G_xSystemBitS18 est mise à TRUE.
FC_AsciiToReal
La fonction de conversion d'ASCII en REAL en entier convertit la valeur de chaîne ASCIIen sa
valeur REAL correspondante.
Nom dans EcoStruxure Machine Expert Basic / Twido
ASCII_TO_FLOAT
Valeurs d'entrée
i_psStartAddr : POINTER TO STRING
Valeurs renvoyées
FC_AsciiToReal : REAL
Les règles de conversion d'une valeur ASCII en REAL sont les suivantes :
La fonction lit l'octet de poids fort en premier.
 Tout caractère ASCII non compris dans l'intervalle [0 à 9] ([30 hex - 39 hex]) est considéré
comme un caractère de « fin », sauf les caractères suivants :
 le point décimal '.' (2E hex) ;
 le signe moins '-' (2D hex) ;
 le signe plus '+' (2B hex) ;
 l'exposant 'e' ou 'E' (65 hex ou 45 hex).





La chaîne ASCII peut figurer en notation exponentielle (c'est-à-dire « -2.34567e+13 ») ou
décimale (c'est-à-dire 9826.3457).
En cas de dépassement (si le résultat du calcul est > 3.402824E+38 ou < -3.402824E+38-) :
 La variable globale G_xSystemBitS18 (dépassement arithmétique ou erreur détectée)
prend la valeur TRUE.
 La valeur +/- 1.#INF (valeur + ou - infini) est renvoyée.
Si le résultat du calcul est compris entre -1.175494E-38 et 1.175494E-38, il est arrondi
à 0,0.
Si l'opérande n'est pas un nombre, la valeur 1.#QNAN est renvoyée et la variable globale
G_xSystemBitS18 prend la valeur TRUE.
EIO0000002957 06/2019
55
Fonctions Twido
FC_ConcatOfInt
Cette fonction concatène deux entiers en un entier double.
Nom dans EcoStruxure Machine Expert Basic / Twido
CONCATW
Valeurs d'entrée
i_iLowVal : INT
i_iHighVal : INT
Valeurs renvoyées
FC_ConcatOfInt : DINT
FC_CopyArrDint
La fonction copie un tableau de valeurs DINT dans une autre adresse mémoire donnée.
Nom dans EcoStruxure Machine Expert Basic / Twido
COPY_ARR_DINT
Valeurs d'entrée
i_pdiSource : POINTER TO DINT
i_pdiDestination : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_CopyArrDint : BOOL
FC_CopyArrInt
La fonction copie un tableau de valeurs INT dans une autre adresse mémoire donnée.
Nom dans EcoStruxure Machine Expert Basic / Twido
COPY_ARR_INT
Valeurs d'entrée
i_piSource : POINTER TO INT
i_piDestination : POINTER TO INT
i_bySize : BYTE
Valeurs renvoyées
FC_CopyArrInt : BOOL
FC_CopyArrReal
La fonction copie un tableau de valeurs REAL dans une autre adresse mémoire donnée.
56
Nom dans EcoStruxure Machine Expert Basic / Twido
COPY_ARR_REAL
Valeurs d'entrée
i_prSource : POINTER TO REAL
i_prDestination : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_CopyArrReal : BOOL
EIO0000002957 06/2019
Fonctions Twido
FC_CopyBitString
La fonction copie un tableau de valeurs BOOL dans une autre adresse mémoire donnée.
Nom dans EcoStruxure Machine Expert Basic / Twido
COPY_ARR_BOOL
Valeurs d'entrée
i_pxSource : POINTER TO BOOL
i_pxDestination : POINTER TO BOOL
i_bySize : BYTE
Valeurs renvoyées
FC_CopyBitString : BOOL
FC_CopyPackedBitString
La fonction copie un BitString empaqueté de la longueur des bits i_bySize dans un autre
emplacement mémoire.
Nom dans EcoStruxure Machine Expert Basic / Twido
FC_CopyPackedBitString
Valeurs d'entrée
i_pbySource : POINTER TO BYTE
i_pbyDestination : POINTER TO BYTE
i_bySize : BYTE - limited to SIZE OF (DINT)
Valeurs renvoyées
FC_CopyPackedBitString : DINT
FC_DegToRad
La fonction FC_DegToRad convertit en radians un angle exprimé en degrés.
Nom dans EcoStruxure Machine Expert Basic / Twido
DEG_TO_RAD
Valeurs d'entrée
i_rDeg : REAL ;
Valeurs renvoyées
FC_DegToRad : REAL
Formule
Radian = Degrees * (Pi / 180)
Where,
Pi = 3.1415926535
Règles d'utilisation :
L'angle à convertir doit être compris entre -737 280 et +737 280.
Pour les valeurs situées hors de ces plages, le résultat affiché est + 1.#QNAN et la variable
globale G_xSystemBitS18 prend la valeur TRUE.
EIO0000002957 06/2019
57
Fonctions Twido
FC_EqualArrDint
La fonction FC_EqualArrDint compare 2 tables de taille définie, élément par élément. Si une
différence apparaît, le rang du premier élément dissemblable est renvoyé sous forme d'entier. S'il
n'y a aucune différence, la valeur "-1" est renvoyée.
Nom dans EcoStruxure Machine Expert Basic / Twido
EQUAL_ARR
Valeurs d'entrée
i_pdiFirstArrStartValue : POINTER TO DINT
i_pdiSecondArrStartValue : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_EqualArrDint : INT
Les adresses de début des 2 tableaux à comparer sont fournies au niveau des 2 entrées de
pointeur.
Le nombre d'éléments à comparer doit être défini à l'entrée i_bySize.
FC_EqualArrReal
La fonction FC_EqualArrReal compare 2 tables de taille définie, élément par élément. Si une
différence apparaît, le rang du premier élément dissemblable est renvoyé sous forme d'entier. S'il
n'y a aucune différence, la valeur -1 est renvoyée.
Nom dans EcoStruxure Machine Expert Basic / Twido
EQUAL_ARR
Valeurs d'entrée
i_pdiFirstArrStartValue : POINTER TO REAL
i_pdiSecondArrStartValue : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_EqualArrReal : INT
Les adresses de début des 2 tableaux à comparer sont fournies au niveau des 2 entrées de
pointeur.
Le nombre d'éléments à comparer doit être défini à l'entrée i_bySize.
58
EIO0000002957 06/2019
Fonctions Twido
FC_FindEqDint
La fonction FC_FindEqDint recherche dans un ensemble de valeurs DINT données la position
du premier élément de tableau qui est égal à une valeur donnée.
Nom dans EcoStruxure Machine Expert Basic / Twido
FIND_EQR
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_FindEqDint : INT
Si la valeur donnée ne figure pas dans le tableau, la valeur -1 est renvoyée.
FC_FindEqReal
La fonction FC_FindEqReal recherche dans un ensemble de valeurs REAL données la position
du premier élément de tableau qui est égal à une valeur donnée définie par l'utilisateur.
Nom dans EcoStruxure Machine Expert Basic / Twido
FIND_EQR
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_FindEqReal : INT
Si la valeur donnée ne figure pas dans le tableau, la valeur -1 est renvoyée.
FC_FindGtDint
La fonction FC_FindGtDint recherche dans un ensemble de valeurs DINT données la position
du premier élément de tableau qui est supérieur à une valeur donnée définie par l'utilisateur.
Nom dans EcoStruxure Machine Expert Basic / Twido
FIND_GTR
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_FindGtDint : INT
Si aucun élément du tableau n'est supérieur à la valeur donnée, la valeur -1 est renvoyée.
EIO0000002957 06/2019
59
Fonctions Twido
FC_FindGtReal
La fonction FC_FindGtReal recherche dans un ensemble de valeurs REAL données la position
du premier élément de tableau qui est supérieur à une valeur donnée définie par l'utilisateur.
Nom dans EcoStruxure Machine Expert Basic / Twido
FIND_GTR
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_FindGtReal : INT
Si aucun élément du tableau n'est supérieur à la valeur donnée, la valeur -1 est renvoyée.
FC_FindLtDint
La fonction FC_FindLtDint recherche dans un ensemble de valeurs DINT données la position
du premier élément de tableau qui est inférieur à une valeur donnée définie par l'utilisateur.
Nom dans EcoStruxure Machine Expert Basic / Twido
FIND_LTR
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_FindLtDint : INT
Si aucun élément du tableau n'est supérieur à la valeur donnée, la valeur -1 est renvoyée.
FC_FindLtReal
La fonction FC_FindLtReal recherche dans un ensemble de valeurs REAL données la position
du premier élément de tableau qui est inférieur à une valeur donnée définie par l'utilisateur.
Nom dans EcoStruxure Machine Expert Basic / Twido
FIND_LTR
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_FindLtReal : INT
Si aucun élément du tableau n'est supérieur à la valeur donnée, la valeur -1 est renvoyée.
60
EIO0000002957 06/2019
Fonctions Twido
FC_HiOfDint
Cette fonction extrait les bits de poids fort (MSB) d'un entier double vers un entier.
Nom dans EcoStruxure Machine Expert Basic / Twido
HW
Valeurs d'entrée
i_diVal : DINT
Valeurs renvoyées
FC_LoOfDint : INT
FC_IntToAscii
La fonction de conversion d'entier en ASCII convertit une valeur entière en sa valeur de chaîne
ASCII équivalente.
Nom dans EcoStruxure Machine Expert Basic / Twido
INT_TO_ASCII
Valeurs d'entrée
i_iVal : INT
Valeurs renvoyées
INT_TO_ASCII : ARRAY [1..4] OF INT
Les règles de conversion d'une valeur entière en valeur ASCII sont les suivantes :
La valeur entière doit être comprise entre -32768 et 32767.
 La fonction écrit toujours l'octet de poids fort en premier.
 Le caractère de fin est le « retour chariot » (ASCII 13).
 La fonction détermine automatiquement le nombre de zones %MW devant contenir des valeurs
ASCII (de 1 à 4).

FC_Lkup
La fonction FC_Lkup sert à interpoler un ensemble de données en virgule flottante X par rapport
à Y pour une valeur X donnée.
Nom dans EcoStruxure Machine Expert Basic / Twido
LKUP
Valeurs d'entrée
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_Lkup : INT
Les conditions suivantes s'appliquent à la valeur d'entrée i_prSartAddr :
 nombre pair de valeurs ;
 minimum de 6 valeurs ;
 le premier élément est la valeur x à trouver ;
 le deuxième élément est défini par la fonction : résultat de l'interpolation ;
 tous les éléments suivants sont des points de support d'interpolation par paires de X et Y.
EIO0000002957 06/2019
61
Fonctions Twido
Règles d'interpolation :
La fonction LKUP suit la règle d'interpolation linéaire, comme défini dans l'équation suivante :
Pour Xi ≤ X ≤ Xi + 1, où i = 1 … (m-1)
En supposant que les valeurs Xi sont classées dans l'ordre croissant : X1 ≤ X2 ≤ ...X...≤ Xm1 ≤ Xm
Si deux valeurs Xi consécutives sont égales (Xi=Xi+1=X), l'équation 1 entraîne une exception non
valide. Pour gérer cette exception, l'algorithme suivant est utilisé à la place de l'équation 1 :
Pour Xi = Xi+1 = X, où i = 1…(m-1).
Valeur de résultat :
La valeur de résultat indique si l'interpolation a réussi ou non.
0 : Interpolation réussie
1 : erreur d'interpolation : tableau incorrect, Xm < Xm-1
2 : erreur d'interpolation : i_rXValue hors limites, X < X1
4 : erreur d'interpolation : i_rXValue hors limites, X > Xm
8 : taille non valide du tableau de données : i_prYValue est défini comme nombre impair, ou
i_prYValue < 6
Le résultat ne contient pas la valeur d'interpolation calculée (Y). Pour une valeur (X) donnée, le
résultat de l'interpolation (Y) est contenu dans i_prYValue.
i_rXValue est la variable en virgule flottante qui contient la valeur (X) définie par l'utilisateur, pour
laquelle calculer la valeur (Y) interpolée.
La plage valide de i_rXValue est :
X1 ≤ i_rXValue ≤ Xm
62
EIO0000002957 06/2019
Fonctions Twido
FC_LoOfDint
Cette fonction extrait les bits de poids faible (LSB) d'un entier double vers un entier.
Nom dans EcoStruxure Machine Expert Basic / Twido
LW
Valeurs d'entrée
i_diVal : DINT
Valeurs renvoyées
FC_LoOfDint : INT
FC_MaxArrDint
Dans un ensemble de valeurs DINT données, cette fonction recherche la valeur maximale. La
recherche n'est effectuée que sur la longueur définie de la table.
Nom dans EcoStruxure Machine Expert Basic / Twido
MAX_ARR
Valeurs d'entrée
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_MaxArrDint : DINT
FC_MaxArrReal
Dans un ensemble de valeurs REAL données, cette fonction recherche la valeur maximale. La
recherche n'est effectuée que sur la longueur de table définie.
Nom dans EcoStruxure Machine Expert Basic / Twido
MAX_ARR
Valeurs d'entrée
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_MaxArrReal : REAL
FC_MeanArrReal
Dans un ensemble de valeurs REAL données, cette fonction sert à calculer la moyenne de la
longueur requise de la table de valeurs REAL.
Nom dans EcoStruxure Machine Expert Basic / Twido
MEAN
Valeurs d'entrée
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_MeanArrReal : REAL
EIO0000002957 06/2019
63
Fonctions Twido
FC_MinArrDint
Dans un ensemble de valeurs DINT données, cette fonction recherche la valeur minimale. La
recherche n'est effectuée que sur la longueur définie de la table.
Nom dans EcoStruxure Machine Expert Basic / Twido
MIN_ARR
Valeurs d'entrée
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_MinArrDint : DINT
FC_MinArrReal
Dans un ensemble de valeurs REAL données, cette fonction recherche la valeur minimale. La
recherche n'est effectuée que sur la longueur définie de la table.
Nom dans EcoStruxure Machine Expert Basic / Twido
MAX_ARR
Valeurs d'entrée
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_MinArrReal : REAL
FC_MoveArrDint
La fonction déplace la valeur d'entrée dans la table de valeurs DINT, d'un nombre d'éléments égal
à une valeur donnée.
64
Nom dans EcoStruxure Machine Expert Basic / Twido
MOVE_ARR_DINT
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_MoveArrDint : BOOL
EIO0000002957 06/2019
Fonctions Twido
FC_MoveArrInt
La fonction déplace la valeur d'entrée dans la table de valeurs INT, d'un nombre d'éléments égal
à une valeur donnée.
Nom dans EcoStruxure Machine Expert Basic / Twido
MOVE_ARR_INT
Valeurs d'entrée
i_iValue : INT
i_piStartAddr : POINTER TO INT
i_bySize : BYTE
Valeurs renvoyées
FC_MoveArrInt : BOOL
FC_MoveArrReal
La fonction déplace la valeur d'entrée dans la table de valeurs REAL, d'un nombre d'éléments égal
à une valeur donnée.
Nom dans EcoStruxure Machine Expert Basic / Twido
MOVE_ARR_REAL
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_MoveArrReal : BOOL
FC_OccurArrDint
Dans un ensemble de valeurs DINT données, cette fonction recherche le nombre d'éléments
égaux à une valeur donnée.
Nom dans EcoStruxure Machine Expert Basic / Twido
OCCUR_ARR
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_OccurArrDint : INT
EIO0000002957 06/2019
65
Fonctions Twido
FC_OccurArrReal
Dans un ensemble de valeurs REAL données, cette fonction recherche le nombre d'éléments
égaux à une valeur donnée.
Nom dans EcoStruxure Machine Expert Basic / Twido
OCCUR_ARR
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_OccurArrReal : INT
FC_RadToDeg
Cette fonction FC_RadToDeg convertit en degrés un angle exprimé en radians.
Nom dans EcoStruxure Machine Expert Basic / Twido
RAD_TO_DEG
Valeurs d'entrée
i_rRad : REAL ;
Valeurs renvoyées
FC_RadToDeg : REAL
Formule
Degree = Radian * (180 / Pi)
Where,
Pi = 3.1415926535
Règles d'utilisation :
L'angle à convertir doit être compris entre -4096Pi et 4096Pi.
Pour les valeurs situées hors de ces plages, le résultat affiché est + 1.#QNAN et G_xSystemBitS18 prend la valeur TRUE.
66
EIO0000002957 06/2019
Fonctions Twido
FC_RealToAscii
La fonction de REAL à ASCII convertit une valeur REAL en sa valeur de chaîne ASCII équivalente.
Nom dans EcoStruxure Machine Expert Basic / Twido
FLOAT_TO_ASCII
Valeurs d'entrée
i_rVal : REAL
Valeurs renvoyées
FC_RealToAscii : ARRAY [1..7] OF INT
Les règles de conversion d'une valeur REAL en valeur ASCII sont les suivantes :
La fonction écrit toujours l'octet de poids fort (MSB) en premier.
 La représentation s'effectue en notation scientifique conventionnelle.
 Le résultat « Infini » ou « Pas un nombre » renvoie la chaîne « NAN ».
 Le caractère de fin est le « retour chariot » (ASCII 13).
 La précision de conversion est de 6 chiffres.

FC_RolArrDint
Dans un tableau DINT donné, cette fonction décale chaque élément de n positions vers l'adresse
de début de la liste. Les n premiers éléments sont déplacés en fin de liste.
Nom dans EcoStruxure Machine Expert Basic / Twido
ROL_ARR
Valeurs d'entrée
i_iShiftPosNumber : INT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_RolArrDint : BOOL
Si la valeur de i_iShiftPosNumber est négative ou nulle, aucun décalage n'est effectué.
FC_RolArrReal
Dans un ensemble de valeurs REAL données, cette fonction effectue un décalage circulaire de
n positions de haut en bas des éléments.
Nom dans EcoStruxure Machine Expert Basic / Twido
ROL_ARR
Valeurs d'entrée
i_iShiftPosNumber : INT
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_RolArrReal : BOOL
Si la valeur de i_iShiftPosNumber est négative ou nulle, aucun décalage n'est effectué.
EIO0000002957 06/2019
67
Fonctions Twido
FC_RorArrDint
Dans un tableau DINT donné, cette fonction décale chaque élément de n positions vers l'adresse
de fin de la liste. Les n derniers éléments sont déplacés en début de liste.
Nom dans EcoStruxure Machine Expert Basic / Twido
ROR_ARR
Valeurs d'entrée
i_iShiftPosNumber : INT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_RorArrDint : BOOL
Si la valeur de i_iShiftPosNumber est négative ou nulle, aucun décalage n'est effectué.
FC_RorArrReal
Dans un ensemble de valeurs REAL données, cette fonction effectue un décalage circulaire de
n positions de bas en haut des éléments.
Nom dans EcoStruxure Machine Expert Basic / Twido
ROL_ARR
Valeurs d'entrée
i_iShiftPosNumber : INT
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_RorArrReal : BOOL
Si la valeur de i_iShiftPosNumber est négative ou nulle, aucun décalage n'est effectué.
FC_Round
La fonction FC_Round arrondit une représentation en virgule flottante stockée dans une
chaîne ASCII.
Nom dans EcoStruxure Machine Expert Basic / Twido
ROUND
Valeurs d'entrée
i_psStartAddr : POINTER TO STRING ;
i_byRoundNumber : BYTE ;
Valeurs renvoyées
FC_Round : ARRAY[1..7] of INT
Les règles de l'instruction ROUND sont les suivantes :
L'opérande est toujours arrondi à la valeur inférieure.
 Le caractère de fin de la chaîne de l'opérande est utilisé comme caractère de fin de la chaîne
de résultat.

68
EIO0000002957 06/2019
Fonctions Twido

Le caractère de fin peut être tout caractère ASCII compris dans l'intervalle [0 à 9] ([30 hex 39 hex]), à l'exception des caractères suivants :
 le point '.' (2E hex),
 le signe moins '-' (2D hex),
 le signe plus '+' (2B hex),
 l'exposant 'e' ou 'E' (65 hex ou 45 hex).

Le résultat et l'opérande ne doivent pas compter plus de 13 octets, soit la taille maximale d'une
chaîne ASCII.
FC_SortArrDint
La fonction trie les éléments d'une table de valeurs DINT dans l'ordre croissant ou décroissant, et
stocke le résultat dans la même table.
Nom dans EcoStruxure Machine Expert Basic / Twido
SORT_ARR
Valeurs d'entrée
i_iSortDirection : INT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_SortArrDint : BOOL
Le paramètre de sens i_iSortDirection indique la séquence de tri :
sens > 0, tri dans l'ordre croissant.
 sens < 0, tri dans l'ordre décroissant.
 sens = 0, aucun tri effectué.

FC_SortArrReal
La fonction trie les éléments d'une table de valeurs DINT dans l'ordre croissant ou décroissant, et
stocke le résultat dans la même table.
Nom dans EcoStruxure Machine Expert Basic / Twido
SORT_ARR
Valeurs d'entrée
i_iSortDirection : INT
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_SortArrReal : BOOL
Le paramètre de sens i_iSortDirection indique l'ordre du tri :
sens > 0, tri dans l'ordre croissant.
 sens < 0, tri dans l'ordre décroissant.
 sens = 0, aucun tri effectué.

EIO0000002957 06/2019
69
Fonctions Twido
FC_SumArrDint
La fonction FC_SumArrDint additionne un nombre déterminé d'éléments de tableau dont
l'adresse est définie à l'entrée i_pdiStartAddr. Cela signifie que la fonction effectue la somme
de tous les éléments d'une table d'objets.
Nom dans EcoStruxure Machine Expert Basic / Twido
SUM_ARR
Valeurs d'entrée
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_SumArrDint : DINT
La variable globale G_xSystemBitS18 prend la valeur TRUE lorsque le résultat est hors des
limites du format de mot double correspondant à l'opérande de la table.
FC_SumArrReal
La fonction FC_SumArrReal additionne un nombre déterminé d'éléments de tableau dont
l'adresse est définie à l'entrée i_pdiStartAddr. Cela signifie que la fonction effectue la somme
de tous les éléments d'une table d'objets.
Nom dans EcoStruxure Machine Expert Basic / Twido
SUM_ARR
Valeurs d'entrée
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_SumArrReal : REAL
La variable globale G_xSystemBitS18 prend la valeur TRUE lorsque le résultat est hors des
limites du format de mot double correspondant à l'opérande de la table.
70
EIO0000002957 06/2019
EcoStruxure Machine Expert
Glossaire
EIO0000002957 06/2019
Glossaire
!
%MW
Selon la norme IEC, %MW représente un registre de mots mémoire (par exemple, un objet
langage de type mot mémoire).
B
bloc fonction
Unité de programmation qui possède 1 ou plusieurs entrées et renvoie 1 ou plusieurs sorties. Les
blocs fonction (FBs) sont appelés via une instance (copie du bloc fonction avec un nom et des
variables dédiés) et chaque instance a un état persistant (sorties et variables internes) d'un appel
au suivant.
Exemples : temporisateurs, compteurs
F
fonction
Unité de programmation possédant 1 entrée et renvoyant 1 résultat immédiat. Contrairement aux
blocs fonction (FBs), une fonction est appelée directement par son nom (et non via une instance),
elle n'a pas d'état persistant d'un appel au suivant et elle peut être utilisée comme opérande dans
d'autres expressions de programmation.
Exemples : opérateurs booléens (AND), calculs, conversion (BYTE_TO_INT).
L
LSB
Acronyme de least significant bit/byte, bit/octet de poids faible. Partie d'un nombre, d'une adresse
ou d'un champ qui est écrite le plus à droite dans une valeur en notation hexadécimale ou binaire
classique.
M
MSB
Acronyme de most significant bit/byte, bit/octet de poids fort. Partie d'un nombre, d'une adresse ou
d'un champ qui est écrite le plus à gauche dans une valeur en notation hexadécimale ou binaire
classique.
EIO0000002957 06/2019
71
Glossaire
P
PID
PWM
72
Acronyme de proportional, integral, derivative, proportionnel-intégral-dérivé. Mécanisme de retour
de boucle de contrôle générique (contrôleur) largement utilisé dans les systèmes de contrôle
industriels.
Acronyme de pulse width modulation, modulation de largeur d'impulsion. Sortie rapide qui oscille
entre OFF et ON au cours d'un cycle de service réglable, ce qui produit une forme d'onde
rectangulaire (ou carrée selon le réglage).
EIO0000002957 06/2019
EcoStruxure Machine Expert
Index
EIO0000002957 06/2019
Index
A
ASCII_TO_FLOAT, 55
ASCII_TO_INT, 54
C
CONCATW, 56
COPY_ARR_BOOL, 57
COPY_ARR_DINT, 56
COPY_ARR_INT, 56
COPY_ARR_REAL, 56
D
DEG_TO_RAD, 57
E
EQUAL_ARR, 58, 58
F
FB_Counter, 23
FB_Drum, 33
FB_EXCH, 42
FB_FiFo, 25
FB_LiFo, 25
FB_PID, 37
FB_ReadVar, 45
FB_ScheduleBlock, 30
FB_SendRecvMsg, 51
FB_ShiftBitRegister, 27
FB_StepCounter, 36
FB_Timer, 20
FB_WriteReadVar, 49
FB_WriteVar, 47
FC_AsciiCharToInt, 54
FC_AsciiToInt, 54
FC_AsciiToReal, 55
FC_ConcatOfInt, 56
EIO0000002957 06/2019
FC_CopyArrDint, 56
FC_CopyArrInt, 56
FC_CopyArrReal, 56
FC_CopyBitString, 57
FC_CopyPackedBitString, 57, 57
FC_DegToRad, 57
FC_EqualArrDint, 58
FC_EqualArrReal, 58
FC_FindEqDint, 59
FC_FindEqReal, 59
FC_FindGtDint, 59
FC_FindGtReal, 60
FC_FindLtDint, 60
FC_FindLtReal, 60
FC_HiOfDint, 61
FC_IntToAscii, 61
FC_Lkup, 61
FC_LoOfDint, 63
FC_MaxArrDint, 63
FC_MaxArrReal, 63
FC_MeanArrReal, 63
FC_MinArrDint, 64
FC_MinArrReal, 64
FC_MoveArrDint, 64
FC_MoveArrInt, 65
FC_MoveArrReal, 65
FC_OccurArrDint, 65
FC_OccurArrReal, 66
FC_RadToDeg, 66
FC_RealToAscii, 67
FC_RolArrDint, 67
FC_RolArrReal, 67
FC_RorArrDint, 68
FC_RorArrReal, 68
FC_Round, 68
FC_SortArrDint, 69
FC_SortArrReal, 69
FC_SumArrDint, 70
FC_SumArrReal, 70
FIND_EQR, 59, 59
FIND_GTR, 59, 60
73
Index
FIND_LTR, 60, 60
FLOAT_TO_ASCII, 67
H
HW, 61
I
INT_TO_ASCII, 61
L
LKUP, 61
LW, 63
T
TwidoEmulationSupport, bibliothèque
FB_Counter, 23
FB_Drum, 33
FB_EXCH, 42
FB_FiFo, 25
FB_LiFo, 25
FB_PID, 37
FB_ReadVar, 45
FB_ScheduleBlock, 30
FB_SendRecvMsg, 51
FB_ShiftBitRegister, 27
FB_StepCounter, 36
FB_Timer, 20
FB_WriteReadVar, 49
FB_WriteVar, 47
M
MAX_ARR, 63, 63, 64
MEAN, 63
MIN_ARR, 64
MOVE_ARR_DINT, 64
MOVE_ARR_INT, 65
MOVE_ARR_REAL, 65
O
OCCUR_ARR, 65, 66
R
RAD_TO_DEG, 66
ROL_ARR, 67, 67, 68
ROR_ARR, 68
ROUND, 68
S
SORT_ARR, 69, 69
SUM_ARR, 70, 70
74
EIO0000002957 06/2019

Manuels associés