Sieben Segment Anzeige


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Sicherheitsschloss

Ein Sicherheitsschloss darf nur dann geöffnet werden, wenn fünf Tasten eines 8-Tasten-Eingabefeldes in der richtigen Reihenfolge betätigt werden. Die richtige Tastenfolge ist: Taste2-Taste4-Taste1-Taste3-Taste7. Sobald die richtige Folge eingegeben wurde, soll die Tür-Verriegelung für 5 Sek. gelöst werden und somit den Eintritt ermöglichen. Bei jeder Fehleingabe muss der gesamte Code erneut eingegeben werden. Darüber hinaus sollen alle Versuche gezählt werden. Erfolgt nach 10 Versuchen keine richtige Eingabe, soll das Schloss für eine bestimmte Zeit gesperrt werden. Nach Ablauf dieser Zeit sind weitere Eingaben wieder möglich. Für Betätigung einer Taste hat der Anwender 3 Sek. Zeit. Läuft die Zeit ab, muss der Code ebenfalls erneut eingegeben werden.


Lösung:

Die Tasten, die an die Eingänge E0.0 bis E0.7 angeschlossen sind, werden mit der Variable "Eingabe_Feld" erfasst. Wenn diese Variable länger als 3 Sek. den Wert 0 aufweist (keine Taste betätigt) wird der interne Schrittzähler zurückgesetzt. Somit müssen die Eingaben wiederholt werden.

Plc Variablen

PLC - Variablen

Variablen

Variablen (Funktionsbaustein FB)


Mit "Versuch_Nr" wird jede Betätigung einer Taste mitgezählt. Erreicht die Variable "Versuch_Nr" den Wert 10 wird die Auswertung der Eingaben für eine eingestellte Zeit komplett gesperrt. Nach Ablauf der Sperrzeit wird "Versuch_Nr" genullt.
Die Abfrage der Tasten erfolgt mit einer Case OF – Anweisung. Bei jeder richtigen Eingabe wird der Interner Zähler "Schritt" erhöht, bis der richtige Code erreicht ist. In dem Fall wird die Tür-Verriegelung für eine bestimmte Zeit gelöst und die Tür kann aufgemacht werden.

Programm:

// Keine Eingaben innerhalb vorgegebener Zeit = Zähler (Schritt) zurücksetzen

"IEC_Timer_0_DB_5".TON(IN:="Eingabe_Feld" = 0,
PT:=t#3s,
Q=>#Rücksetzen,
ET=>#t_ist);
IF #Rücksetzen THEN
#Schritt := 0;
END_IF;

// Zu viele falsche Versuche = Sperrung

"IEC_Timer_0_DB_6".TP(IN:=#Versuch_Nr = 10,
PT:=t#5s,
Q=>#Sperrung,
ET=>#t_ist);

// Die Variable "Versuch_Nr" wird dabei genullt

"R_TRIG_DB"(CLK:=#Sperrung, Q=>#Flanke_Versuche_Löschen);
IF #Flanke_Versuche_Löschen THEN
#Versuch_Nr := 0;
END_IF;

// Hauptprogramm.
// Sobald eine Taste gedrückt wird, beginnt die Untersuchung der Eingaben.
// Bei jeder richtigen Eingabe wird "Schritt" erhöht.
// Bei jeder falschen Eingabe wird "Versuch_Nr" erhöht.

"R_TRIG_DB_2"(CLK := "Eingabe_Feld" > 0, Q => #Flanke_Eingabe);
IF #Flanke_Eingabe AND NOT #Sperrung THEN
CASE #Schritt OF
0:
IF "Taste_2" THEN
#Schritt := 1;
ELSE
#Schritt := 0;
#Versuch_Nr += 1;
END_IF;
1:
IF "Taste_4" THEN
#Schritt := 2;
ELSE
#Schritt := 0;
#Versuch_Nr += 1;
END_IF;
2:
IF "Taste_1" THEN
#Schritt := 3;
ELSE
#Schritt := 0;
#Versuch_Nr += 1;
END_IF;
3:
IF "Taste_3" THEN
#Schritt := 4;
ELSE
#Schritt := 0;
#Versuch_Nr += 1;
END_IF;
4:
IF "Taste_7" THEN
#Schritt := 5;
#Code_OK := TRUE;
ELSE
#Schritt := 0;
#Versuch_Nr += 1;
END_IF;
END_CASE;
END_IF;

// Die richtige Reihenfolge wurde eingetippt. Verriegelung wird gelöst, die Tür geht auf.

"IEC_Timer_0_DB_3".TP(IN:=#Code_OK,
PT:=t#5s,
Q=>"Tür_Auf",
ET=>#t_ist);

// Währenddessen werden Variablen zurückgesetzt.

IF "Tür_Auf" THEN
#Code_OK := FALSE;
#Schritt := 0;
#Versuch_Nr := 0;
END_IF;


S7-Programmierung TIA-Portal (Übersicht):




Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz