Zustandswechsel in FUP

Raubera

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe eine grundlegende Frage zur FUP Programmierung. Wie wird in FUP ein Zustandsgraph realisiert?
Ich bekomme es nicht einmal hin, vernünftig mit einem Taster zwischen 2 Zuständen hin und herzuspringen (Taster drücken = Zustand 2, Taster erneut drücken = wieder Zustand 1 usw.)
In der Hochsprache ist das für mich mit einem Case relativ simpel. Jedoch verzweifel ich in FUP daran, was mir schon fast peinlich ist...

Vielen Dank euch

mfg Karl
 
Ach sorry hab gerade nochmal geguckt. Hatte meinen Baustein noch verändert und hab es intern über ST gemacht.
Code:
R_TRIG_1(CLK:=IN);

IF R_TRIG_1.Q THEN
    IF OUT THEN
        OUT := FALSE;
    ELSE
        OUT := TRUE;
    END_IF;
END_IF;

IF RESET THEN
    OUT := FALSE;
END_IF;

Und OUT ist Remanent. Mit XOR hatte ich es damals auch probiert, aber irgendwas ging nicht. Schon Jahre her.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank einmal bis hier hin. Hat super funktioniert nur stehe ich noch vor einem anderen Problem.

Ich würde das Ganze gerne 2x aufbauen und gegenseitig verriegeln.

Sprich Taster von Fkt.1 drücken = Fkt. 1 ZS 2
Sollte nun jedoch der Taster von Fkt.2 gedrückt werden, sollte die Fkt. 2 in ZS 2 springen und die Fkt. 1 aber wieder in ZS 1 wechseln.
 
Das ist keine Verriegelung. Du musst nur mit dem jeweiligen Taster den gegenseitigen Baustein zurücksetzen. Was meinst du mit Zustand 1 und 2? Sind das Integer und doch kein Bool?
 
War bisschen dumm erklärt aber habe es nun genau so hinbekommen, wie ich es wollte.
Nie gedacht, dass Fup komplizierter ist als Hochsprachenprogrammierung.

Besten Dank euch allen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
R_TRIG_1(CLK:=IN);

IF R_TRIG_1.Q THEN
    IF OUT THEN
         ....
Warum muss das immer mit m.M.n. umständlichen IF-THEN...Gebilden gemacht werden (deswegen mag ich's auch nicht komplett quoten), wo auch 'ne einfache Zuweisung reicht:
Code:
R_TRIG_1(CLK:=IN);

IF R_TRIG_1.Q THEN
     OUT := NOT OUT;
END_IF;
...
In FUP würde man doch auch keine Sprungbefehle einfügen, wo's 'ne Zuweisung ebenso tut.
:confused:
 
Zurück
Oben