# Positive Flanke in SCL



## onikos (7 Juli 2010)

Hallo

ich muss einen Motor ansteuern. Der reagiert nur auf eine positive flanke auf einem bestimmten Bit. Es soll nur ein beispielhafter Automatikmodus sein, d.h. Verfahrsatz 1 laden, impuls zum verfahren, sechs sekunden warten und verfahrsatz 2 laden, impuls zum verfahren, usw. 

Mein problem ist wie mache ich immer wieder eine positive Flanke auf das bit. 
mit bit aus und bit an klappt es nicht. Vielleicht weil es zu schnell ist und nicht erfasst wird, mache ich eine zeit dazwischen auch nicht.  




einfachste Programmierung

 IF oben THEN
            oben := FALSE;
            Verfahrsatz := geschwindigkeit_hoch;

 ELSIF NOT oben THEN 
            oben := True;
            Verfahrsatz := geschwindigkeit_runter;               
        END_IF;

    Fahrauftrag_aktivieren := True;

        WHILE NOT Sollposition_erreicht DO
              Fahrauftrag_aktivieren := True;
        END_WHILE;

   Fahrauftrag_aktivieren := False;




alle ideen sind herzlich willkommen 

danke


----------



## JesperMP (7 Juli 2010)

// impuls beim OFF-ON
onimp_input := input AND not mem_input ;
mem_input := input ;

// impuls beim ON-OFF
offimp_input := NOT input AND mem_input ;
mem_input := input ;

// impuls bei jeden OFF-ON oder ON-OFF transition
onoffimp_input := (input AND not mem_input) OR (NOT input AND mem_input) ;
mem_input := input ;


----------



## onikos (7 Juli 2010)

hey.. das war die schnellste antwort die ich je bekommen habe  

leider versteh ich das nicht ganz.. 

kannst du mir das freundlicherweise an einem beispiel zeigen  

bedankt.


----------



## JesperMP (7 Juli 2010)

Es gibt dir eine Impuls (_onimp_input_) bei den positive Flanke von _input_:
_mem_input_ speichert den Zustand für den Flankenerkennung.

// impuls beim OFF-ON
onimp_input := input AND not mem_input ;
mem_input := input ;


----------



## onikos (7 Juli 2010)

natürlich klappt das auch nicht.
mir fällt gerade ein, dass das nach dem durchgelaufen ja auch noch über  bausteine zum motor geschickt werden muss was aber im OB1 passiert. 

d.h. es muss einmal komplett mit Fahrauftrag_aktivieren:=false und mit Fahrauftrag_aktivieren:=true durchlaufen werden.

hm.. ich bin echt ideenlos


----------



## tschortscho51 (7 Juli 2010)

In meinen Programmen sieht dies (schematisch) so aus:

Impuls bei steigender Flanke des Signals "Input" für 1 Zykluszeit des SPS-Programmes.

"Pulse" := "Input" AND NOT "Flankenmerker";
"Flankenmerker" := "Input";

"Pulse" kann eine temporäre Variable sein, je nach Anwendung.
"Flankenmerker" *muss *eine statische Variable, Merker, DBX etc. sein.


----------



## Larry Laffer (8 Juli 2010)

Hallo,
ich arbeite bei so etwas grundsätzlich mit Feedbacks. Dieses Feddback wäre das Flankenbit, wie im Beispiel von Jesper. Du mußt es nur an der RICHTIGEN Stelle "setzen". Die Zuweisung des Verfahrsatzes, die du im OB1 (???) lädst, muß natürlich diese Flanke setzen.

Also in etwa so :
	
	



```
U #Verfahrsatz_laden
UN #Verfahrsatz_ist_geladen
SPBN nLod
 
call FB_zum_Laden
 
nLod: U #Verfahrsatz_laden
= #Verfahrsatz_ist_geladen
```
... oder wenn vorhanden die Rückmeldung des FB verwursten ...

Gruß
Larry


----------



## onikos (14 Juli 2010)

achso .. ok.. jetzt habe ichs.. 

Danke das klappt gut.

SUPER FORUM! ;-)


----------

