-

Instanziierung: Programm- und FB-Instanzen

Dieses Thema enthält die folgenden Abschnitte:

Funktionsbaustein-Instanziierung

Die IEC 61131-3 definiert die Instanziierung von Funktionsbausteinen. Instanziieren bedeutet, dass ein Funktionsbausteintyp einmal definiert wird und dann mehrfach aufgerufen (instanziiert) werden kann. Dies gilt gleichermaßen für alle FBs (anwenderdefinierte POEs sowie FBs in Bibliotheken, z.B. IEC-Standard-Funktionsbausteine, Firmware-FBs, FBs aus Anwenderbibliotheken).

Warum FB-Instanziierung? Ein Funktionsbaustein besitzt einen internen Speicher, in dem dieser die Arbeitsdaten (lokale Variablen) ablegt. Das bedeutet, die Ausgangswerte, die ein FB berechnet, hängen von den aktuellen intern gespeicherten Werten ab. Die gleichen Eingangswerte liefern deshalb bei verschiedenen FB-Instanzen nicht zwingend die gleichen Ausgangswerte. Die internen Daten des Funktionsbausteins müssen daher für jeden Aufruf, d.h. für jede FB-Instanz, in einem getrennten Speicherbereich gehalten werden. Um jede FB-Instanz eindeutig identifizieren und ihren Speicherbereich separat halten zu können, werden Instanznamen verwendet. Der FB-Instanzname muss in der lokalen 'Variablen'-Tabelle der POE deklariert werden, in welcher der FB verwendet werden soll.

Dabei gilt Folgendes:

  • Funktionsbausteine können in anderen Funktionsbausteinen und in Programm-POEs instanziiert werden. Der Aufruf eines FB in einer Funktion-POE ist nicht möglich.
  • Sicherheitsbezogene FBs können nur in sicherheitsbezogenem Code aufgerufen werden.

Beispiel für die Instanziierung eines anwenderdefinierten Funktionsbausteins

Hinweis
In Standard-POEs lassen sich FB-instanzbezogene I/O-Variablen als 'Instanz'-Variablen realisieren. Lesen Sie hierzu das Kapitel "Instanzbezogene adressierte Variablen".

Programm-Instanziierung

Eine Programm-POE wird auf der Steuerung nur dann ausgeführt, wenn sie einem Task zugeordnet ist. Beim Zuordnen eines Programms zu einem Task muss ein Programminstanzname definiert werden. Über diesen Instanznamen können die Instanz und der zugehörige Speicherbereich der Steuerung, in dem das Programm seine instanzbezogenen Daten speichert, eindeutig identifiziert werden.
Der Zeitplan für die Programmausführung wird durch die Eigenschaften des Task bestimmt, zu dem die Programminstanz gehört.

Die Instanziierung eines Programms erfolgt durch die Zuordnung des Programms zu einem Task im 'Tasks und Events'-Editor. Um den 'Tasks und Events'-Editor zu öffnen, doppelklicken Sie in der ANLAGE auf den 'PLCnext'-Knoten.

Vorgehensweisen:
In PLCnext Engineer wird strikt zwischen sicherheitsbezogenem Code und (nicht-sicherheitsbezogenem) Standard-Code unterschieden. Wenn Ihr Projekt eine sicherheitsbezogene SPS enthält, gilt Folgendes:

Hinweis
PLCnext Engineer unterstützt programmglobale Variablen. Eine programmglobale Variable ist in einer Programm-POE mit dem Schlüsselwort 'Programm' deklariert. Der Unterschied zwischen einer lokalen I/O-Variablen und einer programmglobalen I/O-Variablen ist, dass die programmglobale Variable auch in FB-Instanzen verwendet werden kann, die aus der Programm-POE aufgerufen werden. Dazu muss die Variable mit dem Schlüsselwort 'Extern' im aufrufenden FB deklariert sein. Weitere Informationen hierzu finden Sie im Thema " Programmglobale Variable wird zur instanzbezogenen 'Programm'-Variablen".

Beispiel für die Instanziierung eines nicht-sicherheitsbezogenen IEC-Programms in der Standard-Steuerung

Übersicht: Beziehung zwischen Typen und Instanzen

Die folgende Abbildung illustriert die Beziehung zwischen Programm-/FB-Typen, die in den KOMPONENTEN definiert sind, und ihren Instanzen im Projekt.

  • Doppelklicken auf einen POE-Typ in der Kategorie 'Programmierung' in den KOMPONENTEN öffnet den Code-Editor (textuell und/oder grafisch) und die Variablentabelle (Pfeile 1).
  • Funktionsbaustein-POEs werden durch Aufrufen des Funktionsbausteins über den Instanznamen in einem anderen FB oder in einem Programm instanziiert (gestrichelte Pfeile 2).
  • Durch Doppelklicken auf den 'PLCnext'-Knoten in der ANLAGE werden die SPS-Laufzeit-Editoren zur Konfiguration der Tasks und Events geöffnet (Pfeil 3).
    Im 'Tasks und Events'-Editor lassen sich Programm-POEs instanziieren, indem sie einem Task zugeordnet werden (gestrichelter Pfeil 4).
    Durch diese Zuordnung wird eine Programminstanz mit einem Instanznamen erstellt (gestrichelter Pfeil 5).

Für die sicherheitsbezogene Applikation, die von der integrierten sicherheitsbezogenen SPS ausgeführt wird, gilt: Die sicherheitsbezogene SPS führt genau einen Task aus, in dem genau ein Programm instanziiert sein muss. Sowohl der sicherheitsbezogene Task als auch die Programminstanz werden automatisch angelegt, sobald Sie eine Steuerung mit sicherheitsbezogener SPS in die ANLAGE einfügen. Weitere sicherheitsbezogene Programme können zwar in den KOMPONENTEN angelegt werden, diese werden aber nicht ausgeführt. Sicherheitsbezogene FBs können nur in sicherheitsbezogenen Programmen/FBs aufgerufen (instanziiert) werden.