Skip to main content

Utilisation des pragmas

Pragma dans CODESYS

Un pragma est un texte du code source de l'application, placé entre accolades. Les pragmas permettent d'insérer des instructions spéciales dans le code, que le compilateur peut évaluer. Cela permet à un pragma d'influencer les propriétés d'une ou plusieurs variables lors de la précompilation ou de la compilation (génération de code). Les pragmas non reconnus par le compilateur sont transmis sous forme de commentaires.

La chaîne d'instructions d'un pragma peut également s'étendre sur plusieurs lignes.

Pour plus de détails sur la syntaxe, voir les descriptions de chaque individu CODESYS pragmes.

Il existe différents pragmas pour différents objectifs (exemple : initialisation d'une variable, surveillance d'une variable, ajout d'une variable à la configuration du symbole, forçage de l'affichage de messages pendant le processus de compilation et comportement d'une variable sous certaines conditions).

Important

Les caractères majuscules et minuscules doivent être respectés.

Catégories de pragma

Le CODESYS Les pragmas sont divisés dans les catégories suivantes :

  • Pragmes de message

    Des messages personnalisés peuvent être affichés pendant le processus de compilation.

  • Pragmes d'attributs

    La compilation et la précompilation peuvent être influencées. Pour ce faire, des pragmas sont disponibles à différentes fins, par exemple pour l'initialisation, la surveillance ou l'ajout d'une variable à la configuration du symbole.

  • Pragmes conditionnels

    La génération de code peut être contrôlée par des instructions conditionnelles. Par exemple, le comportement d'une variable peut être différent sous certaines conditions.

  • pragma de région

  • Pragmas dans les POU de test

  • Pragmas définis par l'utilisateur

Astuce

Dans le Propriétés dialogue (Compiler catégorie), vous pouvez déclarer des « définitions » de compilateur qui peuvent être interrogées dans les pragmas.

Positions d'insertion possibles

Important

Pragmes dans CODESYS ne sont pas des implémentations biunivoques des directives du préprocesseur C. Un pragma doit être positionné comme une instruction ordinaire. Il ne doit pas être utilisé dans une expression.

Vous pouvez insérer un pragma pour que le compilateur l'évalue à différentes positions.

. Dans la déclaration
  • Dans l'en-tête de déclaration d'un POU

    Vous pouvez saisir le pragma souhaité directement dans l'éditeur de texte sous forme de ligne séparée, soit comme première ligne du POU, soit avant une déclaration de variable.

    Dans la vue tabulaire, vous obtiendrez de l'aide lorsque vous saisirez le pragma. Cliquez sur le Modifier l'en-tête de la déclaration commande. Dans la boîte de dialogue, cliquez sur le bouton Attribut bouton et entrez le pragma souhaité dans le champ de saisie.

  • Dans une liste de variables globales

Restriction dans le cas des pragmas conditionnels

Utilisez les pragmas pour la compilation conditionnelle uniquement dans les implémentations de POU. Dans les déclarations, ces pragmas sont ignorés et non évalués.

Notez l'exception suivante : le pragma IF avec le project_defined L'opérateur peut être inséré dans les déclarations. Pour plus d'informations, voir : pragma IF avec project_defined (<global define>)

. Dans la mise en œuvre d'un POU
  • Texte structuré (ST)

    Dans le langage d'implémentation ST, un pragma appartient à une « position d'instruction ». Une position valide se trouve au début de l'implémentation, sur une ligne distincte. Une autre position valide est indiquée après une instruction se terminant par un point-virgule.; " ou par des mots-clés tels que END_VAR, END_IF, ou END_WHILE.

  • Diagramme en blocs fonctionnels (FBD) ou diagramme à contacts (LD)

    Dans les langages d'implémentation de l'éditeur FBD/LD/IL, un pragma se trouve à une position qui convient également à un libellé. Vous pouvez saisir le pragma comme un libellé. Pour cela, sélectionnez la commande FBD/LD/ILInsérer une étiquette. Ensuite, dans le champ de texte de l'étiquette, remplacez le texte par défaut Label: avec le pragma souhaité. Pour utiliser un pragma en plus d'une étiquette, spécifiez d'abord le pragma, puis l'étiquette.

Exemple 17. Exemple

Pour les positions incorrectes et correctes d'un pragma conditionnel

PROGRAM PRG_ConditionalPragma
VAR
    strTest : STRING := 'b';
    iResult : INT := 0;
END_VAR

Incorrect

{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

Correct

{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}


Portée

Selon le type et le contenu d'un pragma, il peut influencer les éléments suivants :

  • Déclarations ultérieures

  • Exactement la déclaration suivante

  • Toutes les instructions suivantes jusqu'à ce qu'elles soient annulées par un pragma correspondant

  • Toutes les instructions suivantes, jusqu'à ce que le même pragma soit exécuté avec d'autres paramètres ou jusqu'à la fin du code. Dans ce contexte, « code » désigne la partie déclaration, la partie implémentation, la liste des variables globales et la déclaration de type. Par conséquent, un pragma influence l'objet entier lorsqu'il est seul sur la première ligne de la partie déclaration et n'est pas remplacé ou annulé par un autre pragma.