Allgemeine Informationen zu Namespaces
Weitere Infos
Diese Thema enthält allgemeine Informationen zu Namespaces (Namensräume). Details, wie Sie in PLCnext Engineer Namespaces für POEs und anwenderdefinierte Datentypen definieren, finden Sie in den Themen "Namespaces für POEs definieren" und "Namespaces für anwenderdefinierte Datentypen definieren". |
Dieses Thema enthält die folgenden Abschnitte:
- Was sind Namespaces?
- Globaler und lokaler Namespace
- Namenskonventionen für Namespaces
- Auf Elemente eines Namespace zugreifen
- Verschachtelte Namespaces
Was sind Namespaces?
Mit Hilfe von Namespaces können Sie Sprachelemente organisieren und gruppieren, um diese eindeutig im PLCnext Engineer-Projekt zu machen. So können Sie sicherstellen, dass die Namen der Sprachelemente nicht mit anderen Namen kollidieren. Namespaces ermöglichen es Ihnen, ohne Namenskonflikte mehrere Sprachelemente (z.B. eine POE) mit demselben Namen in Ihrem Projekt zu verwenden. In PLCnext Engineer sind Namespaces für folgende Sprachelemente erlaubt:
- Standard-POEs: Funktionen, Funktionsbausteine und Programme(Namespaces werden nicht für sicherheitsbezogene POEs unterstützt.)
- Anwenderdefinierte Datentypen
Angenommen, Sie haben zwei Bibliotheken, die beide eine PB-POE mit dem Namen MyFB enthalten. Wenn Sie beide Bibliotheken in Ihr Projekt einfügen, meldet der Compiler einen Fehler auf Grund eines Namenskonflikts (wie im folgenden Beispiel im ersten Bild gezeigt). Dieser Konflikt kann mit Hilfe von Namespaces gelöst werden, da ein Namespace den spezifischen Zugriff auf eine POE erlaubt (zweites Bild im folgenden Beispiel).
Beispiel für einen Namenskonflikt ohne Namespaces und Lösung des Konflikts mit Hilfe von Namespaces
Hinweis
Namespaces sind eine optionale Erweiterung. Sie helfen Ihnen bei der Organisation des Programmcodes in Ihrem Projekt. |
Globaler und lokaler Namespace
Ein Sprachelement, das nicht in einem expliziten Namespace definiert ist, ist Teil des globalen Namespace. Das bedeutet, alle Elemente, die nicht an einen expliziten Namespace gebunden sind, besitzen globale Gültigkeit in Ihrem PLCnext Engineer-Projekt. Global heißt, dass auf jedes Element im globalen Gültigkeitsbereich überall im Projekt zugegriffen werden kann. So sind in PLCnext Engineer z.B. alle (nicht-sicherheitsbezogenen) Standardfunktionen und Standardfunktionsbausteine Elemente des globalen Namespace (siehe Pos. 1 im Beispiel unten). Die Namen der Elemente im globalen Namespace können genauso verwendet werden, wie sie definiert sind (siehe hierzu auch den folgenden Hinweis). Standardmäßig sind alle in Ihrem Projekt deklarierten oder hinzugefügten Elemente Teil des globalen Namespace.
Hinweis
Auf Sprachelemente, die Teil des globalen Namespace sind, kann über deren Kurzname oder durch Angabe des globalen Namespace-Bezeichners '_.' gefolgt vom Kurznamen zugegriffen werden. Beispiel: Auf den FB DERIVAT können Sie über den Kurznamen DERIVAT oder den Namen _.DERIVAT zugreifen. |
Hinweis
Der Zugriff auf IEC-Standarddatentypen erfolgt immer ohne globalen Namespace-Bezeichner. |
Im Gegensatz zu den Elementen des globalen Namespace sind die Elemente eines lokalen Namespace an diesen Namespace gebunden, d.h. die Elemente sind Member dieses Namespace. Die Elemente des lokalen Namespace besitzen lokale Gültigkeit im Projekt (siehe Pos. 2 in folgender Abbildung; die POEs sind Elemente des Namespace 'NamespaceA*). Die Gültigkeit bezieht sich hier auf den Zugriff auf das Element innerhalb des Projekts. Lokal bedeutet, auf die Elemente kann nur innerhalb des Namespace über deren Kurzname (lokaler Name; Name ohne Namespace-Bezeichner) zugegriffen werden, in welchem diese definiert sind. Um auf das Element außerhalb des Namespace, in dem es definiert ist, zuzugreifen, muss der voll qualifizierte Name verwendet werden.
Weitere Infos
Im unten stehenden Abschnitt "Auf Elemente eines Namespace zugreifen" wird beschrieben, wie Sie auf ein Element des globalen oder eines lokalen Namespace zugreifen. |
Namenskonventionen für Namespaces
Folgende Konventionen gelten für die Bezeichner von Namespaces:
- Der Name muss ein gültiger Bezeichner gemäß IEC 61131-3 (2013-02) sein.
- Erweiterte Bezeichner für Namespaces sind nicht erlaubt.
- Der Namespace-Name darf maximal 90 Zeichen lang sein.
- Der Namespace kann leer sein (Sprachelement ist Member des globalen Namespace).
- Sonderzeichen wie z.B. - , ; : $ ! ? \ / < > und andere sind nicht erlaubt. Nur das Zeichen _ ist zulässig.
- Groß/Kleinschreibung im Namespace-Name wird ignoriert.
Hinweis
Bei C# POEs unterscheidet der Microsoft C# Compiler zwischen Groß-/Kleinschreibung. - Der Namespace-Bezeichner '_.' ist reserviert für Elemente des globalen Namespace.
Auf Elemente eines Namespace zugreifen
Ein Sprachelement, das Member eines Namespace ist, besitzt einen voll qualifizierten Namen (langer Name) und einen Kurznamen (lokaler Name).
Über beide Namen kann auf das Namespace-Element zugegriffen werden:
- Voll qualifizierter NameUm auf das Sprachelement außerhalb des Namespace, in welchem dieses definiert ist, zuzugreifen, muss der voll qualifizierte Name des Elements verwendet werden (siehe hierzu auch den unten stehenden Abschnitt "Verschachtelte Namespaces"). Ein voll qualifizierter Name besteht aus einem einzelnen Namespace-Bezeichner oder eine durch "." getrennte Liste von Bezeichnern gefolgt vom Kurznamen des Elements. 'NamespaceSample.MyElement' ist z.B. ein voll qualifizierter Name mit 'NamespaceSample' = Namespace-Name und 'MyElement' = Sprachelement innerhalb des Namespace.
Hinweis
PLCnext Engineer unterstützt die Definition von USING-Deklarationen. Mit Hilfe der USING-Deklaration können Sie ohne Angabe des Namespace-Bezeichners auf das Member eines Namespace zugreifen. Details, wie Sie USINGs für POEs und anwenderdefinierte Datentypen verwenden, finden Sie in den Themen "Namespaces für POEs definieren" und "Namespaces für anwenderdefinierte Datentypen definieren". - Kurzname (lokaler Name)Der Kurzname eines Sprachelements ist der Elementname ohne Namespace-Bezeichner ('MyElement' im oben gezeigten Beispiel). Der Zugriff auf ein Element über dessen Kurzname ist nur möglich unter folgenden Bedingungen:
- Das Sprachelement ist Member des globalen Namespace.Auf Sprachelemente, die Teil des globalen Namespace sind, kann über deren Kurzname oder durch Angabe des globalen Namespace-Bezeichners '_.' gefolgt vom Kurznamen zugegriffen werden. Beispiel: Auf den FB DERIVAT können Sie über den Kurznamen DERIVAT oder den Namen _.DERIVAT zugreifen.
- Das Sprachelement besitzt denselben Namespace wie das enthaltene Element.
- Das Sprachelement ist mit Hilfe einer USING-Deklaration in einem anderen Namespace bekannt.
Verschachtelte Namespaces
Namespaces können hierarchisch verschachtelt werden, d.h. ein Namespace kann innerhalb eines anderen Namespace verschachtelt werden. Der Zugriff auf das Element eines verschachtelten Namespace erfolgt über seinen voll qualifizierten Namen.
Syntax: NamespaceA.NamespaceB.NamespaceC.LanguageElement
Beispiel für verschachtelte Namespaces und den Zugriff auf deren Member