Communication RS485

Communication RS485

Messagede lafleche » Mar 1 Fév 2011 14:43

Comme déjà mentionné dans un sujet du forums "Questions Résponses" que j'ai allègrement pollué, je me suis amusé à codé le protocole Modbus permettant à 250 STs (!) de communiquer moyennant un convertisseur RS232/RS485 (du coup moyennant 250 convertisseurs si on veut vraiment connecter 250 STs :) ).
Depuis je regarde régulièrement le site de mon fournisseur de cartes électroniques préféré, et j'ai vu ce week end une nouvelle carte pilotable par RS485, du coup je l'ai achetée, mais point encore reçu.
Il s'agit, si on ne se fie qu'à la description, d'un afficheur LCD pilotable entre autres par RS485, le MuIn LCD.
Je me suis lancé aussi car par défaut la vitesse de transmission est de 19200 bauds (d'autres cartes proposant par défaut des vitesses supérieures à celles du st seraient embettantes à gérer, car il faut alors se connecter à la vitesse par défaut (du genre 115200 bauds par exemple) pour lui demander de se caler sur une vitesse inférieure, du coup ingérable pour un ST).
Mais ce qui est top, c'est que cette petite carte ne fait pas "que" ça. Il s'agit en fait d'une vraie petite carte intelligente capable entre autres de gérer un afficheur lcd, mais elle propose aussi :
- un buzzer (moui bon ...)
- 6 ports entrée/sortie (ça c'est mieux déjà !)
- 5 entrées convertisseurs Analogique-Numérique (pour brancher des capteurs de tous genres)

Le seul problème de cette petite carte magique, est qu'elle ne gère pas le protocole Modbus mais un protocole apparemment "maison".
La bonne nouvelle, c'est que comparé à Modbus ce protocole est fastoche, les messages s'envoient sous la forme suivante :
'@', ADDR_TO, ADDR_FROM, N_BYTES, BYTE1, BYTE2 ... BYTEn, CRC16H, CRC16L, '#'
par rapport au modbus où on a quelque chose du style :
':', ADDR_TO, ADDR_DATA, BYTE1, BYTE2,...BYTEn, LRC, CRLF

Donc c'est pas bien différent quoi ...
Dans le cas de l'envoi de messages sur l'afficheur, pas de problème il s'agit juste d'envoyer la chaîne de caractères qui va bien, mais dans le cas où on branche un capteur à la carte (où quoi que ce soit d'autre, la limite votre imagination ...), il faut décoder la trame pour recevoir la valeur demandée.
J'ai adapté très facilement mon programme Modbus client pour décoder les trames en question, mais n'ayant pas encore reçu la bête, j'ai fini par faire un simulateur de MuIn LCD pour préparer le terrain.

La copie d'écran montre le résultat de la réception par le port série de la trame suivante :
@ &H0E &H01 &H14 T e s t s u r 2 0 c a r a c t e r 0&h0 0&h0 #
ou traduit : Dispositif numéro 1 appelle dispositif 14 (LCD) pour envoi des 20 caracteres (14 hexa) suivants "Test sur 20 caracter", fin de message
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar de l’utilisateur
lafleche
 
Messages: 136
Inscription: Lun 25 Jan 2010 14:41
Localisation: Lille

Re: Communication RS485

Messagede lafleche » Mar 1 Fév 2011 14:52

ah oui, j'oubliais l'intérêt majeur de se conformer à ces spécifications : si ça fonctionne,, ça fonctionnera pour toutes les cartes de la société en question (Droids) qui comporte entre autres dans son catalogue une Carte DSP pilotable par RS485 ... :mrgreen:
Avatar de l’utilisateur
lafleche
 
Messages: 136
Inscription: Lun 25 Jan 2010 14:41
Localisation: Lille

Re: Communication RS485

Messagede ManuM » Ven 4 Fév 2011 20:36

Super !!!, JB va etre content , lui qui cherche comment récuperer des signaux de pression et de vitesse pour ses fusées :D

merci Mr Lafleche pour tes recherches sur le RS 485 :D , je vais jeter un oeil chez DROIDS !!
ManuM
 
Messages: 69
Inscription: Lun 15 Juin 2009 12:57

Re: Communication RS485

Messagede lafleche » Sam 5 Fév 2011 09:45

Oui j'ai eu JB par mail, et on a déjà causé de tout ça, je pense que ce style de carte peut faciliter pas mal de choses ...
N'hésite pas à passer chez Droids, ils sont super cools en plus, j'ai posé une question sur leur forum hier et dans la journée j'avais une réponse, ils sont très accessibles.
J'ai reçu la bête hier et j'avais des doutes sur la terminologie utilisée pour les deux fils du RS485, A et B, alors que sur mes adaptateurs j'avais TRX- et TRX+.
Ils m'ont répondu , je viens de tester et ... ça marche du tonnerre !
En fait j'ai galéré en voulant essayer la carte sur Linux et mon Mac, et c'était la plaie pour faire reconnaître le bazard sur le port USB.
Sur ST trop fastoche, branchage des deux fils en RS485, un coup de GFA et l'instruction "OUT" pour écrire mes premiers messages, pas plus compliqué que ça.
Ensuite j'ai activé le Mode RS485 de l'afficheur pour faire du multi-points, car de base il est configuré en mode point par point direct.
En mode "de base" (style RS232 ou USB), tout ce que tu envoies apparait directement à l'écran tel quel, en mode multi-points on utilise le système d'adressage décrit ci-dessus.
Mais c'est pas plus compliqué que ça, l'appareil a l'adresse 14 et ne répond qu'à celle-ci.
Prochaine étape dès que j'ai un peu de temps, branchage de plusieurs machines en RS485 + la carte et chacun envoyant ses ordres sans parasiter l'autre. Normalement aucun problème puisque j'ai déjà préparé le code.
Ensuite je testerai les entrées analogiques en branchant un capteur dessus dès que j'en aurai un sous la main (peut être une photo resistance, ou , remarque, un bête potentiometre peut suffire pour faire le test pour le moment)
Avatar de l’utilisateur
lafleche
 
Messages: 136
Inscription: Lun 25 Jan 2010 14:41
Localisation: Lille

Re: Communication RS485

Messagede ManuM » Sam 5 Fév 2011 17:33

Cool!!! :D ,toujours pret pour l'action ce bon vieux ST !!

Je me suis remis a ma télécommande IR (mais cette fois ci j'utilise le port cartouche)

pour piloter ma TNT sur ST (elle était pilotée par le port //)

j'étais limité par les contacts accessibles en façade (M/A,P+,P-)

pour le moment ça encore besoin de réglages (modulation porteuse , puissance diode de sortie IR)

Si tout va bien :) je testerai le bus differentiel du RS485 par le port cartouche pour piloter du DMX :D

( j'ai trouvé une interface RS232 19600 DMX mais aucune activité avec mes PC :evil: alors pour transposer vers

mon ST sans voir aucune trame :cry: )
ManuM
 
Messages: 69
Inscription: Lun 15 Juin 2009 12:57

Re: Communication RS485

Messagede lafleche » Dim 6 Fév 2011 07:50

Ouah tu passes à la vitesse supérieure en t'attaquant au port cartouche ...
Du RS485 par ce biais, j'imagine que tu comptes passer par une puce du style MAXxxx pour convertir le TTL en RS485 ?
J'aimerais avoir suffisamment de temps pour continuer mon idée de plateforme robotique à base de st avec communication entre les modules par RS485.
J'ai un vieux STF dédié à ça dont j'ai dessoudé le connecteur cartouche, j'aimerais brancher à la place un support de ci pour mettre une eeprom avec un prog qui shunte le gem.
En fait j'ai fait le test de mettre le st sur accus sans alim 12V (qui a priori ne sert que pour le lecteur de disquettes et une broche du signal péritel), sans lecteur de disquettes, et ça boote bien sur le bureau, mais bien sûr celui ci reste vierge.
Alors un TOS qui boote sur afficheur LCD ? j'avoue que ça me ferai marrer (on s'amuse comme on peut) ...
Bien joué en tous cas pour des bidouilles, tu dois avoir un niveau en "hard" qui tient la route :shock:
Ton adaptateur tu l'as essayé sur ST ?
parce que vu mes aventures je suis sûr que tu aurais plus de facilité à le faire marcher sur st ...
Avatar de l’utilisateur
lafleche
 
Messages: 136
Inscription: Lun 25 Jan 2010 14:41
Localisation: Lille

Re: Communication RS485

Messagede ManuM » Dim 6 Fév 2011 14:23

Je n'ai pas un niveau très élevé mais je suis curieux :) (remarque je n'avais pas pensé a mettre le ST sur accus mais mon ZX81 lui c'est fait :D )

il y a 15 ans j'avais plein de projets pour le ST mais pas "la capacité" de les faire en programmation (ça fait que 2 ans que je code en GFA :oops: !!)

mais maintenant c'est le temps libre qui fait défaut , alors je suis :D que des projets soient réalisés , ça me boost pour continuer :D

Il y a encore des accessoires à greffer sur le ST :lol:
ManuM
 
Messages: 69
Inscription: Lun 15 Juin 2009 12:57

Re: Communication RS485

Messagede lafleche » Dim 6 Fév 2011 19:03

Voila j'ai bien joué avec mon nouveau jouet, le module LCD fonctionne à merveille.
J'ai signalé à Droids quelques bugs que j'ai constaté, le module ne répond pas en utilisant le protocole, mais en renvoyant direct les données.
De plus, en mode USB les 5 entrées analogiques renvoient bien 10 octets correspondant à l'état de chaque octet, en mode RS485 je reçois 16 octets tous identiques et correspondant visiblement à l'état d'une seule entrée.
Je les excuse volontiers, c'est une boite très jeune (2010 je crois) avec de très bonnes idées, et en général ils sont capables de mettre à jour le firmware sur simple remarque d'un utilisateur :lol: (j'ai vu le cas dans l'histo de leur forum).
En tous cas les admins m'ont même dit qu'ils étaient prêts à m'aider si je leur expliquais mon projet (tu parles d'un projet).
J'essaye de faire quelques photos à l'occase pour vous montrer la bêêête en action (je ne parle pas de moi !)
Je vais peut être peter un cable à l'occase et brancher un joystick dessus aussi pour déconner ... (eh ... et si je prenais un joystick PC analogique ?)
Avatar de l’utilisateur
lafleche
 
Messages: 136
Inscription: Lun 25 Jan 2010 14:41
Localisation: Lille

Re: Communication RS485

Messagede ManuM » Dim 6 Fév 2011 22:44

la carte est bien bi-directionnelle? essai le retour de force sur le Joystick :D

(et dire que je voulais faire la meme chose avec une carte 16 bits I/O sur port cartouche :lol: !!!)

Vas y !!!! n'hésite pas :D
ManuM
 
Messages: 69
Inscription: Lun 15 Juin 2009 12:57

Re: Communication RS485

Messagede lafleche » Lun 7 Fév 2011 09:51

J'ai pas de retour de force, mais par contre j'ai des moteurs à masse décentrée récupérés sur des vieux gsm !
Effet Dualshock façon playstation ;)
Avatar de l’utilisateur
lafleche
 
Messages: 136
Inscription: Lun 25 Jan 2010 14:41
Localisation: Lille

Suivante

Retourner vers Sources divers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron