DFB SUR UNITY

Forum traitant des automates industriels de marque Schneider - Telemecanique
Répondre
Avatar du membre
MATT
Code sa première boucle
Code sa première boucle
Messages : 12
Enregistré le : 18 avr. 2016, 21:24
Localisation : Charente

DFB SUR UNITY

Message par MATT »

Bonjour,

Avez-vous ou savez-vous où je peux trouver des DFB unity divers et variées.
>Merci
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7168
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: DFB SUR UNITY

Message par itasoft »

Slts,
Disons que ya une fonction qui manque cruellement (surtout quand le besoin s’en fait sentir, lol)
Celle de connaître le nombre de bits à 1 dans un mot de 16 ou 32 bits
Exemples :

(* %MW4=Nombre de bits à 1 dans le mot %MD0 *)
%MD2:=%MD0;
%MW4:=0;
WHILE %MD2<>0 DO
%MW4:=%MW4+(%MD2 AND 1);
%MD2:=SHR(%MD2,1);
END_WHILE;


(* %MW4=Nombre de bits à 1 dans le mot %MW0 *)
%MW2:=%MW0;
%MW4:=0;
WHILE %MW2<>0 DO
%MW4:=%MW4+(%MW2 AND 1);
%MW2:=SHR(%MW2,1);
END_WHILE;

------------------------------------
Aussi :
Dans les instructions de décalages (SHR,SHL) le nombre de positions vers la droite ou vers la gauche est une constante fixe Ex : (SHR,1)
Parfois, le besoin se fait cruellement sentir d’avoir le nombre de positions qui soit une variable
Exemple :
(*
Décalage à gauche des bits du mot %MW0 de X positions, résultat dans %MW2
%MW4=nombre de positions
*)

%MW2:=%MW0;
%MW2:=%MW2*REAL_TO_INT(EXPT(2.0,INT_TO_REAL(%MW4)));


(* Ceci dit, on peut aussi faire une boucle, LOL *)
%MW2:=%MW0;
FOR %MW3:=1 TO %MW4 DO
%MW2:=SHL(%MW2,1);
END_FOR;
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2087
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: DFB SUR UNITY

Message par philou77 »

Salut !
sympa les fonctions..

On peut aussi tout simplement multiplier ou diviser par les puissances de deux pour réaliser des décalages non ?

/2 = 1 bit vers la droite
/4 = 2 bits vers la droite
etc...

*2 = 1 bit vers la gauche
*4 = 2 bits vers la gauche
etc...
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7168
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: DFB SUR UNITY

Message par itasoft »

slts,
oui mais tu met dans quelle variable le nombre de décalages à faire ???
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2087
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: DFB SUR UNITY

Message par philou77 »

pas faux...
En te relisant, je m'aperçois que c'est ce que tu fais déjà.
Donc je fais du bruit..pour rien
désolé !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7168
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: DFB SUR UNITY

Message par itasoft »

slts, phil,
J’aurais du poser la question autrement , LOL
L’opérateur saisi via un IHM :
-La valeur à décaler dans %MW0
-Le nombre de décalages à faire dans la variable %MW4
Ecrire une ligne de programme pour effectuer ce décalage
Automaticien privé (de tout)
itasoft@free.fr
Répondre