# Codesys Wago-SPS Funktionsblock in ST verwenden



## guwen (8 Juni 2009)

Hallo zusammen,
so als Anfänger habe ich mal eine Frage:
Bei der Programmierung meiner Wago-SPS mit CoDeSys möchte ich einen Wago-Funktionsblock (Fb_Verzoegern) in meinem eigenen Funktionsblock verwenden. Diesen programmiere ich in ST. Nur gelingt mir die Verwendung des Fb_Verzoegern nicht.
Hier ein Auszug meiner Programmierung (die WarmwasserPumpe soll mit einer Verzögerung von 300 sekunden ausschalten):
        IF TempVorlaufKaminofen <= Kamin_UT THEN
            KaminHeizkreisPumpe := FALSE;
            WarmwasserPumpe := Fb_Verzoegern(xEingang:= KaminHeizkreisPumpe, dwTein_10tel_s:= 0, dwTaus_10tel_s:= 3000, xAusgang=>);
            WarmwasserPumpe := FALSE;
        END_IF;

Was mache ich falsch? Ich bekomme immer den Fehler 4051: Fb_Verzoegern ist keine Funktion.

Vielen Dank für Eure Antworten.


----------



## Controllfreak (8 Juni 2009)

Du musst Funktionsblöcke instanziieren


----------



## DirkS1017 (8 Juni 2009)

Hi,

versuch es mal damit :


```
Fb_Verzoegern(
  xEingang:= KaminHeizkreisPumpe,
  dwTein_10tel_s:= 0,
  dwTaus_10tel_s:= 3000,
  xAusgang=>WarmwasserPumpe);
IF TempVorlaufKaminofen <= Kamin_UT THEN
            KaminHeizkreisPumpe := FALSE;
END_IF;
```

FBs müssen aufgerufen werden und können keiner Variablen direkt zugeordnet werden, so wie Du das versucht hast. Das geht dann nur mit Funktionen, weil diese ein Rückgabewert haben, den Du dann der jeweiligen Variablen übergibst.


----------



## Controllfreak (8 Juni 2009)

@DirkS1017. das hatte ich übersehen


Dennoch muss im Deklarationsteil eine Instanz von Fb_Verzoergern deklariert werden


----------



## Controllfreak (8 Juni 2009)

Wo wird eigentlich KaminHeizkreispumpe auf TRUE gesetzt?


----------



## guwen (8 Juni 2009)

Hallo und Danke für die Antworten.
bitte haltet mich nicht für blöd, aber wie und wo deklariere ich denn eigentlich die Instanz vom Typ Fb_Verzoegern?

Hier der Quellcode zum einschalten der KaminHeizkreisPumpe:

    IF TempWarmwasser <= WW_MAX THEN
        IF TempVorlaufKaminofen >= Kamin_OT THEN
            KaminHeizkreisPumpe := TRUE;
            WarmwasserPumpe := TRUE;
        END_IF;
        IF TempVorlaufKaminofen <= Kamin_UT THEN
            KaminHeizkreisPumpe := FALSE;
            Fb_Verzoegern(
                              xEingang:= KaminHeizkreisPumpe,
                              dwTein_10tel_s:= 0,
                              dwTaus_10tel_s:= 3000,
                              xAusgang=>WarmwasserPumpe);
            WarmwasserPumpe := FALSE;
        END_IF;


----------



## guwen (8 Juni 2009)

Hab es rausgefunden:
VAR
    VerzoegertAus_1:Fb_Verzoegern;
    VerzoegertAus_2:Fb_Verzoegern;
END_VAR
...

            VerzoegertAus_1(
                              xEingang:= KaminHeizkreisPumpe,
                              dwTein_10tel_s:= 0,
                              dwTaus_10tel_s:= 3000,
                              xAusgang=>WarmwasserPumpe);


Nun mal sehen ob es funktioniert.

Danke Euch für die Hilfe.


----------

