TIA TIA Graph Frage zu FC-Aufruf in Aktion

bastler

Level-1
Beiträge
254
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich habe einen FB in Graph erstellt. An dem Schritt S3 ist eine Aktion in der ein FC aufgerufen werden soll.
In dem FC "Temperaturen" sollen 2 Temperaturen (Tpm1 und Tmp2) verglichen werden. WennTmp1 10K größer als Tmp2 ist und wenn der FC aufgerufen wurde, also wenn der entsprechende Schritt aktiv ist,soll der Ausgang A auf true gehen.

Der folgende Code funktioniert nicht:

Code:
If ((#Tpm1 - #Tpm2) < 10.00) AND "Temperaturen" THEN
A:=true;
Else
A:=False;
END_IF;

Wie muss ich das in SCL schreiben?
In der Schnittstelle des FC, was für Datentyp muss unter Return für den "Temperaturen" gewählt werden?

Mir würde auch schon helfen, wenn ich wüsste, wie der SCL-Code ist, wenn man abfragt, ob eine Aktion aktiv ist

MfG
bastler
 
Zuletzt bearbeitet:
Hi

der FC heißt Temperaturen ist vom Typ VOID und hat einen Ausgang A?
dann:
Code:
#A := [COLOR=#333333][FONT=Courier](#Tpm1 - #Tpm2) < 10.00;
[/FONT][/COLOR]

oder der FC heißt Temperaturen ist vom Typ BOOL und hat keinen dann unnötigen Ausgang A?
dann:
Code:
Temperaturen := [COLOR=#333333][FONT=Courier](#Tpm1 - #Tpm2) < 10.00;[/FONT][/COLOR]



Warum wollen die Leute immer so umständlich viel Code schreiben
Code:
[COLOR=#333333][FONT=Courier]If irgendwas THEN
[/FONT][/COLOR]    A:=true;
Else
    A:=False; 
[COLOR=#333333][FONT=Courier]END_IF;[/FONT][/COLOR]
ist so sinnlos wie ein Spoiler am 75PS Golf.
Code:
a:=irgendwas
tut es doch auch

'n schön' Tach auch
HB
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke erstmal. Es sollen ja nicht nur die Temperaturen verglichen werden sondern es soll noch der Aufruf des FC "Temperaturen" mit den Vergleich der beiden Temperaturen verundet werden.
Ich hab das jetzt so gemacht:
Der FC ist Bool und es gibt einen Ausgang A.
Code:
#Temperaturen:=(#Tpm1 - #Tpm2) < 10.00;
#A:=(#Tpm1 - #Tpm2) < 10.00 AND #Temperaturen;
Das funktioniert so, kann man das aber noch vereinfacht schreiben?
 
Der FC ist Bool und es gibt einen Ausgang A.

Hallo

ach so, Gürtel und Hosenträger ...

Du schreibst
Code:
#Temperaturen:=(#Tpm1 - #Tpm2) < 10.00;
#A:=(#Tpm1 - #Tpm2) < 10.00 AND #Temperaturen;
funktioniert so.

Machen wir ein bischen Algebra:
setzen wir die rechte Seite der ersten Zeile an Stelle des Rückgabewertes in die zweite Zeile, dann erhalten wir:
( Ich füge mal noch ein paar eigentlich unnötige extra Klammern ein, damit die Präzedenz sichtbar wird )
Code:
#A := (((#Tpm1 - #Tpm2) < 10.00 ) AND ((#Tpm1 - #Tpm2) < 10.00 ));

nun gilt X AND X ist X. Boolsche Algebra, bei Wikipedia nachlesen. Also darf das AND und alles rechts davon entfallen

Code:
#A := ((#Tpm1 - #Tpm2) < 10.00 );
Das steht aber doch schon in Zeile 1. Also gilt #A = #Temperaturen.

D.h. du darfst dir jetzt aussuchen, ob du zuerst #Temperaturen oder zuerst #A berechnest. Und das dann dem jeweils anderen zuweisen.

Code:
#Temperaturen:=(#Tpm1 - #Tpm2) < 10.00;
#A:=#Temperaturen;

Wer hat die Anforderung gestellt, dass deine Funktion zwei Mal das Gleiche zurückliefern soll?

'n schön' Tach auch
HB
 
Vielen Dank für die ausführliche Erklärung. Die Aufgabenstellung ist aus einer Hausaufgabe.

MfG
bastler
 
Zurück
Oben