Pragmas verwenden
Pragma in CODESYS
Als Pragma gilt ein Text im Quellcode der Applikation, der in geschweiften Klammern steht. Pragmas werden verwendet, um spezielle Anweisungen im Code einzufügen, die der Compiler auswerten kann. Damit kann ein Pragma die Eigenschaften einer oder mehrerer Variablen bezüglich der Vorkompilierung oder der Kompilierung (Codegenerierung) beeinflussen. Pragmas, die der Compiler nicht kennt, überliest er wie einen Kommentar.
Der Anweisungsstring eines Pragmas kann auch mehrzeilig sein.
Zur Syntax im Detail sehen Sie bitte die Beschreibungen der einzelnen CODESYS-Pragmas.
Es gibt Pragmas für unterschiedliche Effekte: Initialisierung einer Variablen, Monitoring einer Variablen, Hinzufügen einer Variablen zur Symbolkonfiguration, Erzwingen von Meldungsausgaben während des Übersetzungsvorgangs, Verhalten einer Variablen unter bestimmten Bedingungen etc.
Wichtig
Die Groß-/Kleinschreibung muss eingehalten werden.
{warning 'This is not allowed'} {attribute 'obsolete' := 'datatype fb1 not valid!'} {attribute 'Test':='TestValue1; TestValue2; TestValue3'}
Mögliche Einfügepositionen
Wichtig
Pragmas in CODESYS sind keine Eins-zu Eins-Implementierungen der C-Präprozessor-Direktiven. Sie müssen ein Pragma wie eine normale Anweisung positionieren. Sie dürfen ein Pragma nicht innerhalb eines Ausdrucks verwenden.
Ein Pragma, das der CODESYS-Compiler auswerten soll, können Sie an folgenden Positionen einfügen:
Im Deklarationsteil eines Programmierbausteins:
Im textuellen Deklarationseditor geben Sie Pragmas direkt als Zeile(n) ein, entweder am Anfang des Bausteins oder vor einer Variablendeklaration.
Im tabellarischen Editor geben Sie Pragmas, die oberhalb der ersten Deklarationszeile stehen sollen, im Dialog Deklarationsteil editieren / Attribute ein.
In einer globalen Variablenliste
Im Implementierungsteil eines Programmierbausteins:
Das Pragma muss an einer „Anweisungsposition“ stehen, also am Anfang eines Programmierbausteins in einer separaten Zeile, oder nach einem „
;
“ oderEND_IF
,END_WHILE
etc.FBD/LD/AWL-Editor: Pragmas in Netzwerken des FUP/KOP/AWL-Editors geben Sie wie eine Sprungmarke ein: Wählen Sie dazu den Befehl Label: im Textfeld der Marke durch die entsprechende Pragmaanweisung. Wenn Sie ein Pragma zusätzlich zu einer Sprungmarke verwenden wollen, tragen Sie zunächst das Pragma und dann die Sprungmarke ein.
. Ersetzen Sie dann den Standardtext
FALSCH:
{IF defined(abc)} IF x = abc THEN {ELSE} IF x = 12 THEN {END_IF} y := {IF defined(cde)} 12; {ELSE} 13; {END_IF} END_IF
RICHTIG:
{IF defined(abc)} IF x = abc THEN {IF defined(cde)} y := 12; {ELSE} y := 13; {END_IF} END_IF {ELSE} IF x = 12 THEN {IF defined(cde)} y := 12; {ELSE} y := 13; {END_IF} END_IF {END_IF}
Tipp
Im Dialog Eigenschaften, Kategorie Übersetzen können Sie Defines angeben, die in Pragmas abgefragt werden können.
Wirkungsbereich:
Abhängig vom Typ und Inhalt eines Pragmas wirkt ein Pragma auf Folgendes:
die nachfolgenden Deklarationen
genau auf die nachfolgende Anweisung
auf alle nachfolgenden Anweisungen bis es mit einem entsprechenden Pragma wieder aufgehoben wird
auf alle nachfolgenden Anweisungen, bis dasselbe Pragma mit anderen Parametern ausgeführt, oder das Ende des Codes erreicht wird. „Code“ in diesem Kontext heißt: Deklarationsteil, Implementierungsteil, Globale Variablenliste, Typdeklaration. Somit wirkt ein Pragma, das alleine in der ersten Zeile des Deklarationsteils steht und nicht durch ein weiteres abgelöst oder aufgehoben wird, auf das gesamte Objekt.
Pragma-Kategorien in CODESYS
Die CODESYS-Pragmas sind in folgende Kategorien aufgeteilt:
Attributpragmas: Beeinflussung der Kompilierung und der Vorkompilierung
Meldungspragmas: Ausgabe von benutzerdefinierten Meldungen während des Übersetzungsvorgangs
Bedingte Pragmas: Beeinflussung der Codegenerierung
Benutzerdefinierte Pragmas