Lecture et écriture sur automate avec MyModbus

Bonjour à tous.

Pour préparer la domotique de ma maison je réalise quelques essais d’échange entre un automate (S7-1200) et jeedom.
Bon, j’ai claqué 10balles dans le plugin officiel et je n’ai pas réussi à le faire fonctionner,

MyModbus semble plus intuitif, j’ai téléchargé la 2025-05-07 01:26:56
J’ai parfaitement réussi à lire un registre complet composé donc de 16 bits.
ça fonctionne parfaitement en lecture. Une fois qu’on superposé le fonctionnement de MODBUS, de notre serveur MODBUS, on comprends facilement ce qu’il faut paramétrer et comment.

Là où je coince, c’est en écriture.

J’ai créé une action, qui est censée mettre à « 1 » un des bits (le troisième) dont la commande de lecture s’appel « ETAT_3 »
La commande d’écriture est donc nommée « ETAT_3_ON »
La commande info sélectionnée est bien « ETAT_3 »
Je suis en action, fonction 0x06 (Impossible de travailler directement sur des coils avec SIEMENS) et format uint16.

Jusque là pas trop de problème, mais je pensais que dans le champ valeur, en mentionnant la valeur que l’on souhaite apporter au bit concerné, que le plugin se chargerai de faire la lecture des 16 bits, la modification du bit concerné (il sait quel bit on souhaite modifié puisque sélectionné dans la commande info liée), et l’envoi du registre (et donc des deux octets) modifiés en conséquence.

Mais visiblement ce n’est pas le cas. Je dois taper manuellement la valeur du bit en décimal pour que le bon bit passe à 1. Par exemple pour ETAT_3 si je souhaite modifier ce bit, je dois écrire en valeur « 8 ». Mais 8 écrase tous les autres bits à 0.

Je comprends donc que je devrai manuellement faire la lecture décimale de ces 16 bits, faire la transformation avec la modification de mon bit, et inscrire ici la valeur décimale de ma transformation.

Est-ce qu’un expert de ce plugin peut me le confirmer ? :slight_smile:

Merci d’avance !

Bonjour,

La documentation du plugin est balaise aussi :face_with_peeking_eye:


La commande action est liée à une commande info pour afficher la valeur de la commande parce qu’une commande action n’a pas de valeur dans le monde Jeedom.
Vous avez accès à la valeur de la commande liée via #value#. Il vaut mieux lier la commande d’écriture d’un registre (donc d’un mot) à la lecture du même mot. Puis :

  • pour la mise à 1 du bit 3 mettre #value# | 8 en valeur.
  • pour la mise à 0 du bit 3 mettre #value# & 65527 en valeur, sachant que 65535 - 8 = 65527.

Le Modbus est natif sur un S7-1200 ?

À+
Michel

Bonjour Michel et merci pour votre retour.

Et pour les précisions, effectivement c’est plus logique ainsi :

Nous faisons un OU logique ou un ET logique sur le seul bit concerné préservant ainsi les autres.
La valeur #value# se chargeant de récupérer en (valeur décimale) la valeur du registre à l’exécution de la commande.

Cependant quelque chose m’échappe :face_with_head_bandage:

#value# | 8

Me met bien le bit 3 à 1 mais passe tous les autres à 0
Par ailleurs si je clique à nouveau et que le bit 3 est déjà à 1, le bit 0 passe également à 1.

#value# & 65527

Même sentence : le bit 3 passe bien à 0, mais les autres aussi !

Alors le Modbus n’est pas natif au sens propre, mais SIEMENS a créé des blocs d’instructions dans TIA portal qui permettent de le devenir. En client ou en serveur.
Ce qui fait de cet automate un vrai couteau suisse relativement accessible.

Il faut que la commande liée lise les 16 bits en uint16 (Etat_3 chez vous)

Mais les licences tia portal ne sont pas gratuites pour les particuliers… Générateur russe ?
J’ai opté pour des automates Wago, nativement Modbus et Wago donne le logiciel de développement aux particuliers, il suffit de le demander au support. J’utilise tia sur des S7-1500 au boulot, c’est vrai que les automates Siemens c’est de la bombe.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.