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.
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:
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.