Bonjour
cJ ai une variable de type DINT. Je veux lire seulement 16 bit de cette variable (bit 17 a 32) et l enregistrer dans une autre variable de type INT.
comment je peux faire ca avec rslogix5000
merci
copie 16 bit d une variable rslogix5000
Re: copie 16 bit d une variable rslogix5000
Bonjour,
Je ne connais pas RsLogix 5000 mais je suppose que c'est semblable à RSlogix 500.
Il y a une instruction MVM (Masked Move) qui peut sans doute faire le boulot. En paramètres tu passes la variable que tu veux copier, le masque (00FFh) et la variable de destination. Si tu ne trouves pas cette instruction, un AND devrait marcher aussi (au fond, c'est la même chose !).
À noter que le masque peut être mis dans une variable plutôt que dans l'instruction en dur, si celui-ci devait pouvoir changer au fil de l'exécution de ton programme.
N'hésite pas à revenir dire si ça marche !
Je ne connais pas RsLogix 5000 mais je suppose que c'est semblable à RSlogix 500.
Il y a une instruction MVM (Masked Move) qui peut sans doute faire le boulot. En paramètres tu passes la variable que tu veux copier, le masque (00FFh) et la variable de destination. Si tu ne trouves pas cette instruction, un AND devrait marcher aussi (au fond, c'est la même chose !).
À noter que le masque peut être mis dans une variable plutôt que dans l'instruction en dur, si celui-ci devait pouvoir changer au fil de l'exécution de ton programme.
N'hésite pas à revenir dire si ça marche !
Re: copie 16 bit d une variable rslogix5000
Bonjour oui il y a dans rslogix5000 mais je pense cette instruction copie les bits voulu sur une variable de type dint (même type que source).
Re: copie 16 bit d une variable rslogix5000
Si tu mets un INT en destination, il copiera le résultat dans un INT...
En stock nous avons également l'instruction BSL qui décale les bits à gauche, donc tu peux aussi faire 8 fois BSL pour ramener tes bits, et faire un MVM FF00h (mais bon, pourquoi faire compliqué ?)
En stock nous avons également l'instruction BSL qui décale les bits à gauche, donc tu peux aussi faire 8 fois BSL pour ramener tes bits, et faire un MVM FF00h (mais bon, pourquoi faire compliqué ?)
-
- Mi homme - Mi automate
- Messages : 1065
- Enregistré le : 12 nov. 2015, 21:02
- Localisation : 45 - Loiret
- Contact :
Re: copie 16 bit d une variable rslogix5000
Tu divise par 2 puissance 16 (16#0001 0000) pour décaler a droite de 16 bits, et après tu fait un DINT_TO_INT.
Je suis pas calé en ABB, mais a priori c'est deux instructions standard que tu trouve sur tout automate qui se respecte.
Je suis pas calé en ABB, mais a priori c'est deux instructions standard que tu trouve sur tout automate qui se respecte.
Re: copie 16 bit d une variable rslogix5000
Bonjour,
L'instruction BTD (bit field distribute) répond à ton besoin.
Cordialement
L'instruction BTD (bit field distribute) répond à ton besoin.
Cordialement