Page 1 sur 1

[RESOLU] Variables internes

Posté : 08 déc. 2015, 18:13
par wagodomo
Bonjour

je réalise la domotique de mon habitation à l'aide d'un automate Wago 750-881, sous codesys 2.3;
J'utilise plutôt le langage à blocs de fonctions (FBD).
J'ai structuré ma programmation avec des blocs de fonctions définis (FB) et des sous programmes (PRG).
J'ai un souci pour l'utilisation de variables internes entre programmes: mon programme de commande de volets roulants me délivre les informations volet ouvert - volet fermé sous forme de BOOL; je les ai identifiés en VAR_OUTPUT dans ce programme, et voudrais en réutiliser dans un autre programme. Je les ai là identifiés en VAR_INPUT, mais elles ne réagissent pas.
Où me suis-je trompé?
Merci

Re: Variables internes

Posté : 09 déc. 2015, 05:19
par maxpeigne
Si tu veux les utiliser dans d'autres sous programmes, as tu essayé de les déclarer en variable global (dans l'arborescence de droite tu cliques sur le 4e onglet du bas (ressources), puis le dossier "Variable global", puis variable global)?
Si tu veux utiliser des variables dans plusieurs sous programmes c'est ici que tu dois les déclarer.

A tester, penses à nous en faire un retour ;)

Re: Variables internes

Posté : 09 déc. 2015, 09:53
par wagodomo
Bonjour Maxpeigne
Je viens de tester, mais çà ne marche pas; ma variable en "variables globales" ne s'active pas alors qu'elle est activée dans le sous-programme natif, mais pas non plus dans le sous programme utilisateur.
Il y a vraiment quelque chose qui m'échappe car çà me paraît être indispensable de pouvoir utiliser une variable interne dans différents programmes...
Merci de ton intérêt.

Re: Variables internes

Posté : 09 déc. 2015, 16:56
par Cyril93
Bonjour,

Vu l’utilisation des VAR INPUT et VAR OUTPUT normalement tu devrais faire le lien entre tes deux programmes dans le PRG ou tu fais leur appel, en utilisant le language CFC tu as juste des lignes à tirer entre tes deux blocs, c'est facile.

Sinon en générale sous codesys tu peux faire comme ceci pour utiliser une variable local dans une autre section de programme.

NomDuProgramme.NomDeLaVariable

Attention : ça marche pour lire une variable mais pas pour écrire dans ce cas tu déclare en VAR GLOBAL

Re: Variables internes

Posté : 09 déc. 2015, 18:40
par wagodomo
Merci Cyril93, çà marche avec le nom de variable composé du "programmenatif_PRG.nomvariable".
Super, merci encore

Re: Variables internes

Posté : 09 déc. 2015, 22:47
par Cyril93
Si ce que Maxpeigne t'as dit ne fonctionnait pas chez toi il y a de grande chance pour que tes variables aient été déclaré deux fois. Une fois en var local et une fois en var global.

Re: Variables internes

Posté : 10 déc. 2015, 10:44
par wagodomo
...tu as raison, je viens de vérifier, en supprimant ma variable interne de la liste des VAR_OUTPUT du programme natif et en la mettant dans la liste des variables globales de ressources elle est utilisable dans un autre programme.
Merci, vous me faîtes progresser...

Re: Variables internes

Posté : 10 déc. 2015, 16:15
par maxpeigne
Bonne continuation ;)