Multiplexeur : vitesse de sortie

Bonjour,
.
Dans le cas d'un multiplexeur à base d'arduino ou basé sur des systèmes un peu exotiques, j'aimerai avoir confirmation d'une info lue sur le ouaibe.
J'ai en effet lu qu'il est préférable d'additionner les vitesses (d'entrée) pour déterminer la vitesse de sortie (en bauds) - avec une légère marge - quand plusieurs appareils sont connectés en entrée.
Ainsi, dans l'hypothèse de deux entrées à 4800 bds et une à 38400, la sortie du multiplexeur devrait être d'au moins 48000 bds, donc 56000 dans le cas de cet exemple.
Quelqu'un peut-il infirmer ou confirmer cette info ?
Et si elle est avérée, pourquoi dans ce cas ne pas mettre la sortie au maxi à 115200 bauds ???
Risques de conso ? de lenteur ?
Enfin autre question, est-ce que - à contrario - la vitesse d'entrée de chaque port du multiplexer doit être [u]strictement égale[/u] à la vitesse d'émission de l'engin raccordé (4800, 9600 ou 38400 par exemple) ?
Merci d'avance.

L'équipage
03 déc. 2017
03 déc. 2017

Hello ! Je vais essayer de faire simple. Tout d'abord ta deuxieme question : oui, il faut que les vitesses d'entrée soient strictement égales aux vitesses d'emission des appareils. Le protocole usart est extremement simple, et il n'y a pas de "dialogue" entre maitre et esclave sur la vitesse de communication, elle est prédéfinie.
Concernant le point 1, c'est un peu plus fin que ca. Il faut savoir combien de données tu as à passer. La réponse simple,c'est de dire : j'ai en entrée un flux à 4800bps et un à 38400, du coup, si je mets 43200 minimum, je suis sur que tout peut passer. C'est vrai. Mais si par exemple le flux à 38400 n'emet que la moitié du temps, il reste la moitié de la bande passante inutilisée, donc un flux à 38400 en sortie sera suffisant aussi, il sera juste un tout petit peu plus utilisé que celui en entrée. Faut juste raisonner en taille de tuyau.
Il n'y a aucun inconvénient à utiliser un flux de 115200 en sortie, au contraire: tu te gardes de la place sur le flux de sortie pour envoyer d'autres données si tu le souhaites, et les données sont envoyées plus vite, donc l'arduino peut retourner plus vite à d'autres taches, comme acquérir des données ou calculer des machins.

03 déc. 2017

OK, merci.
J'avais en effet constaté sur la GX2200 le décalage AIS et GPS permettant de "jouer" sur la temporalité du passage des phrases et cela était d'ailleurs précisé sur la doc trouvez sur le ouaibe.
Mais pour autant, ta réponse conforte ce que je pressentais, mettre la sortie à 115200 bds est la solution finalement la plus pratique et la plus "confortable".

03 déc. 201703 déc. 2017

Atcfrog a répondu !

03 déc. 2017

A condition que l'équipement en sortie soit capable de dialoguer à une autre vitesse que 4800

03 déc. 2017

J'ai naïvement pensé qu'il s'agissait d'un PC ou d'une tablette, mais effectivement, si l'équipement final n'est pas capable d'aller plus vite, on retombe sur un autre probleme, auquel il n'y a pas vraiment de solution, sauf à perdre des données . On peut configurer l'arduino pour "selectionner" les trames NMEA à conserver, et celles à jeter, si besoin, mais ca demande du temps de calcul. Ca plus la gestion de plusieurs ports série qui n'avancent pas, il va etre débordé, le pauvre...

03 déc. 2017

Avec des fréquences de calcul très élevées et de la mémoire à revendre le problème ne se pose peut être plus mais dans ces transmissions il ne faut pas oublier qu'on remplit et vide en permanence un tampon intermédiaire et que s'il n'y a pas de protocole particulier d'attente ou de synchronisation prévu on peut perdre des caractères selon les débits.
Avec des fréquences très élevées il faut aussi que les lignes et connexions soient à la hauteur. Il vaut mieux un débit moyen mais fiable qu'un débit élevé mais aléatoire.

03 déc. 2017

Le problème se pose toujours, car à moins d'une programmation très complexe, l'arduino n'est pas multitache : le temps qu'il passe à envoyer des données, il ne le passe pas à écouter ou à compter (il y a bien un buffer d'entrée, mais de combien ?), et du coup, une transmission lente fout en l'air tout le timing de l'appli. D'où ma prédilection pour 115200, qui est quand meme pas une vitesse bien élevée (surtout sur un arduino à 20MIPS), surtout en 5V, voire en 12V, avec un simple cable torsadé, on a déjà une super fiabilité dans la communication.

03 déc. 2017

Pour préciser certains points, la sortie se fera effectivement sur PCs (et sur tablette en tant que de besoin).
J'ai bidouillé comme beaucoup un multiplexer à base d'arduino sortie filaire avec BT et/ou WiFi mais en //, j'ai aussi acheté quelques gadgets supplémentaires à petits prix (style Yakker et autres wifibridge sino-exotiques).
ATCFrog avait donc parfaitement conforté ma réflexion.

03 déc. 2017

pour autant la plupart des intruments : pilotes, vhf (retour pour le gps éventuellement ) sont en 4800, donc faut bien réduire la parlotte des équipements entrant en établissant des filtres sur ce qui n'est pas indispensable et "contraindre" l'ais et ne prendre qu'une info sur 4 par exemple pour avoir une sortie adaptée à ces équipements qui vont saturer instantanément.

03 déc. 201703 déc. 2017

Le buffer fait 64 octets par defaut, c'est réglable dans hardwareserial.h
J'avais fait des essais en l'augmentant pour mon multiplexeur arduino croyant que c'était ça la cause de la perte de certains morceaux de phrase, mais pas trouvé de changement.

En fait il faut bien programmer la lecture du port série, notamment mettre un délai avant la lecture du caractère suivant si la boucle principale est courte.

Arduino serial buffer sur Google et tu auras plein d'infos

Phare du monde

  • 4.5 (39)

2022