un peu plus d'un an plus tard, ben j'y pense toujours, et j'ai presque avancé ...
En fait, ma régulation clipsol dispose de 2 ports sur le coté :
- un RJ9 physiquement, c'est du 4PC4, c'est à dire avec 4 conducteurs, et non pas 6 comme le RJ11 (je ne sais toujours pas à quoi il sert)
- un RJ45, comme un cable réseau
en googlant un peu, je me suis aperçu que le connecteur RJ45 n'était pas dédié à faire fonctionner une liaison informatique réseau TCP/IP, mais une liaison
modbus.
Je suis tombé sur cette doc par exemple :
notice-ecs-collectif-communication-CP018135-230414-V1.5.pdf
Ca serait du modbus sur liaison serie RS485 fonctionnant avec les 2 fils du milieu du connecteur rj45.
Du coup, j'ai acheté
cet adapteur RS485 / USB après quelques jours d'échecs en bidouillant un ESP8266 et
un module RS485 sensé fonctionner avec des arduino. Parmi les soucis rencontrés, le truc le plus pénible est que ce module fonctionne en 5V et l'ESP8266 en 3.3V, et que je n'avais pas de level shifter sous la main, je suis repassé sur une arduino uno dont la logique est en 5V, mais je n'ai quand même pas réussi...
Bref, le truc USB fonctionne. Sous linux, j'arrive à recevoir des trames via la librairie python
pymodbus.
Contrairement à ce que je vois dans les docs trouvées en googlant sur "clipsol modbus", la régulation me parle comme si j'étais un slave modbus (c'est à dire un serveur selon le vocabulaire modbus) d'id 16; dans les docs, je vois 30.
La configuration de la liaison série est bonne, par contre : 19200 bauds, 8 bits de données pas de bit de parité, 1 bit d'arrêt.
La régulation essaie de lire 1 mot à l'adresse 0 en m'envoyant la trame 0x3 0x0 0x0 0x0 0x1 toutes les 24 secondes
Toutes les 20 minutes, elle m'envoient les 2 trames suivantes :
Code : Tout sélectionner
0x10 0x0 0x41 0x0 0x34 0x68 0x0 0xa 0xf0 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x48 0xcd 0x9d 0xe0 0x1 0x1 0x1 0x2 0x1 0x1 0x1 0x1 0x5a 0x78 0x32 0x4b 0x2 0x8 0x2 0x5 0x2 0x5 0x1 0x3 0x15 0x41 0x1 0x0 0x0 0x0 0x0 0x1 0xff 0x0 0xff 0xf1 0x1 0xc2 0x1 0x2c 0xff 0xf6 0x8 0xca 0x0 0x64 0x0 0x0 0x0 0x0 0xff 0xe2 0x0 0xc8 0x0 0x0 0x0 0x78 0x0 0x0 0x0 0x78 0x0 0x0 0x0 0x5a 0xff 0xec 0x0 0x32 0x0 0x0 0x0 0x6e 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
et
Code : Tout sélectionner
0x10 0x0 0x79 0x0 0x22 0x44 0x3 0x15 0x4 0x4 0x0 0x6 0x0 0x80 0x0 0xae 0x1 0x90 0x7 0x7b 0x7 0x7b 0x0 0xa0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x0 0x0 0x2 0x0 0x0 0x0 0x0
Ce qui correspond en modbus à l'envoi de 0x34 mots (soit 52mots) à l'adresse 0x0041 puis 0x22 mots (soit 34 mots) à l'adresse 0x0079.
de façon moins régulière, je vois aussi des requêtes visant à relire les infos envoyées précédement (fonction No 3 en modbus).
Je suis en train de convertir en decimal toutes ces valeurs reçues en hexa pour voir si elles auraient un sens par rapport aux temperatures qu'affiche la régulation. J'ai déjà essayé vite fait de faire l'inverse, c'est à dire de chercher 0x7b quand mon capteur était affiché à 12.3 degrés (j'ai vu quelque part dans les docs clipsol que pour convertir en entier les valeurs flottantes, elles étaient multipliées par 10), mais sans succès.
Si quelqu'un avait quelques connaissances en régulation clipsol, ou en modbus, en petit coup de main, ou juste de pouce ne serait pas de refus...