Lokale voortgang laden…
PLC Gym
PLC Gym-homeNiveau 1, 0 XP · je voortgang
Missie 89 · PRO (vraagt Pro)

Oefening over Eén alarmblok voor elk alarm: PLC SCADA-training

Nieuw, gezien, gewist: één lus voert elk alarm door dezelfde toestanden en markeert het alarm dat als eerste kwam.

Schrijf het alarmblok achter de alarmlijst van de fabriek: één lus die elk van vijf alarmen door nieuw, gezien en gewist voert, telt wat actief en onbevestigd is, de hoogste prioriteit meldt en het alarm markeert dat als eerste kwam.

Deze missie hoort bij ProMaak een gratis account aan: elk account krijgt een gratis Pro-proefperiode tot 5 december.

Geen creditcard. Niets te betalen. Niets op te zeggen.

Official release: 5 December. Sta op die dag bovenaan de ranglijst en win 3 maanden Pro, plus 2 weken Pro om aan een vriend te geven. De 2e plaats wint 4 weken. De 3e plaats wint 2 weken. Regels

  • Elke les, vanaf nul
  • Elke missie en les, naarmate je niveau stijgt
  • Een praktijktest voor elke titel, met een certificaat
  • Spoel elke test terug, één cyclus tegelijk
  • Uitgewerkte oplossingen als je vastzit
  • De codeconverter, zoveel je wilt
De 3D-modelfabriek waarop deze missie draaitPRO (vraagt Pro) missie
Hoe de test verloopt

Nieuw, gezien, gewist

Test 1 van 6
Ingesteld door de testGecontroleerd door de testStap 8 van 8 · 1.9 s
Level
Expert
Tijd
Over ons 45 min
Beloning
+800 XP
Opstelling
3D-modelfabriek
Editors voor Siemens
SCL
Editors voor Rockwell
Gestructureerde tekst
Editors voor Beckhoff
Gestructureerde tekst
Fase
44. SCADA 2: één alarmblok voor elk alarm
Vereist gedrag

Eén alarmblok voor elk alarm: wat je code moet doen

De installatiebesturing, de vijf alarmvoorwaarden Cond[0] tot Cond[4] en hun prioriteiten Prio[0] tot Prio[4] zijn geschreven. Schrijf één FOR-lus over de vijf alarmen die AlarmState[0] tot AlarmState[4] bijhoudt: 0 Normaal, 1 Nieuw (actief, niet bevestigd), 2 Gezien (actief, bevestigd), 3 Gewist, niet gezien. Vanaf 0 geeft de voorwaarde die aangaat 1. In 1 geeft een druk op Ack 2; de voorwaarde die uitgaat geeft 3. In 2 geeft de voorwaarde die uitgaat 0. In 3 geeft een druk op Ack 0; de voorwaarde die terugkomt geeft 1. Elk alarm maakt hooguit één stap per cyclus en Ack werkt op de druk, niet zolang hij ingedrukt wordt gehouden. ActiveCount is het aantal alarmen in toestand 1 of 2. UnackCount is het aantal in toestand 1 of 3. TopPriority is de urgentste prioriteit onder de alarmen die niet in toestand 0 zijn: 1, 2 of 3, of 0 voor geen. FirstOut is het nummer van het alarm dat de problemen begon, geteld vanaf 1: als een alarm toestand 0 verlaat terwijl FirstOut 0 is, wordt FirstOut zijn nummer. Als er twee in dezelfde cyclus beginnen, wint die eerder in de tabel. FirstOut gaat pas terug naar 0 als elk alarm weer in toestand 0 is. Kies op het tabblad Bedienscherm hoe de lijst een gewist alarm, het eerste alarm en de toestanden behandelt.

Toestanden
0 Normaal, 1 Nieuw, 2 Gezien, 3 Gewist, niet gezien.
Ack
Bij de druk: 1 wordt 2 en 3 wordt 0.
Totalen
ActiveCount: toestanden 1 en 2. UnackCount: toestanden 1 en 3. TopPriority: de meest urgente die niet in 0 staat.
First-out
Gezet door het eerste alarm dat 0 verlaat; gewist als alles weer 0 is.
Tagtabel

Eén alarmblok voor elk alarm: ingangen en uitgangen

Je programma leest 19 ingangen en stuurt 20 uitgangen. Nog één ingang stuurt de simulatie aan of toont een meting, om mee te testen. De namen zijn hetzelfde in de editor van elk merk.

TagDatatypeJouw codeWat het betekent op de machine
StartBOOLLeestEen ingang die je code nodig heeftStart de fabriek
StopBOOLLeestEen ingang die je code nodig heeftStop de fabriek waar ze is
ResetBOOLLeestEen ingang die je code nodig heeftReset na een noodstop of het aanspreken van het lichtgordijn
EStopBOOLLeestEen ingang die je code nodig heeftNoodstop ingedrukt
CompressorFaultBOOLLeestEen ingang die je code nodig heeftProbeer het: de compressor valt uit
AirPressureREALLeestEen ingang die je code nodig heeftDruk in het luchtvat, bar
SteamPressureREALLeestEen ingang die je code nodig heeftStoomdruk van de ketel, bar
VesselLevelREALLeestEen ingang die je code nodig heeftNiveau van het mengvat, %
VesselTempREALLeestEen ingang die je code nodig heeftBatchtemperatuur, °C
SugarAddedREALLeestEen ingang die je code nodig heeftSuiker die de weegdoseerder aan deze batch heeft toegevoegd, kg
BufferLevelREALLeestEen ingang die je code nodig heeftNiveau van de buffertank van de vuller, %
BadBottleBOOLLeestEen ingang die je code nodig heeftCamera: er passeert een fles zonder etiket
GateEyeBOOLLeestEen ingang die je code nodig heeftEen fles staat voor de verwerpklep
AccumFullBOOLLeestEen ingang die je code nodig heeftDrie pakken wachten op de robot
CurtainClearBOOLLeestEen ingang die je code nodig heeftStralen van het lichtgordijn ongebroken
PalletFullBOOLLeestEen ingang die je code nodig heeftEen volle pallet wacht of is onderweg naar de wikkelaar
PalletOnWrapperBOOLLeestEen ingang die je code nodig heeftEen pallet staat op de draaitafel van de wikkelaar
WrapDoneBOOLLeestEen ingang die je code nodig heeftDe pallet op de wikkelaar is gewikkeld
AckBOOLLeestEen ingang die je code nodig heeftSchermknop: de alarmen bevestigen
PersonInCellBOOLNiet nodigOm te testen of te bekijken; je code kan het weglatenProbeer het: iemand loopt de robotcel in
CompressorBOOLSchrijftEen uitgang die je code zetLaat de luchtcompressor draaien
BoilerOnBOOLSchrijftEen uitgang die je code zetZet de ketel aan
WaterValveBOOLSchrijftEen uitgang die je code zetWater in het mengvat
FeederBOOLSchrijftEen uitgang die je code zetLaat de suikerweegdoseerder draaien
AgitatorBOOLSchrijftEen uitgang die je code zetLaat de roerder draaien
SteamValveBOOLSchrijftEen uitgang die je code zetStoom naar de mantel van het vat
TransferPumpBOOLSchrijftEen uitgang die je code zetPomp de batch naar de buffertank
LineRunBOOLSchrijftEen uitgang die je code zetLaat de bottellijn draaien
RejectGateBOOLSchrijftEen uitgang die je code zetVuur de verwerpklep af
RobotEnableBOOLSchrijftEen uitgang die je code zetLaat de robot palletiseren
PalletOutBOOLSchrijftEen uitgang die je code zetBreng de volle pallet naar de wikkelaar
WrapBOOLSchrijftEen uitgang die je code zetLaat de rekfolie-wikkelaar draaien
AGVCallBOOLSchrijftEen uitgang die je code zetRoep de AGV om de gewikkelde pallet op te halen
GreenLampBOOLSchrijftEen uitgang die je code zetSignaalzuil: produceert
AmberLampBOOLSchrijftEen uitgang die je code zetSignaalzuil: start of wacht
RedLampBOOLSchrijftEen uitgang die je code zetSignaalzuil: noodstop of lichtgordijn aangesproken
ActiveCountINTSchrijftEen uitgang die je code zetAlarmlijst: alarmen waarvan de voorwaarde aan is
UnackCountINTSchrijftEen uitgang die je code zetAlarmlijst: alarmen die niemand heeft bevestigd
TopPriorityINTSchrijftEen uitgang die je code zetAlarmlijst: meest urgente prioriteit die zichtbaar is, 1 tot 3, of 0
FirstOutINTSchrijftEen uitgang die je code zetAlarmlijst: het alarm dat als eerste kwam, 1 tot 5, of 0

Schrijf in Siemens SCL de eigen tags van een blok met een # ervoor, zoals TIA Portal dat doet: #Start. Rockwell en TwinCAT gebruik alleen de naam: Start.

Automatische tests

Eén alarmblok voor elk alarm: wat de tests controleren

  1. Elk alarm volgt dezelfde vier toestanden: 0 Normaal, 1 Nieuw, 2 Gezien, 3 Gewist, niet gezien.
  2. Een alarm dat verdwijnt vóór Ack blijft als 3 op de lijst tot Ack; een alarm dat terugkomt vóór Ack is weer Nieuw.
  3. Ack werkt op de druk: een ingehouden Ack bevestigt geen alarm dat later binnenkomt.
  4. ActiveCount, UnackCount en TopPriority komen in elke cyclus overeen met de lijst.
  5. FirstOut noemt het alarm dat als eerste kwam en houdt het vast tot de lijst leeg is.
  6. De lijst houdt een gewist alarm vast tot het is gezien, markeert het eerste alarm en noemt elke toestand in woorden.
  1. Probeer het Gebruik de knoppen onder het model en kijk hoe de opstelling reageert.
  2. Oplossing testen Elke controle draait met één druk op je code.
  3. Terugspoelen PRO (vraagt Pro) Mislukt er een, ga dan cyclus voor cyclus terug om te zien waarom.

Vast bij deze missie? Vraag het de leden in de Kleedkamer.

Waarom het ertoe doet

Waar je dit in de praktijk tegenkomt

De SCADA-server van een fabriek heeft één alarmtabel, elke regel met een toestand, een prioriteit en een tijd. De first-out-markering is wat de dagploeg leest na een nacht met stops.

Eén storing kan in een paar seconden twintig alarmen veroorzaken. Zonder toestanden en een first-out-markering bevestigt de operator ze allemaal om de hoorn stil te krijgen en is de oorzaak weg.

Waar je dit tegenkomtEén besturing voor een hele fabriek: wanneer elke machine mag draaien, en wat haar veilig houdt

Een kleine drankenfabriek maakt een sinaasappeldrank. Suiker en water worden in batches gemengd en gepasteuriseerd en dan naar een vuller gepompt. Flessen worden gevuld, gesloten, geëtiketteerd en geïnspecteerd, in zessen verpakt, door een robot op pallets gestapeld, gewikkeld en door een bestuurderloze heftruck naar de laadkade gebracht. Elke machine heeft zijn eigen bediening; de fabrieksbesturing bepaalt wanneer elke mag draaien, geeft werk van de ene aan de volgende door en stopt alles veilig.

  1. BatchMengen en pasteuriseren
  2. FillVullen, sluiten, etiketteren
  3. InspecterenSlechte flessen verwerpen
  4. InpakkenRobot stapelt pakkenJe bent hier
  5. VerzendenWikkelen, AGV naar laadkade
Op een echte locatie: plekken, onderdelen en veiligheid
  • Frisdrank- en sapbottelhallen
  • Sauzen-, zuivel- en vloeibare voedselfabrieken
  • Huishoud- en verzorgingsvloeistoffen

Een noodstop is bedraad via een veiligheidsrelais dat zelf de stroom afsnijdt. Het programma moet dan alles uit houden en wachten op een bewuste Reset en Start, zodat niets onverwacht beweegt.

Robotcellen zijn omheind. Lichtgordijnen en vergrendelde deuren stoppen de robot als iemand naar binnen gaat, en herstarten vraagt om een reset van buiten de cel, in de geest van ISO 10218 en ISO 13849.

De afmetingen, tijden en doorsneden zijn keuzes voor het onderwijs, geen tekening van één echte installatie.

Ga door

Hierna op de route