Page 1 sur 2
Recherche de bit dans un mot sur m221
Posté : 27 juil. 2021, 21:08
par Gattaca
Bonjour à tous,
Je suis sur un petit projet de machine qui comporte des défauts stockés dans les bits des mots MW30 à MW40.
Je cherche à obtenir le premier bit à 1 dans cette plage.
Pour cela j'ai essayé d'utiliser la fonction Find_gtr sur les mots MD30 à MW40.
J'ajoute 30 au résultat obtenu pour obtenir la valeur du mot double contenant le premier bit en défaut et là je bloque.
Je ne sais pas comment utiliser cette valeur car je ne sais pas écrire un MWx avec x en variable.
Avez vous une idée ?
Je vous remercie
Re: Recherche de bit dans un mot sur m221
Posté : 27 juil. 2021, 21:35
par itasoft
Slts,
%MD0 :=0
%MW10 := FIND_GTR(%MD30:5, %MD0)
donne l’adresse du 1èr %MD >0 si le bit 15 de un de ces mots est à ON ça donnera une valeur négative donc il va pas le trouver, il faudra chercher aussi les valeurs <0
%MW11 := FIND_LTR(%MD30:5, %MD0)
(*rangement du résultat dans %MD14 *)
%MD14 :=%MD30[%MW10*2] ou %MD14 :=%MD30[%MW11*2]
après il faut chercher la position du bit dans %MD14
Re: Recherche de bit dans un mot sur m221
Posté : 27 juil. 2021, 22:25
par Gattaca
Merci pour ce retour.
Je ne connaissais pas cette écriture. Donc si je comprends bien MD30[y] peut être égale à MD40 par exemple en fonction de la valeur du y ?
Re: Recherche de bit dans un mot sur m221
Posté : 27 juil. 2021, 22:51
par itasoft
Gattaca a écrit : ↑27 juil. 2021, 22:25
Merci pour ce retour.
Je ne connaissais pas cette écriture. Donc si je comprends bien MD30[y] peut être égale à MD40 par exemple en fonction de la valeur du y ?
oui
%MD30[0] tape sur %MD30
%MD30[2] tape sur %MD32
%MD30[4] tape sur %MD34
%MD30[6] tape sur %MD36
%MD30[8] tape sur %MD38
-----
ceci dit tu veux trouver l'adresse du premier bit à 1 dans quel but ??
Re: Recherche de bit dans un mot sur m221
Posté : 28 juil. 2021, 08:16
par Gattaca
Le but est de remonter à une supervision le premier défaut bloquant.
Re: Recherche de bit dans un mot sur m221
Posté : 28 juil. 2021, 08:35
par Gattaca
J'ai essayé le code ce matin mais l'écriture %MD14:=%MW30[%MW11*2] ne passe pas.
Le logiciel refuse en me mettant "Elément inattendu".
J'écris pour info dans un bloc opération.
Re: Recherche de bit dans un mot sur m221
Posté : 28 juil. 2021, 08:43
par JC87
Hello,
Tu ne peut pas faire un indexage avec un calcul, il faut mettre %MW11*2 dans un autre mot puis utiliser ce mot comme index de %MW30.
JC
Re: Recherche de bit dans un mot sur m221
Posté : 28 juil. 2021, 09:56
par Gattaca
JC87 a écrit : ↑28 juil. 2021, 08:43
Hello,
Tu ne peut pas faire un indexage avec un calcul, il faut mettre %MW11*2 dans un autre mot puis utiliser ce mot comme index de %MW30.
JC
En effet cela fonctionne mieux.
Je réfléchissais également à une autre solution peut-être plus simple, avec l'emploi de la boucle for.
Qu'en pensez vous ? le mot %MW20 aura la valeur du premier mot différent de 0
Re: Recherche de bit dans un mot sur m221
Posté : 28 juil. 2021, 10:04
par JC87
Je ne sais pas si ça marchera, je n'ai jamais fait de boucle avec un M221. A voir déjà si on peut sortir de la boucle en mettant l'index à 10 comme tu l'a écrit. Faut tester
JC
Re: Recherche de bit dans un mot sur m221
Posté : 28 juil. 2021, 12:02
par itasoft
slts,
es que tu cherche le n° du premier bit à 1 dans le tableau de %MW30:10 (valeur 0 à 159) ??