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
[RESOLU] Variables internes
- maxpeigne
- Dieu du process

- Messages : 771
- Enregistré le : 11 oct. 2015, 17:31
- Localisation : Nord pas de calais
Re: Variables internes
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
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
http://automacile.fr - Site et tutoriels sur l'arduino.
Re: Variables internes
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.
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
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
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
Merci Cyril93, çà marche avec le nom de variable composé du "programmenatif_PRG.nomvariable".
Super, merci encore
Super, merci encore
Re: Variables internes
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
...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...
Merci, vous me faîtes progresser...

