Mymodbus et Siemens Logo! - Ecrire sur une NI : j'y suis presque!

Bonjour à tous,

Avant de solliciter la communauté, j’ai essayé d’avancer au maximum par moi-même et suis arrivé à de bons résultats alors que ne connaissais modbus que de nom.

Config : Logo! 8.3
Jeedom sur RPI4, 4.2.18.
Mod en beta 2022-07-24 01:01:47

Côté Jeedom : équipement créé en mode « tcpip », port 502, unit ID 1, polling 2s

le Logo! est serveur, Jeedom est client.

Je parviens à :
Lire l’état de sorties Q et NQ (donc la partie réseau est OK).
(J’ai compris l’adressage des coils / bobines)

Je parviens à écrire une fois sur une NI, mais les tentatives suivantes, malgré le retour réussi côté Jeedom, ne changent plus côté Logo!.

J’ai ajouté une connexion avec un Modbus doctor ensuite pour déterminer si cela venait de Jeedom ou de l’automate. Tout va bien avec Modbus Doctor, j’active et désactive la NI à volonté ==> C’est donc Jeedom qui sait faire une fois mais pas 2. Si je veux une nouvelle réussite, je crois qu’il faut que je repousse le programme !

Quelques screenshots :

image

Bien sûr en passant le paramètre à 0 quand je veux un état bas.
Et bien sûr, la bascule RS à l’état bas.

Il y a certainement quelque chose que je ne comprends pas. S’il manque des infos pour creuser, n’hésitez pas à me dire !

Avec un grand merci par avance pour vos lumières.

Jix

Il manque la table d’adressage…
image

(301*8)+4 = 2412… Je tape au bon endroit, ça a marché !

Si ça peut aider :

root@XXXXX02:/var/www/html/plugins/mymodbus/ressources# /usr/bin/python3 /var/www/html/plugins/mymodbus/ressources/mymodbus_write.py --host=999.999.999.163 --protocol=tcpip --port=502 --baudrate=0 --unid=1 --wsc=2412 --value=0
Version de python ok
Traceback (most recent call last):
  File "/var/www/html/plugins/mymodbus/ressources/mymodbus_write.py", line 82, in <module>
    assert(not rq.isError())     # test that we are not an error
AssertionError
root@XXXXX02:/var/www/html/plugins/mymodbus/ressources#

Bonjour @jix

Essai comme cela,

Bonjour Patrick57,

merci pour ta réponse, j’ai trouvé cette nuit, mais je me suis endormi devant les écrans…
Oui, c’est ce que je faisais, dans mes premiers tests j’utilisais la même commande en changeant le paramètre.

ça venait du fait que j’avais paramétré le fait de garder la session ouverte. Et le pauvre automate, visiblement, ne gère qu’une session modbus par client à la fois, ce qui est déjà bien pour un petit hardware sans OS (et ce qui est peut-être normal dans le protocole Modbus, ça, j’en sais rien)

Pourquoi n’y ai-je pas pensé avant…

Ce qui m’a permis d’arriver à cette conclusion, c’est :

  • contrairement à ce que j’ai dit, ça ne marchait plus du tout, malgré avoir vérifié maintes fois les adressages.
  • j’avais le même comportement en ligne de commande.
  • en regardant le code du script « write », je vois qu’il fait 3 retries. Quelques netstat plus loin… Je passe ce nombre à 10 pour voir si ça met plus de temps à échouer ==> OUI. Il faisait donc des retries de connexion. Et là, ça a fait tilt.
  • j’ai arrêté le démon et là, paf, en CLI comme depuis Jeedom, ça s’est mis à fonctionner correctement.
  • tout de suite, contretest, je rallume le démon, et paf, ça marche plus.
  • J’ai viré le maintien de session ouverte, re testé, content, déjà crevé par le boulot ==> dodo.

Il eu fallu, pour pouvoir garder la session ouverte, que le write soit fait par le même processus que le démon, sur le même socket TCP, même session Modbus.

Au passage, un grand merci à l’auteur de ce plugin qui ouvre encore plus le champ des possibles !

Jix

Je suis tombé par hazard sur ton poste, merci pour ton message de remerciement. Faut surtout dire merci à tout les utilisateurs qui viennent ici partager des solutions et qui proposent leurs l’aide.

de rien, merci pour ton retour.

Je peine depuis longtemps sur un autre plugin (siapro), j’espère que la magie de la communauté pourra m’aider un jour :wink:

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