Page 1 sur 38

[Plugin Tiers][Sujet Principal] Plugin Modbus

Publié : 23 sept. 2014, 18:50
par tmartinez
Bonjour à tous,

Je viens de mettre en ligne un plugin Modbus TCP.

Il permet de communiquer avec les automates industriels compatibles Modbus TCP.
Il a été testé sur un Adam 6050.

Le plugin peut interagir sur des E/S de type :
* Coils
* Discrete Inputs
* Holding Registers
* Input Registers

Le polling est configurable en secondes.

J'attends vos retours !!

Re: [Officiel] Plugin Modbus

Publié : 23 sept. 2014, 21:53
par Aloïs
Merci Thomas pour ton boulot sur ce protocol !



Petite mise en application direct :

Dans ma situation je dispose d'un module Entrées/Sorties, d'une Lampe et d'un capteur de courant qui fournis un contact quand y'a consomation. Je commence donc par :

Le Module ADAM 6050 pilotable en ModBus, en fouillant sa doc on trouve très vite le tableau d'adressage.La commande d'un éclairage avec un retour d'info en utilisant le capteur connecté sur DO0 pour la commande et DI10 pour le retour.
Image

Après avoir installé et activé le plugin, connecté et adressé le modul je peux créer un Mon objet "Adam test" dans Plugin/Protocol domotique (Je n'ai créé que ce dont j'avais besoin pour le test mais à y être créez toutes les E/S) :
Image

Plus qu'à me faire un petit "interupteur virtuel" :
Image

Voilà ! tmartinez est un ballèze :)

Re: [Officiel] Plugin Modbus

Publié : 23 sept. 2014, 21:56
par tmartinez
Lol, merci Alois !
Super ta présentation, je ferai un tuto plus détaillé lorsque j'aurai le matos !

Re: [Officiel] Plugin Modbus

Publié : 23 sept. 2014, 22:22
par Aloïs
Tu l'auras vite, promis. Beaucoup d'appareils industriel (entrées sortie analogiques, digital, et autre capteur d'energie pour la gestion de consommation des moteur d'automate par exemple) sont sur bus RS485 avec ce fameux protocole. La partie TCP intervient le plus souvent sous forme d'une "passerelle Ethernet". Le RS485 est un niveau logique robuste et peut perturbable sur longue distance. Pour les accros du filaire ( moi :) ) ça peut être une bonne alternative aux prolongateur I2c et autre 1wire. On trouve très facilement des convertisseur TLL<>RS485 pour ce faire un adaptateur série sur les gpio par exemple.

J'ai oublié de préciser dans mon résumé le choix du type d'E/S "coil" simplement noté en claire dans ma doc et le port 502 qui est le standard pour le ModBus/TCP. ...... Bon ok t'avais tous fait, je n'ai fait que chercher pourquoi tu avais choisi ces valeur :-p

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 08:40
par philobedo
Bravo pour ce plug-in depuis que l'attendais.
Comment paramétrer une E holding register.
Il y a t'il une doc ou bien celle de pymodbus ?
Cordialement

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 08:59
par Aloïs
Salut, il me semble que Thomas a mit la prise en charge du Holding Register, mais je ne pourrai pas te confirmer si ça s'adapte à ton besoin. Tu peux en dire plus ?

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 09:02
par philobedo
J'ai un équipement ModBus tcp à l'adresse 100 holding register une valeur qui peut être soit un integer ou flottant 16bits ou 32bits signé ou non signé.
Comment lui faire comprendre ça au plug-in ?

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 10:24
par Aloïs
Bonne question, veux tu un accès pour tenté de lire à distance ton état sur cette adresse ? MP

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 10:27
par philobedo
Oui mais développe

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 10:30
par philobedo
J'utilise modsim sur mon PC avec une adresse IP une plage adresse ModBus holding register. Il me faut juste la doc de paramètres et si vous voulez je veux bien pousser les tests étant donné que j'utilise ce protocole au boulot

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 11:17
par Aloïs
Il va s'en occuper, si je comprend bien une requête Holding ce compose de l'adresse modul, de l'adresse "départ" de lecture et du nombre d'adresse lu. Dans le plugin je suppose que le dépare et le nombre est a entrer dans "paramètre". Mais la syntaxe .... ?? Attendons la réponse du patron.

http://www.simplymodbus.ca/FC03.htm

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 11:49
par tmartinez
"Normalement" tu choisis Holding registers dans type d'E/S et 100 dans adresse et c'est tout pour la lecture.
Si ça ne fonctionne pas, peux-tu me dire ce que tu as dans les logs ?
Merci

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 19:15
par philobedo
Voici ce que j'ai car cela ne fonctionne pas en polling
28-09-2014 19:09:57 | info | Debut de l action
28-09-2014 19:09:57 | info | Debut de l action 2:192.168.0.12
28-09-2014 19:12:06 | info | Debut de l action
28-09-2014 19:12:06 | info | Debut de l action 2:192.168.0.12
28-09-2014 19:13:06 | info | Debut de l action
28-09-2014 19:13:06 | info | Debut de l action 2:192.168.0.12

C'est juste en faisant tester.

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 21:56
par tmartinez
As-tu démarré le daemon ? (Fleche verte en haut à gauche)
Le bouton test fonctionne uniquement avec les actions.
Pour les commandes de type lecture, c'est le daemon qui interroge toutes les x secondes (x étant le polling).

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 22:25
par philobedo
Oui le daemon est ok, peux tu rajouter des log pour identifier la valeur et aussi peux tu m'expliquer dans le log le param polling=501 qui correspondrait à polling 5secondes et adresse modbus 01.
28-09-2014 22:19:21 | info | Lancement démon modbus : nice -n 19 /usr/bin/python /usr/share/nginx/www/jeedom/plugins/modbus/ressources/modbus_master.py -h 192.168.0.12 -p 502 --polling=51
28-09-2014 22:19:24 | info | Démon modbus lancé
28-09-2014 22:21:17 | info | Debut de l action
28-09-2014 22:21:17 | info | Debut de l action 2:192.168.0.12
28-09-2014 22:21:30 | info | Debut de l action
28-09-2014 22:21:30 | info | Debut de l action 2:192.168.0.12

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 22:30
par tmartinez
ah ok, il doit y avoir un soucis dans mon code, je vais corriger.
car la ligne devrait être du type :
/usr/share/nginx/www/jeedom/plugins/modbus/ressources/modbus_master.py -h 192.168.0.12 -p 502 --polling=5 --rhr=100 --rhrl=1
(rhr est l'adresse de départ et rhrl est le nombre d'adresses lues)
Je vais regarder.
A++

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 22:43
par tmartinez
Je viens de mettre à jour le plugin. Peux-tu me dire ce que tu as désormais dans les logs ?

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 23:28
par philobedo
28-09-2014 23:20:13 | info | Lancement démon modbus : nice -n 19 /usr/bin/python /usr/share/nginx/www/jeedom/plugins/modbus/ressources/modbus_master.py -h 192.168.0.12 -p 502 --polling=5 --rhr=1 --rhrl=2
28-09-2014 23:20:16 | info | Démon modbus lancé
28-09-2014 23:22:26 | event | Evenement : type=>holding_registers values=>None add=>192.168.0.12
28-09-2014 23:22:27 | event | Evenement : type=>holding_registers values=>None add=>192.168.0.12
28-09-2014 23:24:40 | event | Evenement : type=>holding_registers values=>None add=>192.168.0.12
28-09-2014 23:24:41 | event | Evenement : type=>holding_registers values=>None add=>192.168.0.12

rhrl=2 car 2 octets c'est ça?

values=None alors qu'il y a 5 décimal à l'adresse 1 et 6 à l'adresse 2

Bon courage.

Re: [Officiel] Plugin Modbus

Publié : 28 sept. 2014, 23:50
par tmartinez
Bon, on avance.
Il faut que je trouve pourquoi il renvoie None à la place des valeurs.
Peux-tu m'ouvrir un accès temporaire à ton jeedom afin que je fasse des tests ?
Merci

Re: [Officiel] Plugin Modbus

Publié : 29 sept. 2014, 07:52
par farfadet
Bonjour,

Pourriez vous me dire si le modbus est compatible avec un tsx nano ? Merci