- Home
- IEC 61131-3-Programmierung
- Variablen
- Regeln für das Zuordnen von Ports und Variablen
Regeln für das Zuordnen von Ports und Variablen
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.
- 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.
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. |
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.
Zuordnung von anwenderdefinierten Feldbus-Datentypen auf Variablen/Ports
Anwenderdefinierte Datentypen, die von einem Feldbusgerät bereitgestellt werden, können in Datenlisten direkt Variablen oder Ports zugewiesen werden, wenn der Datentyp der Zielvariablen bzw. des Zielports mit dem Feldbusdatentyp übereinstimmt. Direkt bedeutet, dass der gesamte anwenderdefinierte Datentyp über die Rollenauswahl zugewiesen werden kann und es nicht notwendig ist, einzelne Member separat zuzuweisen.
Informieren Sie sich im Benutzerhandbuch über die Zusammensetzung und die Typen der Member der zuzuordnenden Feldbus-Datentypen und deklarieren Sie die entsprechenden Datentypen und Variablen in Ihrem Projekt. Die Zuordnung muss nach folgenden Regeln erfolgen:
Feldbus-Typ | PLCnext-Typ |
---|---|
Aufzählungen (Enumerationen) | Basisdatentyp der Enum-Member |
Zeichenfolgen | BYTE-Array |
STRUCTs | STRUCT |
ARRAY (of ARRAY) | ARRAY (of ARRAY) |
Anschließend können die Prozessdaten-Elemente und Variablen in der Datenliste in gewohnter Weise über die Rollenauswahl zugeordnet werden.
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 |