Bezeichner werden bei der Deklaration von Variablen (Variablennamen), benutzerdefinierten Datentypen und bei der Erstellung von POUs (Funktionen, Funktionsbausteine, Programme) und Visualisierungen definiert. Sie können die folgenden Empfehlungen für die Benennung von Identifikatoren befolgen, um sie so eindeutig wie möglich zu gestalten.
(1) Namen der Variablen
Die Benennung von Variablen in Anwendungen und Bibliotheken sollte so weit wie möglich der ungarischen Notation folgen:
Für jede Variable sollte eine aussagekräftige, kurze Beschreibung gefunden werden, der Basisname. Der erste Buchstabe eines jeden Wortes eines Basisnamens sollte ein Großbuchstabe sein, die anderen sollten klein sein (Beispiel: FileSize). Bei Bedarf kann zusätzlich eine Übersetzungsdatei für andere Sprachen erstellt werden.
Vor dem Basisnamen, der dem Datentyp der Variablen entspricht, werden Präfix(e) in Kleinbuchstaben hinzugefügt.
Datentyp |
Untere Grenze |
Obere Grenze |
Informationsgehalt |
Prefix |
Anmerkung |
---|---|---|---|---|---|
BOOL |
FALSE |
TRUE |
1 Bit |
x* |
|
|
|
|
|
b |
reserviert |
BYTE |
|
|
8 Bit |
von |
Bit-String, nicht für arithmetische Operationen |
WORD |
|
|
16 Bit |
w |
Bit-String, nicht für arithmetische Operationen |
DWORD |
|
|
32 Bit |
dw |
Bit-String, 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 |
|
|
|
|
|
|
|
TIME |
|
|
|
tim |
|
TIME_OF_DAY |
|
|
|
tod |
|
DATENZEIT |
|
|
|
dt |
|
DATUM |
|
|
|
date |
|
ENUM |
|
|
|
16 Bit |
|
e |
|
|
POINTER |
|
|
|
p |
|
ARRAY |
|
|
|
|
a |
|
* Ausdrücklich für BOOLean-Variablen wird x als Präfix gewählt, um sich von BYTE zu unterscheiden und auch um der Wahrnehmung eines IEC-Programmierers entgegenzukommen (siehe Adressierung %IX0.0).
Beispiele:
bySubIndex: BYTE;
sFileName: STRING;
udiCounter: UDINT;
In verschachtelten Deklarationen werden die Präfixe in der Reihenfolge der Deklarationen aneinandergehängt:
Beispiel:
pabyTelegramData: ZEIGER AUF ARRAY [0..7] VON BYTE;
Funktionsbausteininstanzen und Variablen von benutzerdefinierten Datentypen erhalten als Präfix ein Kürzel für den FB- bzw. Datentypnamen (Beispiel: sdo).
Beispiel:
cansdoReceivedTelegram: CAN_SDOTelegram;
TYPE CAN_SDOTelegram : (* Präfix: sdo *)
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
aby: ARRAY [0..3] VON BYTE;
END_STRUCT
END_TYPE
Lokale Kontanten (c) beginnen mit dem Präfix c und einem angehängten Unterstrich, gefolgt von dem Typ-Präfix und dem Variablennamen.
Beispiel:
VAR CONSTANT
c_uiSyncID: UINT := 16#80;
END_VAR
Für globale Variablen (g) und globale Konstanten (gc) wird ein zusätzliches Präfix + Unterstrich an das Bibliothekspräfix angehängt:
Beispiele:
VAR_GLOBAL
CAN_g_iTest: INT;
END_VAR
VAR_GLOBAL CONSTANT
CAN_gc_dwExample: DWORD;
END_VAR
(2) Benutzerdefinierte Datentypen (DUT)
Der Name eines jeden Strukturdatentyps besteht aus einem Bibliothekspräfix (Beispiel: CAN), einen Unterstrich und eine möglichst kurze aussagekräftige Beschreibung (Beispiel: SDOTelegram) der Struktur. Das zugehörige Präfix für verwendete Variablen dieser Struktur sollte direkt nach dem Doppelpunkt folgen.
Beispiel:
TYPE CAN_SDOTelegram : (* Präfix: sdo *)
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
abyData: ARRAY [0..3] VON BYTE;
END_STRUCT
END_TYPE
Aufzählungen beginnen mit dem Präfix der Bibliothek (Beispiel: CAL), gefolgt von einem Unterstrich und der Kennung in Großbuchstaben.
Beachten Sie, dass in früheren Versionen von CODESYS ENUM-Werte > 16#7FFF zu Fehlern geführt haben, da sie nicht automatisch in INT-Werte umgewandelt wurden. Aus diesem Grund sollten ENUMs immer mit korrekten INT-Werten definiert werden.
Beispiel:
TYPE CAL_Day :(
CAL_MONDAY,
CAL_TUESDAY,
CAL_WEDNESDAY,
CAL_THIRSDAY,
CAL_FRIDAY,
CAL_SATURDAY,
CAL_SUNDAY);
Erklärung:
eToday: CAL_Day;
(3) Funktionen, Funktionsbausteine, Programme (POU)
Die Namen von Funktionen, Funktionsbausteinen und Programmen bestehen aus dem Bibliothekspräfix (Beispiel: CAN), einen Unterstrich und einen aussagekräftigen Kurznamen der POU (Beispiel: SendTelegram). Wie bei Variablen sollte der erste Buchstabe eines Wortes des POU-Namens immer ein Großbuchstabe sein, die anderen sollten klein geschrieben werden. Es wird empfohlen, den Namen der POU aus einem Verb und einem Substantiv zusammenzusetzen.
Beispiel:
FUNCTION_BLOCK CAN_SendTelegram (* Präfix: canst *)
Im Deklarationsteil sollte eine kurze Beschreibung der POU als Kommentar angegeben werden. Außerdem sollten alle Inputs und Outputs mit Kommentaren versehen werden. Bei Funktionsbausteinen sollte das zugehörige Präfix für Einrichtungsinstanzen direkt auf den Namen folgen.
Aktionen erhalten kein Präfix; nur Aktionen, die nur intern, d.h. von der POU selbst, aufgerufen werden sollen, beginnen mit prv_.
Jede Funktion muss - aus Gründen der Kompatibilität mit früheren Versionen von CODESYS - mindestens einen Parameter haben. Externe Funktionen dürfen keine Strukturen als Rückgabewerte verwenden.
(4) Bezeichner für Visualisierungen
Hinweis: Derzeit müssen Sie vermeiden, dass eine Visualisierung den gleichen Namen wie eine andere POU im Projekt hat. Dies würde bei Änderungen zwischen den Visualisierungen zu Problemen führen.