Gestion des recettes Allen-Bradley avec des tableaux d’UDT et une interface de modification sur IHM
Apprenez à créer une édition de recettes basée sur une IHM pour AB Logix 5000 à l’aide de tableaux d’UDT et d’instructions COP pour le stockage permanent des...
La gestion des recettes sur les plateformes Logix fonctionne au mieux lorsque l’IHM n’écrit jamais directement dans le tableau historique. Une approche durable utilise trois tags : Recipe_Storage en tant que tableau UDT de longueur 50, Recipe_Display en tant qu’instance UDT unique pour l’écran opérateur, et Recipe_Index en tant que DINT qui sélectionne la recette enregistrée à recopier dans la structure d’affichage. Les instructions de copie (COP) déplacent les données lors d’un changement d’index, puis de nouveau lors de l’enregistrement, afin que l’opérateur modifie toujours un tampon de travail tandis que l’archive reste cohérente après les cycles de mise hors tension.
Moniteur de tags Logix affichant Recipe_Storage[50], Recipe_Display et Recipe_Index utilisés pour la modification des recettes via l’IHM.
Définissez une seule fois l’UDT avec tous les points de consigne nécessaires au procédé — températures, temporisations, vitesses, codes produit et masques d’interverrouillage — puis instanciez Recipe_Storage en tant que UDT[50]. Recipe_Display doit être du même type UDT, et non un ensemble de tags atomiques vaguement apparentés. Des types homogènes simplifient les calculs de longueur COP et évitent les troncatures silencieuses lorsque des membres sont ajoutés ultérieurement.
Limitation de l’index et chemin de chargement
Limitez Recipe_Index à la plage inclusive de 0 à 49 avant toute exécution d’une instruction COP. Un index non limité provenant d’un objet de saisie numérique peut provoquer un défaut de la COP ou récupérer une zone mémoire indéfinie, selon la manière dont les limites du tableau sont gérées dans le projet. Lors d’un changement détecté de Recipe_Index (ou lorsqu’un bouton-poussoir Load est explicitement actionné), copiez Recipe_Storage[Recipe_Index] dans Recipe_Display. L’IHM doit être liée exclusivement aux membres de Recipe_Display. Cette règle unique élimine les conditions de concurrence dans lesquelles deux écrans écrivent dans des emplacements différents du tableau pendant qu’un opérateur ajuste encore les valeurs.
// Structure en pseudocode
if Recipe_Index < 0 then Recipe_Index := 0;
if Recipe_Index > 49 then Recipe_Index := 49;
if IndexChanged or LoadPressed then
COP(Recipe_Storage[Recipe_Index], Recipe_Display, 1);
if SavePressed then
COP(Recipe_Display, Recipe_Storage[Recipe_Index], 1);
Écran de recettes IHM lié uniquement à Recipe_Display, avec des actions Load/Save déclenchant les routines COP du contrôleur.
Chemin d’enregistrement, conservation et comportement lors du téléchargement
Lors de l’enregistrement, recopiez Recipe_Display dans Recipe_Storage[Recipe_Index] avec COP. Comme Recipe_Storage réside dans les tags du contrôleur, les valeurs sont conservées après un cycle de mise hors tension lorsque le projet est configuré pour une conservation normale des tags. Les données sont également conservées lors d’un téléchargement si vous choisissez de conserver les valeurs des tags ; considérez cette case comme faisant partie de la procédure standard d’exploitation des recettes, et non comme une simple option pratique. Les opérateurs doivent comprendre que le téléchargement d’un projet avec l’option « réinitialiser les tags » activée effacera les recettes soigneusement réglées, à moins qu’une sauvegarde hors ligne n’existe.
Les flux d’importation CSV doivent être abordés avec prudence. De nombreux utilitaires IHM ou Excel-vers-tags créent les noms de tags sans mettre à jour de manière fiable les valeurs des membres à l’intérieur des UDT imbriquées, notamment lorsque les en-têtes de colonnes ne correspondent plus aux noms des membres de l’UDT. Préférez une routine d’importation explicite qui valide chaque champ, ou rechargez un export L5X/de tags fiable après des modifications en masse. Ne supposez pas qu’une bannière verte « importation terminée » signifie que Recipe_Storage[n].Setpoint est désormais égal à la cellule de la feuille de calcul.
| Tag | Type | Liaison IHM ? | Fonction |
|---|---|---|---|
| Recipe_Storage | UDT[50] | Non | Archive de recettes non volatile |
| Recipe_Display | UDT | Oui uniquement | Tampon de modification opérateur |
| Recipe_Index | DINT | Oui (sélecteur) | Emplacement actif 0–49 |
Recommandations pour l’interface IHM
- Fournissez Load et Save sous forme de bits momentanés distincts gérés dans le contrôleur, et non sous forme d’écritures directes dans le tableau depuis le pupitre.
- Affichez l’index limité ainsi qu’un champ en lecture seule « nom enregistré » copié depuis l’UDT d’affichage, afin que les opérateurs confirment l’emplacement actif.
- Interdisez l’enregistrement lorsque la machine est en cycle si les membres de la recette affectent les mouvements ou les points de consigne thermiques en cours de lot.
- Consignez les événements d’enregistrement avec l’identifiant de l’opérateur et l’index pour assurer la traçabilité sur les lignes réglementées.
Valider les limites de l’index et la conservation après téléchargement
Effectuez un test en chargeant l’emplacement 0, en modifiant une valeur sentinelle dans Recipe_Display, en enregistrant, en passant l’index à 1, puis en revenant à 0 et en rechargeant. La valeur sentinelle ne doit réapparaître que si l’enregistrement a été exécuté. Mettez le contrôleur hors tension puis sous tension et vérifiez que Recipe_Storage contient toujours la valeur sentinelle. Saisissez un index hors plage depuis l’IHM et vérifiez la limitation. Essayez un import CSV sur un système de test et comparez chaque membre au fichier avant de faire confiance à cette méthode en production.
Évitez de lier le pupitre à Recipe_Storage[Recipe_Index].Member. L’adressage IHM indirect dans les tableaux est plus difficile à auditer et favorise les écritures dans le mauvais emplacement lorsque le tag d’index et l’écran se mettent à jour à des cadences différentes. Le modèle d’UDT d’affichage s’étend facilement lorsque vous développez ultérieurement l’UDT, ajoutez des niveaux de sécurité ou déployez le même modèle de recette sur plusieurs cellules de systèmes PLC & PAC partageant un flux opérateur commun.
À propos de l’auteur
Mark Townsend | Ingénieur senior en automatisation – systèmes Allen-Bradley
Mark Townsend est un ingénieur senior en automatisation qui possède plus de 18 ans d’expérience sur les plateformes Allen-Bradley, notamment ControlLogix, CompactLogix et les anciens SLC-500. Son travail quotidien porte sur la logique RSLogix / Studio 5000 et la mise en service des IHM FactoryTalk View sur des parcs anciens et hétérogènes.