Pragma {flag} für Initialisierung, Überwachung, Erstellung von Symbolen:
{Flag [<Flags>] [aus|ein]}
<Flags> kann eine Kombination aus den folgenden Flags sein:
Flag |
Beschreibung |
---|---|
noini |
Die Variable wird nicht initialisiert. |
nowatch |
Die Variable kann nicht überwacht werden |
noread |
Die Variable wird ohne Leseberechtigung in die Symboldatei exportiert |
nowrite |
Die Variable wird ohne Schreibberechtigung in die Symboldatei exportiert |
noread, nowrite |
Die Variable wird nicht in die Symboldatei exportiert |
Mit dem Modifikator "on" wirkt das Pragma auf alle nachfolgenden Variablendeklarationen, bis es durch das Pragma {flag off} beendet wird oder bis es durch ein anderes Pragma {flag <flags> on} überschrieben wird.
Ohne den Modifikator "on" oder "off" wirkt das Pragma nur auf die aktuelle Variablendeklaration (d.h. die Deklaration, die durch das nächste Semikolon abgeschlossen wird).
Beispiel für die Verwendung von pragma {flag}: Initialisierung und Überwachung von Variablen
Die Variable a wird nicht initialisiert und wird nicht überwacht. Die Variable b wird nicht initialisiert:
VAR a : INT {flag noinit, nowatch}; b : INT {flag noinit }; END_VAR VAR {flag noinit, nowatch on} a : INT; {flag noinit on} b : INT; {flag off} END_VAR
Beide Variablen werden nicht initialisiert:
{flag noinit on} VAR a : INT; b : INT; END_VAR {flag off} VAR {flag noinit on} a : INT; b : INT; {flag off} END_VAR
Beispiel für die Verwendung von pragma {flag}: Variablen in die Symboldatei holen
Die Flags "noread" und "nowrite" werden in einer POU mit Lese- und/oder Schreibberechtigung verwendet, um ausgewählte Variablen mit eingeschränkten Zugriffsrechten zu versehen. Die Voreinstellung für die Variable entspricht der Einstellung für die POU, in der die Variable deklariert ist. Wenn eine Variable weder Lese- noch Schreibrechte hat, wird sie nicht in die Symboldatei exportiert.
Wenn die POU Lese- und Schreibrechte hat, dann kann mit den folgenden Pragmas die Variable a nur mit Schreibrechten exportiert werden, während die Variable b überhaupt nicht exportiert werden kann:
VAR a : INT {flag noread}; b : INT {flag noread, nowrite}; END_VAR VAR { flag noread on} a : INT; { flag noread, nowrite on} b : INT; {flag off} END_VAR
Weder die Variablen a noch b werden in die Symboldatei exportiert:
{ flag noread, nowrite on } VAR a : INT; b : INT; END_VAR {flag off} VAR { flag noread, nowrite on} a : INT; b : INT; {flag off} END_VAR
Das Pragma wirkt additiv auf alle nachfolgenden Variablendeklarationen.
Beispiel: (alle verwendeten POUs werden mit Lese- und Schreibberechtigung exportiert)
a : afb; ... FUNCTION_BLOCK afB VAR b : bfb {flag nowrite}; c : INT; END_VAR ... FUNCTION_BLOCK bfB VAR d : INT {flag noread}; e : INT {flag nowrite}; END_VAR
"a.b.d.": Wird nicht exportiert
"a.b.e": Wird nur mit Leseberechtigung exportiert
"a.c": Wird mit Lese- und Schreibberechtigung exportiert.
Pragma {bitaccess...} für den Bitaccess
Dieses Pragma kann verwendet werden, um eine korrekte Anzeige einer Variable, die mit Hilfe einer globalen Konstante einen Bitzugriff durchführt, im Eingabeassistenten, in der Intellisense-Funktion und bei der Überwachung im Deklarationsfenster zu erhalten. Weiterhin wird es bewirken, dass, wenn diese Variable im Deklarationsfenster der jeweiligen POU überwacht wird, die verwendeten globalen Konstanten unterhalb der jeweiligen Strukturvariablen angezeigt werden.
Bitte beachten: Die Projektoption 'Konstanten ersetzen' (Kategorie Build) muss aktiviert sein!
Das Pragma muss in der Deklaration der Struktur in einer eigenen Zeile eingefügt werden. Die Zeile wird nicht durch ein Semikolon abgeschlossen.
Syntax: {bitaccess <Globale Konstante> <Bitnummer> '<Kommentar>'}
<Global Constant> : Name der globalen Konstante, die in einer globalen Variablenliste definiert sein muss.
<Bitnumber> : Wert der globalen Konstante, wie in der Liste der globalen Variablen definiert.
Pragma {link} zur Verknüpfung einer POU während der Codegenerierung
Normalerweise wird eine POU (Programm, Funktion, Funktionsblock) oder eine Data Unit Type Definition (DUT), die nicht innerhalb des Projekts aufgerufen wird, bei der Codegenerierung nicht verknüpft. Es kann aber gewünscht sein, dass eine Funktion, die z.B. über eine Bibliothek in das Projekt eingebunden ist, nach dem Download auf dem Laufzeitsystem zur Verfügung steht, auch wenn sie vom Anwendungsprogramm nicht direkt verwendet wird (z.B. für irgendwelche Prüfoperationen). Zu diesem Zweck können Sie das {link}-Pragma an einer beliebigen Stelle im Deklarationsteil einer POU oder in einem Prüfling einfügen, um die Verknüpfung der POU trotzdem zu erzwingen.