[Résolue] Sauvegarde de donnée dans un ARRAY

Partie du forum pour tout ce qui concerne les interfaces homme machine ou IHM. Forum, conseil, astuce et entraide sur les interface homme machine ou IHM tels que les magelis, KEP, proface, XBT, .
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

[Résolue] Sauvegarde de donnée dans un ARRAY

Message par Theogar »

Bonjour tout le monde,

Je possède un IHM HMIG3U et utilise la version de Vijeodesigner V6.2.12.2054.

Je veux sauvegarder des données qui sont récupérées par un niveau analogique, qui renvoie le niveau d'une cuve, tous les jours à 5h et je voudrais sauvegarder une trentaine de données.

Je voulais réaliser cette action avec un script sur vijeo :

Historique_1 = NiveauANA;

int i = 30;
if (i > 1);
Historique_ = Historique_;
i = i - 1;
Ce script action est planifiée pour se réaliser tous les jours à 5h.

Cependant, le code ne marche pas, j'ai cette erreur : "Les numéros d'élément de la variable dans des variables de tableau et de bloc doivent être définis à l'aide d'une valeur constante" par rapport à la ligne : " Historique_ = Historique_".
De ce que j'ai compris, si je veux supprimer cette erreur, il faudrait que j'écrive ligne par ligne chaque égalité.
Donc, ça ferait ceci :

Historique_1 = NiveauANA;
Historique_2=Historique_1;
Historique_3=Histoqisue_2;
....
Historique_31=Historique_30;

Avec ceci, je n'ai plus d'erreur sauf que ça ne marche pas.

La sauvegarde ce fait bien la première fois, sauf qu'une fois la première valeur enregistrée sur Historique_1, à chaque changement de valeur du niveau ana, Historique_1 change. Lors de la deuxième sauvegarde, Historique_2 récupère la valeur de Historique_1, mais comme pour l'historique 1 à chaque changement de la valeur NiveauANA, Historique_2 change.

Auriez-vous une solution ?

Merci.
Modifié en dernier par Theogar le 03 sept. 2024, 15:09, modifié 1 fois.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Sauvegarde de donnée dans un ARRAY

Message par philou77 »

Salut !
Peut être le faire à l’envers !
De 31 à 1 …
Et dans la boucle faut mettre un indice à ta variable.
La cela ressemble à 31 variables distinctes, et non à un array.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Sauvegarde de donnée dans un ARRAY

Message par Theogar »

Bonjour Philou77,

Merci de ta réponse.

J'ai déjà effectué des tests en commençant par 31, mais j'ai le même problème.

J'ai l'impression qu'une fois que je lance le script, je ne le quitte jamais.
Je sais si je suis claire, mais une fois que je lance le script et que je sauvegarde la valeur de mon niveau sur mon historique 1, l'historique 1 aura toujours la valeur de mon niveau donc, imaginons que la cuve où j'ai mon niveau est vidée tous les jours à 5h, mais que je lance ma sauvegarde de données à 4h59, une fois arrivé à 5h la valeur de mon historique 1 passera à 0 et n'aura pas sauvegardé la valeur d'avant.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Sauvegarde de donnée dans un ARRAY

Message par philou77 »

Incrémenté une valeur pour voir si tu fais ton script une fois ou plusieurs
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Sauvegarde de donnée dans un ARRAY

Message par Theogar »

Ok, j'ai fais un script de test qui se lance à 15h30 pour sauvegarder la valeur de mon niveau. Arriver à l'heure mon historique 1 prend la valeur du niveau et après l'heure passée, si je modifie manuellement la valeur de mon niveau l'historique 1 récupère cette valeur, que je la change une fois ou 10 fois la valeur de mon historique 1 change tout le temps. Par contre, en soi je quitte bien mon script, car mes autres historiques, ne change pas.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Sauvegarde de donnée dans un ARRAY

Message par philou77 »

Salut !

Montre ce que tu as écrit et vérifie que tu ne modifies pas une valeur ailleurs (à tout hasard).
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Sauvegarde de donnée dans un ARRAY

Message par Theogar »

Salut,

Voici le code que j'ai écris. Mes valeurs ne sont pas modifiés autre part.
Fichiers joints
Script.PNG
Avatar du membre
Bruce33
Dieu du process
Dieu du process
Messages : 930
Enregistré le : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: Sauvegarde de donnée dans un ARRAY

Message par Bruce33 »

Bonjour Theogar,
Je vous propose de lire l'aide en ligne de Vijeo Designer :
- appuyez sur la touche F1,
- allez à la section 18.3.2.2 Utilisation de variables dans des scripts.
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Sauvegarde de donnée dans un ARRAY

Message par Theogar »

Bonjour Bruce33,

Merci pour votre réponse.

J'ai déjà suivi cette section de l'aide et cela n'a pas marché.

lorsque j'écris : Historique-1=CPT_journalier.getIntValue();
j'ai l'erreur suivante : " Aucune conversion entre le type «Tag.INTEGER» et le type «int»"

et si j'écrit : int Historique_1;
Historique_1=CPT_journalier.getIntValue();
Je ne récupère aucune valeur, mon historique 1 reste à 0.
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1953
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: Sauvegarde de donnée dans un ARRAY

Message par Béryl »

Pourquoi ne pas utiliser un tableau ?
Avec les variables générales, il faut employer les méthodes get et write pour y accéder depuis un script.
Répondre