Pragmas verwenden
Pragmas in TwinCAT
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 Pragmas.
Es gibt Pragmas für unterschiedliche Effekte: Initialisierung einer Variablen, Monitoring einer Variablen, Erzwingen von Meldungsausgaben während des Übersetzungsvorgangs, Verhalten einer Variablen unter bestimmten Bedingungen etc..
Die Groß-/Kleinschreibung muss eingehalten werden. |
Beispiel:
{warning 'This is not allowed'}
{attribute 'obsolete' := 'datatype FB_Sample not valid!'}
Mögliche Einfügepositionen
Pragmas in TwinCAT 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 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 Attribute ein. Doppelklick auf die Spalte Attribute.
- 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 „;“ oder END_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 FBD/LD/IL > Sprungmarke einfügen und ersetzen dann den Standardtext 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.
Falsche und richtige Positionierung eines bedingten Pragmas:
Falsch: | Richtig: |
|
|
In den Eigenschaften der POU, Kategorie Advanced, 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 allein in der ersten Zeile des Deklarationsteils steht und nicht durch ein weiteres abgelöst oder aufgehoben wird, auf das gesamte Objekt.
Pragma-Kategorien
Die TwinCAT-Pragmas sind in folgende Kategorien aufgeteilt:
- Attributpragmas: Beeinflussung der Kompilierung und der Vorkompilierung (Attribut-Pragmas)
- Meldungspragmas: Ausgabe von benutzerdefinierten Meldungen während des Übersetzungsvorgangs (Meldungspragmas)
- Bedingte Pragmas: Beeinflussung der Codegenerierung (Bedingte Pragmas)
- Benutzerdefinierte Pragmas (Benutzerdefinierte Attribute)
Siehe auch: