Vijeo-Designer 6.2 interaction IO Scanner / Ecriture

Forum traitant des automates industriels de marque Schneider - Telemecanique
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Vijeo-Designer 6.2 interaction IO Scanner / Ecriture

Message par philou77 »

Re !

Tu ne peux pas t'arranger pour que ton script n° 1 ne remette pas ta variable à zéro tout le temps ?
Passer par l'automate te serait possible ?

Autre suggestion :
Pourquoi avoir séparé la saisie de la consigne et la consigne elle même ?
R_VED_MANU.write(CONS_VANNE.getFloatValue());

Et la simu doit tourner bien plus vite que l'ihm ou bien ne pas gérer les échanges de la même manière, d'ou le bug non présent !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Gillou53
Code sa première boucle
Code sa première boucle
Messages : 12
Inscription : 19 août 2020, 13:11

Re: Vijeo-Designer 6.2 interaction IO Scanner / Ecriture

Message par Gillou53 »

par philou77 21 août 2020, 15:01 a écrit : Tu ne peux pas t'arranger pour que ton script n° 1 ne remette pas ta variable à zéro tout le temps ?
Passer par l'automate te serait possible ?
c'est ce que j'ai en tête avec l'option de comptage (ou plutôt décomptage) :
- initialiser un compteur à 4 par exemple dans le scripte (3)
- puis dans le scripte (1), temps que le compteur n'est pas nul; à chaque appel, on décrémente le compteur, et on sort immédiatement temps qu'il n'est pas nul.
Concernant, l'API, étant donné que j'espère en faire un model de développement, je préférerais ne pas impliquer l'API.
Autre suggestion :
Pourquoi avoir séparé la saisie de la consigne et la consigne elle même ?
R_VED_MANU.write(CONS_VANNE.getFloatValue());
Etant donné que le popup, est générique, la consigne dépend de la vanne concernée par l'appel du popup, étant donné que l'on ne peu pas lier directement les variables aux commutateurs du popup (pas de passage par pointeur comme en informatique), je doit avoir d'un côté la lecture (a minima, pour mettre l'info à jour lors de l'affichage du popup; d'où la cadence de mise à jour), et de l'autre, l'écriture via la récupération de l'info de la boîte de saisie.

PS: je suis conscient qu'il est possible de lier directement des variables aux informations des commutateurs et autre, avec des tableaux indexés, mais c'est trop compliquer à mettre en oeuvre à ce stade du développement (ça impliquerai de réviser l'adressage de toutes mes variables, ce qui n'est pas envisageable).
Et la simu doit tourner bien plus vite que l'ihm ou bien ne pas gérer les échanges de la même manière, d'ou le bug non présent !
Bien d'accord avec toi, sur ce point.

Pas de connaissance sur "isDataQualityGood", philou77 ?
:ugeek: Automaticien dans le domaine de l'eau depuis plus de 10 ans.
Je travail sur les gammes TSX et M340, ainsi qu'avec les IHM Schneider.
Je travail également avec des systèmes de télégestion.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Vijeo-Designer 6.2 interaction IO Scanner / Ecriture

Message par philou77 »

Re !

Puisque ta valeur et ta consigne sont différents..
Teste en plus que ta valeur = ta consigne pour remettre à zéro cette dernière dans le N°1
au moins, tu seras sûr que tu auras écrit ta consigne !!
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Vijeo-Designer 6.2 interaction IO Scanner / Ecriture

Message par philou77 »

Re !

Ai fait un petit test...

Popup ->
Champs Saisie consigne ->Fonctions avancées-> Variable de status de saisie (Mode de déclenchement ON) : Mettre une variable Bool (Popup_Bit_Saisie_Consigne par exemple)
Variable Saisie Consigne -> Popup_Saisie_Consigne par exemple

Dans script N°3 Ecriture
(Déclenché par Conditionnel -> Modification de données -> Popup_Bit_Saisie_Consigne)

if ( Popup_Bit_Saisie_Consigne.getIntValue()==0)
{
Return // ne rien faire si le bit est à zéro
}
Consigne.write(Popup_Saisie_Consigne)



Script N° 1 Lecture
(Déclenché périodique, toutes les 0,3 secondes)

if (((Popup_Saisie_Consigne.getintvalue() - Consigne.getintvalue()) !=0) & (Popup_Bit_Saisie_Consigne==1))
{
return ; // Ne rien faire, la consigne est différente de la valeur et la saisie est en cours !
}

Popup_Bit_Saisie_Consigne.write(0); // Reset de la saisie en cours car le test précédent est faux
suite de la macro...

de cette manière cela t'assure d'avoir bien écrit la consigne avant de la remettre à zéro dans la lecture..
J'ai remarqué que tu as 2 cas de figures dans la consigne en float et en int !
Erreur ou cas bien réel ?
PS : Je ne sais pas ce que fait ta variable SCRIPT_EN_COURS dans tes scripts
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Répondre