Le champ d'adresse permet d'identifier qui émet une trame et dans quelles conditions. Le champ Commande permet de compléter cette identification et de dérterminer ainsi le type de trame. Il est composé de quatres parties : r r r p/f s s s lsb
Bit lsb : Famille de trames
- Si lsb = 0, la trame est une trame de données elle possède donc un champ Data.
- Si lsb = 1, la trame est une trame de gestion (acquittement, rejet, connexion, etc). Nous verrons les différents types de trames juste ci-dessous. Ces trames, à part une trame particulièrement, n'ont pas de champ Data.
Bits r r r : Le compteur Nr : Numéro de trame reçu
Le compteur Nr (Numero Receive) permet d'indiquer quel est le numéro de la prochaine trame attendue par l'équipement. Ce compteur est donc un compteur d'acquittement ! Il permet au récepteur lorsqu'il envoie une trame à son correspondant de lui indiquer quelle est la dernière trame valide qu'il est reçu de lui. Le correspondant va donc comparer ce compteur avec son compteur Ns (voir ci-dessous) afin de déterminer s'il a reçue toutes les trames. L'équipement positionne ce compteur uniquement dans 4 trames différentes que nous présenterons dans un tableau ci-dessous. Dans les autres trames, les bits du compteur Nr sont positionnés à des valeurs précises qui permettent d'identifier les trames.
Bits s s s : Le compteur Ns : Numéro de trame émise
Le compteur Ns (Numero Send) permet d'indiquer quel est le numéro de la trame émise par l'équipement. Vous remarquerez que ce compteur est modulo 8 (comme le compteur Nr). L'équipement peut donc envoyer 8 trames consécutives numérotées de 0 à 7. La trame suivant le numéro 7 aura donc le numéro 0. Comme nous avons dit que ce compteur servait de base au compteur Nr pour émettre des acquittements, vous comprendrez donc que l'émetteur ne peut émettre plus de 8 trames consécutives sans avoir reçu un acquittement du destinataire. Car s'il émettait 9 trames sans avoir reçu d'acquittement il aurait deux trames 0 en instance d'acquittement. Comment saurait-il laquelle est acquitté si il reçoit un compteur Nr = 1 ?
Bits p/f : Demande d'acquittement immédiat
Ce bit permet à un émetteur de demander au destinataire d'acquitter immédiatement la trame reçu (et donc toutes les trames en instance d'acquittement !). Généralement l'émetteur arrête toute transmission jusqu'à réception de l'acquittement requis. On parle de bit p/f car :
- une trame de commande véhicule un bit p
- une trame de réponse véhicule un bit f
par abus de langage on parle de bit p/f
IMPORTANT : Une trame de réponse aura toujours le bit f positionné à la même valeur que le bit p de la trame de commande reçue.
Ce bit existe dans toute les trames.
Le champ Data a une longeur variable. Il existe uniquement pour les trames de données, pour les autres trames sa longueur est nulle. La taille est généralement de 128 ou 256 octets.
Le contrôle d'erreur est un champ de deux octets. On utilise ici un CRC16 (Cyclique Redondancy Check) qui consiste à diviser la valeur polynomiale de la trame par un polynome générique appelé "Polynome générateur". Le champ FCS correspond au reste de la division polynomiale. Le destinataire effectue la même division avec le même polynome générateur et compare les restes (celui qu'il a obtenu et celui émis dans le FCS). S'ils sont identiques il accepte la trame, sinon il la rejette.
- Seules les trames de données et de supervision sont équipées d'un compteur Nr. Elles seules peuvent donc effectuer des acquittements.
- Seule la trame de données est équipée d'un compteur Ns, ce qui est logique. Il n'y a pas d'intérêt à compter des trames qui ne véhiculent pas de données.
- Les trames de supervision peuvent être tour à tour des trames de commande ou réponse (bit c/r = bit c ou bit r).
Vous comprendrez mieux les rôles et mécanismes de ces bits dans les chapitres suivants où nous allons étudier de nombreux cas de dialogues.