Utilizzo di Pragmas
Pragma in CODESYS
Un pragma è un testo nel codice sorgente dell'applicazione racchiuso tra parentesi graffe. I pragma vengono utilizzati per inserire istruzioni speciali nel codice, che il compilatore può valutare. Ciò consente a un pragma di influenzare le proprietà di una o più variabili rispetto alla precompilazione o alla compilazione (generazione del codice). I pragma che il compilatore non riconosce vengono passati come commento.
La stringa di istruzione di un pragma può anche estendersi su più righe.
Per maggiori dettagli sulla sintassi, vedere le descrizioni dei singoli CODESYS pragma.
Esistono diversi pragma per scopi diversi (ad esempio: inizializzazione di una variabile, monitoraggio di una variabile, aggiunta di una variabile alla configurazione del simbolo, forzatura della visualizzazione di messaggi durante il processo di compilazione e comportamento di una variabile in determinate condizioni).
Importante
È necessario rispettare sia le maiuscole che le minuscole.
Categorie di pragma
IL CODESYS I pragma sono suddivisi nelle seguenti categorie:
Durante il processo di compilazione è possibile visualizzare messaggi personalizzati.
Compilazione e precompilazione possono essere influenzate. A questo scopo, sono disponibili pragma per diversi scopi, ad esempio per l'inizializzazione, il monitoraggio o l'aggiunta di una variabile alla configurazione del simbolo.
La generazione del codice può essere controllata da istruzioni condizionali. Ad esempio, il comportamento di una variabile può variare in determinate condizioni.
Pragma definiti dall'utente
Suggerimento
Nel Proprietà dialogo (Compilare categoria), è possibile dichiarare le "definizioni" del compilatore che possono essere interrogate nei pragma.
Possibili posizioni di inserimento
Importante
Pragmas in CODESYS non sono implementazioni uno a uno delle direttive del preprocessore C. È necessario posizionare un pragma come una normale istruzione. Non è consentito utilizzare un pragma all'interno di un'espressione.
È possibile inserire una direttiva che il compilatore può valutare in varie posizioni.
Nell'intestazione della dichiarazione di un POU
È possibile immettere il pragma desiderato direttamente nell'editor di testo come riga separata, come prima riga del POU o prima di una dichiarazione di variabile.
Nella vista tabellare, riceverai supporto quando inserisci il pragma. Fai clic su Modifica intestazione dichiarazione comando. Nella finestra di dialogo, fare clic sul pulsante Attributo pulsante e immettere il pragma desiderato nel campo di input.
In un elenco di variabili globali
Restrizione nel caso di pragma condizionali
Utilizzare i pragma per la compilazione condizionale solo nelle implementazioni di POU. Nelle dichiarazioni, questi pragma vengono ignorati, non valutati.
Notare la seguente eccezione: la pragma IF con il project_defined L'operatore può essere inserito nelle dichiarazioni. Per ulteriori informazioni, vedere quanto segue: pragma IF con project_defined (<global define>)
Testo strutturato (ST)
Nel linguaggio di implementazione ST, una pragma appartiene a una "posizione di istruzione". Una posizione valida si trova all'inizio dell'implementazione su una riga separata. Un'altra posizione valida è etichettata dopo un'istruzione che termina con un punto e virgola "
;" o tramite parole chiave comeEND_VAR,END_IF, OEND_WHILE.Diagramma a blocchi funzionali (FBD) o diagramma a scala (LD)
Nei linguaggi di implementazione dell'editor FBD/LD/IL, un pragma occupa una posizione adatta anche per un'etichetta. È possibile inserire il pragma proprio come un'etichetta. Per farlo, selezionare il comando FBD/LD/IL → Inserisci etichetta Quindi, nel campo di testo dell'etichetta, sostituisci il testo predefinito
Label:con il pragma desiderato. Per utilizzare un pragma in aggiunta a un'etichetta, specificare prima il pragma e poi l'etichetta.
Per posizioni errate e corrette per un pragma condizionale
PROGRAM PRG_ConditionalPragma
VAR
strTest : STRING := 'b';
iResult : INT := 0;
END_VAR
Sbagliato
{IF defined(DEFINE_A)}
IF strTest = 'a' THEN
{ELSE}
IF strTest = 'b' THEN
{END_IF}
iResult := {IF defined(DEFINE_B)} 12; {ELSE} 13; {END_IF}
END_IF
Corretto
{IF defined(DEFINE_A)}
IF strTest = 'a' THEN
{IF defined(DEFINE_B)}
iResult := 16#A;
{ELSE}
iResult := 16#AA;
{END_IF}
END_IF
{ELSE}
IF strTest = 'b' THEN
{IF defined(DEFINE_B)}
iResult := 16#B;
{ELSE}
iResult := 16#BB;
{END_IF}
END_IF
{END_IF}Ambito
A seconda del tipo e del contenuto di un pragma, questo può influenzare quanto segue:
Dichiarazioni successive
Esattamente la prossima affermazione
Tutte le istruzioni successive finché non viene annullata da un pragma corrispondente
Tutte le istruzioni successive finché lo stesso pragma non viene eseguito con altri parametri o non viene raggiunta la fine del codice. In questo contesto, "codice" si riferisce alla parte di dichiarazione, alla parte di implementazione, all'elenco delle variabili globali e alla dichiarazione del tipo. Pertanto, un pragma influenza l'intero oggetto quando è da solo sulla prima riga della parte di dichiarazione e non è sostituito o annullato da un altro pragma.