Problème sur bus RS 485 !!
Répondre à la discussion
Affichage des résultats 1 à 25 sur 25

Problème sur bus RS 485 !!



  1. #1
    invite266d4c50

    Problème sur bus RS 485 !!


    ------

    Bonjour à tous !

    Je me permets d'ouvrir un post car cela fait plus d'une semaine que je galère sur mon bus RS 485. JE m'explique. J'essaie de piloter une caméra qui fonctionne en RS 485 à 19200 bauds. J'ai au début réussi à lui envoyer des trames, mais je n'avais jamais d'acquittement, pensant que cela venait de la caméra.

    Pour explorer la chose un peu mieux, je me suis muni de deux microcontrôleurs (PIC32MX564F128L) et deux transceivers RS 485 (MAX3072EESA+) et j'ai essayé de reproduire la communication RS 485. Je vous passe les interminables essais que j'ai pu faire, j'ai pu plus ou moins isoler mon problème (enfin je crois ...).

    Dans un premier temps, côté software, l'implémentation est bonne car les messages partent sur le bus. Là où j'ai un problème, c'est que lorsque j'envoie une trame du µC #1 vers le µC #2, elle arrive et j'ai même droit à un écho. Par contre lorsque j'envoie du µC #2 au µC #1, rien. J'échange les transceivers, toujours pareil. J'échange les boards RS 485 (câblage et montage fait moi-même) et la le problème se déplace. j'en conclue que c'est mon montage et non mes transceivers. Après quelques lectures, j'ai compris l'importance du câble torsadé et je l'ai donc torsadé moi-même à la main, mais ça n'a pas amélioré mon problème, mais il a légèrement bougé : L'envoi du µC #1 vers le µC #2 ne fonctionne qu'à la première trame et l'envoi du µC #2 vers le µC #1 ne fonctionne pas, cependant j'ai cette fois-ci de l'écho, chose que je n'avais pas avant.

    Concernant l'écho, c'est assez étrange justement. Au vu de cette page (http://www.ti.com/lit/an/snla049b/snla049b.pdf), chapitre 7 "Termination Options", la résistance de fin de ligne de 120 ohms devrait absorber la puissance du signal et je ne devrais pas avoir d'écho. Donc j'en conclue que mon bus est mal "dimensionné" physiquement. Il doit faire entre 30 et 40 centimètres, câble d'épaisseur 0.2 :

    P2183222.jpg

    Du coup j'ai plusieurs questions... Car j'ai entendu parlé de résistance de polarisation, de masse commune et plein d'autres choses dont je ne sais plus quoi penser. Dans l'ordre :

    1/
    Ce forum :
    http://www.68hc08.net/modules/newbb/...d=1262&forum=4

    Ainsi que le chapitre "Termination Options" du document présenté précédemment parlent de résistance de polarisation, "anti-biasing". J'ai essayé (plusieurs valeurs), mais ça n'a rien changé.

    2/ J'ai lu un article (très intéressant) sur les masses communes que j'avoue avoir parcouru en diagonal, et qui revient sur tous les types de montage... Pour ma part, mes masses sont communes entre les deux µC. Mon montage s'apparente à ça :

    t.jpg


    3/ Dans cet article là (http://www.ti.com/lit/an/slla272b/slla272b.pdf), ils parlent d'un type de câble particulier, avec une impédance de 120 ohms.

    Donc en gros, avant que je torsade ma ligne, j'avais :

    -> Envoi de message du µC #1 vers µC #2 : OK avec écho / Envoi de message du µC #1 vers µC #2 : Rien

    Après l'avoir torsadée :

    -> Envoi de message du µC #1 vers µC #2 : OK uniquement à la première trame sans écho / Envoi de message du µC #1 vers µC #2 : écho uniquement, pour toutes les trames envoyées.


    Mes questions sont les suivantes :

    Dois-je utiliser des résistances de polarisation (pull up et pull down) ? Dois-je mettre mon bus à la masse ? Dois-je utiliser du câble particulier (impédance, torsade, ...) pour le RS 485 ?

    Merci d'avance pour ceux qui pourraient avoir des solutions.

    Greg

    -----

  2. #2
    vincent66

    Re : Problème sur bus RS 485 !!

    Hello !
    Bonne nouvelle pour toi, du câble double paire torsadés blindés idoine ne coûte quasiment rien, un balle le mètre...
    Sans encore voir les pièces jointes il me vient une question à l'esprit : ta connexion est-elle half-duplex, utilisant une paire torsadée ou full-duplex en utilisant deux..?
    Et question subsidiaire : que nommes-tu "echo", le renvoi des caractères transmis via la deuxième paire ou une réflection sur l'unique paire..?

    Il vaut mieux brancher les résistances de terminaison préconisées par le fabricant ... et ni pull-up ni pull-down...
    Et il faut relier les blindages de câbles à la masse à un seul des deux bouts du câble ...
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  3. #3
    DAUDET78

    Re : Problème sur bus RS 485 !!

    Comme c'est du half duplex, il ne faut pas que les deux émetteurs RS485 fonctionnent en même temps, il faut gérer le Output Enable
    • émetteur RS485 gauche ON + émetteur RS485 droite OFF = Trame Gauche vers Droite
    • émetteur RS485 gauche OFF + émetteur RS485 droite ON = Trame Droite vers Gauche


    Si deux émetteurs prennent simultanément la main sur la ligne, il y a un conflit hard
    J'aime pas le Grec

  4. #4
    invite266d4c50

    Re : Problème sur bus RS 485 !!

    Oui, c'est du half duplex donc je ne peux pas envoyer et recevoir en meme temps. Tout ceci est contrôlé en hardware, et j'ai vérifié le bon fonctionnement donc normalement pas de conflit.

    Pour répondre a Vincent66, ma com est en half duplex, donc deux fils (soit une paire) et rien de plus. une résistance de 120 ohms en début et fin de ligne. du coup quand je parle d'écho, c'est la réflexion sur la même paire, chose qui ne devrait pas arriver avec mes résistances de fin de ligne.
    J'aurais moi aussi une question, bien que traitée déjà plein de fois : Que signifie exactement l'impédance d'un câble ? celle ci ne dépend pas de sa longueur ? Dois je absolument prendre un câble ayant pour impédance 120 ohms ?

    Merci d'avance,

  5. A voir en vidéo sur Futura
  6. #5
    jiherve

    Re : Problème sur bus RS 485 !!

    Bonjour,
    Citation Envoyé par DAUDET78 Voir le message

    Si deux émetteurs prennent simultanément la main sur la ligne, il y a un conflit hard
    c'est le syndrome dit du Talkiewalkie où conflit de porc!
    JR
    l'électronique c'est pas du vaudou!

  7. #6
    DAUDET78

    Re : Problème sur bus RS 485 !!

    Citation Envoyé par vincent66 Voir le message
    Il vaut mieux brancher les résistances de terminaison préconisées par le fabricant
    Fonction du câble,. Généralement 120 ohm
    ... et ni pull-up ni pull-down...
    Et il faut relier les blindages de câbles à la masse à un seul des deux bouts du câble ...
    ces affirmations sont discutables et ne font pas l'unanimitées

    L'absence des polarisations et/ou la non liaison des grounds de chaque coté peut entrainer un dysfonctionnement par la tension en mode commun
    Citation Envoyé par baklou
    c'est la réflexion sur la même paire, chose qui ne devrait pas arriver avec mes résistances de fin de ligne.
    Non ...
    le récepteur (du coté de l'émetteur actif) est toujours actif. Donc il lit ce qui est envoyé
    Dernière modification par DAUDET78 ; 18/02/2015 à 10h39.
    J'aime pas le Grec

  8. #7
    invite266d4c50

    Re : Problème sur bus RS 485 !!

    Donc ça n'est pas anormal de retrouver mon écho en retour de ligne ? J'étais persuadé du contraire. Quoi qu'il en soit, l'écho m'importe peu, j'aimerai dans un premier temps stabiliser la com. Concernant l'impédance d'un câble, j'ai encore quelques interrogations. Que cela signifie t il concrètement et de manière pratique ?
    Je vais déjà dans un premier temps m'équiper de câble blindé et torsadé du commerce. Je radote peut être mais l'impédance du câble ne dépend-elle pas de sa longueur ?

  9. #8
    Jack
    Modérateur

    Re : Problème sur bus RS 485 !!

    Comme ta liaison est bidirectionnelle sur 2 fils, au repos les µContrôleurs sont à l'écoute et les tranceivers sont donc orientés en entrée. Les fils du bus sont donc "en l'air" et c'est pourquoi il faut utiliser des résistances de polarisation pour fixer les potentiels.

    Quant aux problèmes de réflexion, il ne faut pas voir ça comme un écho du signal. La conséquence de la réflexion est une détérioration du signal sur la ligne. Pour moi, tu as un écho parce que tu as validé l'entrée DE sur le tranceiver du µC#1: comme la sortie est rébouclée sur l'entrée, tout ce qu'il envoie est lu au fur et à mesure.

    Il faudrait un schéma de câblage détaillé pour mieux cerner ton problème.
    Dernière modification par Jack ; 18/02/2015 à 10h53.

  10. #9
    jiherve

    Re : Problème sur bus RS 485 !!

    Re
    Pour une 485 la polarisation doit être faite par des ponts, en point à point on inclue une résistance de terminaison qui avec la résistance équivalente des ponts fera 120 ohm.
    On connecte les blindages aux deux bouts.
    Enfin c'est du moins la règle en avionique, seul activité vraiment sérieuse en électronique.
    JR
    l'électronique c'est pas du vaudou!

  11. #10
    DAUDET78

    Re : Problème sur bus RS 485 !!

    Citation Envoyé par baklou Voir le message
    Concernant l'impédance d'un câble, j'ai encore quelques interrogations. Que cela signifie t il concrètement et de manière pratique ?
    C'est un peu compliqué à expliquer et c'est pas important de savoir. Tu dois trouver des infos sur le WEB
    http://www.polytech2go.fr/topdigicom...digcomm01f.pdf
    http://fr.wikipedia.org/wiki/Ligne_de_transmission
    http://herve.hollard.perso.sfr.fr/lignes.htm
    Je vais déjà dans un premier temps m'équiper de câble blindé et torsadé du commerce. Je radote peut être mais l'impédance du câble ne dépend-elle pas de sa longueur ?
    Non, c'est indépendant de la longueur. C'est la résistance ohmique du câble qui change (et qui n'a rien à voir avec son impédance caractéristique)

    - Tu mets 120 ohm à chaque extrémité du câble
    - Tu mets le blindage au ground de chaque coté
    - Tu mets , de chaque coté, des pullUp et PullDown de 4,7K
    J'aime pas le Grec

  12. #11
    invite266d4c50

    Re : Problème sur bus RS 485 !!

    Je comprends mieux l'histoire de l'écho. En effet, quand je transmets je mets DE et RE à 1, j'envoie ma trame j'attends 1 ms et la je met les entrées RE et DE à 0. D'après toi c'est dû à cela ?
    Voici un schéma rapide :

    Nom : Sans titre.jpg
Affichages : 1169
Taille : 65,6 Ko

    Je vais essayer ce que tu me dis DAUDET78, dès que je me serai muni de câble correct, comme celui ci par expl :

    http://fr.farnell.com/belden/9842/ca...R-GEN-LISTINGS.

    P.S : Les pull up a 4K7 sont pour une alim des transceivers a 5V ? car les miens sont alimentés en 3V3

  13. #12
    Jack
    Modérateur

  14. #13
    Jack
    Modérateur

    Re : Problème sur bus RS 485 !!

    Citation Envoyé par baklou Voir le message
    Je comprends mieux l'histoire de l'écho. En effet, quand je transmets je mets DE et RE à 1, j'envoie ma trame j'attends 1 ms et la je met les entrées RE et DE à 0. D'après toi c'est dû à cela ?
    Le fait de piloter RE et DE avec le même état devrait éviter de recevoir ce que tu envoies. Du coup, je ne coomprends plus trop l'origine de l'écho.
    Les pull up a 4K7 sont pour une alim des transceivers a 5V ? car les miens sont alimentés en 3V3
    Connecte les résistances de polarisation au 3V3 et au 0V dans ce cas

  15. #14
    invite266d4c50

    Re : Problème sur bus RS 485 !!

    Je pense que c'est un écho dû au fait que mon câble n'ai pas une impédance de 120 ohms, ce qui a pour résultat de ne pas absorber toute l'énergie en fin de ligne. Enfin si j'ai bien compris...Je vais dans un premier temps changer pour un câble prévu pour ça, je pense que ça joue pour beaucoup.

  16. #15
    Jack
    Modérateur

    Re : Problème sur bus RS 485 !!

    Mais non, la réflexion ne provoque pas un echo au sens où tu l'entends. Regarde la figure 2 du lien suivant pour visualiser les conséquences d'une ligne non adaptée:
    http://www.maximintegrated.com/en/ap...dex.mvp/id/763

  17. #16
    invite266d4c50

    Re : Problème sur bus RS 485 !!

    Je lis attentivement ta petite note. En attendant, j'ai monté un câble blindé torsadé d'impédance 100 ohm, et cela ne change absolument rien. Je pense prendre une board toute faite genre ça :

    http://www.robotshop.com/en/sfe-uart...converter.html

    Et je pourrai du coup me concentrer uniquement sur la liaison filaire.

  18. #17
    Jack
    Modérateur

    Re : Problème sur bus RS 485 !!

    La carte toute faite ne va pas changer grand chose à mon avis car il n'y a qu'un simple tranceiver sur cette carte, à un condo et une résistance près.
    Du coup, ça me fait penser à une chozse: tu as bien découplé l'alim des tes tranceivers avec une capa?

    Si tu possèdes une breadboard, fais des essais sans les µC en positionnant les entrées à l'aide de fils et de résistances de tirage et mesure les tensions de sortie avec un multimètre pour voir si tout se passe comme prévu selon les différentes configurations des entrées.

  19. #18
    invite266d4c50

    Re : Problème sur bus RS 485 !!

    Bonjour,

    Je suis assez d'accord avec toi Jack, mais dans ces moments tu en viens vite à douter de tout. Pour revenir à mon bus, j'ai repris mes travaux ce matin et maintenant mon bus se comporte différemment. Je n'ai plus d'écho et mes trames passent dans les deux sens (est-ce dû au changement de mon câble), mais elles ne passent qu'une seule fois. Je m'explique : Je peux envoyer une trame du µC #1 au µC #2 qui passera sans écho et qui sera réceptionnée dans son intégralité, mais une seule fois. Et idem dans l'autre sens.
    Il faut savoir qu'en software, j'ai une tempo de 5ms entre l'envoi de la trame et le retour en mode réception (RE et DE à 0). Si je baisse la tempo à 4 ms, miracle, les trames passent toutes dans les deux sens autant de fois que voulu...Sauf que (hé oui, il y a toujours un mais..) elles sont tronquées. A 4 ms, je me retrouve avec mon 19e octet qui foire, et qui affiche une fois sur 5 la bonne valeur. Evidemment, plus je baisse la tempo et plus ma trame est tronquée en réception (l' émetteur se remet en mode réception avant d'avoir fini d'envoyer la trame). Par contre, si je la mets à 5 ms, j'ai une trame complète mais je ne peux en envoyer qu'une.
    On dirait qu'il y a une sorte de "prise de ligne" à ne pas perdre...Comme si l'état de la ligne influe sur la remise en mode réception : Si l'émetteur se remet en réception pendant que la ligne transmet, c'est ok, une fois la ligne libre, on n'arrive plus à "reprendre" la ligne... Ca fait énormément penser à cette histoire de pull up / pull down afin de ne pas perdre la ligne, mais j'ai mis 4K7 en pull up et en pull down et rien ne change.
    Je vais analyser les niveaux à l'oscillo bien que j'ai un oscilloscope qui laisse un peu à désirer.

    A très vite


    EDIT : Le fait d'avoir changé de câble et d'y intégrer un blindage a du coup relié les deux masses des deux transceivers, chose qui a mon avis a aidé. Cf cet article :

    http://xavier.fenard.free.fr/RS485.htm

  20. #19
    Jack
    Modérateur

    Re : Problème sur bus RS 485 !!

    Le fait d'avoir changé de câble et d'y intégrer un blindage a du coup relié les deux masses des deux transceivers, chose qui a mon avis a aidé
    Il n'est pas recommandé d'utiliser le blindage du câble pour éliminer les problèmes de mode commun. Le blindage ne doit être relié que d'un seul côté et il faut utiliser un conducteur spécifique pour le commun.

  21. #20
    jiherve

    Re : Problème sur bus RS 485 !!

    Bonjour,
    Cela sent le soft pourri.
    la gestion d'un UART se fait par interruption pas par du timing!
    Le blindage peut parfaitement être utilisé pour supprimer le mode commun, c'est même la solution générale.
    JR
    l'électronique c'est pas du vaudou!

  22. #21
    Jack
    Modérateur

    Re : Problème sur bus RS 485 !!

    Citation Envoyé par jiherve Voir le message
    Le blindage peut parfaitement être utilisé pour supprimer le mode commun, c'est même la solution générale.
    JR
    Mais ce n'est pas la meilleure:
    page 44/137 de ce document

    ou dans celui-ci, notamment ce paragraphe
    The second method of wiring your RS485 network involves a 3 conductor for the ground line. There are basically three cable methods used to accomplish this. The first option of the 3 conductor methodology is a two pair cable using one pair for ground and the other pair for the RS485 data communications. The second is a one pair cable with and extra wire used specifically for a ground wire. The third is a one pair cable with a shield, utilizing the shield as a return. The advantage to using this second method (3 conductor cabling) is you would reduce noise induced through ground potential differences. This is the preferred option in areas where there is a potential for high electrical noise or if cabling lacks the cleanliness of conduit or wire trays. This does not mean that if you have wire trays or conduit to run your wires that your network is not susceptible to noise. The drawback of the three-conductor option is elevated cable pricing and is slightly more difficult to install. Care must also be taking using this option not to create a ground loop.

  23. #22
    Jack
    Modérateur

    Re : Problème sur bus RS 485 !!

    Citation Envoyé par jiherve Voir le message
    Bonjour,
    Cela sent le soft pourri.
    la gestion d'un UART se fait par interruption pas par du timing!
    JR
    En effet, une trame de 20 octets transmis à 19200 bits/s met environ 10 ms pour être transmise. Les 5 ms sont donc "un peu" justes.
    Il faudrait détecter l'envoi du dernier caractère avant de se mettre en lecture. La lecture de l'état du registre de transmission n'est pas forcément la meilleure solution, surtout avec les UART possédant un buffer conséquent. L'idéal est de pouvoir consulter l'état du registre à décalage qui, lorsque'il sera vide, indiquera qu'il n'y a pluas aucun caractère à envoyer. Il faut voir si ce flag peut générer une interruption sur le µC.

  24. #23
    Jack
    Modérateur

    Re : Problème sur bus RS 485 !!

    Je viens de jeter un oeil sur le pic. L'UART a bien une FIFO de 8 octets. Et il a le flag qui va bien également:
    bit 15-14 UTXISEL<1:0>: TX Interrupt Mode Selection bits
    11 = Reserved, do not use
    10 = Interrupt is generated and asserted while the transmit buffer is empty
    01 = Interrupt is generated and asserted when all characters have been transmitted
    00 = Interrupt is generated and asserted while the transmit buffer contains at least one empty space

  25. #24
    invite266d4c50

    Re : Problème sur bus RS 485 !!

    Ok, je vais coder de cette façon là, c'est vrai que c'est beaucoup plus propre :/

    Dans la foulée, j'ai repris l'application dont j'avais initialement besoin, c'est à dire piloter une caméra en RS 485. Chose que je n'arrivais pas à faire initialement, voilà pourquoi j'avais pris 2 StarterKit de chez Microchip avec les PICs qui m'intéressaient. Du coup, de retour avec mon câble blindé, torsadé, et le blindage relié aux masses des drivers 485, j'ai repris le code et changé la tempo à 15 ms, et j'arrive à émettre tout en recevant les ACKs de la caméra. Donc en effet, il y avait un problème de code C. Mais partir avec du câblage merdique ne m'a pas aidé et m'a amené à tout revérifier.

    Je vais recoder ça proprement en utilisant le flag adapté, et je vais réessayer ça à nouveau sur les deux platines µC. Je reviens donner dès nouvelles au plus vite !

    Merci à tous pour votre aide !!

  26. #25
    jiherve

    Re : Problème sur bus RS 485 !!

    Re
    En aéronautique, seul domaine que je connaisse bien, toutes les liaisons différentielles sont faites par des PTB avec blindages connectés au deux bouts sans queue de cochon(donc connectique spéciale), masse meca et électrique reliées, il aura fallu des dizaines d'années de discussions et d'essais pour en convenir.
    Mais il est vrai que dans cet environnement l’équipotentialité est assurée par la tôle de l'avion, pour ceux en composite il a fallu ajouter des barres métalliques assurant celle ci, le carbone n’étant pas assez conducteur.
    Bon ceci dit il y a du mail coté soft
    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. Problème de majoration - Discrétisation d'un problème de Dirichlet homogène pénalisé
    Par invite2ec0a62b dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 30/01/2015, 08h13
  2. [Divers] Problème d'électricité sans problème de fusible ? [Résolu]
    Par invite18f3118f dans le forum Dépannage
    Réponses: 2
    Dernier message: 14/03/2014, 19h16
  3. Réponses: 2
    Dernier message: 04/12/2012, 14h08
  4. probleme avec une asympote et une fonction exponentielle(Probleme d'enoncé?)
    Par invite3c19aac3 dans le forum Mathématiques du collège et du lycée
    Réponses: 15
    Dernier message: 04/12/2008, 17h26
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...