Problème de com
#1
Voilà mon projet en 2 mots.
J'ai une box LD qui supervise un automate industriel WAGO en modbus TCP.
Dans mes équipements, j'ai déclaré un bit en écriture pour le pilotage d'une lampe. Jusque là tout va bien.
Le problème vient de la lecture. J'ai déclaré dans mon équipement un bit en lecture pour le retour d'état. Cela fonctionne sans problème pendant une dizaine de minutes et ensuite le widget que j'utilise pour la visualisation est en erreur. Le pilotage fonctionne toujours donc la commande de d'écriture est ok mais plus la lecture.
J'ai fait quelques essais :
- En redémarrant le connecteur, cela fonctionne, mais également quelques minutes.
- Avec un autre logiciel, pas de problème, ce qui me permet de dire que la com du WAGO n'est pas plantée.

J'ai donc plusieurs questions :
- Quelle est le temps (polling) entre les différentes trames? Par expérience un temps de 200ms est un bon compromis entre réactivité et transmission sûre des trames.
- Serait il possible de pouvoir le paramétrer? Les différents systèmes ne réagissent pas de la même façon.
- Il serait pratique d'avoir un debuggeur pour analyser les trames envoyées et reçues.
Répondre
#2
Bonjour,

Actuellement le délai entre les trames est en effet inférieur à 200ms, ce qui pourrait expliquer votre problème.
A partir de la version 1.4.85, qui devrait sortir cet après-midi, ce délai sera configurable dans les paramètres du connecteur Modbus. La valeur par défaut sera mise à 200ms.

Un debugger dans le même genre que pour les connecteurs KNX est bien prévu, mais je n'ai pas de date précise pour sa sortie.
Quentin
Equipe Lifedomus
Répondre
#3
Ok merci
Répondre
#4
Bon j'ai encore réalisé des essais avec des valeurs de temps entre trames différentes et malheureusement cela n'a pas réglé le problème.

Je lis un integer 16bits sur le WAGO et la valeur récupérée par la LD fait yoyo entre 2 valeurs 258 et 252 en décimal, alors que la valeur dans le WAGO est fixe et égale à 0.
Après redémarrage du connecteur, la valeur lue par la LD est bien 0.

Mais alors pourquoi ce décalage?
Y'aurait-il un problème avec les masques hexa appliqués à la lecture et à l'écriture des registres?
Répondre
#5
D'après moi, Lifedomus lit bien la valeur contenue dans le registre, le problème doit plutôt être au niveau du masque appliqué.
Quentin
Equipe Lifedomus
Répondre
#6
Le masque est FFFF, donc normalement cela lit tous les bits, non?
Répondre
#7
Oui, et je suppose que dans votre cas, le masque devrait être plus restrictif.
Quentin
Equipe Lifedomus
Répondre
#8
Le problème est que je dois lire le bit 11, donc j'applique un masque de 0800. Mais, ne voyant pas le bit bougé, j'ai donc créer une variable qui lit le mot entier. Dans le WAGO le mot est égale à 2048 soit seulement le bit 11 à 1 dans le mot, mais pour la LD le mot vaut 258 ou 262.
Ce qui me parait étrange c'est que le mot change de valeur dans le DS, il a une valeur qui bascule entre 2 valeurs (258 et 262) qui change fréquemment (environ toutes les 2s) alors que dans le WAGO, le mot ne change pas de valeur.
Répondre
#9
En configurant dans Lifedomus la variable Modbus en int32 avec un masque de 0800, les seules valeurs qui devraient s'afficher sont 0 ou 2048 (= tout les bits ignorés sauf le 11ème)
Si vous lisez les valeurs 258 et 262, ce doit être avec un masque FFFF. Ce sont les valeurs présentes dans le registre (dans les deux cas, le 11ème bit est à 0).

Une façon plus pratique quand on souhaite lire uniquement 1 bit du registre est de configurer une variable Modbus booléen dans Lifedomus et d'y appliquer le masque 0800 (dans le cas où le bit à lire est le 11ème). De ce fait, le retour d'état sera "true" quand le 11ème bit est à 1 et "false" s'il est à 0. Les autres bits ne seront pas pris en compte en lecture et recopiés tels quels en écriture.
Quentin
Equipe Lifedomus
Répondre
#10
On est bien d'accord.
Ma config normale : je ne lis que le 11ème bit avec le masque 0800.
Pour debugger, je me suis créé une autre variable qui, elle, lit le mot complet avec le masque FFFF dans lequel se trouve ce bit, d'où mon incompréhension et ma valeur 258 et 262. Alors que côté WAGO, j'ai bien une valeur de 0 ou 2048 donc uniquement le bit 11 qui change de valeur. Il y a une différence entre les valeurs de registre WAGO et ce que lit la LD.

De plus, ce qui me parait bizarre, c'est que j'obtiens les bonnes valeurs pendant environ 30min et après gros bug : j'ai des valeurs de variables qui ne correspondent pas au registre du WAGO ou dernièrement j'ai les widgets qui se remplissent de rouge.

J'ai fais également des tests avec un soft qui permet de lire des registres sur un modbus TCP, et là pas de problème j'obtiens les bonnes valeurs, même quand l'affichage de la LD est planté.

Greg
Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Demande d'aide Problème depuis MAJ Datablocs Benjamin04 0 2,283 09-05-2018, 06:06 PM
Dernier message: Benjamin04
  [RESOLU] Problème Modbus AucuneID 9 12,854 04-05-2016, 09:54 AM
Dernier message: Quentin



Utilisateur(s) parcourant ce sujet : 1 visiteur(s)