TP liaison serie RS

25
0 Objectif : Le but de cette manipulation est de réaliser une connexion entre deux ordinateurs en utilisant une surface série sous Delphi. Recherches bibliographiques : I. La liaison serie 1. Présentation Communiquer, c'est échanger des informations. Tout représentant du règne animal communique avec ses congénères. Il arrive même à certains végétaux de communiquer. Les animaux échangent un nombre relativement réduit d'informations. Ils ont particulièrement développé un des cinq sens pour atteindre des performances qui nous laissent interrogatifs. Un papillon de nuit utilise la communication olfactive, il est capable de percevoir sa femelle à plus d'un kilomètre. Les manchots se reconnaissent à l'oreille. La luciole communique par un code visuel. À chaque fois, on peut mettre en évidence trois parties dans l'échange : L'information elle-même Son support Le code employé pour la transmettre Exemple : Le manchot arrivant de sa pêche semble dire "je suis de retour", le poussin "je suis ici". C'est une information de reconnaissance. Le support est le son Le code est constitué par des sons de fréquences particulières. Pour augmenter les possibilités de codage, le manchot émet deux sons 0

Transcript of TP liaison serie RS

Page 1: TP liaison serie RS

0

Objectif   : Le but de cette manipulation est de réaliser une connexion entre deux ordinateurs en utilisant une surface série sous Delphi.

Recherches bibliographiques   : I. La liaison serie1.Présentation

Communiquer, c'est échanger des informations. Tout représentant du règne animalcommunique avec ses congénères. Il arrive même à certains végétaux de communiquer. Les animaux échangent un nombre relativement réduit d'informations. Ils ont particulièrement développé un des cinq sens pour atteindre des performances qui nous laissent interrogatifs.Un papillon de nuit utilise la communication olfactive, il est capable de percevoir sa femelle àplus d'un kilomètre. Les manchots se reconnaissent à l'oreille. La luciole communique par uncode visuel.À chaque fois, on peut mettre en évidence trois parties dans l'échange :L'information elle-mêmeSon supportLe code employé pour la transmettreExemple :Le manchot arrivant de sa pêche semble dire "je suis de retour", le poussin "je suis ici". C'estune information de reconnaissance.Le support est le sonLe code est constitué par des sons de fréquences particulières. Pour augmenter lespossibilités de codage, le manchot émet deux sons simultanément.

2.bref historiqueLa transmission de l'information s'est longtemps faite par l'intermédiaire d'un messager, celaprenait du temps et était risqué. Les applications de l'électricité ont permis la transmission del'information sur de longues distances, instantanément et de manière sûre.Le problème, au début, était de transmettre un texte sur une ligne conductrice (ou sur uneliaison Hertzienne) qui ne connaît que deux états, présence ou absence de tension. Il a falluinventer des systèmes de codage de l'information qui tiennent compte des possibilitéstechniques de l'époque.

3. Le code BaudotÉmile Baudot a inventé le téléimprimeur, que l'on appelle maintenant Telex. On peut voir cetappareil comme une machine à écrire spéciale : l'action sur une touche réalise une traductionde la lettre vers une forme électrique, selon le code Baudot. Le récepteur réalise l'opérationinverse et imprime le texte.

0

Page 2: TP liaison serie RS

Cette fois le code n'utilise que deux symboles, la présence ou l'absence de tension.Chaque caractère est codé par un ensemble de cinq symboles, c'est à dire que le codeBaudot ne permet de transmettre que 32 caractères différents. Grâce à une astuce analogue à la touche "majuscule" on pouvait transmettre les 26 lettres de l'alphabet, les chiffres et quelques signes techniques.un problème important se pose : comment faire la distinction entre deux symboles contigusidentiques ?Le temps joue un rôle important dans ce code. Étant donné que la durée de chaquesymbole, présence ou absence, est identique, la distinction se fait en lisant les symboles aurythme d'une horloge.

Autre problème important : en absence de transmission la ligne est au niveau bas. Que sepasse-t-il si le premier moment du caractère est un niveau bas, comment le distinguer duniveau bas du repos ?

4.principe de la liaison sérieLe principe de la liaison série existe depuis l'invention d'Émile Baudot, il s'agissait del'adapter aux besoins des ordinateurs.Le problème principal est de transmettre les caractères, sur de grandes distances et sur uneligne conductrice ne comprenant que deux fils. Cette ligne à été remplacée par la suite par letéléphone.Pas question, ici, d'employer la vingtaine de fils de la liaison Centronic. Le principed'E.Baudot à été conservé : les chiffres binaires du code ASCII des caractères circulent les unsderrière les autres sur la ligne bifilaire du téléphone.Deux problèmes se sont posés :- La ligne téléphonique est incapable de transporter correctement des données de typelogique, la forme rectangulaire du signal est altérée par son passage dans le téléphone. Il fautinventer une adaptation entre la ligne téléphonique et l'ordinateur : le modem.- Là encore il faut utiliser un protocole. Les bits sont transmis les un aprés les autres, en commençant par le bit de poids faible b0. Le premier bit est precedé d'un bit start (niveau 0). Aprés le dernier bit, on peut transmetre un bit de parité puis un ou deux bits stop (niveau 1).En l'abscence de transmission, le niveau de la liaison est 1 (niveau de repos).

Page 3: TP liaison serie RS

Transmission d'un octet b7b6b5b4b3b2b1b0 en série.

Chaque bit a une durée de Δ, qui fixe le débit transmission. Le nombre de changements de niveaux par seconde est appelée rapiditée de modulation (RM), et s'exprime en Bauds (du nom de Baudot, l'inventeur du code TELEX). On a :

Le récepteur détecte l'arrivée d'un octet par le changement de niveau correspondant au bit start. Il échantillonne ensuite chaque intervalle de temps Δ au rythme de son horloge.Comme les débits binaires de transmission série de ce type sont faibles (< 19600 bits/s) et que les horloges de l'émetteur et du récepteurs sont suffisament stables (horloges à quartz), il n'est pas nécessaire de les synchroniser. C'est la raison pour laquelle ce type de transmission série est qualifié d'asynchrone.Lorsque les débits sont plus importants, la dérive des horloges entrainerait des erreurs, et on doit mettre en oeuvre une transmission synchrone.

5. La liaison série asynchroneLa liaison est dite asynchrone car les caractères peuvent être présentés à des instantsquelconques sur la ligne. Bien sûr une fois la transmission d'un caractère commencée, elle sefait au rythme d'une horloge comme présenté ci-dessus.La liaison étant asynchrone il faut un moyen pour annoncer le début de la transmission d'uncaractère. Nous commençons à étudier le protocole de transmission.Le principe de la transmission de Baudot nous montre qu'il faut écrire et lire les chiffresbinaires au rythme d'une horloge. Or, ici, il n'y a pas de transmission de l'horloge de l'émetteurvers le récepteur. Le récepteur et l'émetteur possèdent chacun une horloge, elles doivent êtresynchronisées au début de la transmission d'un caractère : encore une raison de marquer le

Page 4: TP liaison serie RS

début de la transmission.

6.Architecture simplifiée des composants d'une liaison série

Le microprocesseur transmet les octets au périphérique série qui le décharge d'un certain nombre de tâches,enparticulier de la décomposition de l'octet en ses éléments, les chiffres binaires. C'est la transformation parallèle-série.Dans l'autre sens, le périphérique réalise la transformation série-parallèle.

Le périphérique traite le protocole c'est à dire qu'il se charge d'inclure le bit de start et le bitde stop ainsi que le bit de parité si nécessaire.

7.La norme RS 232 La norme RS232 (appelée aussi "CCITT V24" ou "V24") précise l’état des niveaux : de -15V à -3V pour le niveau "A" et de +3V à +15V pour le niveau "B". "A" et "B" peuvent être "0" et "1" ou bien "1" et "0" selon qu'on travaille en logique positive ou négative.

connecteur et broches :Pour la liaison RS232 le connecteur utilisé doit être DB9 ou DB25.

DB9 DB25

Page 5: TP liaison serie RS

Sur le connecteur DB9, le brochage doit être fait ainsi : 

1 DCD : Détection de porteuse Entrée

4 DTR : Terminal de données prêt. Sortie

7 RTS : Requête d'émission Sortie

2 RD : Réception de données Entrée

5 SG : Masse du signal 8 CTS : Prêt pour l'émission Entrée

3 TD : Emission de données Sortie

6 DSR : Données prêtes Entrée

9 RI : Indicateur de sonnerie Entrée

ProtocoleAu minimum, 3 fils sont nécessaires pour une liaison RS232 : SG(la masse), RD et TD. Cela suffit pour une liaison asynchrone mais peut poser problème si l'appareil connecté a besoin de signaux de contrôle (DTR ou CTS) pour fonctionner.On appelle cette liaison "asynchrone" parce qu'il n'y a pas d'horloge commune aux équipements qui communiquent entre eux. Ils peuvent émettre leurs messages (trames) n'importe quand pourvu que la ligne soit libre. Le récepteur se synchronise alors sur le début du message. L'émetteur et le récepteur doivent cependant avoir la même fréquence d'horloge. Les bits sont "lus" à la moitié de leur durée. Le protocole RS232 est nécessaire pour que deux éléments qui communiquent se "comprennent". Il faut donc respecter les critères suivants : Longueur des mots : 7 bits (ex : caractère ascii) ou 8 bits Vitesse de transmission : elle se compte en bauds (bits par seconde). On peut choisir 1200baud, 2400baud, 4800baud, 9600baud, 19200baud...

Trame RS232 vue à l'oscilloscope (durée 8ms, vitesse de transmission 9600 baud)Bit de start : au repos, la ligne est à l'état logique "1". Pour indiquer qu'un mot va être transmis, la ligne passe à "0" avant de commencer le transfert. Le récepteur peut ainsi

Page 6: TP liaison serie RS

synchroniser son horloge sur ce front. La lecture des bits suivants a lieu à la moitié de la durée des bits. Bit de stop : après la transmission, la ligne RS232 est positionnée au repos pendant 1, 2 ou 1,5 périodes d'horloge selon le nombre de bits de stop. Parité : le mot transmis peut être suivi ou non d'un bit de parité qui sert à détecter les erreurs éventuelles de transmission. 2 types de parité existent. Ni le bit de start ni le bit de stop ne sont pris en compte dans le calcul de la parité. - parité paire : le bit de parité vaut "1" si le nombre de "1" de la donnée est impair. Le nombre total de "1" sur l'ensemble {donnée + bit de parité} est alors pair.Soit la donnée "01001001" contenant trois bits "1". Trois étant un nombre impair, le bit de parité vaut "1". Le nombre total de "1" vaut donc 4, on parle de parité paire. - parité impaire : le bit de parité vaut "0" si le nombre de "1" de la donnée est pair. Le nombre total de "1" sur l'ensemble {donnée + bit de parité} est alors impair.Soit la donnée "01101111" contenant six bits "1". Six étant un nombre impair, le bit de parité vaut "0". Le nombre total de "1" vaut donc 7, on parle de parité impaire.

Longueur maximum de câble RS232

Débit (bps) Longueur (m)19200 159600 1504800 3002400 900

8.Conversion série-paralléle et paralléle serieLe principe d’une liaison série est d’envoyer les bits d’un mot les uns derrière les autres

Problème: les mots sont en général stockés d’une «manière parallèle» dans la mémoire

La solution est simple, on utilise un registre à décalage: en mode parallèle -série à l’émission

en mode série -parallèle à la réceptionCe registre est capable de décaler son information binaire dans une ou l’autre direction

Registre à décalage Emission de 10111011 (187)

Page 7: TP liaison serie RS

Réception de 01011011 (91)

On obtient par ce biais une liaison série dite synchrone

Il est nécessaire de transmettre une horloge, en plus des données, afin que les registres à décalage utilisés de chaque côté de la liaison fonctionnent à la même vitesse

Sans cette horloge, il peut y avoir une mauvaise interprétation des données reçues

9.Modes de fontionnement

Une liaison peut être utilisée selon 3 modes: Simplex

HalfDuplex

Full Duplex

Modes simplexLe mode simplex signifie qu’un bout de la liaison est uniquement émetteur et l’autre uniquement récepteur.

Page 8: TP liaison serie RS

Exemples de liaisons simplex: Télévision

Radio

mode halfduplex Le mode halfduplex permet l’émission et la réception à chaque bout de la liaison mais pas simultanément.

Un exemple de liaison halfduplex: Un talkie walkie

mode full duplex Le mode full duplex permet l’émission et la réception à chaque bout de la liaison simultanément.

10. Différence entre Bauds et Bits/secondeComme on l'a vu plus haut, le nombre de Bauds qualifie la fréquence de l'horloge detransmission.Certains procédés de codage de l'information peuvent transmettre plus d'un bit par périoded'horloge. il faut donc introduire une unité nouvelle qui qualifie le débit de la transmission.Certains puristes ne retiennent que les bits de données pour calculer le débit, ce qui fait quemême dans le cas simple présenté ci-dessus, le nombre de Bauds n'est pas égal au nombre deBits par seconde.ATTENTION:

10 bauds ne valent pas forcément 10 bits/seconde Les bauds correspondent au nombre de modulations par seconde du signal Les bits/sec correspondent au nombre de bits transmis par seconde Il peut y avoir plusieurs bits codés dans une modulation

Il y a plusieurs façon de moduler le signal pour représenter les 0 et 1

Page 9: TP liaison serie RS

Modulation d’amplitude

Modulation de fréquence

11. Le contrôle de fluxOn appelle flux, le flot de caractères allant de l'émetteur vers le récepteur. Le contrôle deflux cherche à résoudre le problème suivant :Il s'agit de transmettre un grand nombre de caractères, un texte par exemple. Il se peut quele récepteur ait du mal à traiter un si grand nombre de caractères à la vitesse imposée parl'émetteur. Le récepteur peut réclamer la suspension de la transmission.Il peut le faire de deux manières différentes :- Soit en plaçant un niveau logique adéquat sur une borne particulière du connecteur, onparle alors de contrôle matériel. Ce qui nécessite la présence d'un fil supplémentaire dans lecâble de liaison. - Soit en envoyant en caractère particulier à l'émetteur c'est le contrôle logiciel.La reprise de la transmission se fait soit en plaçant la sortie à la valeur logique de marchesoit en envoyant un autre caractère conventionnel.

12. La configuration d'un canal de transmission Configurer la transmission consiste à donner des valeurs communes aux paramètres del'émetteur et du récepteur.On trouvera la fréquence des horloges.Il faut indiquer si le caractère ASCII est codé sur 7 ou 8 bits,

Page 10: TP liaison serie RS

Le contrôle de la parité est-il envisagée, si oui, est-ce la parité ou l'imparité ?Souhaite-t-on qu'il y ait un contrôle de flux ? Si oui veut-on un contrôle matériel ou logiciel ?Exemple : 9800 bauds, 8 bits de données, parité paire, sans contrôle de flux.

13. Les transmissions de type série actuelles

USB, CAN, I²C sont les bus de type série très employés actuellement. Leur première raisond'être est la réduction de la quantité de cuivre utilisé pour le câblage et l'augmentation de larapidité de la transmission.Ces transmissions se font par un ensemble de trois ou quatre fils. La topologie peut être lebus ou l'étoile.La réduction du câblage est rendue possible par une augmentation de "l'intelligence" donnéeà chaque périphérique qui est ainsi capable de dialoguer avec l'ordinateur centralisateur.L'intelligence est donnée par un petit système microprogrammé implanté dans le périphérique.Les protocoles mis en œuvre diffèrent selon le type de liaison, USB, CAN ou I²C mais onpeut dégager des caractères communsÉtant donné que tous les périphériques sont reliés entre eux, il faut être capable de lesdistinguer afin de s'adresser à l'un d’entre eux en particulier. Chaque périphérique possède uneadresseLe périphérique doit recevoir ou envoyer des donnéesIl doit informer son correspondant qu'il s'est bien acquitté de sa mission.Les informations échangées entre l'ordinateur centralisateur et le périphérique doivent dontcomporter :- un champ d'adresse- un champ de données- un champ d'acquittementDe plus, comme dans toute transmission de type série, le temps intervient. Les élémentsbinaires doivent être envoyés et reçus au rythme d'une horloge.Cette horloge est transmise de l'émetteur au récepteur dans les liaisons CAN et I²C alorsqu'elle est reconstituée par le récepteur dans l'USB.

II. Le composant TComPort sous Delphi

Pour pouvoir utiliser le comport il faut tout d’abord installer les composants comport , Le paquet de conception va installer une nouvelle palette de composants comportant :

Page 11: TP liaison serie RS

TComPort : composant d'accès au port série lui-même. TComDataPacket : Composant de gestion de trames reçues. TComComboBox : Composant visuel d'aide à la configuration du TComport TComRadioGroup : Composant visuel d'aide à la configuration du TComport TComLed : Composant permettant de visualiser l'activité du composant ComPort

associé TComTerminal : Composant de visualisation des trames de la liaison série

Nous allons maintenant détailler seulement l'utilisation du composant Tcomport car car celui ci on va l’utiliser dans notre manipulation.

TComPortC'est le composant principal de ce paquet. C'est lui qui va permettre de configurer et de gérer le port série.

Ce composant comporte toutes les propriétés de configuration de la liaison série. Je vais présenter les plus importantes et surtout celles que l'on modifie le plus souvent dans la pratique.

Propriété PortCette propriété définit le port à utiliser sur le PC. Dans la liste déroulante seuls les ports existant physiquement apparaissent.Notez que ComPort est basé sur les APIs Windows, donc il supporte parfaitement les drivers passerelle, style USB--RS232.

Propriété BaudRateDéfinit la vitesse de la liaison série en Bauds.

Propriété DataBitsDéfinit le nombre de bits de chaque caractère émis/reçu sur la liaison série.

Propriété ParityDéfinit la type de bit de parité de chaque caractère. Il est possible ici de définir si le contrôle de parité doit être effectué en lecture, et dans le cas où il est effectué de remplacer dans la trame reçue les caractères ayant un défaut de parité par un caractère spécifique.Pour les essais, je vous conseille de ne pas activer le contrôle de parité, il n'est pas

Page 12: TP liaison serie RS

indispensable au bon fonctionnement et peut facilement être ajouté par la suite si vous voulez renforcer le contrôle.De toute manière, dans le cas d'envoi/réception de trames il est préférable de gérer un checksum plus évolué de style CRC.

Propriété StopsBitsNombre de bits de stops de chaque caractère.

Propriété FlowControlCet ensemble de propriétés permet de définir la gestion du flux de caractères sur la liaison série.Par expérience et dans la mesure du possible il est préférable de ne pas utiliser le contrôle de flux, car cela ne fait que compliquer le gestion et le cablâge de la liaison. Il y a cependant des exceptions, comme la gestion d'un modem ou la gestion d'un convertisseur RS232-RS485 multipoints.Dans les premiers exemples donnés dans ce cours, aucun contrôle de flux ne sera utilisé.

Propriété TimeoutsCet ensemble de propriétés permet de définir les différents timeouts en émission et en réception. Leur utilisation dépend des applications.

Propriété EventsPermet de définir quels événements liés à l'activité de la liaison série sont utilisés.Par défaut ils sont tous activés, mais vous pouvez supprimer tous ceux qui ne vous sont pas utiles afin de ne pas surcharger le dialogue avec le TComport.

Propriété EventCharCette propriété permet de définir le caractère déclenchant OnRxChar quand il est reçu. Il faut bien sur que l'événement soit activé dans la propriété Events.

Propriété ConnectedCette propriété permet d'ouvrir/fermer la liaison série et aussi d'en vérifier son état.

Travail demandé

On va faire une liaison série entre 2 PC avec le cable DB9, et par delphi on fait un program qui permet d’envoyer et recevoir des messages textes pour cela on insére dans le concepteur de forms 2 boutons et 2 Edit .

un bouton appelé « envoyer » qui va envoyer le message ecrit par l’opérateur dans edit1

l’autre bouton appelé recevoir qui va recevoir de l’autre PC le message envoyer et l’afficher dans edit2

en 2 éme partie on va changer le program pour lui permettre de faire la reception automatique des messages textes.

1.l’interface graphique du program

Page 13: TP liaison serie RS

2.Le program écrit dans l’editeur de code

1ere partie

unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CPort;

type TForm1 = class(TForm) ComPort1: TComPort; Edit1: TEdit; Button1: TButton; Edit2: TEdit; Button2: TButton; procedure ouverture(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Fermeture(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

Page 14: TP liaison serie RS

var Form1: TForm1; s , p :string ;

implementation

{$R *.dfm}

procedure TForm1.ouverture(Sender: TObject);begincomport1.open;end;

procedure TForm1.Button1Click(Sender: TObject);begins:=edit1.Text;comport1.writeStr(s);end;

procedure TForm1.Fermeture(Sender: TObject; var Action: TCloseAction);begincomport1.Close;end;

procedure TForm1.Button2Click(Sender: TObject);begin

comport1.ReadStr(p,200) ;edit2.Text:=p;end;

end.

2éme partie

unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CPort;

type TForm1 = class(TForm) ComPort1: TComPort; Edit1: TEdit;

Page 15: TP liaison serie RS

Button1: TButton; Edit2: TEdit; Button2: TButton; procedure ouverture(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Fermeture(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure automatique(Sender: TObject); private { Private declarations } public { Public declarations } end;

var Form1: TForm1; s , p :string ;

implementation

{$R *.dfm}

procedure TForm1.ouverture(Sender: TObject);begincomport1.open;end;

procedure TForm1.Button1Click(Sender: TObject);begins:=edit1.Text;comport1.writeStr(s+#06);end;

procedure TForm1.Fermeture(Sender: TObject; var Action: TCloseAction);begincomport1.Close;end;

procedure TForm1.Button2Click(Sender: TObject);begin

comport1.ReadStr(p,200) ;edit2.Text:=p;end;

procedure TForm1.automatique(Sender: TObject);begin

Page 16: TP liaison serie RS

comport1.ReadStr(p,200) ;edit2.Text:=p;end;

end.

Conclusion

Ce program permet d’envoyer et de recevoir des messages textes d’un autre PC via le port serie le defaut du premier program c’est qu’on ne peut voir si on a reçu un message ou non qu’aprés clicker sur le bouton recevoir, ce defaut a éte corriger en 2 éme partie pour permettre la reception automatique en ajoutant la procedure automatique et en fesant ce changement :Comport1→ object inspector→events→Rx flag : automatique.