Stromstoßschalter

Manfred Stangl

Level-1
Beiträge
944
Reaktionspunkte
174
Zuviel Werbung?
-> Hier kostenlos registrieren
Der viel gefragte Stromstoß – Schalter:
Auch bekannt als:
Ausgang über einen Eingang setzen und rücksetzen.


Gleich vorweg für die Anfänger: Es geht in allen Darstellungsarten:
FUP -> Funktionsplan
AWL -> Anweisungsliste
KOP -> Kontaktplan


In KOP:

Code:
Netzwerk 1: Flanke generieren
|  #Eingang    #Flankenmerker    #Temp
+----| |----------( P )-----------( )----|
|
 
Netzwerk 2: Ausgang zuweisen
|   #Temp       #Ausgang        #Ausgang
+----| |----------| / |-----+-----( )----|
|                           |
|   #Temp       #Ausgang    |
+---| / |----------| |------+
|
In FUP siehts wie folgt aus:

attachment.php


In AWL (von Oben, nur die Darstellung geändert) so:
Code:
X(
U #Eingang
FP #Flankenmerker
)
X #Ausgang
= # Ausgang
In AWL geht´s auch so:
Code:
U #Eingang
FP #Flankenmerker
X #Ausgang
= #Ausgang
Wenn man das als eigenständige Funktion anlegen will, muss man den Flankenmerker mit in die FC übergeben. Natürlich jedes Mal einen anderen.
In einer FB kann es ein Merker aus dem statischen Bereich sein, da der FB jedes Mal einen anderen Instanz-DB bekommt.


Dass es so schlank und elegant geht, ist durch die zyklische Abarbeitung des Anwenderprogramms möglich.
Wer wissen will, was die „zyklische Bearbeitung“ ist, öffne bitte seinen SIMATIC Manager, markiere in einem Projekt den OB1 und drücke F1.
Anhand der Darstellung in AWL will ich mal erklären wie das funktioniert.


Beim betätigen des Eingangs zu irgendeinem Zeitpunkt, kann der Programmablauf irgendwo sein. Dadurch, dass wir mit Prozessabbildern arbeiten, werden zu Beginn des Zyklus alle Eingänge eingelesen und im ProzessEingangsAbbild abgelegt.
Nun ist der Eingang HI. Durch die FP (positive Flankenerkennung) kann man den Eingang so lange auf HI halten wie man will, die FP wir nur EINEN Zyklus lang HI sein.
Jetzt kommt das Exklusiv – Oder zum Einsatz.
Ein kurzer Exkurs zum Exklusiv – Oder, auch XOR genannt:


Die Wahrheitstabelle eines XOR mit 2 Eingängen sieht wie folgt aus:
Code:
A  B  X
0  0  0
1  0  1
0  1  1
1  1  0
Die Aussage dieses Beispiels ist:
Wenn genau EIN Eingang HI ist, ist auch der Ausgang HI.
Ein Kollege hier hat mal gefragt, ab man XOR kaskadieren kann.
Ja man kann. So kommt man zur Erkenntnis, dass der Ausgang immer dann HI ist, wenn eine ungerade Anzahl der Eingänge HI ist.
So, da der Sinn eines Exkurses der ist, dass man nach selbigem wieder zum ursprünglichen Thema zurückkehrt, will ich das jetzt auch tun.
Nachdem wir jetzt wissen, wie ein XOR funktioniert, wird die ganze Sache schon mal leichter.
Die oben erwähnte FP ist jetzt für einen Zyklus HI, der zugewiesene (=) #Ausgang ist momentan noch LO.
Da aber genau in diesem Moment (NUR in diesem Zyklus) am XOR eine ungerade Anzahl an Eingängen HI ist, wird gemäß der Wahrheitstabelle der Ausgang am XOR HI.
Also auch der zugewiesene #Ausgang. (eigentlich noch nicht, er wird nur hochohmig, HI wird er erst bei der Beschreibung des ProzessAusgangsAbbilds).
So nun sind wir die paar Zeilen das erste Mal durch. Der OB1 arbeitet sich weiter bis zur letzten Anweisung im Anwenderprogramm.
Nun wird das PAA, das ProzessAusgangsAbbild beschrieben (bei älteren CPU wars so, bei neueren wird es nach dem lesen des PEA gebildet).
Jetzt wird der #Ausgang HI geschaltet.
Was passiert jetzt?
Der OB1 beginnt von der ersten Anweisung an abgearbeitet zu werden.
Wenn man den Taster noch immer betätigt hat (was, wenn nur dieses Progrämmchen in der CPU ist, sehr wahrscheinlich ist, da die Zykluszeit < 1ms sein wird), kommt die FP ins Spiel. Diese Flankenerkennung ist nun nicht mehr HI. ABER der Ausgang ist HI. Also haben wir wieder eine ungerade Anzahl an Eingängen am XOR. Somit ist die Bedingung für ein HI am Ausgang des XOR erfüllt. Der Ausgang A1.0 bleibt HI.
Wenn man nun den Taster loslässt passiert nix, da wir nicht auf eine negative Flanke (FN) abfragen.
Nun kommt die letzte Zeile der Wahrheitstabelle zu ihrem Recht:
Drückt man nun den Taster am Eingang erneut, wird die FP wieder für einen Zyklus HI.
Nun haben wir am XOR zwei Eingänge die HI sind, also schaltet das XOR aus, und somit auch den #Ausgang.
 

Anhänge

  • xor.jpg
    xor.jpg
    11,2 KB · Aufrufe: 5.953
Zuletzt bearbeitet von einem Moderator:
Für RN: Erweiterung FAQ Stromstossschalter

Der Stromstossschalter lässt sich auch mit Eingängen für gezieltes Ein- bzw. Ausschalten erweitern, z.B. für Zentralfunktionen.
Für das Einschalten wird ein ODER und für das Ausschalten ein UND mit dem negierten Eingang angehangen.
Die Reihenfolge von ODER und UND bestimmt die Dominanz bei gleichzeitigen Signalen, die immer bei der letzten Verknüpfung liegt.


In AWL sieht das Ganze dann wie folgt aus (Rücksetzen dominant):
Code:
U  #Eingang
FP #Flankenmerker
X  #Ausgang
O  #Setzen
UN #Rücksetzen
=  #Ausgang

und in FUP (auch Rücksetzen dominant):
Code:
     #Flankenmerker
         +-----+   +-----+
         |  P  |   | XOR |
#Eingang-|     |---|     |
         +-----+   |     |   +-----+
                   |     |   | >=1 |
          #Ausgang-|     |---|     |
                   +-----+   |     | 
                             |     |   +-----+
                     #Setzen-|     |---|  &  |
                             +-----+   |     |   #Ausgang
                                       |     |   +-------+
                         #Rücksetzen -o|     |---|   =   |
                                       +-----+   +-------+

und in KOP (zur Abwechslung mal Setzen dominant):
Code:
Netzwerk 1: Flanke generieren
|  #Eingang    #Flankenmerker    #Temp
+----| |----------( P )-----------( )----|
|
 
Netzwerk 2: Ausgang umschalten
|   #Temp       #Ausgang        #Ausgang
+----| |----------| / |-----+-----( )----|
|                           |
|   #Temp       #Ausgang    |
+---| / |----------| |------+
|

Netzwerk 3: Ausgang rücksetzen
| #Rücksetzen    #Ausgang     #Ausgang
+---| / |----------| |----------( )----|
|

Netzwerk 4: Ausgang setzen
|  #Setzen       #Ausgang
+----| |-----+-----( )----|
|            |
|  #Ausgang  |
+----| |-----+
|
 
Zurück
Oben