Ports in der GDS-Portliste zuordnen
Die Zuordnung von Ports zueinander in einer GDS-Portliste geschieht einfach durch Auswählen eines Eintrags in der entsprechenden Spalte unter Verwendung der Rollenauswahl:
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 eine Port-Elements bleibt dieses unverbunden in der Liste stehen und kann mit dem Symbolleisten-Befehl entfernt werden. Lesen Sie hierzu das Thema "Ports mit anwenderdefinierten Datentypen". |
Beim Zuordnen von Ports in der GDS-Portliste und Variablen in Datenlisten 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:
StartPort | EndPort |
Boolesch | Boolesch |
uint8 |
uint16 |
uint32 |
uint64 |
char8 |
int8 |
int16 |
int32 |
int64 |
float32 |
float64 |
char8 | char8 |
uint16 |
uint32 |
uint64 |
int16 |
int32 |
int64 |
float32 |
float64 |
uint8 | uint8 |
uint16 |
uint32 |
uint64 |
int16 |
int32 |
int64 |
float32 |
float64 |
uint16 | uint16 |
uint32 |
uint64 |
int32 |
int64 |
float32 |
float64 |
uint32 | uint32 |
uint64 |
int64 |
float64 |
uint64 | uint64 |
int8 | int8 |
int16 |
int32 |
int64 |
float32 |
float64 |
int16 | int16 |
int32 |
int64 |
float32 |
float64 |
int32 | int32 |
int64 |
float64 |
int64 | int64 |
float32 | float32 |
float64 |
float64 | float64 |
- 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.
Anwendungsfall 8: beide Typen sind anwenderdefinierte Typen aus der IEC- oder FDCML-Domäne
Anwenderdefinierte IEC-Typen werden automatisch auf Basis der Datentypen der Prozessdaten, die in der FDCML-Datei der beteiligten Steuerung definiert sind, erzeugt. Dies geschieht während deren Instanziierung. Sie werden dann gespeichert und zusammen mit dem Projekt kompiliert. Das FDCML DataTypeRepository wird dynamisch mit diesen Prozessdatentypen des aktuell geöffneten Projekts aktualisiert. Sie werden entladen, wenn das Projekt geschlossen wird.
So kann eine IEC 61131-3-Variable oder ein PLCnext-Port (Datentyp is in der IEC-Domäne definiert) einem Element (Prozessdatenelement oder Port) mit einem in der FDCML-Domäne definierten Datentypen zugewiesen werden.
Anwendungsfall 9: STRUCT-Member mit Hilfe der Rollenauswahl in der Portliste verbinden
- Ein vorhandener IN- oder OUT-Port mit einem elementaren Typen als Quelle kann mit alle kompatiblen Ports einschließlich STRUCT-Membern verbunden werden.
- Die neue Zeile (letzte Reihe) in der Portliste bietet alle verfügbaren OUT-Ports einschließlich der STRUCT-Member zur Auswahl an, die als Quellport für weitere Verbindungen verwendet werden können.
- Die neue Zeile (letzte Reihe) in der Portliste bietet alle verfügbaren IN-Ports einschließlich der STRUCT-Member zur Auswahl an, die als Quellport für weitere Verbindungen verwendet werden können.
Tabelle "Datentypzuordnung: IEC 61131 - PLCnext - Feldbus"
Anzahl d. Bits | IEC61131 | PLCnext | Feldbus |
1 | BOOL | Bit | Bit |
1 | BOOL | Bit | BOOL |
8 | BOOL | Boolesch | Boolesch |
8 | BYTE | uint8 | Bitstring8 |
8 | BYTE | uint8 | BYTE |
8 | BYTE | uint8 | Octetstring1 |
8 | SINT | int8 | Signed8 |
8 | SINT | int8 | SINT |
8 | USINT | uint8 | Unsigned8 |
8 | USINT | uint8 | USINT |
16 | INT | int16 | INT |
16 | INT | int16 | Signed16 |
16 | UINT | uint16 | UINT |
16 | UINT | uint16 | Unsigned16 |
16 | WORD | uint16 | Bitstring16 |
16 | WORD | uint16 | Octetstring2 |
16 | WORD | uint16 | WORD |
32 | DINT | int32 | DINT |
32 | DINT | int32 | Signed32 |
32 | DWORD | uint32 | Bitstring32 |
32 | DWORD | uint32 | DWORD |
32 | DWORD | uint32 | Octetstring4 |
32 | REAL | float32 | Float32 |
32 | REAL | float32 | REAL |
32 | TIME | uint32 | TIME |
32 | UDINT | uint32 | UDINT |
32 | UDINT | uint32 | Unsigned32 |
64 | INT64 | int64 | LINT |
64 | LDATE | int64 | LDATE |
64 | LDATE_AND_TIME | int64 | LDATE_AND_TIME |
64 | LDT | int64 | LDT |
64 | LINT | int64 | Signed64 |
64 | LREAL | float64 | Float64 |
64 | LREAL | float64 | LREAL |
64 | LTIME | int64 | LTIME |
64 | LTIME_OF_DAY | int64 | LTIME_OF_DAY |
64 | LTOD | int64 | LTOD |
64 | LWORD | uint64 | Bitstring64 |
64 | LWORD | uint64 | LWORD |
64 | LWORD | uint64 | Octetstring8 |
64 | ULINT | uint64 | ULINT |
64 | ULINT | uint64 | Unsigned64 |
n*8 | STRING | IecString | StringASCII |
n*8 | | ARRAY aus uint8 | OctetstringN |