Funktionen (FUN) sind Programm-Organisationseinheiten (POEs), die nach dem Ausführen ein Datenelement als Funktionsergebnis und beliebig viele Ausgangswerte der Klassen VAR_OUTPUT und VAR_IN_OUT liefern. Wird als Ergebnistyp VOID festgelegt, hat die Funktion kein Ergebnis.
Ein Zugriff auf globale Variablen ist mit VAR_EXTERNAL, VAR_EXTERNAL_RETAIN oder VAR_EXTERNAL_CONSTANT möglich.
Funktionen enthalten keine internen Zustandsinformationen, d.h., der Aufruf einer Funktion mit gleichen Eingangswerten der Klassen VAR_INPUT, VAR_IN_OUT und VAR_EXTERNAL liefert immer das gleiche Funktionsergebnis und die gleichen Ausgangswerte der Klassen VAR_OUTPUT, VAR_IN_OUT und VAR_EXTERNAL.
Control FPWIN Pro7 unterscheidet zwei Arten von Funktionen:
Systembefehle der Systembibliotheken
IEC standard library
FP library
FP tool library
FP pulsed library
Benutzerdefinierte Funktionen
Sie können auch eigene benutzerdefinierte Funktionen schreiben und diese in eine Benutzerbibliothek einfügen. Die neuen Funktionen stehen dann in allen Projekten zur Verfügung, in denen die Benutzerbibliothek installiert wird.
Benutzerdefinierte Funktionen können in folgenden Programmiersprachen geschrieben werden:
Kontaktplan (KOP) oder Funktionsbausteinsprache (FBS)
Strukturierter Text (ST)
Anweisungsliste (AWL)
Funktionen können einer Task nicht direkt zugeordnet werden, da sie immer nur von einem Programm, einer Funktion oder einem Funktionsbaustein aufgerufen werden können.
Rekursive Aufrufe einer Funktion sind nicht möglich.
FUN1() -> FUN2() -> FUN3() -> FUN1()
ist nicht zulässig.
FUN1 (FUN2 (FUN3 (FUN4 (FUN5 (x)))))
, darf nicht überschritten werden.
Maximum an geschachtelten Funktionsaufrufen |
SPS-Typen |
---|---|
16 |
FP7 |
10 |
Neuere 16-Bit-SPS-Typen wie FP0H, FP_XH, FP0R |
15 |
Ältere 16-Bit-SPS-Typen |
Mit Ausnahme von ST- und AWL-Funktionen, die ohne Formalparameter aufgerufen werden, benötigen Funktionen keine Variablen als Funktionsergebnis und an den Ausgängen.
Beim Aufruf einer Funktion mit Formalparameter im ST-Editor gilt:
Bei Argumentübergabe mit Formalparametern ist die Reihenfolge beliebig.
Bei benutzerdefinierten Funktionen kann auf den EN-Eingang und -Ausgang verzichtet werden. Nicht verwendete EN-Eingänge oder -Ausgänge werden auf TRUE gesetzt.