Les plugins Modbus (RTU et TCP)

le 01 06 2020 . test avec 2020-02-13-raspbian-buster-lite.img sous RPI3A et RPI4B sous jeedom 4.0.54
Wiki => Utilisation du version plugin modbus RTU Développé par Jeedom SAS beta 2020-05-12 09:27:31 (5 euro :unamused: )
ghkljhjkle

Le Développeurs Bebel27 est entrain de mettre à jour sont plugin pour pouvoir faire le même travail . Cela permettra d’avoir qu’un seule plugin pour le TCP/IP et le RTU ! Merci à lui car contrairement a celui de jeedom, il est gratuit ! ( tu gagnes 5 € :smiley: )
MyModbus Développé par bebel27
https://bebel27a.github.io/jeedom-mymobdus.github.io/fr_FR/
sssqstre
avec
un compteur d énergie SDM230-Modbus-MID 100A Mono digitaler LCD Wechselstromzähler ( 35 € )

https://www.ebay.de/itm/digitaler-LCD-Wechselstromz%C3%A4hler-Stromz%C3%A4hler-S0-RS485-Modbus-RTU-MID2020-geeicht/362917300869?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
Modbus-RTU-MID2020-geeicht/362917300869?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649

et une interface Zihatec Modbus Shield inteface Professional RS422/RS485 Shield for Raspberry Pi B+, 2B, 3B and 4B (37 €uro )

cela fonctionne aussi avec une clef usb à 0.8 € ( et il n’y a aucune configuration a faire , contrairement a l’interface Zihatec ) . Linux a déjà les drivers compatibles . Rien à faire, plug and play… . Par contre pour mon windows 7 pro ,je n ai jamais réussis à installé les drivers . J’ai du prendre mon portable avec windows 10 familly pour capter et comprendre les premiers signaux avec ModbusDoctorV2.Drivers pour Windows-CH340-Driver chipset CP210xVCPInstaller_x64.exe lien du fabriqaunt drivers
https://es.aliexpress.com/item/834970564.html?spm=a2g0s.9042311.0.0.274263c0lhCEGT

Cela fonctionne aussi avec la USB-RS485-WE-1800-BT Chipset FT232RL Product Type UART Convert Cable € 14,61 ( mais j ai payé 35 € à la post pour les frais de douane … ) http://www.ftdichip.com/FTDrivers.htm

iliule

1-Changer les switch de la carte Zihatec

sw1
1=off
2=on
3=on
4=off
sw2
1=off
2=off
3=on
4=on
sw3
1=off
2=off
3=off
4=off

connection a votre slave RTU ( EASTRON )
le connecteur A = le « + »
le connecteur B = « - »

F70LHJ3JDCMSWE1.LARGE

actives ton interface serial sur ton RPI avec la commande
sudo raspi-config
? goto ‹ 5 Interfacing Options ›
? goto ‹ P6 Serial ›
? ‹ Would you like a login shell to be accessible over serial? › → NO
? ‹ Would you like the serial port hardware to be enabled? › → YES

verifie avec la commande
ls -l /dev si
serial0 → ttyS0
oi^poe
Note: /dev/serial0 and /dev/serial1 are symbolic links which point to either /dev/ttyS0 or /dev/ttyAMA0.

nano /boot/config.txt => verifies si
enable_uart=1

/dev/bus/usb
/dev/ttyUSB0 ( clef usb ) 1a86 USB2.0-serial (/dev/ttyUSB0)
/dev/serial0 ( hat zihatec.de interface )

^

Avec une celf usb à 0.8€ comme interface Modbus RTU , je laisse sur " auto " , je ne choisi pas 1a86 USB2.0-serial (/dev/ttyUSB0) . et cela fonctionne . Avec la carte Zihatec , je choisi /dev/serial0 .
Pour la clef usb ca donne =>


Dans le EASTRON SDM230 j’ai personnellement choisis les parametres suivants :
bd 9600
databit X8
stopbits One
party none
DRT FALSE
RTS FALSE
Timeout 1000
N° escalve ID = 10
Attention :raised_hand: quand tu achetes le SMD230 , les parametres sont bizars . par exemple, la vitesse de communication à 1000 bauds et un stop bits sur « 2 » . IL FAUT LES CHANGERS :warning:
je mis une résistance électrique sur le sdm230 de 4k7 Pull-down Resistor car je fais des tests avec une celf usb également ( qui ne posséde pas le choix sur elle même avec un switch ) de choisir une resistance ou non . Même avec la resistance de 4700 ohms sur sdm230 , la carte Zihatec fonctionne avec le switch SW3 N° 1 sur OFF .

liens utiles

https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=141195

Log en fonctionnement :

[2020-06-01 12:15:33][DEBUG] : http://127.0.0.1:80 "POST 

/plugins/modbusrtu/core/php/jeeModbusrtu.php?apikey=BZyfVAsWTqaNtYTD7F13q0FKuFq2GkZ4 

HTTP/1.1" 200 0
[2020-06-01 12:15:36][DEBUG] : {"88": 0.0, "86": 0.0, "84": 0.0, "24": -443.5833435058594, "0": 

231.58041381835938, "344": 67.73200225830078, "288": 0.0, "342": 158.02099609375, "6": 

2.8238368034362793, "76": 0.07400000095367432, "74": 0.0, "72": 158.02099609375, "70": 

51.6129035949707, "90": 0.0, "92": 0.0, "94": 0.0, "78": 67.65799713134766, "12": 440.21246337890625, 

"18": 624.9713134765625, "30": 0.7043723464012146, "36": 314.7755126953125, "294": 0.0}
[2020-06-01 12:15:36][INFO] : Decode data : {"id": "1", "result": {"88": 0.0, "86": 0.0, "84": 0.0, "24": -

443.5833435058594, "0": 231.58041381835938, "344": 67.73200225830078, "288": 0.0, "342": 

158.02099609375, "6": 2.8238368034362793, "76": 0.07400000095367432, "74": 0.0, "72": 

158.02099609375, "70": 51.6129035949707, "90": 0.0, "92": 0.0, "94": 0.0, "78": 67.65799713134766, "12": 

440.21246337890625, "18": 624.9713134765625, "30": 0.7043723464012146, "36": 314.7755126953125, 

"294": 0.0}}
[2020-06-01 12:15:36][DEBUG] : Handling RTU for sdm230
[2020-06-01 12:15:36][DEBUG] : Handling local request read for sdm230
[2020-06-01 12:15:36][DEBUG] : Command to execute sudo /usr/bin/python 

/var/www/html/plugins/modbusrtu/resources/modbusrtud/modbus_rtu.py --slave 10 --device /dev/ttyS0 --baud 

9600 --byte 8 --parity none --stop 1 --register '{"listdevice":[{"datatype": "float", "nbregister": "2", 

"functioncode": "4", "location": "0"}, {"datatype": "float", "nbregister": "2", "functioncode": "4", "location": "6"}, 

{"datatype": "float", "nbregister": "2", "functioncode": "4", "location": "12"}, {"datatype": "float", "nbregister": 

"2", "functioncode": "4", "location": "18"}, {"datatype": "float", "nbregister": "2", "functioncode": "4", 

"location": "24"}, {"datatype": "float", "nbregister": "2", "functioncode": "4", "location": "30"}, {"datatype": 

"float", "nbregister": "2", "functioncode": "4", "location": "36"}, {"datatype": "float", "nbregister": "2", 

"functioncode": "4", "location": "70"}, {"datatype": "float", "nbregister": "2", "functioncode": "4", "location": 

"72"}, {"datatype": "float", "nbregister": "2", "functioncode": "4", "location": "74"}, {"datatype": "float", 

"nbregister": "2", "functioncode": "4", "location": "76"}, {"datatype": "float", "nbregister": "2", "functioncode": 

"4", "location": "78"}, {"datatype": "float", "nbregister": "2", "functioncode": "4", "location": "84"}, {"datatype": 

"float", "nbregister": "2", "functioncode": "4", "location": "86"}, {"datatype": "float", "nbregister": "2", 

"functioncode": "4", "location": "88"}, {"datatype": "float", "nbregister": "2", "functioncode": "4", "location": 

"90"}, {"datatype": "float", "nbregister": "2", "functioncode": "4", "location": "92"}, {"datatype": "float", 

"nbregister": "2", "functioncode": "4", "location": "94"}, {"datatype": "float", "nbregister": "2", "functioncode": 

"4", "location": "288"}, {"datatype": "float", "nbregister": "2", "functioncode": "4", "location": "294"}, 

{"datatype": "float", "nbregister": "2", "functioncode": "4", "location": "342"}, {"datatype": "float", "nbregister": 

"2", "functioncode": "4", "location": "344"}]}' --action read
[2020-06-01 12:15:36][DEBUG] : Send to jeedom :  {u'devices': {u'1': {'id': u'1', 'result': {u'88': 0.0, u'86': 0.0, 

u'84': 0.0, u'24': -443.5833435058594, u'0': 231.58041381835938, u'344': 67.73200225830078, u'288': 0.0, 

u'342': 158.02099609375, u'6': 2.8238368034362793, u'76': 0.07400000095367432, u'74': 0.0, u'72': 

158.02099609375, u'70': 51.6129035949707, u'90': 0.0, u'92': 0.0, u'94': 0.0, u'78': 67.65799713134766, u'12': 

440.21246337890625, u'18': 624.9713134765625, u'30': 0.7043723464012146, u'36': 314.7755126953125, 

u'294': 0.0}}}}

plugin_rtu
pour les finitions
mettre en KW/H => Formule de calcul (#value# pour la valeur) => #value#/1000
mettre que 2 chiffres après la virgule => Arrondi (chiffre après la virgule) => 2
Mode de lissage maximum ( pr avoir bcp de points enregistrés )
, voici mes parametres


Je suis Off Grid, donc la fréquence est correct ( entre 48 et 52 Hz selon mes panneaux solaires et le Sunny Island… ) . Comme sont nom l’indique, le SDM230-Modbus-MID est " MID 2020 " . Donc avec la [certification MID( The Measuring Instruments Directive 2014/32/EU) . Lien wikipedia ici
kkkkkkkkkkitre

Citation

=> Ca va être l’inverse . C est le plugin non officiel qui fonctionne bien en TCP/IP qui va reprendre la capacité en plus de faire du RTU . Comme Jeedom ne fait rien … ( pourtant annoncé par Thomas en mai 2020 ) .

Bonjour,

J’utilise le plugin en mode TCP-IP. Il marche parfaitement. Encore merci.

Bonjour,

J’ai essayé MyModbus en mode RTU mais ça ne m’a pas paru évident ! J’avoue ne pas y avoir passé beaucoup de temps non plus ( j’ai demandé à @Bebel27 mais il ne me répond pas) !
Quelqu’un a-t-il aussi fait des tests ? Je suis preneur de la moindre info.

Merci d’avance.

Le Développeurs Bebel27 est entrain de mettre à jour sont plugin pour pouvoir faire le même travail .
c’est malheureusement pas fini . certainement pour fin Août 2020 . Même si il y a l option RTU dans le plugin => il est ce jour ( 22 06 2020 ) non fonctionnel .
C est du travail benevol gratuit … et il a un vrai travail à cote … donc patience :crossed_fingers:

TEST : plugin ModbusRTU officiel de Jeedom avec une clef usb FTDI USB-RS485-WE-1800-BT to Embed Conv Wire open End 1.8m et un capteur de puissance électrique 16 entrées de 100€ capteurs compris (de 40A ou 80 A ).

  • je cherchais à mettre des capteurs de puissance low coast dans une armoire électrique avec jeedom, j’ai installé un AMI-1216.02 Switch Actuator 12-fold 12SU MDRC, 230VAC, 16/20A, C-Load 200µF, with current measurement qui fonctionne très bien sous KNX à 290 € sur eibmarkt ( se qui fait 24 € par cable de puissance ), je trouve cela coûteux pour en ajouter un deuxième car je n’avais pas besoins du relais et du cos phi,et… , j ai donc fait le test avec un Multiplex 16 Way AC Current Frequency Measurement Acquisition Module RS485 Sensor Transmitter MODBUS-RTU HDHK 16 inputs ( j ai demander 2X pour avoir le manuel d utilisation en Anglais … et le producteur chinois ne veut pas le faire ) à 70 € à se jour pour le 16X40A sur aliexpress ( se qui donne 4.3 € / cable de puissance ,moins coûteux que le capteur/relais de MDT à 24€/cable







    captor 100A type DL-CT20CL 2000/1
    HDHK captor / 72-2595 tenma / pince CM-2056 VICI
    4.32 / 3.46 / 4.10
    8.14 / 6.60 / 7.90
    200 ma en + que la valeur de ma pince ampèremétrique. je n ai pas respecté le sens du courant qui passe dans le capteur de courant … fait à la va vite…
    je suis à 80 W au dessus de mon energy meter MDT qui est du materiel pro . ( test avec une consommation de 2800w)
    pour une puissance de 1300w, je suis exactement à la meme valeur qu un SMA sunny island . Mais sous les 300w, j ai en general 100w de moins … donc pas terrible pour les petites valeurs ( normal mon TI DL-CT20CL 2000/1 est un de 100A … )

Test convertisseur RTU vers TCP IP $18.99
J ai eu peur de ne pas avoir choisi le bon model de convertisseur modbus ( comme ici expliquer dans le vieux forum ) . je pensait devoir acheter l’autre model " RS232/485 TO ETH "

"
https://forum.jeedom.com/viewtopic.php?f=133&t=1560&hilit=modbus+convertisseur&sid=10b1e910291ffc14cae56ee795f09d49&start=660

https://forum.jeedom.com/viewtopic.php?f=133&t=1560&hilit=modbus+convertisseur&sid=10b1e910291ffc14cae56ee795f09d49&start=700
"
Mais mon, mon convertisseur model RS485 to Ethernet Converter

fonctionne bien avec le plugin MyModbus (mymodbus) - beta Version2020-06-01 22:42:07 pour la reception d’un energy meter Eastron sdm230_rtu à € 24,71 avec les parametres suivants
mmme


(upload://6HHbserM4x9c6bkikBak13sw19y.jpeg) 4 5 7

Cela fonctionne aussi avec le convertisseur ZLAN5143D Din Rail Serial RS485 to Ethernet TCP IP Server Module Ethernet Converter Modbus RTU to Modbus TCP unit à 14 € sur aliexpress =>
IP par défaut : 192.168.98.1 Mot de passe par défaut : 888888 Après faut voir d’après moi dans « UART » Type : RS485 Netmode : server

1 « J'aime »

Sabeis donde puedo encontrar el manual ZLAN 5143D?

J’ai commandé le ZLAN 5143D. J’essaye de le configurer mais je ne peux pas communiquer avec le docteur modbus (par exemple) et les automates qui communiquent en modbus RTU.

J’ai essayé plusieurs configurations, je vous montre une capture d’écran:

Savez-vous que je peux me tromper? Je vous remercie

La configuration du ZLan me semble ok. Modbus Doctor ne peut pas du tout se connecter sur l’IP 192.168.1.99 port 502 ?
Ou bien c’est l’interrogation des périphériques modbus qui ne fonctionne pas ?

1 « J'aime »

Directement avec le docteur Modbus, il se connecte mais ne lit aucune donnée, explique Time out.

Je n’ai qu’un appareil Modbus connecté avec l’adresse 1 et avec cette IP.

Donc la communication avec le Zlan est ok.
Soit les valeurs de serial settings ne sont pas adaptées au matériel, soit l’adresse dans le holding register n’est pas bonne. Quel est le matériel Modbus que tu interroges ?

Hello @Bebel27,

Je viens de passer mon Jeedom d’un conteneur Docker vers un Odroid-C4.
J’ai migré la partie Modbus sur ton plugin.
J’ai dû effectuer les modifications ci-dessus pour ne pas avoir des valeurs vides.
As-tu une idée de la raison?

Salut, je vois par rapport au code que c’est liée à la taille du buffer en réception .
Tu te connecte à quel matériel, tu passes en direct ou par un convertisseur ?

Hello,

J’utilise ce modèle : USRIOT USR-TCP232-410 S
C’est un convertisseur Ehternet.

As tu essayer de jouer sur les paramètres de ton convertisseur ?
Peux tu faire une capture d’ecran de ceux ci ?

Hello,

Voici la copie d’écran : ancien forum

A noter que sur le menu déroulant, si je mets à « None », c’est du RTU over TCP et dans ce cas, cela fonctionne en forçant le mode RTU dans l’un des fichiers de conf… (expliqué dans le premier post).
Si je mets TCP Server ModBus TCP alors c’est du TCP tout court.

Hello @Bebel27,

La copie d’écran t’aide à quelque chose?

La coupe me permet de voir les différents paramètre dont tu dispose.
Je me serais mis en tcp ip et jouer avec les autre paramètres jusqu’à temp de ne plus avoir de none en retour.
Je sais qu’il y a des utilisateurs qui on d’autre modèle de convertisseur et ça marche bien en tcp ip.

J’ai tenté… Rien…
Je vais poster sur le psot de ton plugin voir si quelqu’un voit quelque chose dans la conf.
Un autre user avait le même souci, je vais en profiter pour lui demander s’il a avancé.

Bonjour,
J’utilise le plugin Modbus RTU Jeedom en communicant avec un automate.
La lecture fonctionne mais pas l’écriture.
Savez-vous si le plugin supporte la fonction modbus écriture code 6?
Cordialement
Greg

1 « J'aime »