3. La liaison RS-232
On a vu au §1 que le RTC était un moyen pratique pour transmettre des données d'une machine à une autre, surtout si celles-ci ne sont pas à priori reliées par un réseau. Cependant, cette connexion étant analogique, il faut utiliser un équipement spécial - un modem, §2 - pour le relier au monde numérique de l'ordinateur. La question qui reste en suspend est : comment va-t-on relier l'ordinateur au modem ? Plusieurs choix technologiques peuvent exister. On va donc dans un premier temps passer en revue différents moyens de communications informatiques pour voir grossièrement leur caractéristiques, et en déduire que la RS-232 est bien adaptée à la transmission des données entre le PC et le modem. Les chiffres donnés ici seront ramenés, en général, à la puissance de 10 la plus proche. On en profitera pour comparer ces moyens de communication, avec d'autres, d'origine moins informatique. Pour rendre à César ce qui est à César, ces idées de comparaison viennent en majeure parties d'élèves de MIA09 des années précédentes.
Nom de la connexion | Type de liaison | Type de connexion | Largeur | Débit typique | Portée typique | Fréquence |
R.T.C. | Full Duplex | Commuté (Point à Point virtuel) | Variable selon protocole | 33.6 kb/s (64kb/s max.) | Terre - 10.000 km | Standard |
R.N.I.S. | Full Duplex | Commuté (Point à Point virtuel) | Série | 1 ou 2 x 64kb/s | Terre - 10.000 km | Commun |
RS-232 (« série ») | Full Duplex | Point à Point | Série | 115.2 kb/s max. (PC) | ~10m (100m max.) | Standard |
Centronics (« parallèle ») | Simplex | Point à Point | Parallèle 8 bits | 1 Mb/s | 10m max. | Standard |
EPP (« parallèle bidirectionnel ») | Half Duplex | Point à Point | Parallèle 8 bits | 10 Mb/s | 10m max. | Presque standard |
IDE | Half Duplex | Bus | Parallèle 16 bits | 100 Mb/s | 1m | Standard |
SCSI (I) | Half Duplex | Bus | Parallèle 8 bits | 100 Mb/s | 10m | Commun |
ISA | Half Duplex | Bus | Parallèle 16 bits | 100 Mb/s | 0.1 m | Standard |
PCI | Half Duplex | Bus | Parallèle 32 bits | 1 Gb/s | 0.1m | Standard |
Ethernet | Half Duplex | Bus | Série | 10 Mb/s (voire 100) | 100m max. (sans répéteur) | Presque standard |
Token Ring | Half Duplex | Anneau | Série | 10 Mb/s (4 ou 16) | ? 10m | Commun |
USB | Half Duplex | Bus | Série | 10 Mb/s | 5 m | Presque standard |
Infrarouge | Half Duplex | Bus | Série | 1 Mb/s | 1 m | Presque standard |
Parole | Half Duplex | Bus | Série | 100 b/s (phonèmes) | 10 m | Standard |
C.B. | Half Duplex | Bus | Série | 10 kb/s | 10 km | Commun |
L'important pour la liaison entre le PC et le modem est :
Le premier candidat à satisfaire ces exigences - et le plus répandu - est donc la RS-232. C'est donc cette liaison qui est utilisée en priorité pour transmettre des données entre le PC et le modem. Pour les connexions distantes plus rapides (comme le RNIS), la RS-232 ne convient plus et d'autres solutions de connexions sont mises en uvre : parmi les plus répandues, citons le bus ISA (carte interne), Ethernet ou même, récemment, l'USB ou des versions plus rapides de la liaison RS-232 (jusqu'à 1,5 Mb/s).
La RS-232 est une liaison série asynchrone dissymétrique full duplex normalisée avec une trame d'un caractère de longueur. Selon la norme, elle comporte 22 fils - 23 dans sa déclinaison RS-232C. Ces fils sont placés de manière standard sur une broche DB25 (). Or, lorsque IBM créa son PC en 1981, Intel lui fournissait un circuit (le 8250) capable de ne gérer directement que 9 de ces fils. Qu'à cela ne tienne : les PC n'implémentent en standard qu'une sous-version de la norme complète, limitée à ces 9 fils. Pour des soucis de simplicité, d'économie et d'encombrement, ces 9 fils furent positionnés non plus sur une DB25, mais sur une DB9 (). Certains placèrent même ces lignes sur une RJ45 ou une RJ46. Cette liaison met en correspondance point à point un « maître » et un « esclave » par rapport à la liaison. Ils sont respectivement nommés DCE (Data Control Equipment) et DTE (Data Terminal Equipment) dans la terminologie standard - et ETCD (Équipement Terminal de Contrôle de Données) et ETTD (Équipement Terminal de Transmission de Données) dans la terminologie française (peu utilisée, même en France ). Dans le cas qui nous préoccupe le « maître » de la liaison est naturellement le PC et l'« esclave » le modem. Les 9 lignes utilisées sont les suivantes:
Figure 8 : les 9 lignes de la RS-232
Signification des signaux
(notez que les sigles sont données interprétés du côté PC) :Lignes de données
. Elles font passer des caractères. Pour la trame d'un caractère, cf. §3.4.Lignes de contrôle de flux
. Attention ! Même si ces lignes comportent toutes un 'S' qui signifie « Send », le contrôle de flux reste toujours (surtout dans une communication asynchrone) une logique de réception, c'est à dire que c'est la faculté de réception du partenaire qui indique si oui ou non un équipement va émettre.Lignes d'intérêt
. Ces lignes indiquent au correspondant que l'équipement qui les met à '1' s'intéresse à la liaison RS-232. Nota : il existe des implémentations du contrôle de flux basés non pas sur RTS/CTS mais sur DTR/DSR, puisque leur signification littérale se rapproche plus d'une signification de contrôle de flux que celle de RTS/CTS. Le fait de faire passer temporairement l'une de ces lignes à '0' constitue un break.Autres lignes d'état du modem :
Du temps pas si ancien des mainframes, il n'était pas rare de voir un bâtiment complet câblé autour d'un seul ordinateur. Les terminaux (dont le très fameux VT-100) étaient très souvent reliés à leur serveur de terminal au travers de liaisons RS-232. La longueur de câble RS-232 tirée était alors considérable, et son prix souvent non négligeable. Or, toutes choses égales par ailleurs, le prix de revient d'un câble est presque proportionnel au nombre de fils qu'il contient. On comprend dès lors que l'on ait rapidement cherché à se passer des fils pouvant être remplacés sans trop de dommages. Déjà, le passage de 23 à 9 lignes constitue un progrès considérable, mais il n'est jamais venu à l'idée de personne de câbler un bâtiment entier en RS-232C complète ! La méthode pour éliminer les fils superflus est fondamentalement constante : on surcharge les fils de données, RD et TD. Si le signal dont on veut se passer est émis par le PC, on surcharge TD, sinon c'est la ligne RD qui est surchargée. Comme ces lignes sont faites pour faire passer des caractères, on pallie la plupart du temps à l'absence des signaux enlevés par l'émission d'un ou plusieurs caractères. Enfin, notons qu'on ne peut généralement pas, contrairement à ce qui est réalisé si une ligne spécifique est présente, transmettre en permanence l'information contenue par l'état de la ligne. On se contente de ne faire passer que les transitions de cet état, ce qui nécessite, de la part du récepteur, un fonctionnement à mémoire pour se souvenir de la dernière variation transmise de la ligne absente. Cette suppression a plusieurs défauts : d'abord un ou des caractères sont plus lents à transmettre que de faire passer un signal à 1 ou à 0. Ensuite, il peut y avoir des perturbations sur la ligne qui amènent une erreur sur la transmission d'un bit. Dans le cas où la ligne numérique est présente, l'erreur sera sans longue conséquence, puisque le destinataire du signal pourra, quand il le voudra, relire la ligne qui aura à nouveau sa valeur correcte (une perturbation est souvent de très courte durée). Si par contre, c'est par caractère que l'état de la ligne absente est transmise et que qu'un caractère subit une altération, l'erreur perdurera chez le récepteur du signal jusqu'à ce que l'émetteur signale une nouvelle variation de la ligne, ce qui peut durer très longtemps
On a ainsi réduit la liaison à 5 fils sans beaucoup de pertes, ou à 3 en étant obligé d'utiliser XON/XOFF. On ne peut pas passer en dessous de ces fils là sans s'éloigner trop de la norme : éliminer un fil de donnée revient à rendre la liaison simplex, et à empêcher le contrôle de flux. Quant à éliminer la masse, c'est excessivement délicat (on utilise alors la terre à sa place), et source d'un nombre impressionnant de problèmes et d'erreurs de transmission ! On préfère, lorsqu'on a grand nombre de postes à câbler en RS-232, mettre les masses en commun, ce qui fait qu'il n'y a qu'un seul fil utilisé pour tout un ensemble de terminaux.
Avec l'élimination des fils de la RS-232, on a vu l'importance qu'on les lignes RD et RD : c'est elles qui, en plus de faire passer les données de la liaison, sont capables de pallier à l'absence des autres lignes. On va donc voir la méthode de transmission des caractères sur ces lignes de données de la RS-232.
Figure 9 : La trame de caractère
La ligne de données est donc par défaut à la valeur 1. Lorsqu'un caractère arrive, il est précédé d'un bit de start (la valeur 0 est maintenue pendant la durée d'un bit). Ceci permet au récepteur de se synchroniser sur la réception du caractère qui arrive ; puisque la communication se fait de manière asynchrone, chaque trame (caractère) nécessite une re-synchronisation. Viennent ensuite les bits de données, qui sont au nombre de 5 à 8. Les bits de poids faible arrivent en premier. Ensuite, il y a une parité optionnelle. Si elle n'est pas présente (0 bits), on parle de parité None. S'il y en a une, de deux choses l'une : elle peut être soit fixe, soit variable. La parité fixe est simplissime et peu utilisée car souvent bien inutile : il s'agit d'un bit à la valeur 0 (parité Space) ou 1 (parité Mark). La parité prend tout son sens dans le cas de la parité variable. Il en existe de deux types : la parité paire (Even) ou impaire (Odd), suivant que le nombre total de bits à 1 entre la donnée et le bit de parité est assuré d'être pair ou impair. La trame se termine ensuite par un délai d'attente (bits de stop) où la ligne reprend sa valeur par défaut de 1. Cette durée peut être 1, 1,5 ou 2 fois la durée d'émission d'un bit (d'où l'expression qui parait parfois étrange de « 1,5 bits de stop » : c'est une durée que l'on divise, pas l'information élémentaire, naturellement !). En prenant toutes les tailles maximales, on voit que la transmission d'un caractère peut prendre jusqu'à 12 bits, ou , en prenant les minimales, aussi peu que 7 bits.
Quelques exemples
Dans le cadre de notre TP, les liaisons étant courtes et fiables, on optimisera la
trame pour la transmission de données binaires : 8 bits de données, pas de parité,
1 bit de stop, à 19200 b/s, ou 9600 à défaut. Transpac et le minitel utilisent un
protocole à 7 bits de données, parité paire, 1 bit de stop, et souvent à 1200 b/s. Les
télétypes (Téléscripteurs, Télex
) fonctionnent à 5 bits de de données,
parité impaire, 1,5 bits de stop et à 110 b/s.
Toutes les lignes de la RS-232 sont numériques. Elles transmettent donc des signaux électriques représentant symboliquement un '0' et un '1'. Ces signaux sont des tensions continues, dont la valeur est fixée par la norme. Cette norme est différente du côté émetteur et du côté récepteur. La raison de cette différentiation est la chute de tension pouvant avoir lieu dans un câble de RS-232. En effet, un câble est un cylindre qui peut, en première approximation et pour des débits pas trop élevés (on peut négliger l'effet de peau), être considéré comme une résistance de valeur R = r . L / S, où r note la résistivité du matériau conducteur utilisé, L sa longueur, et S sa section. La chute de tension à ses bornes DU est donc donnée par la loi d'Ohm : DU = R.I, où I note l'intensité traversant le fil. A l'heure actuelle, cette chute de tension est bien moins importante qu'auparavant, et la différence de normalisation entre émetteur et récepteur se justifie moins. Il y a plusieurs raisons à cela. D'abord, il est vrai que le conducteur utilisé dans les câbles est - très légèrement - de meilleure qualité qu'il y a quelques années, et donc de résistivité plus faible. Ensuite, la longueur des câbles a grandement diminué : on ne câble plus un bâtiment entier en RS-232. Cette liaison sert surtout pour des périphériques à proximité immédiate de l'ordinateur (modem, scanner à main, caméra noir et blanc, lecteur de codes barres, etc.). Par contre, la section moyenne des câbles aurait tendance plutôt à diminuer. Mais l'endroit où le progrès le plus important a été fait, c'est dans l'intensité qui passe dans le conducteur. On est passé, pour une impédance d'entrée de porte, de quelques dizaines de kW (avec la technologie TTL) à quelques dizaines de MW avec la technologie MOS, d'où une division par un facteur de l'ordre de 1000 de l'intensité présente dans les conducteurs et donc une division du même ordre de grandeur de la chute de tension dans le câble.
Figure 10 : Les tensions de la RS-232
On notera plusieurs choses : d'abord que suite à la remarque précédentes, les circuits d'interface RS-232 à l'heure actuelle émettent à +12V et -12V, car le récepteur, probablement très proche, a de bonnes chances de recevoir une tension non altérée ; il faut donc que l'émetteur reste dans la zone accessible au récepteur. De plus, ces deux tensions sont souvent présentes dans les appareils numériques, et en tous cas fournis par toutes les alimentations de PC. Notons aussi, que ce soit en émission ou en réception, un certains nombre de limites à la tension pouvant représenter un bit. Les maxima en valeur absolu se comprennent - il ne faudrait pas qu'un hurluberlu aille émettre du ±100.000V sur la ligne ! La présence d'un « no man's land » autour de 0V a deux raisons : d'abord, cette zone inaccessible évite de confondre un 0 avec un 1, et d'autre part, le fait que le 0V soit hors limite permet une détection sommaire de pannes : un câble débranché, coupé, détérioré ou un faux contact ne peut plus être mépris pour l'émission constante de l'un des deux bits. Pour terminer, remarquons qu'il y a un équipement « bien de chez » nous, le minitel, qui possède, la plupart du temps, une liaison RS-232. Elle a cependant une bien désagréable spécificité : elle émet le '0' à 0V et le '1' à 5V. Il faut donc un câble spécial, pas excessivement coûteux mais qui comporte quand même un ou deux transistors placés sur une carte cachée dans la prise DB25 du câble, pour le raccorder à vos PC.
Copyright (c) 1998 by Igx, the dreaming drummer