# Lampe tasten



## andy11 (28 Februar 2010)

Wenn ich auf einen Taster drücke soll die Lampe einschalten und wenn ich nochmal draufdrücke soll sie wieder ausgehen

Wie in aller Welt kann man sowas mit Logik realisieren??
Wie kann man das ohne Timer machen?

Das ganze möchte ich in Kop machen in B&R Automation Studio


----------



## mikep (28 Februar 2010)

http://www.sps-forum.de/showthread.php?t=33637&highlight=XOR


----------



## Oberchefe (1 März 2010)

beispielsweise so (wichtig ist hier die Reihenfolge der Netzwerke):


----------



## MasterOhh (1 März 2010)

Kurz in ST

```
Taster AT%I* :BOOL;
Licht AT%Q* :BOOL;
Flanke: R_Trig;

Flanke(CLK:=Taster);
IF Flanke.Q THEN 
    Licht:=NOT Licht;
END_IF
```
Mit dem Trigger R_Trig detektierst du steigende Flanken von deinem Taster. Wenn der Taster gedrückt wird, negierst du einfach den Zustand deiner Lampe.  AN => AUS .... AUS=>AN
Dadurch das nur die Flanke ausgewertet wird, schaltet dein Licht nicht ständig an und aus wenn der Taster gedrückt gehalten wird. 
Man muss ihn erst loslassen und neu drücken.



Sorry, hab überlesen das du die Logik in KOP realisieren willst


----------



## andy11 (2 März 2010)

zwar hab ich es noch nicht ganz überrissen aber ich bin schon nahe drann dank euch
thx leute


----------



## asci25 (2 März 2010)

*Das ist die einfachste Möglichkeit*

So etwa ....


----------



## andy11 (7 März 2010)

ich habe es so wie im folgenden Bild versucht mit dem ABB Programm zu lösen aber es scheint nicht zu funktionieren.


----------



## andy11 (7 März 2010)

wie kann ich beim ABB Programm eine positive/negative Flanke abfragen?


----------



## zotos (7 März 2010)

andy11 schrieb:


> wie kann ich beim ABB Programm eine positive/negative Flanke abfragen?




R_TRIG (steigende Flanke)
F_TRIG (fallende Flanke)

Um den Ausgang abzufragen Instanzname.Q

Im Anhang mal ein Beispiel


----------



## andy11 (7 März 2010)

was macht das XOR?
ich versteh das ganze nicht, in B&R muss man da nur ein p oder n Kontakt hingeben, wieso sind 2 KOP's so unterschiedlich?


----------



## zotos (7 März 2010)

andy11 schrieb:


> was macht das XOR?
> ich versteh das ganze nicht, in B&R muss man da nur ein p oder n Kontakt hingeben, wieso sind 2 KOP's so unterschiedlich?



Mein Beispiel im Bild ist eh unschön auch wenn es seltsamerweise Funktioniert (ich habe mit KOP nicht viel am Hut). Das XOR sollte lieber in ein eigenes Netzwerk darunter verfrachtet werden.


Nun zu Deiner Frage XOR ist eine Exklusiv oder der Ausgang eines XORs ist nur dann TRUE wenn Exakt ein Eingang True ist. Wenn mehr oder weniger Eingänge True sind ist der Ausgang False.


----------



## Oberchefe (7 März 2010)

> ich habe es so wie im folgenden Bild versucht mit dem ABB Programm zu lösen aber es scheint nicht zu funktionieren.


Logisch, die Lampe bleibt immer aus. Warum programmierst Du nicht einfach so wie man es Dir vorschlägt?
Und damit Du nicht dumm sterben mußt, erklären wir mal kurz warum es nicht funktioniert:
Im zweiten Netzwerk wird bei der steigenden Flanke des Tasters die Lampe eingeschaltet falls sie noch aus ist. Jetzt kommt aber das dritte Netzwerk zum Zuge, hier wird wieder der Taster abgefragt, die Lampe wurde aber eins drüber eingeschaltet, demzufolge ist die Bedingung auch wahr und die Lampe wird gleich wieder ausgeschaltet. Nicht umsonst habe ich im obigen Vorschlag einen Hilfsmerker verwendet. Er hat zur Aufgabe sich zu merken daß die Lampe eben noch aus war und demzufolge wird in meinem Beispiel die Lampe eingeschaltet und bleibt ein.
Der Hilfsmerker für den Taster macht im Prinzip nichts anderes als Deine Funktionen zur Flankenbildung, nur daß es diese nicht unbedingt so bei jedem Hersteller gibt.


----------



## andy11 (7 März 2010)

ok danke dir einmal da hast du recht, ich bin aber auch dann selber draufkommen, jetzt habe ich aber sowas ähnliches wie du gemacht funktioniert aber trotzdem nicht, was mache ich aber falsch``??


----------



## zotos (7 März 2010)

Wie wäre es wenn Du mal ganz einfach die Lösung von Oberchefe nach malen würdest? 

Alternativ hätte ich auch noch eine Lösung im Anhang die man auch nach malen kann.


----------



## andy11 (7 März 2010)

das Problem ist, dass ich ja schon eine Idee habe und ich nur ungern über anderer Lösungen zugreife, da ich später im Job auch auf mich selbst gestellt bin, jetzt ist noch meine Lernphase, ich bin jetzt zwar schon 4.HTL aber bisher habe ich nur in FUP programmiert und dieses Kop macht mich echt fertig, also bitte helft mir mit meiner Idee und bitte erklärts ihr Spezialisten wieso es nicht so hinhaut wie es sollte

lg andy


----------



## zotos (7 März 2010)

andy11 schrieb:


> das Problem ist, dass ich ja schon eine Idee habe und ich nur ungern über anderer Lösungen zugreife...



Warum Deine Lösung nicht funktioniert ist mir schon klar. Nur wie soll ich Dir das erklären?

Wenn Dein Netzwerk 2 den Zustand hat das der Ausgang gesetzt wird ist die Bedingung eben automatisch (einen Zyklus später) auch im Netzwerk 3 erfüllt die den Ausgang wieder zurücksetzt.


----------



## andy11 (7 März 2010)

> Wenn Dein Netzwerk 2 den Zustand hat das der Ausgang gesetzt wird ist die Bedingung eben automatisch auch im Netzwerk 3 erfüllt die den Ausgang wieder zurücksetzt.


Nein das stimmt nicht, denn ich setze ja Zustand zurück, somit kann die erfüllung der Bedinguing im 3ten Netzwerk nicht geschehen

aber es funzt trotzdem nicht

lg andy


----------



## Oberchefe (7 März 2010)

> erklärts ihr Spezialisten wieso es nicht so hinhaut wie es sollte



Ganz einfach,
nehmen wir mal an der Ausgang war vorher aus, mit dem Taster wird in NW1 "Zustand" auf 1 gesetzt, in NW2 gibt es folglich eine steigende Flanke, der Ausgang wird auf 1 gesetzt, das Bit Zustand zu 0. Jetzt kommen wir in NW3, "Zustand" ist jetzt 0, der Rest wird nicht abgearbeitet.
Zweiter Programmdurchlauf, Taster immer noch gedrückt. In NW1 wird Zustand wieder zu 1. In NW2 passiert nichts (der Ausgang von R_TRIG wird zu 0 da der Eingangspfad im vorhergehenden Durchlauf bereits 1 war).
Jetzt kommt aber NW2. Da war im vorhergehenden Durchlauf das Bit "Zustand" 0, daher wird mit R_TRIG eine steigende Flanke gesetzt, der Ausgang ist ja mittlerweile 1 und wird daher wieder auf 0 gesetzt. Wird der Taster jetzt losgelassen bleibt der Ausgang aus.


----------



## zotos (7 März 2010)

andy11 schrieb:


> Nein das stimmt nicht, denn ich setze ja Zustand zurück, somit kann die erfüllung der Bedinguing im 3ten Netzwerk nicht geschehen
> 
> aber es funzt trotzdem nicht
> 
> lg andy


Ich habe den Fehler in der Beschreibung auch bemerkt und vorhin schon einen Zyklus später ergänzt. 

Das Netzwerk 3 ist deshalb erfüllt weil Dein Taster ja die Variable "Zustand" wieder setzt.

Wenn man Dein Beispiel anpasst das es geht hat es nicht mehr viel mit dem Ansatz zu tun.

Siehe Anhang mit Lösung 3, 4 oder 5?


----------



## andy11 (7 März 2010)

das hast du fantastisch erklärt und jetzt weiß ich auch was du meinst.
Jedoch haben wir das im Werkstättenlabor !sehhr! ähnlich gelöst und mit dem selben denkansatz, das kann doch nicht so falsch sein was ich gemacht hab, da fehlt bstimmt nur eine Kleinigkeit, aber ich schau mir mal eure Beispiele an obwohl ich komme mit Ideen anderer wie schon gesagt nicht gut zurecht
danke euch


----------



## andy11 (7 März 2010)

> Siehe Anhang mit Lösung 3, 4 oder 5?


Aber wiesssoooo funktioniert das, du setzt ja überhaupt nichts und er behält trotzdem den Zustand und im ABB kann man das nicht sorecht nachvollziehen

wie kommst du auf die Lösung, die Gedankensschritte wären ideal

außerdem einen nachteil hat es halt, dass ich mit einem Taster nicht mehrere Variablen setzen/Rücksetzen kann

lg andy


----------



## zotos (7 März 2010)

andy11 schrieb:


> Aber wiesssoooo funktioniert das, du setzt ja überhaupt nichts und er behält trotzdem den Zustand...



Das "böse" Wort das dies erklärt heißt: Selbsthaltung

Wenn der Ausgang da ist und keine Flanke ("Zustand") dazu kommt sorgt er selbst dafür das er da bleibt.


----------



## andy11 (7 März 2010)

ja stimmt danke, das haut hin

lg andy


----------



## zotos (7 März 2010)

Nebenbei das ist die klassische Schulungsaufgabe schlecht hin und es wurden sicher aber Tausend verschiedene Lösungen dafür erfunden.


----------

