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..

Pragmas verwenden 1:

Die Groß-/Kleinschreibung muss eingehalten werden.

Beispiel:

{warning 'This is not allowed'}
{attribute 'obsolete' := 'datatype FB_Sample not valid!'}

Mögliche Einfügepositionen

Pragmas verwenden 2:

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:

Falsche und richtige Positionierung eines bedingten Pragmas:

Falsch:

Richtig:

{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
{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}
Pragmas verwenden 3:

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:

Pragma-Kategorien

Die TwinCAT-Pragmas sind in folgende Kategorien aufgeteilt:

Siehe auch: