EcoStruxure : variable Publique / privée
- djé
- 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
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)?
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 ...
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: EcoStruxure : variable Publique / privée
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).
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
itasoft@free.fr
Re: EcoStruxure : variable Publique / privée
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+
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+
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: EcoStruxure : variable Publique / privée
-------------
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
itasoft@free.fr
- djé
- 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
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.
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 ...
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: EcoStruxure : variable Publique / privée
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
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
itasoft@free.fr
- djé
- 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
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 ...
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
-
Laurent
- 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
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.
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
- djé
- 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
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.
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 ...
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
