Ein Funktionsbaustein ist eine POU, die bei der Ausführung eines SPS-Programms einen oder mehrere Werte liefert. Im Gegensatz zu einer Funktion werden die Werte der Ausgangsvariablen und der erforderlichen internen Variablen von einer Ausführung des Funktionsbausteins bis zur nächsten gespeichert. Somit werden beim Aufruf eines Funktionsbausteins mit denselben Argumenten (Eingabeparametern) nicht unbedingt dieselben Ausgabewerte geliefert.
Zusätzlich zur durch den Standard IEC11631-3 beschriebenen Funktion, wird objektorientiertes Programmieren unterstützt und Funktionsbaustein können als Erweiterungen anderer Funktionsbausteine definiert werden. Sie können Schnittstellendefinitionen hinsichtlich des Methodenaufrufs enthalten. Dies bedeutet, dass beim Programmieren mit Funktionsbausteinen das Prinzip der Vererbung angewendet werden kann.
Ein Funktionsbaustein wird immer über eine Instanz aufgerufen, die eine Reproduktion (Kopie) des Funktionsbausteins ist.
Hinzufügen eines Funktionsbausteins
Um einen Funktionsbaustein zu einer bestehenden Anwendung hinzuzufügen, wählen Sie unter Logikkatalog > Assets bzw. in der Anwendungsbaumstruktur den entsprechenden Knoten, klicken Sie auf die grüne Plus-Schaltfläche, und führen Sie den Befehl POU... aus. Alternativ können Sie mit der rechten Maustaste auf den Knoten klicken und die Befehle Objekt hinzufügen > POU ausführen. Um einen anwendungsunabhängigen Funktionsbaustein zu erstellen, wählen Sie den Knoten Global der Anwendungsbaumstruktur bzw. Assets aus.
Wählen Sie im Dialogfeld Objekt hinzufügen die Option Funktionsbaustein aus, geben Sie einen Namen (<Bezeichner>) für den Funktionsbaustein ein, und legen Sie die gewünschte Implementierungssprache fest.
Außerdem können Sie folgende Optionen festlegen:
Option |
Beschreibung |
---|---|
Erweitert |
Geben Sie hier den Namen eines anderen Funktionsbausteins aus dem Projekt ein, der als Basis für den aktuellen Baustein verwendet werden soll. Für eine detaillierte Beschreibung siehe Erweiterung eines Funktionsbausteins. |
Implementiert |
Geben Sie hier die Namen der im Projekt definierten Schnittstellen an, die im aktuellen Funktionsbaustein implementiert werden sollen. Mehrere Schnittstellen können durch Kommata getrennt angegeben werden. Eine detaillierte Beschreibung finden Sie unter Implementieren von Schnittstellen. |
Zugriffsbezeichner |
Aus Kompatibilitätsgründen sind die Zugriffsbezeichner optional. Bezeichner PUBLIC ist äquivalent mit dem Angeben keines Bezeichners. Alternativ kann eine der Optionen aus der Auswahlliste entnommen werden: oINTERNAL: Der Zugriff auf den Funktionsbaustein ist auf den aktuellen Namensraum (Bibliothek) beschränkt. oFINAL: Abgeleiteter Zugriff ist nicht möglich, d. h. der Funktionsbaustein kann nicht durch einen anderen erweitert werden. Dies ermöglicht eine optimierte Codegenerierung. HINWEIS: Die Zugriffsbezeichner gelten ab Compiler-Version 3.4.4.0 und können als Bezeichner für vorherige Versionen verwendet werden. Weitere Informationen finden Sie in der Zuordnungstabelle der Compilerversion von EcoStruxure Machine Expert/CoDeSys im EcoStruxure Machine ExpertKompatibilitäts- und Migrationshandbuch. |
Methodenimplementierungssprache |
Wählen Sie die gewünschte Programmiersprache für alle Methoden- und Eigenschaftsobjekte aus, die über die Schnittstellenimplementierung erstellt werden, unabhängig von der für den Funktionsbaustein festgelegten Programmiersprache. |
Nach Bestätigung der Einstellungen mit Hinzufügen wird das Editorfenster für den neuen Funktionsbaustein geöffnet, und Sie können mit der Bearbeitung beginnen.
Deklarieren eines Funktionsbausteins
Syntax
FUNCTION_BLOCK<Zugriffsbezeichner> <Funktionsbausteinname> | EXTENDS <Funktionsbausteinname> | IMPLEMENTS <Mit Komma geteilte Liste an Schnittstellennamen>
Hier folgen die Variablendeklarationen. Sie können Die Eingänge und Ausgänge auch für schnelles Ein- und Ausblenden gruppieren, wenn der Funktionsbaustein in einem FBD- oder LD-Editor verwendet wird. Siehe Kapitel Attribut-Anschlussgruppe.
FBexample Eie in der folgenden Abbildung gezeigt, hat 2 Eingangsvariablen und 2 Ausgangsvariablen; out1 und out2.
out1 ist die Summe der beiden Eingänge, out2 ist das Ergebnis einer Prüfung auf Gleichheit.
Beispiel für einen Funktionsbaustein in ST