-> Hier kostenlos registrieren
Hallo Leute,
ich habe ein Problem mit dem Aufruf eines von mir programmierten Funktionsbaustein und brauche etwas Hilfe.
Den Quelltext habe ich zur besseren Übersicht stark verkürzt und nur das Wesentlichen drinnen gelassen.
Funktionsbeschreibung:
Wenn bVarX eingeschaltet ist, dann werden die anderen Bedingungen geprüft. Trifft eine zu wird der entsprechende Parameter an den FB übergeben.
Schalte ich nun bVarX ab, bleibt alles im FB so wie es zuletzt übergeben wurde.
Schreibe ich eine ELSE Bedinung wo ich die Werte für den FB wieder zurück setze, dann kann ich diese nicht mehr weiter anfassen. Die haben dann immer den Wert, weil bVarX in dem Fall immer FALSE wäre und immer die ELSE Bedingung zutrifft.
Jedoch möchte ich mit der Bedingung bVarY die Werte wieder verändern können.
Ich habe schon einiges ausprobiert aber irgendwie schaue ich gerade auf meinen Quelltext wie ein Schwein ins Uhrwerk.
Vielen DANK im Voraus.
ich habe ein Problem mit dem Aufruf eines von mir programmierten Funktionsbaustein und brauche etwas Hilfe.
Den Quelltext habe ich zur besseren Übersicht stark verkürzt und nur das Wesentlichen drinnen gelassen.
Funktionsbeschreibung:
Wenn bVarX eingeschaltet ist, dann werden die anderen Bedingungen geprüft. Trifft eine zu wird der entsprechende Parameter an den FB übergeben.
Schalte ich nun bVarX ab, bleibt alles im FB so wie es zuletzt übergeben wurde.
Schreibe ich eine ELSE Bedinung wo ich die Werte für den FB wieder zurück setze, dann kann ich diese nicht mehr weiter anfassen. Die haben dann immer den Wert, weil bVarX in dem Fall immer FALSE wäre und immer die ELSE Bedingung zutrifft.
Jedoch möchte ich mit der Bedingung bVarY die Werte wieder verändern können.
Ich habe schon einiges ausprobiert aber irgendwie schaue ich gerade auf meinen Quelltext wie ein Schwein ins Uhrwerk.
Code:
fbFunktionsbaustein(rIstWert := rIstWertUnten , rSollWert:= rSollWertZpr);
bVarHNB := fbFunktionsbaustein.bVarout;
bVarHSB := fbFunktionsbaustein.bVarout;
bA12_SS1 := bHSB;
bA13_SS2 := bHSB;
bA14_SN1 := bHNB;
bA15_SN2 := bHNB;
IF bVarX THEN
IF .... THEN
IF .... THEN
rSollWertZpr:= rSollWertTag;
END_IF
IF .... THEN
rSollWertZpr:= rSollWertNacht;
END_IF
END_IF
IF ... THEN
IF ... THEN
rSollWertZpr:= rSollWertTag;
END_IF
IF ... THEN
rSollWertZpr:= rSollWertNacht;
END_IF
END_IF
IF ... THEN
rSollWertZpr:= rSollWertWE;
END_IF
END_IF
rIstSollDiff := rSollWertManuell - rIstWertUnten;
IF bVarYTHEN
IF bHNBAktiv THEN
bHNB := TRUE;
IF rIstSollDiff <= 0 THEN
bHNB := FALSE;
END_IF
ELSE
bHNB := FALSE;
END_IF
IF bHSBAktiv THEN
bHSB := TRUE;
IF rIstSollDiffManuell <= 0 THEN
bHSB := FALSE;
END_IF
ELSE
bHSB := FALSE;
END_IF
END_IF