EcoStruxure : variable Publique / privée

Forum traitant des automates industriels de marque Schneider - Telemecanique
Répondre
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

EcoStruxure : variable Publique / privée

Message par djé »

Bonjour à tous,

Je fais mon premier projet sur un M340, (faut bien commencer un jour) et j'ai une question car le doute m'habite:

Dans un DFB, les variables dite privées sont-elles mémorisées ? Ou sont elles uniquement valables le temps d'une scrutation comme en SIEMENS (TEMPoraire)?
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: EcoStruxure : variable Publique / privée

Message par itasoft »

slts,
j'ai pas vérifié mais les variables privées ne sont pas mémorisées, mais qu'elles le soient ou pas , il faut faire comme si elles ne l’étaient pas.
(comme dans tous les autres langages).
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
skip74
Créateur de langage
Créateur de langage
Messages : 664
Enregistré le : 13 oct. 2015, 06:34

Re: EcoStruxure : variable Publique / privée

Message par skip74 »

Salut

Bien sûr qu'elles font mémorisées.... Ça pourrait être un sous compteur par exemple....

Bon bien sûr faut pas appeler plusieurs fois la même instance....


A+
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: EcoStruxure : variable Publique / privée

Message par itasoft »

skip74 a écrit : 01 mai 2020, 13:24 Salut

Bien sûr qu'elles font mémorisées.... Ça pourrait être un sous compteur par exemple....

Bon bien sûr faut pas appeler plusieurs fois la même instance....
A+
-------------
qu'on soit bien d'accord, mémorisées ça voudrait dire que après coupure de la bourre, si on ne les initialise pas on les retrouve comme si c'étaient de %MW
à mon avis ça donne l'impression qu'elles sont mémorisées tant que elles ne sont pas écrasées par d'autres FB
ceci dit j'ai pas fais de tests pour confirmer mes dires, vu que je fais comme si elles ne l’étaient pas .
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: EcoStruxure : variable Publique / privée

Message par djé »

Alors ma question n'est pas tant de savoir si elles sont mémorisées en cas de coupure de jus mais plutôt si la variable reste valide entre deux appels.
Si par exemple je stocke une donnée dans une variable privée, est ce qu' au prochain appel, la valeur de cette même variable est toujours valide (elle n'a pas changé).
Mais d'après, Skip74 cela a l'air d'être le cas.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: EcoStruxure : variable Publique / privée

Message par itasoft »

slts,
skip précise: "Bon bien sûr faut pas appeler plusieurs fois la même instance...."

ça veut dire que les variables locales doivent être initialisées , écrites , dans le programme à chaque appel

sur d'autres langages, c'est comme l'appel d'une procédure qui comporte des variables locale
Modifié en dernier par itasoft le 01 mai 2020, 22:57, modifié 1 fois.
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: EcoStruxure : variable Publique / privée

Message par djé »

skip74 a écrit : 01 mai 2020, 13:24 Bon bien sûr faut pas appeler plusieurs fois la même instance....
Tu veux dire quoi par la ? Une erreur de prog (tu rappelles la même instance du dfb avec des paramètres différents) ?
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Laurent
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 125
Enregistré le : 20 oct. 2015, 11:16
Localisation : Oise et Ile-de-France / France

Re: EcoStruxure : variable Publique / privée

Message par Laurent »

Salut,

les variables privées peuvent garder leur valeur entre deux exécutions de la même instance du DFB ( donc entre deux cycles d'éxécution du programme, normalement).
S'il faut sauvegarder ou mettre à jour des valeurs initiales, c'est possible avec les variables publiques du DFB.

Comme un bloc fonction de la bibliothèque standard (TON, CTU...), une instance de DFB peut mémoriser un état interne, ce qui les différencie d'une fonction élémentaire (AND, INC, etc.).
C'est pour cette raison que ce n'est pas vu comme une bonne pratique d'utiliser la même instance d'un DFB plusieurs fois dans le programme.
Techniquement, c'est possible, le compilateur de Unity va juste sortir des avertissements pour chaque appel d'une même instance, mais ça va va compiler.
Il n'y aura pas de bug de fonctionnement si le code du DFB ne gère pas d'état interne (donc s'il se comporte comme une fonction, au sens mathématique du terme, comme ce que doit programmer itasoft), mais clairement, ce n'est pas conseillé parce que très en dehors des bonnes pratiques de codage, et certainement inhabituel, ce qui poserait des problèmes de maintenabilité (programme difficile à comprendre avec une telle subtilité).

A noter que ce conseil s'applique aussi aux blocs fonctions de la bibliothèque standard : j'ai eu récemment à corriger un bug sur des programmes qui fonctionnaient depuis des années, la même instance d'un bloc fonction SR était utilisée quelques dizaines de fois dans le code, et selon les circonstances, de temps en temps, ça foutait la merde.
Laurent
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: EcoStruxure : variable Publique / privée

Message par djé »

Salut Laurent merci pour la précision.

Ne pas utiliser deux fois la même instance cela me parait tellement évident que j'ai du mal à croire que l'on puisse le faire autrement que par une faute d’inattention.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Répondre