Page 1 sur 1
Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 12:20
par Auriel
Bonjour bonsoir a vous ! je suis actuellement étudiant en alternance et j'ai besoin d'aide pour réaliser ceci :
Dans une action en script sur vijeo designer.
j'ai essayé diverses méthodes trouvées sur le net et rien ne va, je ne trouve pas le moyen de réaliser cela, pourriez vous m'aider svp?
int tmp1H5;
int tmp2H5;
tmp1H5 = Zone_alarmes_H05_1 & 0xD327;
tmp2H5 = Zone_alarmes_H05_2 & 0x1B00;
if tmp1H5 > 0 & Bit_clignottant then
Ala_H5=1;
end_if;
if tmp2H5 > 0 & Bit_clignottant then
Ala_H5=1;
end_if;
if CdeModeFractH05 & Bit_clignottant then
Ala_H5:=1;
end_if;
if tmp1H5>0 + tmp2H6>0 + CdeModeFractH05 then
Apparition_Ala_H5:=1;
end_if;
mon erreur apparait dès la troisième ligne
tmp1H5 = Zone_alarmes_H6_1 & 0xD327;
qui me donne
Erreur S8011: [Script] [Ligne:12] Le type d'un opérande d'opérateur de manipulation de bits est incorrect.
lorsque je tente d'écrire cette même phrase comme ceci :
tmp1H6 = Zone_alarmes_H6_1 && 0xD327;
une nouvelle erreur apprairait :
Erreur S8040: [Script] [Ligne:12] L'expression doit être de type booléen.
impossible d'avancer...
Re: Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 12:27
par philou77
Salut !
C'est quoi le Type de ''Zone_alarmes_H6_1'' ?
si c'est une variable dans l'automate, faudrait peut être un ''Zone_alarmes_H6_1.GetIntvalue ()'' !
de la même manière, pour
Ala_H5 et Apparition_Ala_H5..
On ne peut pas accéder aux variables externes aux macros comme tu le fais ! il faut utiliser les méthodes d'écriture et de lecture !
Tu peux aussi simplifier le reste...
if (tmp1H5 > 0) | (tmp2H5 > 0)
{
Ala_H5.write(Bit_clignottant.getIntValue()) ;
Apparition_Ala_H5.write(True);
}
else
{
Apparition_Ala_H5.write(False);
Ala_H5.write(False);
}
Re: Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 13:34
par Auriel

- Capture2.PNG (4.28 Kio) Vu 3021 fois
La zone_alarmes_H05 est un mot complet regroupant toutes les alarmes, chacun de ses bits est une alarme différente propre au H05 pour la zone_alarmes_h05
pour le reste ce sont des BOOL
Re: Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 14:37
par philou77
Re !
Tes variables sont au format REAL !!
Pourquoi un tel format pour des bits d'alarmes ?
il te faut un format DInt pour faire ce que tu souhaites (en format 32 Bits) !
et dans ta macro
long tmp1H5; // Format entier 32 bits
long tmp2H5;
tmp1H5 = Zone_alarmes_H05_1.getIntValue() & 0xD327; // Prendre la valeur avec le masque
tmp2H5 = Zone_alarmes_H05_2.getIntValue() & 0x1B00;
if (tmp1H5 > 0) | (tmp2H5 > 0) // faire les comparaisons
{
Ala_H5.write(Bit_clignottant.getIntValue()) ; // ce bit clignotera
Apparition_Ala_H5.write(True); // Celui ci est mis à 1
}
else // si c'est faux, alors on remet tout à zéro !
{
Apparition_Ala_H5.write(False);
Ala_H5.write(False);
}
Re: Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 14:47
par Auriel
d'accord ! je comprends mieux, merci infiniment ça avance !
J'ai repris votre programme écris, j'ai compris le raisonnement je ne ferais plus la même erreur ^^
j'ai juste une petite erreur de syntaxe
Erreur S7361: [Script] [Ligne:6] Erreur de syntaxe
sur cette ligne :
if (tmp1H5 > 0) | (tmp2H5 > 0)
Re: Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 14:52
par philou77
mettre le tout entre parenthèse ?
Re: Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 14:54
par Auriel
Autant pour moi c'est tout simple j'avais oublié ce détail ^^' tout fonctionne merci beaucoup !
Passez une bonne journée !
Re: Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 14:55
par Bruce33
Bonjour,
philou77 a écrit : ↑27 oct. 2020, 14:37
Tes variables sont au format REAL !!
Pourquoi un tel format pour des bits d'alarmes ?
il te faut un format DInt pour faire ce que tu souhaites (en format 32 Bits) !
Je pense que ce sont plutôt des variables 16 bits (INT), sinon il y a un recouvrement sur le mot %MW16786.
Sinon on peut déclarer une seule variable Zone_alarmes_H05 de type DINT à l'adresse %MW16785
et faire un masque 0x1B00D327.
Re: Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 15:09
par Auriel
Merci j'en prends note !
Re: Masquage en action Vijeo Designer. HELP svp
Posté : 27 oct. 2020, 15:21
par philou77
Merci Bruce33
j'étais passé à ôté de ça...!
Donc ou :
sur 32 bits et passer en long avec des adresses PAIRES (pour 2 mots de 32 Bits)
sur 32 Bit avec un seul mot (toujours adresse PAIRE) et un masque de 32 Bits
sur 16 Bits et passer en Int (là les adresses peuvent se suivre !)
Sinon le test if peut s'écrire :
if ((tmp1H5 | tmp2H5) !=0)
différent de zéro est mieux car >0 prend en compte le signe de la valeur
