Page 1 sur 1

[SO Machine] utilisation du 'define' ?

Posté : 21 oct. 2020, 15:53
par MiGaNuTs
Bonjour a tous.

Question "syntaxe" sous somachine (enfin le truc qui remplace somachine mais qui a un nom encore plus pourri qu'avant. bref)

Je voudrais définir des 'mots clefs' pour rendre mon code plus lisible et moins chiant a modifier.
Clairement, je voudrais écrire des trucs du genre

Code : Tout sélectionner

{define HOME = 750}
{define ALARMES = 428}
{define DEFAUTPIECE = 12}
a l'endroit qui va bien, pour pouvoir ensuite écrire dans mon code

Code : Tout sélectionner

AffichePage := HOME ;
a autant d'endroit que j'ai besoin de le faire, et ensuite le jour ou j'ai besoin de mettre 749 au lieu de 750 je n'ai qu'une ligne a modifier, je recompile le bouzin, et j'ai pas besoin de rechercher partout dans mon programme les endroits ou j'ai écrit HOME

Pour le moment l'idée c'est de faire ça pour les numéros de pages de mon afficheur, mais ça peut servir a n'importe quoi d'autre aussi.

Le truc c'est que je ne comprends pas a quel endroit je suis censé écrire mes define pour que mon POU veille bien se compiler

Re: [SO Machine] utilisation du 'define' ?

Posté : 21 oct. 2020, 16:17
par steph68
Salut,

C'est des constantes que tu veux définir.
Il faut créer une GVL avec l'attribut "CONSTANT"

@+

Re: [SO Machine] utilisation du 'define' ?

Posté : 21 oct. 2020, 16:51
par MiGaNuTs
Je peut faire un GVL que j’appelle "ListePages" avec mes variables dedans.
après ça me fait écrire des trucs du genre

AffichePage := ListePages.home;

D'un point de vue fonctionnel ça fera le job presque pareil, mais niveau lisibilité je trouve ça nul a chier.
En plus ca consomme de la mémoire et des cycles CPU.
Certes sur un M251 y'en a plein, mais que je fait des trucs sur arduino j'essaye de pas gâcher, j'aimerai bien garder cette habitude quand je code sur autre chose.

Re: [SO Machine] utilisation du 'define' ?

Posté : 21 oct. 2020, 17:03
par steph68
il existe un #pragma pour ne pas avoir à répéter le nom de la GVL

https://help.codesys.com/api-content/2/ ... fied_only/

Je crois que par défaut il est présent et il faut le supprimer (en mode textuel sur la GVL).
En plus ca consomme de la mémoire et des cycles CPU.
Ca ne consomme rien du tout, les mnémoniques sont substitués par les valeurs à la compilation et non au runtime.
C'est même une très bonne pratique d'utiliser les constantes (valeurs magiques à proscrire).

@+

Re: [SO Machine] utilisation du 'define' ?

Posté : 21 oct. 2020, 18:19
par jerome33
Bonjour,
utilise une variable DUT de type Enumération
https://product-help.schneider-electric ... BSTRSRCH=1