IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Automation Discussion :

Communication Modbus RTU entre un S7-1200 et un compresseur


Sujet :

Automation

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Communication Modbus RTU entre un S7-1200 et un compresseur
    Bonjour,

    J'ai un problème au niveau de ma communication modbus (RTU), j'utilise une interface RS 232 pour la liaison.
    Mon soucis se trouve au niveau de l'adressage des demandes, car le constructeur de compresseurs oblige d'utilisé la fonction 03 pour avoir accès aux données. Or du côté de Siemens la fonction 03, à ces adresse bien précise de 40 001 à 49 999 tandis que du coté du compresseur les adresses sont de 1001 à 1014 et de 10 000 à 13 002.
    Y'a t'il un moyen de contrer se problème pour modifier les adresses ou une interface qui les modifies en fonctione de la demande?

    Si je ne suis pas assez compréhensible j'essairai d'être plus complet la prochaine fois.

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 90
    Points : 126
    Points
    126
    Par défaut
    Hello,

    Il y a peut-être une histoire de correspondance entre les adresses MODBUS et la syntaxe IEC 61131:
    dans la requète MODBUS, on demande la valeur de la variable (1014, par exemple);
    en syntaxe IEC 61131, dans l'application, on utilise une adresse correspondante pour préciser le type et l'accès à la variable (40001 + adresse_modbus pour une variable de type registre accessible en écriture, si je me goure pas).

    Pour lire les variables 1001 à 1014 dans le compresseur, utilise les adresses 41002 à 410015 côté automate, pour voir... Mais je garantis pas que ce soit ça, je ne connais pas les API Siemens...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Merci pour la réponse, j'ai essayer cela hier et ca fonctionne correctement. Le seul problème c'est que je ne sait pas trop vérifier les valeurs, car elles se suivent de très près.
    Dans ce que j'avais lu et si j'ai bien compris c'est qu'il fallait faire -1 à l'adresse que l'on souhaitai lire. avec le protocole Modbus
    Si c'est bien le cas alors il faut juste mettre 41001 à 41014?

    Brunpac

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 90
    Points : 126
    Points
    126
    Par défaut
    Côté compresseur, les adresses sont notées en MODBUS, ou en syntaxe IEC ?
    La conversion d'adresse se fait comme cela:
    adresse_iec = adresse_modbus + 40001
    pour les registres d'entrée MODBUS

    adresse_iec = adresse_modbus + 30001
    pour les registres de sortie MODBUS

    A vérifier, mais ça doit être un truc du genre (code_fonction_modbus*10000 + adresse_modbus + 1)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Je suppose quelle sont en Modbus car dans leurs exemple de la formulation de la demande il mette d'abord l'adresse de l'esclave (slave) puis le code fonction (03) ensuite la(es) adresse(s) désirée (1001 à 1005 par exemple) et puis se qui suit.

    En tous cas merci pour la réponse.

    J'ai un autre soucis c'est que j'ai des adresses qui répondent en Dword lorsque je configure l'automate pour qu'il les réceptionnes en Dword je n'ai pas la moindre valeur qui s'affiche tandis que les autres valeurs (word ou byte) je n'ai aucun problème pour voir leurs valeurs.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 90
    Points : 126
    Points
    126
    Par défaut
    Citation Envoyé par brunpac Voir le message
    J'ai un autre soucis c'est que j'ai des adresses qui répondent en Dword
    As-tu un exemple ?

    Citation Envoyé par brunpac Voir le message
    lorsque je configure l'automate pour qu'il les réceptionnes en Dword[...]
    Que fais-tu exactement, côté automate ?
    Au pire, peux-tu récupérer les valeurs qui t'intéressent au format word, puis les concaténer par programme ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation:
    Envoyé par brunpac Voir le message
    J'ai un autre soucis c'est que j'ai des adresses qui répondent en Dword
    As-tu un exemple ?

    adresse : 13 000, paramètre = heure total, unité/rang/description = LSB=6minutes , data type 32 bits signed long, accès = read only.

    adresse : 10 050, paramètre = heure avant changer l'huile, data type 32 bits signed long, accès= read only.

    Donc au niveau automate, je ne fais que de poser des questions aux adresses décrite avant et puis d'écouter leurs réponse. Dans le programme, il y a moyen d'appeler un Modbus master de configurer quelle adresse il dois questionner à ce moment. Une fois cela fait, il faut il dire d'aller mettre les donnée reçue dans un bloc data base (DB) et dans ce DB, on configure quelle type de donnée l'automate doit aller reprendre. donc ici je suis en Dword donc je ne sais pas les prendre en word aussi non il y aura un décalage des adresse ou un autre problème.


    Oublier de préciser, l'automate à une plage d'adresse accrue à 400 001 jusque 465 535. Ce qui me permet de voir les valeurs des adresses supérieur à 9 999.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Encore moi hey oui,

    Bon les adresses en double mots "normal" je suis enfin arrivé à les lire. Mais les adresses qui ont un LSB ou MSB en dessous, l'automate ne les reconnait pas!!! Il n'y a pas moyen de le forcer à les lires?(je suis toujours en double mots)

    MSB= bit de poids fort et LSB = bit de poids faible si j'ai bien compris mais sa sert à quoi en réaliter?

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 90
    Points : 126
    Points
    126
    Par défaut
    As-tu la possibilité de vérifier les valeurs que tu lis ?

    Tente de récupérer l'heure avant de changer l'huile en lisant deux mots aux adresses 10050 et 10051, puis range-les dans un Dword avec le mot 10050 dans le mot de poids fort, et le mot 10051 dans le mot de poids faible du Dword.
    En comparant les valeurs, tu sauras si tu récupères les données dans le bon ordre, ou si les mots poids fort / poids faible sont à permuter.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci pour cette réponse,

    Le résultat est que cela fonctionne .
    Il ne faut pas oublier d'additionner l'adresse voulue comme tu l’as expliqué donc quand on veut aller voir la 10 050 il faut mettre 10 051 (dans mon cas) et regarder en même temps la 10 052 vu que c'est un Dword (double mots) transformer en word (mot).
    Comme de mon coté il est marquer juste LSB ou MSB, il faut soit prendre la 1er adresse ou la deuxième suivant le type voulu.
    Si c'est MSB il faut regarder la 10 051 et si c'est LSB il faut aller regarder la 10 052.

    Bon reste à remettre de l'ordre dans le tous et faire tourner ce programme.

    Encore merci

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 90
    Points : 126
    Points
    126
    Par défaut
    Super !
    Pense au bouton [Résolu] pour marquer ce post comme réglé.

    Bon courage pour la suite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Communication Modbus TCP entre ET200S et M340
    Par hell3 dans le forum Automation
    Réponses: 4
    Dernier message: 02/03/2015, 12h05
  2. communication modbus entre siemens S5-200 et sofrel S550
    Par kinotic dans le forum Automation
    Réponses: 1
    Dernier message: 02/12/2010, 19h50
  3. Réponses: 13
    Dernier message: 07/05/2009, 17h03
  4. Communication MODBUS entre TSX 37
    Par michel059 dans le forum Automation
    Réponses: 8
    Dernier message: 09/03/2009, 09h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo