TIA TIA:SCL Bausteine verstehen, Teilweise in FUB umwandeln

Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab jetzt noch so einen Fall. Die ich gerne in FUB und AWL schreiben möchte.
Code:
//Wenn ausgewählt Start und Stopbefehle vom HMI empfangen
IF #Gewaehlt
THEN
    IF #Bereich."Aktiver Aktor"."Tipp vor" THEN
        #"Gestartet Hand Vor" := false;
        #"Gestartet Hand Rück" := false;
        #"Tippen Vor" := true;
    END_IF;
   
    IF #Bereich."Aktiver Aktor"."Tipp rück" THEN
        #"Gestartet Hand Vor" := false;
        #"Gestartet Hand Rück" := false;
        #"Tippen Rück" := true;
    END_IF;
 Hier sind alles BOOLs
   //Sollwerte begrenzen
    IF #Bereich."Aktiver Aktor".Parameter."Sollfrequenz Hand" > #Parameter.Maximalfrequenz
        AND #Parameter.Maximalfrequenz <> 0
    THEN
        #Bereich."Aktiver Aktor".Parameter."Sollfrequenz Hand" := #Parameter.Maximalfrequenz;
    END_IF;
Hier Int-Werte

END_IF
Wie kann ich die beiden IF_Anweisung trennen? Ich möchte hier wieder in FUB und AWL darstellen.

Ich hoffe auf euere Hilfe.

Gruß
wt15309
 
1625494765897.png
die If_Anweisung innerhalb IF-Funktion der würde ich so versuchen. Die anderen Anlog bis auf den Vergleich.
Könnte das Funktionieren?

Gruß
wt15309
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab jetzt noch so einen Fall. Die ich gerne in FUB und AWL schreiben möchte.

//Wenn ausgewählt Start und Stopbefehle vom HMI empfangen
IF #Gewaehlt
THEN
IF #Bereich."Aktiver Aktor"."Tipp vor" THEN
#"Gestartet Hand Vor" := false;
#"Gestartet Hand Rück" := false;
#"Tippen Vor" := true;
END_IF;

IF #Bereich."Aktiver Aktor"."Tipp rück" THEN
#"Gestartet Hand Vor" := false;
#"Gestartet Hand Rück" := false;
#"Tippen Rück" := true;
END_IF;
Hier sind alles BOOLs
//Sollwerte begrenzen
IF #Bereich."Aktiver Aktor".Parameter."Sollfrequenz Hand" > #Parameter.Maximalfrequenz
AND #Parameter.Maximalfrequenz <> 0
THEN
#Bereich."Aktiver Aktor".Parameter."Sollfrequenz Hand" := #Parameter.Maximalfrequenz;
END_IF;
Hier Int-Werte

END_IF

Wie kann ich die beiden IF_Anweisung trennen? Ich möchte hier wieder in FUB und AWL darstellen.

Ich hoffe auf euere Hilfe.

Gruß
wt15309


Wo wird #"Tippen Vor" und #"Tippen Rück" wieder auf FALSE gesetzt?

-chris
 
Guten Morgen,

ich muss gestehen ich hab hier nicht den gesamten Code gepostet, da es sehr ähnlich ist. Wie man sich vorstellen kann wird "Tippen Vor" und "Tippen Rück" mit der anwahl einer anderen Betriebsart zurückgesetzt.
Somit ist dies mein Fehler.
Ich will mich jetzt an die "Sollwerte Begrenzen" ranwagen. Für Tipps und Hilfe bin ich dankbar.

Gruß
WT15309
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo User,
kann man SCL-Code "Sollwerte begrenzen" so in FUB umschreiben?
Irgendwie gefällt mir das nicht so ganz, aber ist nur so ein Gefühl.

vielen Dank für das Feedback.

1625555939032.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit dem LIMIT-Baustein benötigst Du nur diesen einen Baustein für die Begrenzung nach oben und unten. Egal ob FUP oder SCL.
;)
Die Vorlage beinhaltet aber keine Begrenzung nach unten. Andererseits wird die Begrenzung unwirksam gemacht, wenn die Obergrenze 0 ist. Warum auch immer ...
 
Bitte fragt mich nicht um die Sinnhaftigkeit der Vorlage. Die Vorlage funktioniert, wenn man was verbessern könnte bin ich um jeden Tipp dankbar.

Was mir gar nicht gefällt sind die Hilfsmerker. Kann hier anderweitig auskommen? Solle Vergleiche gibt es ca. 15 Stk. innerhalb der IF_Anweisung 1. Das waren viele Merker. Vielleicht weiss jemand einen eleganteren Weg.

1625558650539.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was mir gar nicht gefällt sind die Hilfsmerker. Kann hier anderweitig auskommen? Solle Vergleiche gibt es ca. 15 Stk. innerhalb der IF_Anweisung 1. Das waren viele Merker.
Kann man die Ergebnisse der Vergleiche nicht direkt auf die UND-Verknüpfung verbinden, oder wenigstens einen davon? (Bin FUP-Laie und weiss es nicht besser).

Denkbar wäre ein "Recycling" der HilfsMerker ... aber die Methode, HilfsMerker mehrfach zu belegen, ist nicht übersichtlich und verleitet dazu, Fehler zu machen.
 
Vielen Dank für den Tipp. Das sieht schon besser aus.
Ich hoffe es funktioniert auch so.

Vielen Dank dafür. Der richtige Anstoss verleiht oft Flügel.😃

1625560830511.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau so ein Beispiel dient gut zur Veranschaulichung, warum für sowas FUP nicht so geeignet ist.
In SCL liest sich das viel eleganter und leichter:
Code:
IF Gewaehlt AND Sollfrequenz > Maximalfrequenz AND Maximalfrequenz <> 0.0 THEN
       Sollfrequenz := Maximalfrequenz;
END_IF;

Mit Klammerung ist es sogar lesbarer, auch wenn sie syntaktisch nicht notwendig ist:
Code:
IF Gewaehlt AND (Sollfrequenz > Maximalfrequenz) AND (Maximalfrequenz <> 0.0) THEN
       Sollfrequenz := Maximalfrequenz;
END_IF;

FUP ist was für binäre Logiken und weniger gut, um analoge Werte zu bearbeiten.

(P.S.: Bitte schreib FUP, das steht für "FunktionsPlan" ;))
 
Zuletzt bearbeitet:
Darf ich euch mal was ganz Grundlegendes fragen?
Warum schreibt man in SCL: REAL#100.0? Ich könnte doch nur 100.0 schreiben.
Wo ist der Unterschied? Gleitpunktzahl sind doch beides, oder?

Gruß
wt15309
 
Zurück
Oben