Steuerpult innen


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Ampelsteuerung

An einer Straßenkreuzung soll eine Ampelanlage aufgestellt werden. Die Steuerung der Ampel soll eine SPS übernehmen. Die Kreuzung besteht aus zwei Straßen. Zusätzlich werden zu Testzwecken in einer bestimmten Entfernung vor den Ampeln zwei Induktionsschlaufen in die Straßen eingelassen. Sobald die Steuerung, falls eine Ampel gerade auf „Gelb“ steht, ein Signal von der entsprechenden Induktionsschlaufe erhält, soll die Zeit für die gelbe Signalleuchte verlängert werden. Durch solche Maßnahmen soll der Straßenverkehr in Zukunft an dieser Kreuzung besser optimiert werden.

Ampelsteuerung Skizze


Lösung:

Der Lichtumschaltung der beiden Ampeln wird mit einer Case-Of-Anweisung organisiert. Jeder Schaltvorgang wird durch eine Nummer repräsentiert, die in der Variable "Schritt" enthalten ist.
In der Variable "Leuchten_Ein_Aus", die als Byte definiert ist, wird wiederum codiert, welche Leuchten in dem gegebenen Schaltvorgang zu schalten sind. Bit 0 steht z.B. für die grüne Leuchte, Bit 1 für die gelbe Leuchte (Straße 1) usw. Mit dem Wert 34 (binär 00100010) werden somit die gelbe Leuchte Straße 1 und die rote Leuchte Straße2 eingeschaltet.
Die komplette Codierung:

Leuchten_Ein_Aus := 33; // Grün – Rot
Leuchten_Ein_Aus := 34; // Gelb – Rot
Leuchten_Ein_Aus := 52; // Rot - Rot/Gelb
Leuchten_Ein_Aus := 12; // Rot – Grün
Leuchten_Ein_Aus := 20; // Rot – Gelb
Leuchten_Ein_Aus := 38; // Rot/Gelb - Rot

In jedem Schritt wird der Variable "Zeit" ein neuer Wert zugewiesen, der in den Zeitbaustein "Timer_Ampel" geladen wird. Meldet eine der Induktionsschlaufen ein Fahrzeug, wird die vorgegebene Zeit mit einem neuen Zeitwert überschrieben und erneut in den Timer geladen.

Programm:

PLC Variablen


Variablen

Variablen (Funktionsbaustein FB)

CASE #Schritt OF
1:
#Leuchten_Ein_Aus := 33;
#Zeit := 7000;
2:
#Leuchten_Ein_Aus := 34;
#Zeit := 3000;
IF "Induktionschlaufe_1" OR #Auto_bei_Gelb THEN
#Auto_bei_Gelb := TRUE;
#Zeit := 5000;
PRESET_TIMER(PT := #Zeit, TIMER := "Timer_Ampel");
END_IF;
3:
#Leuchten_Ein_Aus := 52;
#Zeit := 3000;
4:
#Leuchten_Ein_Aus := 12;
#Zeit := 7000;
5:
#Leuchten_Ein_Aus := 20;
#Zeit := 3000;
IF "Induktionschlaufe_2" OR #Auto_bei_Gelb THEN
#Auto_bei_Gelb := TRUE;
#Zeit := 5000;
PRESET_TIMER(PT := #Zeit, TIMER := "Timer_Ampel");
END_IF;
6:
#Leuchten_Ein_Aus := 38;
#Zeit := 3000;
END_CASE;

#Timer_Start := NOT #Timer_läuft;
"Timer_Ampel".TP(IN := #Timer_Start,
PT := #Zeit,
Q => #Timer_läuft,
ET => #t_ist);

"Timer_Negative_Flanke"(CLK:=#Timer_läuft,
Q=>#Timer_Flanke);

IF #Timer_Flanke THEN
#Schritt += 1;
IF #Schritt > 6 THEN
#Schritt := 1;
END_IF;
#Auto_bei_Gelb := FALSE;
END_IF;

"Grün_Strasse_1" := #Leuchten_Ein_Aus.%X0;
"Gelb_Strasse_1" := #Leuchten_Ein_Aus.%X1;
"Rot_Strasse_1" := #Leuchten_Ein_Aus.%X2;
"Grün_Strasse_2" := #Leuchten_Ein_Aus.%X3;
"Gelb_Strasse_2" := #Leuchten_Ein_Aus.%X4;
"Rot_Strasse_2" := #Leuchten_Ein_Aus.%X5;

So funktioniert es:


S7-Programmierung TIA-Portal (Übersicht):




Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz