Chargement de la progression locale…
PLC Gym
Accueil PLC GymNiveau 1, 0 XP · ta progression
Mission 89 · PRO (nécessite Pro)

Exercice : Un bloc d'alarme pour chaque alarme: formation SCADA pour automate

Nouvelle, vue, effacée : une boucle fait passer chaque alarme par les mêmes états et marque celle qui est arrivée en premier.

Écris le bloc d'alarmes derrière la liste d'alarmes de l'usine : une boucle qui fait passer chacune de cinq alarmes par nouvelle, vue et effacée, compte ce qui est actif et non acquitté, indique la priorité la plus haute et marque l'alarme arrivée en premier.

Cette mission fait partie de ProCrée un compte gratuit : chaque compte a un essai Pro gratuit jusqu'au 5 décembre.

Sans carte bancaire. Rien à payer. Rien à annuler.

Official release: 5 December. Prends la tête du classement ce jour-là et gagne 3 mois de Pro, plus 2 semaines de Pro à offrir à un ami. La 2e place gagne 4 semaines. La 3e place gagne 2 semaines. Règlement

  • Toutes les leçons, depuis zéro
  • Toutes les missions et leçons, au fil de ta montée de niveau
  • Un test pratique pour chaque titre, avec un certificat
  • Rembobine n'importe quel test, un cycle à la fois
  • Des solutions commentées quand tu es bloqué
  • Le convertisseur de code, autant que tu veux
Le usine modèle 3D sur lequel tourne cette missionPRO (nécessite Pro) mission
Comment le test se déroule

Nouvelle, vue, effacée

Test 1 sur 6
Réglé par le testVérifié par le testPas 8 sur 8 · 1.9 s
Level
Expert
Durée
À propos 45 min
Récompense
+800 XP
Installation
usine modèle en 3D
Éditeurs Siemens
SCL
Éditeurs Rockwell
Texte structuré
Éditeurs Beckhoff
Texte structuré
Étape
44. SCADA 2 : un bloc d’alarme pour chaque alarme
Comportement exigé

Un bloc d'alarme pour chaque alarme: ce que ton code doit faire

La commande de l'installation, les cinq conditions d'alarme Cond[0] à Cond[4] et leurs priorités Prio[0] à Prio[4] sont écrites. Écris une boucle FOR sur les cinq alarmes qui tient AlarmState[0] à AlarmState[4] : 0 Normal, 1 New (active, non acquittée), 2 Seen (active, acquittée), 3 Cleared, not seen. De 0, la condition qui s'active donne 1. En 1, un appui sur Ack donne 2 ; la condition qui disparaît donne 3. En 2, la condition qui disparaît donne 0. En 3, un appui sur Ack donne 0 ; la condition qui revient donne 1. Chaque alarme fait au plus un déplacement par cycle, et Ack agit sur l'appui, pas tant qu'il est maintenu. ActiveCount est le nombre d'alarmes à l'état 1 ou 2. UnackCount est le nombre d'alarmes à l'état 1 ou 3. TopPriority est la priorité la plus urgente parmi les alarmes qui ne sont pas à l'état 0 : 1, 2 ou 3, ou 0 pour aucune. FirstOut est le numéro de l'alarme qui a déclenché le problème, en comptant à partir de 1 : quand une alarme quitte l'état 0 alors que FirstOut vaut 0, FirstOut prend son numéro. Si deux démarrent au même cycle, celle qui est plus haut dans le tableau l'emporte. FirstOut ne revient à 0 que quand chaque alarme est de nouveau à l'état 0. Dans l'onglet Écran opérateur, choisis comment la liste traite une alarme effacée, la première alarme et les états.

États
0 Normal, 1 New, 2 Seen, 3 Cleared, not seen.
Ack
À l'appui : 1 devient 2, et 3 devient 0.
Totaux
ActiveCount : états 1 et 2. UnackCount : états 1 et 3. TopPriority : la plus urgente qui n'est pas à 0.
Première alarme (first out)
Posé par la première alarme à quitter 0 ; effacé quand toutes sont de nouveau à 0.
Table des variables

Un bloc d'alarme pour chaque alarme: entrées et sorties

Ton programme lit 19 entrées et pilote 20 sorties. Une entrée de plus pilote la simulation ou affiche une mesure, pour que tu puisses tester. Les noms sont les mêmes dans l'éditeur de chaque constructeur.

VariableType de donnéesTon codeCe que ça signifie sur la machine
StartBOOLLitUne entrée dont ton code a besoinDémarrer l'usine
StopBOOLLitUne entrée dont ton code a besoinArrêter l'usine là où elle est
ResetBOOLLitUne entrée dont ton code a besoinRéarmer après un arrêt d'urgence ou un déclenchement du rideau lumineux
EStopBOOLLitUne entrée dont ton code a besoinArrêt d'urgence enfoncé
CompressorFaultBOOLLitUne entrée dont ton code a besoinEssaie : le compresseur déclenche
AirPressureREALLitUne entrée dont ton code a besoinPression du réservoir d'air, bar
SteamPressureREALLitUne entrée dont ton code a besoinPression de vapeur de la chaudière, bar
VesselLevelREALLitUne entrée dont ton code a besoinNiveau de la cuve de mélange, %
VesselTempREALLitUne entrée dont ton code a besoinTempérature du lot, °C
SugarAddedREALLitUne entrée dont ton code a besoinSucre ajouté à ce lot par le doseur pondéral, kg
BufferLevelREALLitUne entrée dont ton code a besoinNiveau du bac tampon de la remplisseuse, %
BadBottleBOOLLitUne entrée dont ton code a besoinCaméra : une bouteille sans étiquette passe
GateEyeBOOLLitUne entrée dont ton code a besoinUne bouteille est devant la porte de rejet
AccumFullBOOLLitUne entrée dont ton code a besoinTrois packs attendent le robot
CurtainClearBOOLLitUne entrée dont ton code a besoinFaisceaux du rideau lumineux non coupés
PalletFullBOOLLitUne entrée dont ton code a besoinUne palette pleine attend ou est en route vers la fardeleuse
PalletOnWrapperBOOLLitUne entrée dont ton code a besoinUne palette est sur le plateau de la fardeleuse
WrapDoneBOOLLitUne entrée dont ton code a besoinLa palette sur la fardeleuse est filmée
AckBOOLLitUne entrée dont ton code a besoinBouton de l'écran : acquitter les alarmes
PersonInCellBOOLPas nécessairePour tester ou observer ; ton code peut s'en passerEssaie : quelqu'un entre dans la cellule du robot
CompressorBOOLÉcritUne sortie que ton code commandeFaire tourner le compresseur d'air
BoilerOnBOOLÉcritUne sortie que ton code commandeAllumer la chaudière
WaterValveBOOLÉcritUne sortie que ton code commandeEau dans la cuve de mélange
FeederBOOLÉcritUne sortie que ton code commandeFaire tourner le doseur pondéral de sucre
AgitatorBOOLÉcritUne sortie que ton code commandeFaire tourner l'agitateur
SteamValveBOOLÉcritUne sortie que ton code commandeVapeur vers la double enveloppe de la cuve
TransferPumpBOOLÉcritUne sortie que ton code commandePomper le lot vers le bac tampon
LineRunBOOLÉcritUne sortie que ton code commandeFaire tourner la ligne d'embouteillage
RejectGateBOOLÉcritUne sortie que ton code commandeActionner la porte de rejet
RobotEnableBOOLÉcritUne sortie que ton code commandeLaisser le robot palettiser
PalletOutBOOLÉcritUne sortie que ton code commandeAmener la palette pleine à la fardeleuse
WrapBOOLÉcritUne sortie que ton code commandeFaire tourner la fardeleuse
AGVCallBOOLÉcritUne sortie que ton code commandeAppeler l'AGV pour récupérer la palette filmée
GreenLampBOOLÉcritUne sortie que ton code commandeColonne lumineuse : en production
AmberLampBOOLÉcritUne sortie que ton code commandeColonne lumineuse : démarrage ou attente
RedLampBOOLÉcritUne sortie que ton code commandeColonne lumineuse : arrêt d'urgence ou déclenchement du rideau lumineux
ActiveCountINTÉcritUne sortie que ton code commandeListe d'alarmes : alarmes dont la condition est activée
UnackCountINTÉcritUne sortie que ton code commandeListe d'alarmes : alarmes que personne n'a acquittées
TopPriorityINTÉcritUne sortie que ton code commandeListe d'alarmes : priorité la plus urgente affichée, de 1 à 3, ou 0
FirstOutINTÉcritUne sortie que ton code commandeListe d'alarmes : l'alarme arrivée en premier, de 1 à 5, ou 0

En Siemens SCL, écris les variables propres à un bloc avec # devant, comme le fait TIA Portal : #Start. Rockwell et TwinCAT utilise le nom seul : Start.

Tests automatiques

Un bloc d'alarme pour chaque alarme: ce que vérifient les tests

  1. Chaque alarme suit les mêmes quatre états : 0 Normal, 1 New, 2 Seen, 3 Cleared, not seen.
  2. Une alarme qui s'efface avant Ack reste dans la liste à 3 jusqu'à Ack ; une alarme qui revient avant Ack est de nouveau New.
  3. Ack agit à l'appui : un Ack maintenu n'acquitte pas une alarme qui arrive plus tard.
  4. ActiveCount, UnackCount et TopPriority correspondent à la liste à chaque cycle.
  5. FirstOut nomme l'alarme arrivée en premier et la garde jusqu'à ce que la liste soit vide.
  6. La liste garde une alarme effacée jusqu'à ce qu'elle ait été vue, marque la première et dit chaque état avec des mots.
  1. Essaie Utilise les boutons sous le modèle et regarde l'installation réagir.
  2. Tester la solution Toutes les vérifications tournent sur ton code en un seul clic.
  3. Rembobiner PRO (nécessite Pro) Si l'une échoue, reviens en arrière cycle par cycle pour voir pourquoi.

Bloqué sur cette mission ? Demande aux membres dans le Vestiaire.

Pourquoi c'est important

Où tu verrais ça sur le terrain

Le serveur SCADA d'une usine contient une table d'alarmes, chaque ligne avec un état, une priorité et une heure. Le repère de première alarme (first out) est ce que lit l'équipe de jour après une nuit d'arrêts.

Un seul déclenchement peut lever vingt alarmes en quelques secondes. Sans états ni repère de première alarme, l'opérateur les acquitte toutes pour faire taire le klaxon et la cause est perdue.

Où tu trouverais çaUn seul automate pour toute une usine : quand chaque machine peut tourner, et ce qui la garde sûre

Une petite usine de boissons fabrique une boisson à l'orange. Le sucre et l'eau sont dosés et pasteurisés, puis pompés vers une remplisseuse. Les bouteilles sont remplies, capsulées, étiquetées et inspectées, emballées par six, empilées sur des palettes par un robot, filmées et amenées au quai par un chariot sans conducteur. Chaque machine a ses propres commandes ; l'automate de l'usine décide quand chacune peut tourner, passe le travail de l'une à l'autre et arrête tout en sécurité.

  1. BatchMélanger et pasteuriser
  2. FillRemplir, capsuler, étiqueter
  3. InspecterRejeter les mauvaises bouteilles
  4. EmballerLe robot empile les packsTu es ici
  5. ExpédierFilmer, l'AGV vers le quai
Sur un vrai site : lieux, pièces et sécurité
  • Halls d'embouteillage de sodas et de jus
  • Usines de sauces, de produits laitiers et d'aliments liquides
  • Liquides ménagers et de soins personnels

Un arrêt d'urgence est câblé via un relais de sécurité qui coupe l'alimentation tout seul. Le programme doit alors tout maintenir à l'arrêt et attendre un Reset et un Start volontaires, pour que rien ne bouge par surprise.

Les cellules de robots sont clôturées. Les rideaux lumineux et les portes verrouillées arrêtent le robot quand quelqu'un entre, et un redémarrage demande un réarmement depuis l'extérieur de la cellule, dans l'esprit de l'ISO 10218 et de l'ISO 13849.

Les tailles, les temps et les vues en coupe sont des choix pédagogiques, pas le plan d'une installation réelle précise.

Continue

Prochaine étape sur la route