Travaux Dirigés de Temps Réel Industriel
(Une approche parmi d'autres ...)


Réponses à l'optimisation d'un dialogue Jbus

Question 1 : pour une vitesse de 9600 Bauds, 8 bits par caractère, 1 start bit, 1 stop bit et 1 bit de parité, calculer le temps de transmission d'un caractère.

Réponse 1 : on transmet 8 bits par caractère, plus 1 start bit, plus 1 stop bit, plus 1 bit de parité, soit 11 bits transmis par caractère, 11 bits divisé par 9600 bits/seconde égale 1,14 ms. L'approximation de 1 ms par caractère est souvent utilisée car très pratique sur le terrain : 1 ms par caractère à 9600 Bds, 0,5 ms par caractère à 19200 Bds, ou 32 ms par caractère à 300 Bds.

Oresme à son pupitre, Livre du Ciel et du Monde

Question 2 : calculer t2, temps d'émission de la question par le superviseur, et t4, temps d'émission de la réponse par l'automate.

Réponse 2 : on considère les temps inter caractères négligeables devant les temps de transmission.

t2 = temps d'émission de 8 caractères, soit 8 fois 1.14 ms = 9.12 ms.

t4 = temps d'émission de 9 caractères, soit 9 fois 1.14 ms = 10.26 ms.

Question 3 : donner l'expression du temps de calcul de CRC en fonction du nombre d'octets NBOCT.

Réponse 3 : 33 MHz, 1 cycle égal 1 divisé par 33 10 puissance 6, soit 30 nano secondes.

tCRC = (66 + 47 * NBOCT) * 30 nano secondes.

Question 4 : calculer le temps de calcul de CRC de la trame émise (t1).

Réponse 4 : t1 = tCRC pour NBOCT = 6, soit environ 11.5 micro secondes.

Question 5 : calculer le temps de calcul de CRC de la trame reçue (t5).

Réponse 5 : t5 = tCRC pour NBOCT = 7, soit environ 13 micro secondes.

Question 6 : que peut-on dire de ces temps comparés aux temps de transmission des diffèrentes trames ?

Réponse 6 : ces temps sont de l'ordre de la dizaine de micro secondes. Comparé à des temps de transmission de plusieurs milli secondes, les temps de calcul de CRC même par un processeur 80386 sont négligeables devant les temps de transmission.

Question 7 : calculer la période de scrutation minimale T.

Réponse 7 : on a la relation : T = t1 + t2 + t3 + t4 + t5.
En prenant t1 et t5, temps de calcul de CRC négligeables devant les autres temps, on obtient :
T = t2 + t3 + t4 = 9.12 + 5.0 + 10.26 = 24.38 ms, soit environ 25 ms. C'est la période de scrutation minimale de deux mots en Jbus à 9600 Bauds. Si l'automate fait varier ces mots plus rapidement que ce temps, c'est à dire si le procédé évolue plus rapidement que 25 ms, on sera incapable de les acquèrir et donc de les afficher sur le superviseur.

Question 8 : sur quels paramètres peut-on jouer pour améliorer la scrutation (vitesse, format, processeur, etc.) ?

Réponse 8 : On peut jouer sur :

Action sur la vitesse de transmission : en multipliant par exemple la vitesse par deux, on va diminuer d'autant les temps t2 et t4. Le temps t3 demeure identique. on obtient alors :
T = t2 + t3 + t4 = 4.46 + 5.0 + 5.15 = 14.61 ms, soit environ 15 ms (c'est plus que la moitié du temps précédent).

Action sur le processeur : les temps de calcul de CRC étant négligeables devant les temps de transmission, changer de processeur n' améliorerait pas de façon sensible le temps de scrutation minimal.

Action sur la façon d'acquérir les informations : dans le cadre de cet exercice, on acquiert deux mots de la mémoire automate, mots qui sont consécutifs dans la mémoire automate. Si on avait pris deux mots éloignés l'un de l'autre, comme par exemple le mot 100 et le mot 200, les performances en auraient été fortement dégradées :
Lecture du mot 100, 23 ms (trame de question avec le même nombre d'octets, et trame de réponse avec deux octets de moins), plus lecture du mot 200, 23 ms, soit au total 46 ms. Le fait de lire deux mots contigus donne une période de 25 ms, ce qui n'est pas loin de la moitié.

Action sur le format de transmission : le format de transmission est de 8 bits par caractère, 1 start bit, 1 stop bit et un bit de pariré. A moins de ne vouloir transmettre que des octets codés ASCII, les 8 bits par caractère sont incontournables. Le start bit et le stop bit font partie intégrante de la transmission : difficile de s'en passer.
Le bit de parité sert à assurer un nombre de bits à 1 pair pour la transmission d'un caractère dans le cas d'une parité paire, l'inverse pour la parité impaire. Ce bit de parité permet une détection d'erreur de transmission au niveau du caractère. Comme la norme Jbus/Modbus prévoit une détection d'erreur au niveau de la trame, et que le CRC16 amène un taux de détection d'erreur très élevé (beaucoup plus performant qu'un simple check-sum où deux erreurs peuvent se compenser), on peut se passer du bit de parité. Ceci amène un gain de pratiquement 10% (10 bits par caractère au lieu de 11) sur le temps de transmission.

Avec une transmission à 19200 Bds et une transmission sans parité, on obtient un temps de transmission par caractère de 10 bits divisé par 19200 bits par seconde, soit : 0.52 ms. Le temps de transmission des 8 octets de la question et des 9 octets de la réponse, soit 17 octets devient : 8.84 ms. La période minimale de scrutation tombe alors à un peu moins de 14 ms.


Des questions ou des suggestions ? Retour au choix de TDs