▼
Scroll to page 2
of
813
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