Comment écrire sur 1 registre codé en 16 bits
Exemple Registre N°17 je veux mettre à 1 ou à 0 le bit 1/ mettre à 1ou à 0 le bit 2/ etc …
C’est pour activer des sorties relais de modules Isma
Pour l’instant j’arrive à les activer en mettant une valeur dans le registre N°17
1 pour la sortie 1
2 pour la sortie 2
3 pour la sortie 1/2
etc …
J’ai essayer pas mal de choses mais là je suis à court d’idées !!!
Est ce que le plugin officiel gère l’écriture sur plusieurs bits?
Si quelqu’un aurait une solutions, je suis preneur.
Bonsoir,
Je suppose qu’il faut mettre un nombre entre 0 et 65535 soit 1111111111111111 en base 2 = 2¹⁵ + 2¹⁴ + 2¹³ + … + 2² + 2¹ + 2⁰
Si vous voulez écrire 1 sur le bit 10 (si on numérote de droite à gauche), il faut écrire 0000001000000000 soit 2⁹ soit 512
Si on veut écrire 1 sur le bit 5, il faut écrire 0000000000010000 soit 2⁴ soit 16
Si on veut écrire 1 sur le bit 10 et 1 sur le bit 5 il faut écrire 512 + 16 = 528
Bonjour,
Pour commencer un fil c’est pas mal
A priori, il s’agit du plugin-mymodbus en version bêta. Quelle version ?
Sur la capture d’écran, on ne voit pas le contenu du champs valeur.
Un lien vers la doc serait utile pour savoir comment aider.
3 est pour les sorties 1 ET 2 et pas 1/2
C’est à dire ?
Quel plugin officiel ?
Dans l’idée, si seules les requêtes sur les registres sont possibles et que chaque bit correspond à une sortie, il faudrait :
- une commande info plage de registres
- une commande info utilisant cette plage de registres pour lire l’état de chaque sorties (#[Etat][sortie][0]#, #[Etat][sortie][1]# , etc.) avec la formule
#value# & 2 ** 2par exemple pour le bit 2 - une commande action ON par sortie avec pour la sortie bit 2 une valeur de ce genre :
#[Etat][sortie][0]# * 2 ** 0 + #[Etat][sortie][1]# * 2 ** 1 + 1 * 2 ** 2 + #[Etat][sortie][3]# * 2 ** 3 + #[Etat][sortie][4]# * 2 ** 4 + ... etc.
- une commande action OFF par sortie avec pour la sortie bit 2 une valeur de ce genre :
#[Etat][sortie][0]# * 2 ** 0 + #[Etat][sortie][1]# * 2 ** 1 + 0 * 2 ** 2 + #[Etat][sortie][3]# * 2 ** 3 + #[Etat][sortie][4]# * 2 ** 4 + ... etc.
En effet mais ça met toutes les autres sorties à 0
A+
Michel
Salut
Vous ne dîtes pas bonjour et ne donnez pas le plugin. Voulez-vous vraiment être aidé ? Si c’était pour mettre par écrit, le papier c’est bien aussi.
Antoine
Complément de mon message initial, tous d’abord bonjour (pour éviter les critiques, merci Tonio16)
Plugin que j’utilise Mymodbus en version beta
Ci-joint doc du module Isma pour activer les sorties
Pour l’instant je lis la valeur du registre N°17 puis je l’incrémente
de +1 pour la sortie 1 On
de -1 pour la sortie 1 Off
de +2 pour la sortie 2 On
de -2 pour la sortie 2 Off
etc…
Pour activer les sorties 1 et 2 la somme des 2 bits est de 3 (Registre N°17 = 3)
Pour activer les sorties 4 et 2 la somme des 2 bits est de 10 (Registre N°17 = 10)
etc…
J’aimerais par simplicité écrire directement sur le bit concerné de la sortie.
Sur modbusDoctor j’écris directement sur les bits.
17.00 Sortie 1 à 1 pour ON et à 0 pour Off
17.01 Sortie 2 à 1 pour ON et à 0 pour Off
etc…
J’espère que mes explications sont claires.
Jérôme
en binaire :
#[Etat][sortie][0]# | 1 << bit où bit=1 à 16 pour les bits 1 à 16
Avec les explications que j’ai données, vous devriez vous en sortir. Essayez, vous verrez.



