Lokaler Fortschritt wird geladen…
PLC Gym
PLC Gym StartseiteLevel 1, 0 XP · dein Fortschritt
Mission 89 · PRO (braucht Pro)

Übung zu Ein Alarmbaustein für jeden Alarm: SPS- und SCADA-Schulung

Neu, gesehen, behoben: Eine Schleife führt jeden Alarm durch dieselben Zustände und markiert den, der zuerst kam.

Schreib den Alarmbaustein hinter der Alarmliste der Fabrik: eine Schleife, die jeden der fünf Alarme durch Neu, Gesehen und Behoben führt, zählt, was aktiv und unquittiert ist, die höchste Priorität meldet und den Alarm markiert, der zuerst kam.

Diese Mission gehört zu ProErstelle ein kostenloses Konto: Jedes Konto bekommt bis 5. Dezember eine kostenlose Pro-Testphase.

Ohne Karte. Nichts zu zahlen. Nichts zu kündigen.

Official release: 5 December. Steh an dem Tag ganz oben in der Bestenliste und gewinn 3 Monate Pro, plus 2 Wochen Pro zum Verschenken an einen Freund. Platz 2 gewinnt 4 Wochen. Platz 3 gewinnt 2 Wochen. Regeln

  • Jede Lektion, ab null
  • Jede Mission und Lektion, mit jedem Level
  • Ein praktischer Test für jeden Titel, mit Zertifikat
  • Jeden Test zurückspulen, Zyklus für Zyklus
  • Musterlösungen, wenn du feststeckst
  • Der Code-Konverter, so oft du willst
Die 3D-Modellfabrik, auf der diese Mission läuftPRO (braucht Pro) Mission
So läuft der Test ab

Neu, gesehen, behoben

Test 1 von 6
Vom Test gesetztVom Test geprüftSchritt 8 von 8 · 1.9 s
Level
Experte
Zeit
Über uns 45 Min.
Belohnung
+800 XP
Anlage
3D-Modellfabrik
Editoren: Siemens
SCL
Editoren: Rockwell
Strukturierter Text
Editoren: Beckhoff
Strukturierter Text
Stufe
44. SCADA 2: ein Alarmbaustein für jeden Alarm
Gefordertes Verhalten

Ein Alarmbaustein für jeden Alarm: was dein Code tun muss

Die Anlagensteuerung, die fünf Alarmbedingungen Cond[0] bis Cond[4] und ihre Prioritäten Prio[0] bis Prio[4] sind geschrieben. Schreib eine FOR-Schleife über die fünf Alarme, die AlarmState[0] bis AlarmState[4] führt: 0 Normal, 1 Neu (aktiv, nicht quittiert), 2 Gesehen (aktiv, quittiert), 3 Gegangen, nicht gesehen. Aus 0 ergibt das Kommen der Bedingung 1. In 1 ergibt ein Druck auf Ack 2; das Gehen der Bedingung ergibt 3. In 2 ergibt das Gehen der Bedingung 0. In 3 ergibt ein Druck auf Ack 0; die Rückkehr der Bedingung ergibt 1. Jeder Alarm macht höchstens einen Schritt pro Zyklus, und Ack wirkt beim Drücken, nicht solange es gehalten wird. ActiveCount ist die Zahl der Alarme in Zustand 1 oder 2. UnackCount ist die Zahl der Alarme in Zustand 1 oder 3. TopPriority ist die dringendste Priorität unter den Alarmen, die nicht in Zustand 0 sind: 1, 2 oder 3, oder 0 für keinen. FirstOut ist die Nummer des Alarms, mit dem der Ärger begann, gezählt ab 1: Wenn ein Alarm Zustand 0 verlässt, während FirstOut 0 ist, wird FirstOut zu seiner Nummer. Starten zwei im selben Zyklus, gewinnt der, der weiter oben in der Tabelle steht. FirstOut geht erst wieder auf 0, wenn jeder Alarm wieder in Zustand 0 ist. Wähle im Tab Bedienbild, wie die Liste einen gegangenen Alarm, den ersten Alarm und die Zustände behandelt.

Zustände
0 Normal, 1 Neu, 2 Gesehen, 3 Behoben, nicht gesehen.
Ack
Beim Drücken: Aus 1 wird 2, und aus 3 wird 0.
Summen
ActiveCount: Zustände 1 und 2. UnackCount: Zustände 1 und 3. TopPriority: der dringendste, der nicht in 0 ist.
Erstwert
Gesetzt vom ersten Alarm, der 0 verlässt; gelöscht, wenn wieder alle 0 sind.
Variablentabelle

Ein Alarmbaustein für jeden Alarm: Eingänge und Ausgänge

Dein Programm liest 19 Eingänge und setzt 20 Ausgänge. Ein weiterer Eingang steuert die Simulation oder zeigt einen Messwert, damit du testen kannst. Die Namen sind im Editor jedes Herstellers gleich.

VariableDatentypDein CodeWas es an der Maschine bedeutet
StartBOOLLiestEin Eingang, den dein Code brauchtDie Fabrik starten
StopBOOLLiestEin Eingang, den dein Code brauchtDie Fabrik an Ort und Stelle anhalten
ResetBOOLLiestEin Eingang, den dein Code brauchtReset nach einem Not-Halt oder einer Auslösung des Lichtvorhangs
EStopBOOLLiestEin Eingang, den dein Code brauchtNot-Halt gedrückt
CompressorFaultBOOLLiestEin Eingang, den dein Code brauchtProbier es aus: Der Kompressor fällt aus
AirPressureREALLiestEin Eingang, den dein Code brauchtDruck im Druckluftbehälter, bar
SteamPressureREALLiestEin Eingang, den dein Code brauchtDampfdruck im Kessel, bar
VesselLevelREALLiestEin Eingang, den dein Code brauchtFüllstand im Mischbehälter, %
VesselTempREALLiestEin Eingang, den dein Code brauchtChargentemperatur, °C
SugarAddedREALLiestEin Eingang, den dein Code brauchtZucker, den die Dosierwaage dieser Charge zugegeben hat, kg
BufferLevelREALLiestEin Eingang, den dein Code brauchtFüllstand im Puffertank des Füllers, %
BadBottleBOOLLiestEin Eingang, den dein Code brauchtKamera: Eine Flasche ohne Etikett fährt vorbei
GateEyeBOOLLiestEin Eingang, den dein Code brauchtEine Flasche steht vor der Ausschleuse
AccumFullBOOLLiestEin Eingang, den dein Code brauchtDrei Packs warten auf den Roboter
CurtainClearBOOLLiestEin Eingang, den dein Code brauchtStrahlen des Lichtvorhangs nicht unterbrochen
PalletFullBOOLLiestEin Eingang, den dein Code brauchtEine volle Palette wartet oder ist auf dem Weg zum Wickler
PalletOnWrapperBOOLLiestEin Eingang, den dein Code brauchtEine Palette steht auf dem Drehteller des Wicklers
WrapDoneBOOLLiestEin Eingang, den dein Code brauchtDie Palette auf dem Wickler ist gewickelt
AckBOOLLiestEin Eingang, den dein Code brauchtBildschirm-Button: die Alarme quittieren
PersonInCellBOOLNicht nötigZum Testen oder Beobachten; dein Code kann es weglassenProbier es aus: Jemand geht in die Roboterzelle
CompressorBOOLSchreibtEin Ausgang, den dein Code setztDen Kompressor laufen lassen
BoilerOnBOOLSchreibtEin Ausgang, den dein Code setztDen Kessel einschalten
WaterValveBOOLSchreibtEin Ausgang, den dein Code setztWasser in den Mischbehälter
FeederBOOLSchreibtEin Ausgang, den dein Code setztDie Zucker-Dosierwaage laufen lassen
AgitatorBOOLSchreibtEin Ausgang, den dein Code setztDas Rührwerk laufen lassen
SteamValveBOOLSchreibtEin Ausgang, den dein Code setztDampf in den Behältermantel
TransferPumpBOOLSchreibtEin Ausgang, den dein Code setztDie Charge in den Puffertank pumpen
LineRunBOOLSchreibtEin Ausgang, den dein Code setztDie Abfülllinie laufen lassen
RejectGateBOOLSchreibtEin Ausgang, den dein Code setztDie Ausschleuse auslösen
RobotEnableBOOLSchreibtEin Ausgang, den dein Code setztDen Roboter palettieren lassen
PalletOutBOOLSchreibtEin Ausgang, den dein Code setztDie volle Palette zum Wickler fahren
WrapBOOLSchreibtEin Ausgang, den dein Code setztDen Stretchwickler laufen lassen
AGVCallBOOLSchreibtEin Ausgang, den dein Code setztDas FTF rufen, um die gewickelte Palette abzuholen
GreenLampBOOLSchreibtEin Ausgang, den dein Code setztSignalsäule: Produktion
AmberLampBOOLSchreibtEin Ausgang, den dein Code setztSignalsäule: Start oder Warten
RedLampBOOLSchreibtEin Ausgang, den dein Code setztSignalsäule: Not-Halt oder Auslösung des Lichtvorhangs
ActiveCountINTSchreibtEin Ausgang, den dein Code setztAlarmliste: Alarme, deren Bedingung ansteht
UnackCountINTSchreibtEin Ausgang, den dein Code setztAlarmliste: Alarme, die niemand quittiert hat
TopPriorityINTSchreibtEin Ausgang, den dein Code setztAlarmliste: dringendste angezeigte Priorität, 1 bis 3, oder 0
FirstOutINTSchreibtEin Ausgang, den dein Code setztAlarmliste: der Alarm, der zuerst kam, 1 bis 5, oder 0

In Siemens SCL schreibst du die eigenen Variablen eines Bausteins mit # davor, wie TIA Portal es tut: #Start. Rockwell und TwinCAT verwende einfach den Namen: Start.

Automatische Tests

Ein Alarmbaustein für jeden Alarm: was die Tests prüfen

  1. Jeder Alarm folgt denselben vier Zuständen: 0 Normal, 1 Neu, 2 Gesehen, 3 Behoben, nicht gesehen.
  2. Ein Alarm, der vor dem Ack verschwindet, bleibt bis zum Ack als 3 auf der Liste; einer, der vor dem Ack wiederkommt, ist wieder Neu.
  3. Ack wirkt beim Drücken: Ein gehaltenes Ack quittiert keinen Alarm, der später kommt.
  4. ActiveCount, UnackCount und TopPriority passen in jedem Zyklus zur Liste.
  5. FirstOut nennt den Alarm, der zuerst kam, und hält ihn, bis die Liste leer ist.
  6. Die Liste behält einen behobenen Alarm, bis er gesehen wurde, markiert den ersten und nennt jeden Zustand in Worten.
  1. Ausprobieren Nutze die Tasten unter dem Modell und sieh, wie die Anlage reagiert.
  2. Lösung testen Jede Prüfung läuft mit einem Druck auf deinem Code.
  3. Zurückspulen PRO (braucht Pro) Wenn eine fehlschlägt, geh sie Zyklus für Zyklus zurück, um zu sehen, warum.

Hängst du bei dieser Mission fest? Frag die Mitglieder in der Umkleide.

Warum es wichtig ist

Wo du das im Betrieb sehen würdest

Der SCADA-Server einer Anlage hat eine Alarmtabelle, jede Zeile mit Zustand, Priorität und Zeit. Die Erstwertmarke ist das, was die Frühschicht nach einer Nacht voller Stillstände liest.

Eine Auslösung kann in wenigen Sekunden zwanzig Alarme erzeugen. Ohne Zustände und Erstwertmarke quittiert der Bediener alle, um die Hupe stummzuschalten, und die Ursache geht verloren.

Wo du das findestEine Steuerung für eine ganze Fabrik: wann jede Maschine laufen darf und was sie sicher hält

Eine kleine Getränkefabrik stellt ein Orangengetränk her. Zucker und Wasser werden dosiert und pasteurisiert und dann zu einem Füller gepumpt. Flaschen werden gefüllt, verschlossen, etikettiert und geprüft, in Sechserpacks verpackt, von einem Roboter auf Paletten gestapelt, gewickelt und von einem fahrerlosen Stapler zur Rampe gebracht. Jede Maschine hat ihre eigene Steuerung; die Anlagensteuerung entscheidet, wann jede laufen darf, übergibt die Arbeit von einer zur nächsten und stoppt alles sicher.

  1. BatchMischen und pasteurisieren
  2. FillFüllen, verschließen, etikettieren
  3. PrüfenSchlechte Flaschen ausschleusen
  4. VerpackenRoboter stapelt PacksDu bist hier
  5. VersendenWickeln, FTF zur Rampe
In einer echten Anlage: Orte, Teile und Sicherheit
  • Abfüllhallen für Erfrischungsgetränke und Säfte
  • Betriebe für Soßen, Molkereiprodukte und flüssige Lebensmittel
  • Flüssige Haushalts- und Körperpflegeprodukte

Ein Not-Halt ist über ein Sicherheitsrelais verdrahtet, das die Energie selbstständig abschaltet. Das Programm muss dann alles aus halten und auf ein bewusstes Reset und Start warten, damit sich nichts überraschend bewegt.

Roboterzellen sind umzäunt. Lichtvorhänge und verriegelte Türen stoppen den Roboter, wenn jemand hineingeht, und ein Wiederanlauf braucht ein Reset von außerhalb der Zelle, im Sinne von ISO 10218 und ISO 13849.

Die Größen, Zeiten und Schnittansichten sind didaktische Entscheidungen, keine Zeichnung einer bestimmten echten Anlage.

Mach weiter

Als Nächstes auf dem Weg