TIA FUP Logik mit RS FlipFlop funktioniert nicht wie erwartet

wolfgang_m

Level-2
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Folgende Logik sollte realisiert werden:

Das FlipFlop setzt einen Mode aktiv oder inaktiv.
Wenn der Taster (positive Flanke) gesetzt wird, wenn der Mode noch nicht aktiv ist, so wird über den Set-Eingang der Mode gesetzt (1).
Wenn der Taster (positive Flanke) gesetzt wird, wenn der Mode bereits aktiv ist, so wird über den Reset-Eingang der Mode rückgesetzt (0).

Wenn ich durch Forcen meines Tasters das RS-Flipflop einmal auf 1 gesetzt habe, schaffe ich es in der Folge nicht mehr durch erneutes Forcen des Eingangs auf 1 den Mode wieder rückzusetzen. Der Mode bleibt dann immer auf 1.

Wieso funktioniert meine Logik so nicht?
 

Anhänge

  • 2021-07-27 09 14 41 Screenshot.png
    2021-07-27 09 14 41 Screenshot.png
    15,7 KB · Aufrufe: 239
Hi,
das ist ein Zyklusproblem.
Beide Flanken werden ausgeführt und es wird in einem Zyklus zunächst dein Merker rückgesetzt und dann gleich wieder gesetzt.
Einfache Abhilfe wäre eine Zeitverzögerung (TON) vor dem Merker (UN M0.2) zu setzen, da reicht ca 200ms aus.

Gruß
Move
 
Wenn man es denn unbedingt so umständlich machen will, dann muß man (zumindest im unteren S1-Pfad, schöner: in beiden Pfaden) das UND mit dem Zustand des "%M0.2 ModeHeizen" VOR dem Netzwerk verknüpfen - also vor dem Netzwerk den Zustand des %M0.2 in ein Hilfs-Bool kopieren (merken) und dann dieses Hilfs-Bool beim UND verknüpfen. :cool:
Bei dem gezeigten Programm schaltet der Taster zunächst im oberen Pfad das RS-FF Aus oder läßt es Aus (%M0.2 wird/ist 0) und danach im unteren Zweig wird festgestellt, daß %M0.2 jetzt 0 ist und das UND lässt den Taster durch und das RS-FF schaltet Ein (%M0.2 wird 1). ---> Das RS-FF kann so nicht ausgeschaltet werden.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei dem gezeigten Programm schaltet der Taster zunächst im oberen Pfad das RS-FF Aus oder läßt es Aus (%M0.2 wird/ist 0) und danach im unteren Zweig wird festgestellt, daß %M0.2 jetzt 0 ist und das UND lässt den Taster durch und das RS-FF schaltet Ein (%M0.2 wird 1). ---> Das RS-FF kann so nicht ausgeschaltet werden.
Wieder was gelernt, ich hätte gedacht das Netzwerk wird von links nach rechts ausgeführt und der RS-Teil als letztes.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wieder was gelernt, ich hätte gedacht das Netzwerk wird von links nach rechts ausgeführt und der RS-Teil als letztes.
Im Prinzip ja, aber den RS-Teil gibt es gar nicht. Er ist zusammengesetzt aus einem R-Teil und einem S-Teil und der R-Teil wird vor dem S-Teil ausgeführt. Wurde der R-Teil ausgeführt, so ändert dies den Zustand von M0.2 und der S-Teil arbeitet dann mit dem aktuellen Zustand von M0.2 statt mit dem vorherigen, den der Programmierer gemeint hat.
Das sind die Tücken von FUP, die man erst sieht, wenn man die AWL-Variante oder die KOP-Variante sieht.
Die FUP-Variante mag zwar "augenfreundlicher" aussehen, kaschiert aber, was wirklich passiert.
 
Hallo und Danke! an ALLE die so schnell die Ursache meiner Problemstellung gefunden haben. Tolle Community hier !!!

Prinzipiell war es für mein Verständnis wichtig zu erfahren, daß die beiden Zweige meiner Logik nacheinander ausgeführt werden.
Also zuerst oben der Zweig, der auf den R-Eingang des RS geht.
Dass die Abarbeitung des oberen Zweigs schon zum ersten Setzen des RS führt (Reset in dem Fall).
Dass dann der untere Zweig ausgeführt wird und hier schon der neue Zustand des RS schlagend wird, was dann zum erneuten Set führt.

Habe zum Verständnis mal die komplizierte Variante laut
Wenn man es denn unbedingt so umständlich machen will, dann muß man (zumindest im unteren S1-Pfad, schöner: in beiden Pfaden) das UND mit dem Zustand des "%M0.2 ModeHeizen" VOR dem Netzwerk verknüpfen - also vor dem Netzwerk den Zustand des %M0.2 in ein Hilfs-Bool kopieren (merken) und dann dieses Hilfs-Bool beim UND verknüpfen. :cool:
Bei dem gezeigten Programm schaltet der Taster zunächst im oberen Pfad das RS-FF Aus oder läßt es Aus (%M0.2 wird/ist 0) und danach im unteren Zweig wird festgestellt, daß %M0.2 jetzt 0 ist und das UND lässt den Taster durch und das RS-FF schaltet Ein (%M0.2 wird 1). ---> Das RS-FF kann so nicht ausgeschaltet werden.

Harald
umgesetzt, funktioniert soweit.

In der Folge möchte ich das dann auf die eleganter XOR-Variante umbauen.

Danke an ALLE!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Prinzipiell war es für mein Verständnis wichtig zu erfahren, daß die beiden Zweige meiner Logik nacheinander ausgeführt werden.
Das ist nicht nur Dein VerständnisProblem. Darauf ist wohl schon jeder mal hereingefallen, der in FUP programmiert (bei der FUP-Version der LOGO! ist das allerdings anders/besser/verständlicher gelöst).
Das eigentliche Problem ist, dass die CPU immer alles nacheinander abarbeitet, auch das, was scheinbar "gleichzeitig" abläuft.
 
irgendwo gabs da auch noch nen Bug, wo dann eigentlich niemand mehr wusste, in welcher Reihenfolge das jetzt abgearbeitet wird. Find den eitrag aber grad nicht...
Wenn man das RS-FF in einen FC steckt (R und S1 als FC-INPUT, das Merk-Bit natürlich als FC-IN_OUT) und anstatt dem RS-FF den FC aufruft, dann würde der Code funktionieren, weil da zunächst komplett alle Eingangsparameter berechnet und an den FC übergeben werden und erst danach der FC mit den Übergabeparametern aufgerufen wird. Wenn man aber im selben Netzwerk über ENO einen weiteren FC aufruft mit einem Ausgabewert des ersten FC, dann wird der zweite FC mit dem Ausgabewert von vor dem Aufruf des ersten FC gefüttert... siehe Bild

Harald
 

Anhänge

  • Bool-In_zweiter_Call.gif
    Bool-In_zweiter_Call.gif
    4,1 KB · Aufrufe: 31
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein!

Die einfache Abhilfe ist die Verwendung des Standard-Stromstoßschalters, wie ihn Manfred Stangl in der FAQ ausführlich beschrieben hat.
Deshalb haben Larry und ich auch darauf verwiesen.
;)
Hallo zusammen,
das XOR kann ich nicht in den normalen Anweisungen finden, nur als Byte, Word, DWord.
Ich wollte den Stromstoßschalter von Manfred Stangl verwenden.
Wie bekomme ich das?
Viele Grüße
 

Anhänge

  • xor.JPG
    xor.JPG
    6,7 KB · Aufrufe: 7
Hallo zusammen,
das XOR kann ich nicht in den normalen Anweisungen finden, nur als Byte, Word, DWord.
Ich wollte den Stromstoßschalter von Manfred Stangl verwenden.
Wie bekomme ich das?
Viele Grüße
Du wählst FUP als Bausteinsprache. Da wo du das binäre Und und auch das Oder findest, ist auch das XOR
 
Zurück
Oben