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

Embarqué Discussion :

Liaison RS232 et retour de trames envoyées


Sujet :

Embarqué

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Liaison RS232 et retour de trames envoyées
    Bonjour,

    Je bosse actuellement sur un projet qui demande d'interagir avec un device via une liaison RS232. Les trames à envoyer sont sur 32 bits , les réglages ( 4800 bds , 8 , N ) sont ok mais quelque soit le format de la trame que j'envoie vers mon device , elle me revient , que je respecte le format de la trame ou non. Je précise que la trame me revient instantanément et sans données supplémentaires . Autrement dit la réponse de mon device est à tous les coups de me renvoyer ma trame.
    Je précise également que dans ce protocole , le renvoie de la trame ne correspond en aucun cas à une réponse "standard" voulue par le protocole.
    J'ai déjà fait les tests sur mon port série PC , sur mon câble , tout est ok.

    Si quelqu'un a une idée je suis preneur car cela fait plusieurs jours que je bloque.

    merci d'avance

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Salut et bienvenu sur Developpez.com,

    Il n'y a pas en soi de réponse à ta question. Si tu n'as pas rebouclé matériellement ta sortie sur ton entrée (mais comme tu travailles sur un PC avec un câble, cela semble peu probable ), alors il faut regarder du côté du matériel avec lequel ton PC communique pourquoi il renvoie ça. Tu n'indiques ni le device ni le protocole, on ne pourra rien dire de plus.

  3. #3
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Pour moi le problème vient de l'ECHO qui est activé et qui devrait être désactivé. L'echo est le comportement par défaut si je ne m'abuse.

    Sur quel système travailles-tu ?
    Sous Linux et termios, tu dois désactiver les flags ECHO dans ta config.

    Tu as des exemples ici.

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Salut Yoann ! Ca va ?

    Tu veux dire par là que l'entrée est rebouclée sur la sortie de manière logicielle ? Ce n'est pas juste un echo dans le terminal, mais bien un echo qui est mis sur l'entrée du port série ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour vos réponses

    Concernant le protocole c'est un protocole propriétaire donc par évident de trouver des infos. Concernant le device il s'agit d'une installation composée de ballastes et d'un boitier "interface" permettant la transition entre le RS232 en entrée et une sortie sur deux fils reliés à chaque ballaste.

    Que je branche une ballaste ou que je ne communique qu'avec l'interface seule , la réponse est la même, à savoir le retour de ma trame. Alors que l'interface ne réalise aucun traitement à part cette transition série vers ballastes.

    Concernant l'écho local, j'utilise le terminal GTKterm pour mes tests et il y a une option pour désactiver l'écho local mais est ce qu'il s'agit bien de celui dont tu parles ? ou est-ce un autre echo au niveau du terminal lui même ?

    Pour l'instant j'essaie de transmettre mes trames via un terminal avant de réaliser une appli JAVA avec RXTX et javaComm donc pas de termios

    Et je précise que je travaille sous linux.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je complète ma réponse précédente.

    Si avec mon terminal je transmet en 4800 bds ( norme de mon systeme ) ma trame me revient l'identique. Par contre si je met une vitesse supérieur le retour est 0.

    Je pense donc que cela ne vient pas d'un éventuel l'écho local sinon quelques soient les paramètres choisis j'aurais un echo, non ?

    Je pense donc que c'est bien mon device qui me retourne cette trame. Je suis débutant avec ce type de protocole mais étant donné que le retour de trame à l'identique ne figure nul part dans le protocole est ce qu'il pourrait s'agit d'un problème matériel type court circuit ou bien est ce qu'un mauvais format de trame (checksum, etc.) pourrait provoquer ce type de retour ?

  7. #7
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Salut Yoann ! Ca va ?
    Salut !

    Citation Envoyé par Bktero Voir le message
    Tu veux dire par là que l'entrée est rebouclée sur la sortie de manière logicielle ? Ce n'est pas juste un echo dans le terminal, mais bien un echo qui est mis sur l'entrée du port série ?
    Oui tout à fait. Et tu désactives ça sous Linux de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // No line processing:
    // echo off, echo newline off, canonical mode off, 
    // extended input processing off, signal chars off
    //
    config.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN | ISIG);
    Citation Envoyé par Simchofiten Voir le message
    Concernant l'écho local, j'utilise le terminal GTKterm pour mes tests et il y a une option pour désactiver l'écho local mais est ce qu'il s'agit bien de celui dont tu parles ? ou est-ce un autre echo au niveau du terminal lui même ?
    Part défaut, il me semble que les ports série se comportent comme des terminaux. Donc avec un echo de la commande frappée (sauf pour la rentrée d'un mot de passe il me semble). Donc si tu veux discuter avec un port série, et que tu n'es pas un humain, tu dois désactiver cet echo.

    Je ne connais pas GTKterm, mais comment envoies-tu ces trames ? En ligne de commande ? Ou bien via un programme en C par exemple ?

    Si c'est en ligne de commande, tu dois utiliser stty pour configurer ton port série avant de l'utiliser. Tu as des infos ici par exemple.

  8. #8
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par Simchofiten Voir le message
    Je pense donc que c'est bien mon device qui me retourne cette trame. Je suis débutant avec ce type de protocole mais étant donné que le retour de trame à l'identique ne figure nul part dans le protocole est ce qu'il pourrait s'agit d'un problème matériel type court circuit ou bien est ce qu'un mauvais format de trame (checksum, etc.) pourrait provoquer ce type de retour ?
    Ah je n'avais pas vu ton second message. As-tu les specs de ce protocole proprio ?
    Parce qu'il se peut que ça soit normal de renvoyer la commande reçue. Considéré comme une sorte d'acknowledge.

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Alors la doc du protocole est pour le moins sommaire... comme dit précédemment ma config terminale c'est ( 4800 bds , 8bits/paquet , et parité None ).

    le format des trames master est le suivante :
    - 5 bits pour la commande
    - 1 bit de group
    - 10 bits d'adresse
    - 8 bits de data pour la fct commande
    - 0+7 bits de checksum

    trames slaves :
    - 8 bits de state
    - 16 bits de data
    - 1+7bits de checksum

    Ce qui me dérange le plus concerne le premier bit des bits de checksum qui, comme définit dans le format de la trame, vaut 1 lorsque le master envoi un paquet et qui vaut 0 lorsque le slave répond.

    Or moi la trame que je reçoit est exactement la même que celle envoyée , ce bit est donc toujours à 0.
    Si le paquet provenait d'un de mes slaves, même si la trame est mal construite, je pense que je devrais au moins avoir ce bit à 1 dans la trame de réponse.

  10. #10
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    concernant le retour de la trame, tu peux faire un test simple, débranche le cable RS232 coté périphérique.
    Si tu as toujours le retour, c'est que tu as, soit un problème de court-circuit dans ton câble ou tes prises, soit un problème de configuration de ton PC ou logiciel.

    Si tu n'as plus de retour, ça signifie que le retour se fait par la carte, donc soit un problème de court-circuit, soit c'est prévu dans le protocole.

    Comme dirait un certain ... "It's not a bug, it's a feature"
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    En inspectant le device à l'oscilo il semblerait qu'il y ait un premier défaut d'alimentation et un autre au niveau de transceiver RS232...
    J'attends donc un nouveau device la semaine prochaine

    Je vous remercie tous pour votre aide.

    a+

Discussions similaires

  1. [Débutant] Recuperer une trame sur une liaison RS232 (CommPortDriver)
    Par coxycross dans le forum C++Builder
    Réponses: 3
    Dernier message: 23/05/2012, 13h02
  2. Reception trame et envoi trame pour liaison rs232
    Par gaetan.tranvouez dans le forum C
    Réponses: 6
    Dernier message: 09/06/2006, 14h50
  3. Liaison RS232
    Par theanswerdu40 dans le forum C++
    Réponses: 1
    Dernier message: 28/02/2006, 07h53
  4. Liaison RS232 en langage C sur Windows
    Par Spikedu63 dans le forum Windows
    Réponses: 9
    Dernier message: 12/10/2005, 15h46
  5. Langage C et liaison RS232
    Par Spikedu63 dans le forum C
    Réponses: 9
    Dernier message: 17/09/2005, 12h26

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