Für die vom Benutzer im Projekt bzw. einer Benutzerbibliothek erstellten Funktionsbausteine wird im kompilierten Programm ein Unterprogramm angelegt. Bei jedem Aufruf werden zunächst die Eingangsparameter der Klassen VAR_INPUT und VAR_IN_OUT übergeben. Dann erfolgt ein Sprung ins entsprechende Unterprogramm. Anschließend werden die Ausgangsparameter der Klassen VAR_OUTPUT und VAR_IN_OUT sowie das Funktionsergebnis wieder gelesen. Die zulässige Anzahl von Unterprogrammen bzw. Funktionsbausteinen, die Sie definieren können, ist vom Steuerungstyp abhängig.
Funktionsbausteine besitzen ein "Gedächtnis", das heißt, jeder Instanz dieses Funktionsbausteins wird beim Aufruf ein Datenbereich und ein Unterprogramm zugeordnet. Alle Instanzen eines Funktionsbausteins verwenden dann ein gemeinsames Unterprogramm. Über Indexregister wird auf den jeweils für die Instanz gültigen Datenbereich zugegriffen.
Damit lässt sich gerade bei häufiger Verwendung der Funktionsbausteine sehr viel Programmspeicher einsparen. Die Zugriffe auf den Datenbereich über Indexregister erhöhen allerdings die Zykluszeit.
Bei einigen Steuerungen können Sie mit Anwender-Funktionsbausteine indizieren aktivieren.
die OptionEinige FP-Befehle arbeiten nicht korrekt, wenn sie mehrfach innerhalb eines Zyklus aufgerufen werden. Da dies bei indizierter Codegenerierung vorkommt, wenn mehrere verschiedene Instanzen eines Funktionsbausteins in einem Zyklus aufgerufen werden, erhalten Sie bei folgenden Befehlen eine Fehlermeldung:
Zähler: F118_UDC, F166_HighSpeedCounter_Set, F167_HighSpeedCounter_Reset, F168_PulseOutput_Home
Schiebebefehle: F119_LRSR