eigentlich doch flip/flop - oder?

xinix

Level-1
Beiträge
46
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

hänge hier bei meinen vorhaben in ST irgendwie fest.... ich benötige nach jedem 2. TRUE am Eingang ein TRUE am Ausgang für die gleiche Zeit wie der Eingagn TRUE ist....

das wäre doch eigenlich ein SR oder RS (FlipFlop) - aber wie?

Bitte um Denkanstoss... Danke!
 
Wie wäre es wenn du mit deinem Eingang einen Zähler hoch zählst. Wenn der Wert gerade ist, setzt du deinen Eingang und wenn der Wert ungerade ist, setzt du ihn wieder zurück.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
AWL auf die schnelle

Code:
U     "Start-Impuls"
UN    "FFHelp"
S     "FlipFlop"
U     "Start-Impuls"
U     "FFHelp"
R     "FlipFlop"

UN    "Start-Impuls"
U     "FlipFlop"
S     ""FFHelp"
UN    "Start-Impuls"
UN    "FlipFlop"
R     ""FFHelp"
 
Das Beispiel von Verpolt scheint wohl brauchbar, ich lese flipflop - jedoch verstehe ich nicht's!
Ich fang doch gerade erst mit ST an, Bei AWL bin ich noch nicht angekommen... Deshalb bringt mir das nicht's.

An das Beispiel mit dem Zähler hatte ich auch gedacht, jedoch haperst an der Umsetzung....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier eine von vielen möglichen Lösungen:
Code:
IF mySignal AND NOT mySignalOld THEN
    IF myFlag THEN
        myOut := TRUE;
        myFlag := FALSE;
    ELSE
        myFlag := TRUE;
    END_IF;
END_IF;

mySignalOld := mySignal;

IF NOT mySignal THEN
    myOut := FALSE;
END_IF;


Fragen?
 
Hier noch eine weniger verschachtelte Version:
Code:
IF mySignal AND NOT mySignalOld THEN
    myFlag := NOT myFlag;
END_IF;

myOut := mySignal AND NOT myFlag;

mySignalOld := mySignal;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und zur Abwechslung mal was ohne IF THEN :)

Code:
(* Pos. Flanke  Eingang*)
xEingang_FP := xEingang AND NOT xEingang_Old;
xEingang_Old := xEingang;

(* Takt *)
xTakt := xEingang_FP XOR xTakt;

(* Ansteuerung Ausgang *)
xAusgang := xEingang AND xTakt;


Gruß
Dieter
 
Und hier noch eine CASE OF-Variante, aber nur als Fun zum Feierabend.
Code:
CASE bStatus of
   16#00: bStatus.0:=xEingang;
   16#01: bStatus.1:=NOT xEingang;
   16#03: bStatus.2:=xEingang;
   16#07: bStatus:=BOOL_TO_BYTE(xEingang)*7;
END_CASE;

xAusgang:=bStatus.2;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du machst deinem Namen alle Ehre *LOL*
Irgendwoher muss er ja kommen, der Name. ;)
Aber sind wir nicht alle ein bisschen flip-flop?

Das Thema war ja schon durch. Alle ernsthaften Varianten waren genannt, und der TE hat eine gefunden, mit der er zufrieden ist. Da kann man so was schon mal bringen, oder?
 
Zurück
Oben