[Résolue] Sauvegarde de donnée dans un ARRAY
[Résolue] Sauvegarde de donnée dans un ARRAY
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.
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

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Sauvegarde de donnée dans un ARRAY
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.
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 ! 
Re: Sauvegarde de donnée dans un ARRAY
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.
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

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Sauvegarde de donnée dans un ARRAY
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 ! 
Re: Sauvegarde de donnée dans un ARRAY
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

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Sauvegarde de donnée dans un ARRAY
Salut !
Montre ce que tu as écrit et vérifie que tu ne modifies pas une valeur ailleurs (à tout hasard).
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 ! 
Re: Sauvegarde de donnée dans un ARRAY
Salut,
Voici le code que j'ai écris. Mes valeurs ne sont pas modifiés autre part.
Voici le code que j'ai écris. Mes valeurs ne sont pas modifiés autre part.
- Bruce33
- Dieu du process

- Messages : 930
- Enregistré le : 28 oct. 2015, 06:54
- Localisation : Pas-de-Calais
Re: Sauvegarde de donnée dans un ARRAY
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.
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.
Re: Sauvegarde de donnée dans un ARRAY
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.
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.
- Béryl
- Mi homme - Mi automate

- Messages : 1953
- Enregistré le : 20 oct. 2015, 12:00
- Localisation : localhost
Re: Sauvegarde de donnée dans un ARRAY
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.
Avec les variables générales, il faut employer les méthodes get et write pour y accéder depuis un script.
