-> Hier kostenlos registrieren
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Wo siehst Du bei der Aufgabe ein IF/ELSE ???wie kann man so eine einfache If Else Funktion in FUP realisieren? Ich habe das Gefühl, dass ich gerade eine Grundlage der Sprache übersehe...
Wo siehst Du da ein "SR-RS Glied" ???SR-RS Glied
SCL:
GR_loc := Y_loc >= 22118 ;
FUP:
+-------+
| >= |
| INT | GR_loc
Y_loc--|IN1 | +-----+
22118--|IN2 |------| = |
+-------+ +-----+
wie kann man so eine einfache If Else Funktion in FUP realisieren?
Wie oben geschrieben, ist SR/RS fast mit einem If/Else vergleichbar. Mit dem Nachteil, dass SR/RS nicht threadsafe ist, d.h. die Variable darf nicht in einem anderen Interrupt (OB, Thread) oder bei den Siemens 1200/1500 in einem HMI verwendet werden, da dort auch der Zwischenzustand verwendet werden könnte.
"If Else" ist doch meist in SCL/ST schon nervig genug, da braucht man dass doch nicht noch 1:1 in FUP/KOP.
Und das nur, weil man keine Logik beherrscht.
![]()
Wie oben geschrieben, ist SR/RS fast mit einem If/Else vergleichbar.
Fast, weil es genaugenommen eben kein Else ist, sondern zwei Ifs.??? Wie meinst Du das, Thomas?
IF Y_loc >= 22118 THEN
GR_loc := TRUE;
ELSE
GR_loc := FALSE;
END IF;
Das wäre genau das, was ich hier meinte:@PN/DP Müsste das bei SCL nicht so aussehen?
Code:IF Y_loc >= 22118 THEN GR_loc := TRUE; ELSE GR_loc := FALSE; END IF;
"If Else" ist doch meist in SCL/ST schon nervig genug, ...
Und das nur, weil man keine Logik beherrscht.
Schau Dir mal die folgenden Variationen zu dem Thema an, wo Dein Lösungsweg Schritt für Schritt zunächst "verkompliziert", aber danach vereinfacht wird:Aber ich glaube dein Code impliziert schon das gleiche Ergebnis
// Variation 1 (mit abschliessendem END_IF ergänzt)
IF Y_loc >= 22118 THEN
GR_loc := TRUE ;
ELSE
GR_loc := FALSE ;
END_IF ;
// Variation 2 (Einführung der zusätzlichen/"überflüssigen" tempVarBool)
tempVarBool := Y_loc >= 22118 ;
IF tempVarBool THEN
GR_loc := TRUE ;
ELSE
GR_loc := FALSE ;
END_IF ;
// Variation3 (Eliminierung der überflüssigen IF-ELSE-Konstruktion)
tempVarBool := Y_loc >= 22118 ;
GR_loc := tempVarBool ;
// Variante 4 (Eliminierung der überflüssigen tempVarBool)
GR_loc := Y_loc >= 22118 ;
GR_loc := Y_loc >= 22118 ;
Da die Zeile zyklisch abgefragt wird, wechselt GR_loc automatisch auf true/false, wenn sich die Abfrage (Y_loc >= 22118) ändert.Glaubst Du noch oder verstehst und weisst danach schon, dass die direkte Zuweisung des VergleichsErgebnisses keine Zauberei ist, sondern genauso funktioniert, wie Du es beabsichtigst?
Tja, Mario, so ganz ohne Beherrschung der Logik geht es leider auch in der IF-ELSE-Variante nicht.
"If Else" ist doch meist in SCL/ST schon nervig genug, ...
Und das nur, weil man keine Logik beherrscht.
Zurück zum Thema dieses Threads "IF-ELSE-in-FUP":da braucht man dass doch nicht noch 1:1 in FUP/KOP.
Ja, vermutlich fehlts auch schonmal an den Kenntnissen über Datentypen überhaupt.Ich fürchte es scheitert eher daran, dass man - warum auch immer - davor zurückschreckt, das ZwischenErgebnis des Vergleichs, das ja nunmal vom Typ BOOL ist, direkt einer Variablen vom Typ BOOL zuzuweisen.
Man nehme 1 Relais mitWie baut man IF THEN ELSE eigentlich mit Relais![]()
Nein, ich möchte unbedingt sehen, wie Du den Zweig mit Deiner Else aufmalst.der ELSE-Zweig am ÖffnerKontakt. (Kann ich mir das Aufmalen sparen?)
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen