Die Definition von Bezeichnern erfolgt:
Bei der Deklaration von Variablen (Variablenname)
Bei der Definition von benutzerdefinierten Datentypen
Bei der Erstellung von POUs (Funktionen, Funktionsbausteine, Programme)
Zusätzlich zu den allgemeinen Elementen, die bei der Definition eines Bezeichners berücksichtigt werden müssen (vgl. Kapitel Allgemeine Informationen über die Variablendeklaration), beachten Sie bitte Folgendes für eine eindeutige Definition:
Bei der Benennung von Variablen in Anwendungen und Bibliotheken befolgen Sie bitte so weit wie möglich die ungarische Notation.
Verfassen Sie für jede Variable eine kurze aussagekräftige Beschreibung. Diese Beschreibung dient als Basisname. Beginnen Sie jedes Wort des Basisnamens mit einem Großbuchstaben. Verwenden Sie Kleinbuchstaben für den Rest (Beispiel: FileSize
).
Datentyp |
Unterer Grenzwert |
Oberer Grenzwert |
Informationsinhalt |
Präfix |
Kommentar |
---|---|---|---|---|---|
BOOL |
FALSE |
TRUE |
1 Bit |
|
– |
|
Reserviert |
||||
BYTE |
– |
– |
8 Bit |
|
Bitzeichenfolge, nicht für arithmetische Operationen |
WORD |
– |
– |
16 Bit |
|
Bitzeichenfolge, nicht für arithmetische Operationen |
DWORD |
– |
– |
32 Bit |
|
Bitzeichenfolge, nicht für arithmetische Operationen |
LWORD |
– |
– |
64 Bit |
|
Bitzeichenfolge, nicht für arithmetische Operationen |
SINT |
-128 |
127 |
8 Bit |
|
Arithmetischer Ganzzahl-Datentyp, 8 Bit |
USINT |
0 |
255 |
8 Bit |
|
Arithmetischer Ganzzahl-Datentyp, 8 Bit |
INT |
-32.768 |
32.767 |
16 Bit |
|
Arithmetischer Ganzzahl-Datentyp, 16 Bit |
UINT |
0 |
65.535 |
16 Bit |
|
Arithmetischer Ganzzahl-Datentyp, 16 Bit |
DINT |
-2.147.483.648 |
2.147.483.647 |
32 Bit |
|
Arithmetischer Ganzzahl-Datentyp, 32 Bit |
UDINT |
0 |
4.294.967.295 |
32 Bit |
|
Arithmetischer Ganzzahl-Datentyp, 32 Bit |
LINT |
–263 |
263-1 |
64 Bit |
|
Arithmetischer Ganzzahl-Datentyp, 64 Bit |
ULINT |
0 |
264-1 |
64 Bit |
|
Arithmetischer Ganzzahl-Datentyp, 64 Bit |
REAL |
– |
– |
32 Bit |
|
Arithmetischer Gleitkomma-Datentyp, 32 Bit |
LREAL |
– |
– |
64 Bit |
|
Arithmetischer Ganzzahl-Datentyp, 64 Bit |
STRING |
– |
– |
– |
|
Einzelbyte-Zeichenfolge variabler Länge (Standardeinstellung: 80 Zeichen) |
WSTRING |
– |
– |
– |
|
Doppelbyte-Zeichenfolge variabler Länge (Standardeinstellung: 80 Zeichen) |
TIME |
– |
– |
– |
|
Dauer, 32 Bit |
LTIME |
– |
– |
– |
|
Dauer, 64 Bit |
|
– |
– |
– |
|
Tageszeit, 32 Bit |
|
– |
– |
– |
|
Tageszeit, 64 Bit |
|
– |
– |
– |
|
Datum und Uhrzeit |
|
– |
– |
– |
|
– |
DATE |
– |
– |
– |
|
Kalenderdatum |
LDATE |
– |
– |
– |
|
Kalenderdatum |
Enumeration |
– |
– |
– |
|
– |
POINTER |
– |
– |
– |
|
– |
ARRAY |
– |
– |
– |
|
– |
Structure |
– |
– |
– |
|
– |
Function block |
– |
– |
– |
|
– |
Interface |
– |
– |
– |
|
– |
Union |
– |
– |
– |
|
– |
* Für boolesche Variablen wird bewusst ein x als Präfix gewählt, um die Variable von einem BYTE zu unterscheiden und den IEC Programmierern die Unterscheidung zu erleichtern (vgl. Adressierung von |
Einfache Deklaration
Beispiele für einfache Deklarationen:
bySubIndex: BYTE;
sFileName: STRING;
udiCounter: UDINT;
Verschachtelte Deklaration
Beispiel für eine verschachtelte Deklaration, wobei die Präfixe in der Reihenfolge der Deklarationen miteinander verbunden sind:
pabyTelegramData: POINTER TO ARRAY [0..7] OF BYTE;
Funktionsbausteininstanzen und Variablen benutzerdefinierter Datentypen
Funktionsbausteininstanzen und Variablen benutzerdefinierter Datentypen erhalten eine Verknüpfung für den Funktionsbaustein oder den Datentypnamen als Präfix (Beispiel: stSDO
).
Beispiel
stSDOReceivedTelegram: ST_SDOTelegram;
TYPE ST_SDOTelegram :
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
aby: ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE
Lokale Konstanten
Lokale Konstanten (c) beginnen mit dem Präfix c
und einem Unterstreichungszeichen, gefolgt von einem Datentyppräfix und einem Variablennamen.
Beispiel
VAR CONSTANT
c_uiSyncID: UINT := 16#80;
END_VAR
Globale Variablen und globale Konstanten
Globale Variablen werden mit dem Präfix G_
(g_
) und globale Konstanten mit dem Präfix Gc_
(gc_
) versehen.
Beispiel
VAR_GLOBAL
G_iTest: INT;
END_VAR
VAR_GLOBAL CONSTANT
Gc_dwExample: DWORD;
END_VAR
Struktur
Für die Variablennamen gilt im Wesentlichen die obige Beschreibung. Verwenden Sie beim Zugreifen auf eine Variable in Ihrem Anwendungscode den Namensraum der Bibliothek als Präfix.
Beispiel
G_iTest: INT; (declaration)
CAN.G_iTest (implementation, call in an application program
Struktur
Der Name jedes Strukturdatentyps besteht aus dem entsprechenden Typpräfix (auch POU-Präfix) und einem kurzen, aussagekräftigen Namen (z. B. ET_Day
) der Struktur.
Beispiel (in der Bibliothek mit dem Namensraum CAL
):
TYPE ET_Day :(
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY);
Deklaration:
etToday: CAL.ET_Day;
Verwendung in einer Anwendung:
IF etToday = CAL.ET_Day.MONDAY THEN
Die Namen von Funktionen, Funktionsbausteinen und Programmen bestehen aus dem entsprechenden Typpräfix (auch POU-Präfix) und einem kurzen, aussagekräftigen Namen der POU (z. B. FB_SendTelegram
). Wie bei den Variablen sollte der erste Buchstabe des Worts in einem POU-Namen immer mit einem Großbuchstaben beginnen, während alle anderen in Kleinbuchstaben geschrieben sein sollten. Setzen Sie z. B. den Namen einer POU aus einem Verb und einem Substantiv zusammen, um explizit auf die Aufgabe des Funktionsbausteins zu verweisen.
Beispiel
FUNCTION_BLOCK FB_SendTelegram
Geben Sie im Deklarationsteil eine kurze Beschreibung der POU als Kommentar ein. Im weiteren Verlauf sollten auch Eingänge und Ausgänge mit Kommentaren versehen werden. Bei Funktionsbausteinen sollten Sie das zugeordnete Präfix für Einrichtungsinstanzen direkt nach dem Namen einfügen.
Aktionen
Aktionen erhalten kein Präfix. Nur den Aktionen, die ausschließlich intern und somit von der POU selbst aufgerufen werden, ist das Präfix prv_
vorangestellt.
Struktur
Bei der Definition von Methodennamen gelten die gleichen Regeln wie für Aktionen. Geben Sie Kommentare für mögliche Eingaben einer Methode ein. Fügen Sie bei der Deklaration der Methode eine kurze Beschreibung hinzu. Beginnen Sie Schnittstellennamen mit dem Präfix IF_
(I
), z. B. IF_CANDevice
.