Rollenzuordnung in der GDS-Portliste: PLCnext-Ports zuordnen
Dieses Thema enthält die folgenden Abschnitte:
Die GDS-Portliste des 'PLCnext'-Knotens in der ANLAGE enthält alle Ports, die im Projekt vorhanden sind (in einer lokalen Programm-POE definiert oder in einem eingebundenen, extern entwickelten Programm enthalten). Die GDS-Portliste eines Programminstanz-Knotens in der ANLAGE enthält die Ports der betreffenden Instanz.
Beispiel für eine Programminstanz mit instanzbezogenen I/O-Variablen und PLCnext-Ports.
In der folgenden Abbildung wurde in der ANLAGE per Doppelklick die Programminstanz 'MyProg1' geöffnet.
Die Programminstanz enthält beides:
- Die GDS-Portliste ist vorhanden, weil in einem Programmtyp Ports deklariert sind ('Verwendung' ist auf 'IN Port' oder 'OUT Port' gesetzt).
- Die Datenliste ist vorhanden, weil der Programmtyp programmglobale Variablen enthält ('Verwendung' = 'Programm'), für die eine Datenrichtung 'I/Q' eingestellt wurde. Solche Variablen werden zu instanzbezogenen I/O-Variablen, die Prozessdaten-Elementen zugewiesen werden können.
Ports sind entweder in einer lokalen Programm-POE mit einem der Schlüsselwörter 'IN Port' oder 'OUT Port' deklariert, oder sie stammen aus instanziierten externen Programmen und werden von diesen übergeben. IN und OUT Ports können einander zugewiesen (zugeordnet) werden. So können Daten zwischen Programmen, die im aktuellen Projekt entwickelt wurden, und extern erstellten Programmen (z.B. C++-Programme), die in einem Task instanziiert sind, übertragen werden.
Hintergrund: Ports von PLCnext Technology-Steuerungen
Bei Steuerungen der PLCnext Technology-Generation können Ports verwendet werden, zusätzlich zu den oder anstelle der ressourceglobalen Variablen. Programme kommunizieren über Ports, das heißt über die Ports können Daten aus Programmen gelesen oder in Programme geschrieben werden.
Ports ermöglichen auch die Kommunikation zwischen IEC 61131--3-konformen Programmen und Programmen, die in einer nicht-IEC 61131--3-Sprache, wie z.B. C++, geschrieben wurden.
Zu diesem Zweck lassen sich in der GDS-Portliste IN-Ports und OUT-Ports einander zuordnen. Portlisten gibt es auf dem 'PLCnext'-Knoten und auf Programminstanz-Knoten in der ANLAGE. Eine Portliste enthält alle Ports, die für den jeweiligen ANLAGE-Knoten relevant sind. Alle Zuweisungen zwischen Ports sind im Global Data Space der PLCnext Technology-Steuerung gespeichert.
Zuordnen von Ports
Mit Hilfe der Rollenauswahl können Sie in einer GDS-Portliste sehr einfach die Zuordnung von Ports vornehmen:
Hinweis
In Datenlisten, Portlisten und Variablentabellen erfolgt die Auswahl aus den Dropdownlisten mit einem einzelnen Klick, nicht per Doppelklick. |
- Linksklicken Sie in der Tabelle in das Feld, in dem Sie ein Datenelement zuweisen möchten und welches den Text 'Typ wählen' anzeigt oder bewegen Sie den Tabellencursor mit Hilfe der Pfeiltasten oder <Tab>/<Umschalt>+<Tab> auf dieses Tabellenfeld und drücken Sie die <Eingabe>-Taste.Es erscheint die Rollenauswahl. Diese ist in einen Baum auf der linken und Datenelementen auf der rechten Seite unterteilt. Die Rollenauswahl bietet nur Datenelemente an, die zum Datentyp für die anstehende Zuordnung passen.
- Markieren Sie einen Ordner im Baum links und klicken Sie dann auf das Datenelement rechts oder drücken Sie die <Eingabe>-Taste.
Hinweis
Die Rollenauswahl merkt sich die zuletzt getroffene Auswahl, solange der Editor nicht geschlossen wurde. |
Verwenden Sie die folgenden Tasten, um in der Rollenauswahl zu navigieren:
Drücken Sie die Tastenkombination ... | ... um ... |
<Tab>/<Umschalt> + <Tab> | zwischen den Ordnern links und den Einträgen rechts umzuschalten. |
<PfeilAb>/<PfeilAuf> | den Cursor nach unten/oben zu bewegen. |
<Eingabe> (Fokus auf der rechten Seite) | den aktuell markierten Eintrag auszuwählen, die Auswahlmaske zu schließen und den Eintrag in das Tabellenfeld zu übernehmen. |
<Pfeil nach rechts>/<Pfeil nach links> (Fokus auf der linken Seite) | den aktuell markierten Ordner auf der linken Seite zu erweitern/reduzieren. |
Hinweis
Ports können komplexe Datentypen sein, wie z. B. ARRAYs oder STRUCTs. In diesem Fall unterstützt die Rollenauswahl die Auswahl von einzelnen Port-Elementen. Nach dem Trennen eines Port-Elements bleibt dieses unverbunden in der GDS-Portliste zurück. Es kann dann mit dem Befehl 'Nicht verbundenes Port-Element löschen' aus der Liste entfernt werden. Lesen Sie hierzu das Thema "Ports mit anwenderdefinierten Datentypen". |
1-zu-n-Zuordnung für Ausgangsports
Ausgangsports können innerhalb einer Applikation mehrfach gelesen werden. In der GDS-Portliste kann ein Ausgangsport mehreren Eingangsports zugeordnet werden (1-zu-n-Zuordnung). Dazu muss der Ausgangsport dupliziert werden. Nur bereits zugeordnete Ausgangsports können dupliziert werden.
Um in der GDS-Portliste einen Ausgangsport mehreren Eingangsports zuzuordnen, gehen Sie wie folgt vor:
- Ordnen Sie mit Hilfe der Rollenauswahl den gewünschten Ausgangsport einem Eingangsport zu (wie oben beschrieben).
- Duplizieren Sie den Ausgangsport, indem Sie die zugehörige Tabellenzeile markieren und aus dem Kontextmenü den Befehl 'Ausgangsport duplizieren' auswählen oder auf die entsprechende Schaltfläche in der Symbolleiste klicken:
- Orden Sie den duplizierten Ausgangsport dem gewünschten Eingangsport zu.
- Wiederholen Sie ggf. die Schritte 2 und 3, um eine Kopie des Ausgangsports zu erzeugen und diese zuzuordnen.
Aufheben der 1-zu-n-Zuordnung und löschen duplizierter Ausgangsports
- Sie löschen eine Zuordnung für einem duplizierten Ausgangsport, indem Sie aus dem Kontextmenü des Ports den Befehl 'IN-Port trennen' auswählen oder auf die entsprechende Schaltfläche in der Symbolleiste klicken:
- Um den nicht mehr zugeordneten duplizierten Ausgangsport zu löschen, klicken Sie auf folgende Schaltfläche in der Symbolleiste:
- Wiederholen Sie die Schritte 1 und 2 für jeden duplizierten Port, der gelöscht werden soll.
Regeln für die Zuordnung von Ports
Beim Zuordnen von Ports in der GDS-Portliste gelten folgende Regeln:
Anwendungsfall 1: Die zuzuordnenden Datentypen sind beide elementare Datentypen
- Stammen beide Datentypen aus der C++/PLCnext-Domäne, dann sind folgende Zuordnungen möglich:
- Stammt mindestens einer der Datentypen nicht aus der C++/PLCnext-Domäne, dann müssen die Typen zuerst gemäß nachfolgender Tabelle "Datentypzuordnung: IEC 61131 - PLCnext - Feldbus" zugeordnet werden. Anschließend kann eine Zuordnung wie oben beschrieben erfolgen.
- Stammt mindestens einer der Typen aus der FDCML-Domäne und soll auf ein Array der C++/PLCnext-Domäne (wie z.B. BitstringX) gemappt werden, dann ist diese Zuordnung möglich, wie im "Anwendungsfall 2" beschrieben.
Anwendungsfall 2: Beide zuzuordnende Datentypen sind Arrays...
Voraussetzung: Die Zuordnung ist nur bei gleicher Anzahl an Elementen möglich.
- Bei elementaren Array-Basistypen wird wie folgt unterschieden:Stammen beide Typen aus der C++/PLCnext-Domäne, ist die Zuordnung möglich, wenn die Basistypen exakt zueinander passen.Stammt mindestens einer der Basistypen nicht aus der C++/PLCnext-Domäne, dann müssen die Basistypen zuerst gemäß nachfolgender Tabelle "Datentypzuordnung: IEC 61131 - PLCnext - Feldbus" zugeordnet werden. Anschließend ist die Zuordnung möglich, wenn die zuzuordnenden Basistypen exakt zueinander passen.
- Wenn es sich bei den Array-Basistypen um Strukturen handelt, ist eine Zuordnung gemäß dem unten beschriebenen "Anwendungsfall 3" möglich.
Anwendungsfall 3: Beide Datentypen sind Strukturen
Voraussetzung: Die Zuordnung ist nur möglich, wenn die Anzahl der Strukturfelder und -namen zueinander passen (Groß-/Kleinschreibung nicht relevant).
- Stammen beide Feldtypen aus der C++/PLCnext-Domäne, ist die Zuordnung möglich, wenn die Typen exakt zueinander passen.
- Sind beide Felder elementare Typen und stammt mindestens einer der Datentypen nicht aus der C++/PLCnext-Domäne, dann müssen die Typen zuerst gemäß nachfolgender Tabelle "Datentypzuordnung: IEC 61131 - PLCnext - Feldbus" zugeordnet werden. Anschließend ist die Zuordnung möglich, wenn die zuzuordnenden Typen exakt zueinander passen.
- Sind beide Felder Arrays, dann ist die Zuordnung gemäß Anwendungsfall 2 möglich.
- Sind beide Felder Strukturen, dann ist die Zuordnung gemäß Anwendungsfall 3 möglich.
- Sind beide Felder Enumerationen, dann ist die Zuordnung gemäß Anwendungsfall 4 möglich.
Anwendungsfall 4: Beide Datentypen sind Enumerationen
- Stammen beide Datentypen aus der PLCnext/C++-Domäne, ist eine Zuordnung möglich, wenn die Basistypen exakt zueinander passen.
- Stammt mindestens einer der Datentypen nicht aus der PLCnext/C++-Domäne, dann müssen die Basistypen zuerst gemäß nachfolgender Tabelle "Datentypzuordnung: IEC 61131 - PLCnext - Feldbus" zugeordnet werden. Anschließend ist die Zuordnung möglich, wenn die zuzuordnenden Typen exakt zueinander passen.
Anwendungsfall 5: Beide Datentypen sind anwenderdefinierte Strings wie z.B. STRING(20), StaticString20, WSTRING(20), StaticWString(20)
- Die Zuordnung ist bei gleicher Zeichenkapazität möglich.
- WStrings können nur anderen WStrings zugeordnet werden, während nicht-WStrings nur nicht-WStrings zugeordnet werden können.
Anwendungsfall 6: ein Datentyp ist ein Array und der andere ein elementarer vom Typ OctetString[n] oder Bitstring[n]
Die Zuordnung von Arrays zu (Prozessdatum)-Ports der elementaren Typen OctetString[n] oder BitString[n] ist möglich, wenn die gesamte Datengröße zueinander passt.
Hinweis
Nur möglich für PLCnext-Steuerungen mit der Firmwareversion 2021.6 oder höher. |
Anwendungsfall 7: spezielle Handhabung sicherheitsbezogener FDCML-Datentypen (d.h. sicherheitsbezogenes Prozessdatum).
Die Zuordnung elementarer Typen mit sicherheitsbezogenen FDCML-Datentypen ist nur möglich, wenn die Datenlängen gleich sind.
Tabelle "Datentypzuordnung: IEC 61131 - PLCnext - Feldbus"