Empfehlungen für die Definition von Bezeichnern
Die Definition von Bezeichnern erfolgt:
oBei der Deklaration von Variablen (Variablenname)
oBei der Definition von benutzerdefinierte Datentypen
oBei der Erstellung eines 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 die nachstehenden Empfehlungen für eine eindeutige Definition:
oVariablennamen in Bibliotheken
oBenutzerdefinierte Datentypen (DUTs) in Bibliotheken
oFunktionen, Funktionsbausteine, Programme (POU), Aktionen
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. Verwenden Sie die Großschreibung für die einzelnen Wörter des Basisnamens. Verwenden Sie die Kleinschreibung für den Rest (Beispiel: FileSize).
Datentyp |
Unterer Grenzwert |
Oberer Grenzwert |
Informationsinhalt |
Präfix |
Kommentar |
---|---|---|---|---|---|
BOOL |
FALSE |
TRUE |
1 Bit |
x* |
– |
b |
Reserviert |
||||
BYTE |
– |
– |
8 Bit |
by |
Bitzeichenfolge, nicht für arithmetische Operationen |
WORD |
– |
– |
16 Bit |
w |
Bitzeichenfolge, nicht für arithmetische Operationen |
DWORD |
– |
– |
32 Bit |
dw |
Bitzeichenfolge, nicht für arithmetische Operationen |
LWORD |
– |
– |
64 Bit |
lw |
Nicht für arithmetische Operationen |
SINT |
–128 |
127 |
8 Bit |
si |
– |
USINT |
0 |
255 |
8 Bit |
usi |
– |
INT |
–32.768 |
32.767 |
16 Bit |
i |
– |
UINT |
0 |
65.535 |
16 Bit |
ui |
– |
DINT |
–2.147.483.648 |
2.147.483.647 |
32 Bit |
di |
– |
UDINT |
0 |
4.294.967.295 |
32 Bit |
udi |
– |
LINT |
–263 |
263-1 |
64 Bit |
li |
– |
ULINT |
0 |
264-1 |
64 Bit |
uli |
– |
REAL |
– |
– |
32 Bit |
r |
– |
LREAL |
– |
– |
64 Bit |
lr |
– |
STRING |
– |
– |
– |
s |
– |
WSTRING |
– |
– |
– |
ws |
– |
TIME |
– |
– |
– |
tim |
– |
TIME_OF_DAY |
– |
– |
– |
tod |
– |
DATE_AND_TIME |
– |
– |
– |
dt |
– |
DATE |
– |
– |
– |
date |
– |
ENUM |
– |
– |
16 Bit |
e |
– |
POINTER |
– |
– |
– |
p |
– |
ARRAY |
– |
– |
– |
a |
– |
* für boolesche Variablen wird absichtlich ein x als Präfix gewählt, um die Variable von einem BYTE zu unterscheiden und um den IEC Programmierern die Unterscheidung zu erleichtern (vgl. Adressierung von %IX0.0). |
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 von benutzerdefinierten Datentypen
Funktionsbausteininstanzen und Variablen von benutzerdefinierten Datentypen erhalten ein Kürzel als Präfix für den Funktionsbaustein oder den Datentypnamen (z. B.: sdo).
Beispiel
cansdoReceivedTelegram: CAN_SDOTelegram;
TYPE CAN_SDOTelegram : (* prefix: sdo *)
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 Variable sind am Präfix g_ und globale Konstanten am Präfix gc_ erkennbar.
Beispiel
VAR_GLOBAL
g_iTest: INT;
END_VAR
VAR_GLOBAL CONSTANT
gc_dwExample: DWORD;
END_VAR
Variablennamen in Bibliotheken
Struktur
Für die Variablennamen gilt im Wesentlichen die obige Beschreibung. Verwenden Sie beim Zugreifen auf eine Variable in Ihrem Anwendungscode den Namespace der Bibliothek als Präfix.
Beispiel
g_iTest: INT; (declaration)
CAN.g_iTest (implementation, call in an application program
Benutzerdefinierte Datentypen (DUT) in Bibliotheken
Struktur
Der Name der einzelnen Strukturdatentypen besteht aus einer kurzen, aussagekräftigen Beschreibung (z.B. SDOTelegram) der Struktur.
Beispiel (in der Bibliothek mit dem Namespace CAL):
TYPE Day :(
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY);
Deklaration:
eToday: CAL.Day;
Verwendung in einer Anwendung:
IF eToday = CAL.Day.MONDAY THEN
HINWEIS: Bei einer Verwendung der in Bibliotheken deklarierten DUTs bzw. Aufzählungen sollten Sie die Möglichkeit einer Verwendung des Namespaces in Betracht ziehen.
Funktionen, Funktionsbausteine, Programme (POU), Aktionen
Stellen Sie den Namen von Funktionen, Funktionsbausteinen und Programmen einen kurzen aussagekräftigen Namen (z. B. SendTelegram) als Präfix voran. Wie bei den Variablen sollte der erste Buchstabe des Worts in einem POU-Namen immer mit einem Großbuchstaben beginnen, während alle anderen Worte in Kleinbuchstaben geschrieben sein sollten. Es empfiehlt sich, den Namen eines POUs aus einem Verb und einem Substantiv zu bilden.
Beispiel
FUNCTION_BLOCK SendTelegram (* prefix: canst *)
Geben Sie im Deklarationsteil eine kurze Beschreibung des POUs 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 eine Methode ggf. zusammen mit einem Kommentar ein. Fügen Sie bei der Deklaration der Methode eine kurze Beschreibung hinzu. Schnittstellennamen sollten mit einem I beginnen; z. B. ICANDevice.
HINWEIS: Bei der Verwendung von in Bibliotheken deklarierten POUs sollten Sie eine Verwendung des Namespaces in Betracht ziehen.