POEs
Dieses Thema enthält die folgenden Abschnitte:
Die POEs (Programmorganisationseinheiten) im Projekt werden rechts im KOMPONENTEN-Bereich verwaltet. Im Ordner 'Lokal' der Kategorie 'Programmierung' können Sie POEs hinzufügen, löschen, umbenennen und verschieben sowie POEs zum Editieren öffnen.
Gemäß IEC 61131-3 sind die folgenden drei POE-Typen Funktion (FU), Funktionsbaustein (FB) und Programm verfügbar (klicken Sie auf die Links für Details):
Typen von Programmen und Funktionsbausteinen müssen im KOMPONENTEN-Bereich definiert werden. Die Abbildung im Hilfekapitel "Instanziierung: Programm- und FB-Instanzen" erläutert die Beziehung zwischen Typen und Instanzen und zeigt, wo Instanzen dieser Typen möglich sind.
Instanziierung von Programmen und Funktionsbausteinen
Eindeutigkeit und Rangordnung (Hierarchie) von POEs
Eindeutigkeit von POEs Eine anwenderdefinierte POE darf im Projekt nur einmal definiert sein. In eingebundenen Bibliotheken darf jedoch ein POE-Typ mit gleichem Namen vorhanden sein. Berücksichtigt man also Bibliotheken, dann sind mehrere Typen mit demselben POE-Namen möglich.
Hinweis
Um Namenskonflikte zwischen anwenderdefinierten (nicht sicherheitsbezogenen) Standard-POEs zu vermeiden, unterstützt PLCnext Engineer Namespaces (Namensräume). Mit Hilfe von Namespaces können Sie POEs organisieren und gruppieren, um diese eindeutig im Projekt zu machen. Weitere Informationen hierzu finden Sie im Thema "Namespaces". |
Rangordnung bei POEs Sind in einem Projekt und den darin eingebundenen Bibliotheken mehrere POEs mit demselben Namen definiert, unterliegen diese POEs einer Typ-Hierarchie. Durch das Einbinden von Bibliotheken entstehen mehrere hierarchische Ebenen, besonders wenn Bibliotheken weitere eingebundene Bibliotheken enthalten (verschachtelte Referenzen).
Beachten Sie folgende Regeln zur Rangordnung:
- Mehrere gleichnamige POEs sind nicht erlaubt auf ein und derselben hierarchischen Ebene. Im folgenden Beispiel werden zwei Bibliotheken eingebunden, die beide eine POU A enthalten. Das führt zu einem semantischen Fehler: "Es existiert bereits eine Programmorganisationseinheit (POE) mit dem Namen '...'".Projekt
Bib1
POE A
POE B
Bib2
POE A
POE C
Hinweis
Um Namenskonflikte zwischen anwenderdefinierten (nicht sicherheitsbezogenen) Standard-POEs zu vermeiden, unterstützt PLCnext Engineer Namespaces (Namensräume). Mit Hilfe von Namespaces können Sie POEs organisieren und gruppieren, um diese eindeutig im Projekt zu machen. Weitere Informationen hierzu finden Sie im Thema "Namespaces". |
- Eine POE ersetzt (überlädt) POEs mit demselben Namen, wenn diese auf untergeordneten hierarchischen Ebenen liegen. Im folgenden Beispiel betrifft das POE A und POE C:Projekt
POE A
POE B
Bib1
POE A
POE C
Bib2
POE C
- Bei verschachtelten Bibliotheken (eingebundene Bibliothek referenziert weitere Bibliothek) können POEs auf untergeordneten Ebenen nicht durch die übergeordnete POE überladen werden. Dies führt zu einem Fehler (betrifft POE B im folgenden Beispiel).Projekt
Bib1
POE A
Bib2
POE B
Bib3
POE B
- Es wird kein Fehler ausgegeben, wenn mehrere Instanzen derselben Bibliothek auf unterschiedlichen hierarchischen Ebenen liegen (d.h. die Bibliothek ist direkt eingebunden und wird zusätzlich in einer anderen eingebundenen Bibliothek referenziert). In diesem Fall wird nämlich ein und dieselbe POE aus derselben Bibliothek (POE B) verwendet.Projekt
Bib1
POE A
Bib2
POE B
Bib2
POE BIn diesem speziellen Fall (mehrere Instanzen derselben Bibliothek) sind gleichnamige POEs sogar auf derselben hierarchischen Ebene erlaubt, wenn eine POE zuvor auf einer höheren Ebene überladen wurde.
Im folgenden Beispiel wird kein Fehler ausgegeben, obwohl POE B zweimal auf derselben Ebene vorkommt. Das liegt daran, dass POE B aus Bib2 zuvor durch POE B aus Bib1 ersetzt wurde.Projekt
POE C (verwendet POE B)
Bib1
POE A (verwendet POE B)
POE B
Bib2
POE B
Bib2
POE B
Beachten Sie folgenden Regeln bei der Veröffentlichung von POEs als IEC-Bibliotheken:
- Wenn auf einer untergeordneten Ebene noch keine POE mit diesem Namen existiert, enthält die exportierte Datei eine Solution-Referenz auf die eingebundene Bibliothek. Im folgenden Beispiel enthält die exportierte Bibliothek eine Referenz auf die Bibliothek Bib1.Projekt
POE A (verwendet POE B)
Bib1
POE B (Sichtbarkeit = eingeschränkt)
- Wenn auf einer untergeordneten Ebene bereits eine POE mit diesem Namen existiert, enthält die exportierte Datei keine Solution-Referenz auf die eingebundene Bibliothek. Im folgenden Beispiel enthält die exportierte Bibliothek keine Referenz auf die Bibliothek Bib1.Projekt
POE A (verwendet POE B)
POE B
Bib1
POE B (Sichtbarkeit = eingeschränkt)
Komponenten einer POE in PLCnext Engineer
Jede POE besteht aus einem Deklarationsteil (Variablentabelle) mit den in der POE verwendeten Variablendeklarationen und einem Code-Teil (ein oder mehrere Code-Arbeitsblätter) mit den zu verarbeitenden Anweisungen.
Durch Doppelklicken auf eine POE in der Kategorie 'Programmierung' in den KOMPONENTEN öffnen Sie die Editoren (siehe Liste unten) zum Deklarieren der Variablen und Programmieren des Codes.
Hinweis
Beim Editieren von Code oder Variablen einer sicherheitsbezogenen POE (dazu müssen Sie im sicherheitsbezogenen Bereich angemeldet sein) zeigt der schraffierte Hintergrund im Titelbalken des Editors den sicherheitsbezogenen Kontext. Der Editor prüft kontinuierlich die Konsistenz der sicherheitsbezogenen Daten, um mögliche Datenverfälschungen erkennen zu können. |
Weitere Informationen zur Verwendung der Editoren finden Sie im Hilfethema "Editorenbereich".
'Einstellungen'-Editor
 | Im 'Einstellungen'-Editor definieren Sie:
- Namespaces für eine Standard-POE und übernehmen Namespaces in die 'Usings'-Liste einer POE.Weitere Informationen hierzu finden Sie im Thema "Namespaces".
- den Datentyp des Rückgabewertes für Funktions-POEs und den Zugriffsbezeichner für Methoden von anwenderdefinierten Funktionsbausteinen.Sicherheitsbezogene objektorientierte Funktionsbausteine werden nicht unterstützt. Einem sicherheitsbezogenen Funktionsbaustein kann daher keine Methode hinzugefügt werden.Weitere Informationen hierzu finden Sie im Thema "Methoden von FBs in PLCnext Engineer".
|
'Variablen'-Editor
 | Mit dem tabellarischen 'Variablen'-Editor (Variablentabelle) lassen sich die lokalen Variablen und Funktionsbausteininstanzen der jeweiligen POE deklarieren. Jede POE besitzt genau eine Variablentabelle. Der 'Variablen'-Editor wird im Editorenbereich ein-/ausgeblendet, indem Sie in der Editorengruppe der POE auf 'Variablen' klicken.
Hinweis
Beim Deklarieren von Formalparameter-Variablen für eine Funktion oder Funktionsbaustein-POE bestimmt die Reihenfolge der Deklarationen in der Variablentabelle die Reihenfolge der Ein- und Ausgänge der Funktion bzw. des FB im Code (am Bausteinsymbol oder in der ST-Parameterliste). Mit den Befehlen 'Nach oben verschieben' bzw. 'Nach unten verschieben' in der Symbolleiste der Variablentabelle können Sie die Reihenfolge der Bausteinformalparameter im Code beeinflussen.
/  |
|
'Code'-Editor
 | Mit dem Code-Editor können Sie den Applikationscode in einer der IEC 61131-3-Sprachen ST, FBS, KOP oder AS programmieren. Jedes Code-Arbeitsblatt einer POE wird im eigenen Code-Editor geöffnet. Ein Code-Arbeitsblatt wird durch Klicken auf den Titel des Arbeitsblattes in der Editorengruppe der POE ein-/ausgeblendet. Neben dem klassischen freigrafischen FBS-/KOP-Code unterstützt PLCnext Engineer eine weitere Variante von gemischten FBS/KOP-Netzwerken mit der Bezeichnung NKOP (Netzwerkorientierter KOntaktPlan).Sicherheitsbezogener grafischer Code muss in SNKOP-Arbeitsblättern (SNKOP = Sicherheitsbezogener Netzwerkorientierter KOntaktPlan) programmiert werden.
Hinweis
Jede POE muss mindestens ein Code-Arbeitsblatt enthalten. |
Die Abarbeitungsreihenfolge der Code-Arbeitsblätter innerhalb der POE wird durch die Anordnung der Code-Arbeitsblätter in der Editorengruppe bestimmt (siehe unten).
Hinweis
Es werden mehrsprachige POEs unterstützt: In einer POE können Code-Arbeitsblätter in verschiedenen IEC 61131-3-Programmiersprachen hinzugefügt werden. |
Hinweis
Code-Arbeitsblätter einer POE lassen sich vom Kompilieren ausschließen. Arbeitsblätter für die dieses Attribut gesetzt ist, werden beim Build-Prozess vom Compiler ignoriert. Details erfahren Sie im Thema "Code-Arbeitsblätter vom Build ausschließen". |
|
Beschreibungseditor
 | Im Editor 'Beschreibung' können Sie Informationen zu einer POE hinterlegen. Sie können diesen Editor zu Dokumentationszwecken, zum Pflegen einer Versionshistorie der POE und zum Erstellen von Online-Hilfedateien für anwenderdefinierte Funktionen/Funktionsbausteine verwenden.Lesen Sie hierzu das Thema "Beschreibung für Projekte, POEs und Symbole". |
'Sicherheitsinformationen'-Editor (nur für sicherheitsbezogene POEs)
Sicherheitsbezogene POEs verfügen zusätzlich über den Editor 'Sicherheitsinformationen'. Hier werden die Prüfsummen angezeigt, die nach dem Setzen der Verifizierungsmarkierung für jedes verifizierte Netzwerk berechnet wurden. Mit Hilfe dieser Prüfsummen können Sie feststellen, ob die Code-Netzwerke im Vergleich zu älteren Projektversionen geändert wurden. Dazu vergleichen Sie jede Prüfsumme manuell mit der entsprechenden CRC in der gedruckten Projektdokumentation der älteren, archivierten Projektversion.
Weitere Informationen hierzu finden Sie unter "Verifizierungsmarkierung für SNKOP-Netzwerke".
Verwaltung von POEs im KOMPONENTEN-Bereich
POEs vom Typ Programm, Funktion und Funktionsbaustein sind in der Kategorie 'Programmierung' des KOMPONENTEN-Bereichs in mehreren Ordnern organisiert. Rechtsklicken auf einen Knoten (Ordner oder POE) öffnet ein Kontextmenü. Das Kontextmenü enthält nur die für den gewählten Knoten ausführbaren Befehle. Neben den Standardbefehlen wie 'Ausschneiden', 'Kopieren', 'Einfügen' usw. enthält das Kontextmenü auch Befehle zum Hinzufügen neuer POEs (siehe nachfolgende Beschreibungen).
Struktur der POE-Unterkategorien
Der Ordner 'Lokal' in der Kategorie 'Programmierung' enthält die anwenderdefinierten Programme und Funktionen/Funktionsbausteine. Sie können über das Kontextmenü maximal 3 Unterordner pro Kategorie anlegen, um anwenderdefinierte POEs zu organisieren. Der Wert in Klammern hinter dem Ordnernamen gibt an, wie viele POEs der Ordner enthält. Sie können POEs zwischen anwenderdefinierten Ordnern per Drag & Drop verschieben.
Um sicherheitsbezogene Teile des Projekts bearbeiten und verwalten zu können, müssen Sie im sicherheitsbezogenen Bereich angemeldet sein. Dieser Bereich ist nur für autorisierte Anwender zugänglich.
Hinweis
Nicht-sicherheitsbezogene Elemente, die in den KOMPONENTEN gelöscht wurden, werden in den PAPIERKORB verschoben (sofern dieser im Dialog 'Extras > Optionen' in der Kategorie 'Werkzeug | Recycle Bin' aktiviert ist). Diese Elemente können Sie im PAPIERKORB mit Hilfe des 'Wiederherstellen'-Befehls im Kontextmenü des Elements wiederherstellen. Dies gilt nicht für sicherheitsbezogene Elemente. Sie werden sofort dauerhaft gelöscht. |
Abarbeitungsreihenfolge von Code-Arbeitsblättern in einer POE
Die Abarbeitungsreihenfolge der Code-Arbeitsblätter in einer POE wird durch die Anordnung der Code-Arbeitsblätter in der Editorengruppe bestimmt. Die schreibgeschützte Zahl in eckigen Klammern im Titel des Arbeitsblatts zeigt die Abarbeitungsreihenfolge in Bezug auf die anderen Arbeitsblätter an.
Um die Reihenfolge der Code-Arbeitsblätter in einer POE zu ändern, ziehen Sie das gewünschte Arbeitsblatt vor das Arbeitsblatt, vor dem dieses ausgeführt werden soll, und legen es an der gewünschten Position ab (der Wert in eckigen Klammern wird automatisch angepasst).
Beispiel
Operationen mit POEs
POE hinzufügen
Die nachfolgend beschriebenen Schritte führen Sie in der Kategorie 'Programmierung' des KOMPONENTEN-Bereichs im jeweiligen Ordner (unter 'Lokal') aus:
- Kategorie 'Programme', wenn Sie eine Programm-POE einfügen möchten.
- Kategorie 'Funktionen & Funktionsbausteine', wenn Sie eine Funktions- oder Funktionsbaustein-POE einfügen möchten.
- Rechtsklicken Sie auf die jeweilige Unterkategorie und wählen Sie den gewünschten Hinzufügen-Befehl aus dem Kontextmenü. (Der Hinzufügen-Befehl ist nur für Ordner verfügbar, in welche eine neue POE eingefügt werden darf. Eine neue POE kann z.B. nicht in den Ordner mit den Standard-Funktionen und -Funktionsbausteinen eingefügt werden.)
Die neue POE wird mit einem vorgeschlagenen Namen unter dem zuvor ausgewählten Ordner eingefügt. Sie können diesen Namen ändern, wie im nächsten Schritt beschrieben.Wenn Sie eine AS-Funktionsbaustein-POE einfügen, wird unter der neuen POE automatisch ein Unterordner 'Transitionen' mit einer 'Transition' angelegt.Um in einem bestehenden Ordner einen Unterordner anzulegen, rechtsklicken Sie auf den Ordner und wählen 'Ordner einfügen' aus dem Kontextmenü (maximal 3 Unterordner sind möglich).
- Nach dem Einfügen eines Elements in die KOMPONENTEN ist der Elementname standardmäßig ausgewählt. Sie können den vorgeschlagenen Namen entweder ändern oder diesen mit der <Eingabe>-Taste übernehmen.
Um das Element später umzubenennen, rechtsklicken Sie auf das Element und wählen 'Umbenennen' aus dem Kontextmenü oder drücken <F2> und geben den gewünschten Namen ein.
- Doppelklicken Sie im KOMPONENTEN-Bereich auf die neue POE. Wählen Sie im Editorenbereich die gewünschte Programmiersprache für das erste Code-Arbeitsblatt in der POE.
Das Code-Arbeitsblatt und/oder die Variablentabelle werden im Editorenbereich geöffnet und können bearbeitet werden.Im 'Einstellungen'-Editor können Sie Namespaces für eine Standard-POE definieren und Namespaces in die 'Usings'-Liste einer POE eintragen. Bei einer Funktions-POE müssen Sie unter 'POE-Signatur' den Datentyp des Rückgabewerts der neuen Funktion angeben.
Transition oder Aktion zu einer AS-Funktionsbaustein-POE hinzufügen
- Rechtsklicken Sie im Ordner 'KOMPONENTEN | Programmierung > Lokal > Funktionen & Funktionsbausteine' auf die AS-POE.
- Wählen Sie im Kontextmenü der POE den passenden Hinzufügen-Befehl.Die neue Transition/Aktion wird mit einem vorgeschlagenen eindeutigen Namen im Ordner 'Aktionen'/'Transitionen' eingefügt.
- Nach dem Einfügen eines Elements in die KOMPONENTEN ist der Elementname standardmäßig ausgewählt. Sie können den vorgeschlagenen Namen entweder ändern oder diesen mit der <Eingabe>-Taste übernehmen.
Um das Element später umzubenennen, rechtsklicken Sie auf das Element und wählen 'Umbenennen' aus dem Kontextmenü oder drücken <F2> und geben den gewünschten Namen ein.
Sicherheitsbezogene Funktionsbausteine werden in AS nicht unterstützt.
Methode zu einer anwenderdefinierten Funktionsbaustein-POE hinzufügen
- Rechtsklicken Sie im Ordner 'KOMPONENTEN | Programmierung > Lokal > Funktionen & Funktionsbausteine' auf die anwenderdefinierte FB-POE.
- Wählen Sie den Befehl 'Methode hinzufügen' aus dem Kontextmenü (der Befehl ist nur für eine FB-POE verfügbar).Die neue Methode wird mit einem vorgeschlagenen Namen in den FB-POE-Ordner eingefügt.
- Nach dem Einfügen eines Elements in die KOMPONENTEN ist der Elementname standardmäßig ausgewählt. Sie können den vorgeschlagenen Namen entweder ändern oder diesen mit der <Eingabe>-Taste übernehmen.
Um das Element später umzubenennen, rechtsklicken Sie auf das Element und wählen 'Umbenennen' aus dem Kontextmenü oder drücken <F2> und geben den gewünschten Namen ein.
- Doppelklicken Sie auf die Methode. Wählen Sie anschließend im Editorenbereich die gewünschte Programmiersprache für das erste Code-Arbeitsblatt der Methode. Das Code-Arbeitsblatt, die Variablentabelle und der 'Einstellungen'-Editor werden im Editorenbereich angezeigt.
- Wählen Sie im 'Einstellungen'-Editor den 'Zugriffsbezeichner' für die Methode und den 'Rückgabetyp'.
- Bearbeiten Sie Ihren Programmcode und legen Sie die in der Methode benötigten Variablen an.
Sicherheitsbezogene objektorientierte Funktionsbausteine werden nicht unterstützt. Einem sicherheitsbezogenen Funktionsbaustein kann daher keine Methode hinzugefügt werden.
Arbeitsblätter in einer POE hinzufügen/löschen
Hinweis
In AS-POEs ist nur ein Code-Arbeitsblatt erlaubt. Es können keine weiteren Code-Arbeitsblätter hinzugefügt werden. |
Hinweis
Pro POE sind maximal 100 Arbeitsblätter erlaubt. |
- Öffnen Sie unter 'KOMPONENTEN | Programmierung > Lokal' den gewünschten Ordner und doppelklicken Sie auf die POE, in die das neue Arbeitsblatt eingefügt werden soll. Die Editoren der POE-Gruppe werden im Editorenbereich geöffnet.
- Klicken Sie in der Editorengruppe (wie im folgenden Beispiel für die Gruppe 'Container' gezeigt) ganz rechts auf das Plus-Symbol und wählen Sie aus dem Menü den gewünschten Code-Arbeitsblatttyp.

Das neue Code-Arbeitsblatt wird mit einem vorgeschlagenen Namen und einer Zahl in eckigen Klammern hinter das letzte Code-Arbeitsblatt (ganz rechts) in die POE eingefügt. Die Zahl gibt die Abarbeitungsreihenfolge des Arbeitsblattes in Bezug auf die anderen Arbeitsblätter an (siehe oben stehende Beschreibung).
- Benennen Sie bei Bedarf das Code-Arbeitsblatt um. Rechtsklicken Sie dazu den Namen und wählen Sie 'Umbenennen' aus dem Kontextmenü. (Die Abarbeitungsnummer kann nicht geändert werden. Diese wird durch Verschieben des Arbeitsblattes an eine andere Position automatisch angepasst).
Um ein POE-Code-Arbeitsblatt zu löschen, rechtsklicken Sie in der Editorengruppe auf den Titel des Arbeitsblattes und wählen 'Löschen'. Jede POE muss mindestens ein Code-Arbeitsblatt enthalten. Daher kann das letzte Code-Arbeitsblatt nicht gelöscht werden.
Namespace für eine POE definieren
POEs aus einem anderen Projekt oder aus einer PLCopen XML-Datei importieren
Zwischen Editoren umschalten
Umschalten zwischen den Editoren einer Editorengruppe
Um zwischen den Editoren einer Editorengruppe (jeweils dargestellt als Register am oberen Rand des Editorenbereichs) zu wechseln, haben Sie folgende Möglichkeiten:
- TastaturDrücken Sie die <Strg>-Taste kombiniert mit der fortlaufenden Nummer aus dem Editorregister, beginnend bei 1.Beispiel: In der folgenden Editorengruppe öffnet die Tastenkombination <Strg>+<3> das Arbeitsblatt 'Code1'. Drücken Sie <Strg>+<0> für den zehnten Editor.
Beachten Sie, dass die Nummer in eckigen Klammern [...] die Position des Code-Arbeitsblatts in der Abarbeitungsreihenfolge der POE angibt und nicht die Arbeitsblattnummer.
- Dropdown-Symbol in der oberen rechten Ecke.
Durch Anklicken des Dropdown-Symbols in der oberen rechten Ecke der Editorenleiste öffnen Sie eine Liste mit allen Editoren dieser Gruppe. Wählen Sie den gewünschten Editor aus der Liste und machen Sie ihn zum aktiven Editor.