Bonjour à tous,
Je rencontre un "souci" sur lequel je sèche bêtement.
Je récupère un WORD d'une connexion Modbus RS485 que j'aimerai convertir en tableau de BOOL, comment je peux faire ?
En effet chaque Bit corresponds à un événement ou défaut dans mon cas. Sauf que par exemple si je reçois 128, c'est que c'est mon bit 7 qui est à 1. Le plus simple est donc peut etre de faire un tableau de BOOL.
Auriez-vous une astuce ? Ca doit être tout bête mais là...
Merci par avance.
Michael
Convertir WORD en tableau de BOOL
Re: Convertir WORD en tableau de BOOL
Je me réponds à moi même, il y a un WORD_AS_BIT qui existe dans la bibliothèque de codesys qui existe.
-
- Code son premier grafcet
- Messages : 35
- Inscription : 04 mai 2019, 23:07
- Localisation : Eure et Loir
- Contact :
Re: Convertir WORD en tableau de BOOL
Une autre solution aurait pu être de passer dans une boucle et faire un ET avec un masque dont la valeur = 1 (pour récupérer l'état du bit de poids faible) puis diviser ton WORD par 2 pour décaler d'un bit vers la droite, et ainsi de suite. Comme ça tu récupères l'état de tes bits un à un.
- itasoft
- Mi homme - Mi automate
- Messages : 7037
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Convertir WORD en tableau de BOOL
slts,
le plus simple encore c'est d'utiliser les bits de la variable WORD dans laquelle on reçois l'info
le plus simple encore c'est d'utiliser les bits de la variable WORD dans laquelle on reçois l'info
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Convertir WORD en tableau de BOOL
si ton mot qui contient les états d'appelle "mot_etat"
tu dois pouvoir écrire mot_etat.0 pour lire directement le bit 0
si tu veux lui donner un nom tu fais une variable en_marche
et tu l'affectes
en_marche:=mot_etat.0
ça doit aussi être valable si tu récupères ton mot dans une adresse %MW3000
en_marche:=%MW3000.0
tu dois pouvoir écrire mot_etat.0 pour lire directement le bit 0
si tu veux lui donner un nom tu fais une variable en_marche
et tu l'affectes
en_marche:=mot_etat.0
ça doit aussi être valable si tu récupères ton mot dans une adresse %MW3000
en_marche:=%MW3000.0