Brevet FR2706650A1 — publié le 19941223

PROCEDE DE DECODAGE DE L'EN-TÊTE D'UN MESSAGE DE COMMUNICATION La présente invention concerne un procédé de décodage de l'en-tête d'un message de communication. La présente invention concerne plus particulièrement un procédé de décodage de l'entête d'un message de communication émis depuis une station diagnostic, par le système électronique de contrôle d'un moteur à combustion interne ou par tout autre calculateur équipant un véhicule automobile. Pour surveiller et/ou régler le fonctionnement des différents calculateurs électroniques implantés dans un véhicule automobile, tel que le système de contrôle moteur, le système de pilotage de la bote de vitesses, ou encore le système d'anti-blocage des freins, on utilise classiquement, Cf la figure 1, une station diagnostic apte à communiquer avec chacun des calculateurs pour recueillir les différentes informations caractéristiques de leur fonctionnement et/ou pour modifier leur paramètrage. La transmission des messages d'information entre les différents systèmes électroniques du véhicule et la station diagnostic s'opère, selon le protocole normatif IS08-9141, par l'intermédiaire de deux lignes multiplexées K et L. La ligne K sert à l'émission et à la réception des messages entre les calculateurs et la station diagnostic, tandis que la ligne L sert uniquement à l'émission de messages de la station vers les différents calculateurs. Les en-têtes des messages de communication utilisés entre la station diagnostic et les différents calculateurs embarqués contiennent traditionnellement une adresse permettant à chacun des calculateurs de reconnaître si le message envoyé par la station lui est destiné. La ligne L a plus précisément pour objet la transmission des codes adresses. L'information transitant par la ligne L est redondante avec celle transitant sur la ligne K, mais elle offre une plus grande facilité de décodage par les différents systèmes récepteurs puisque les messages y sont uniquement des adressages à 5 bauds, alors que sur la ligne K les messages sont de natures différentes : adressages à 5 bauds et données à 10 kbauds. L'utilisation de la ligne L permet donc à l'unité centrale de chaque calculateur d'opérer une veille programmée à 5 bauds sur la ligne L et non pas à 10 kbauds sur la ligne K. La présence de la ligne L a toutefois pour inconvénient de renchérir la réalisation des différents calculateurs en obligeant notamment à prévoir un étage ou port d'entrée spécifique. L'objet de la présente invention est donc de supprimer la ligne L et de ne plus utiliser que la seule ligne K pour véhiculer les messages d'informations entre la station diagnostic et les différents calculateurs, en proposant un procédé de décodage des en-têtes ou adresses des messages transitant par la ligne K. Le procédé objet de l'invention offre l'avantage d'être parfaitement adapté à la technologie des calculateurs utilisés actuellement sur les véhicules automobiles et notamment des systèmes électroniques de contrôle moteur, et d'être particulièrement simple et économe à mettre en oeuvre, puisque qu'aucun surcoût matériel n'est nécessaire. Le procédé de décodage selon l'invention, d'un en-tête de message de communication comportant un bit de départ au niveau "0", est utilisé pour les messages transmis entre au moins deux calculateurs à travers une unique ligne de liaison, l'un au moins des calculateurs comportant une unité centrale et des moyens de connexion de l'unité centrale avec la ligne de liaison comprenant un port et une interface de communication série servant au décodage des données sous forme d'octets directement interprétables par l'unité centrale. Selon l'invention, le procédé de décodage de l'en-tête d'un message de communication est caractérisé en ce que le décodage de l'en-tête est opéré par l'interface de communication série fonctionnant à une vitesse appropriée. Selon une autre caractéristique du procédé de décodage d'un en-tête de message de communication selon l'invention, l'interface de communication série est associée à un drapeau destiné à informer l'unité centrale du décodage d'une donnée par l'interface de communication série et à des moyens de stockage des octets décodés. Le procédé comprend alors les étapes suivantes, répétées périodiquement lecture du niveau du signal sur la ligne de liaison lecture de la valeur du drapeau associé à l'interface de communication série le décodage de l'en-tête étant alors opéré lorsque pendant une durée correspondant sensiblement à un bit de départ d'en-tête, le niveau logique du signal sur la ligne de liaison et la valeur du drapeau ont été lus à "0". Selon une autre caractéristique du procédé de décodage d'un en-tête de message de communication selon l'invention, l'un des calculateurs est formé par le calculateur d'une station diagnostic et l'autre calculateur est formé par le calculateur du système de contrôle moteur d'un véhicule automobile à moteur à combustion interne. Selon une autre caractéristique du procédé de décodage d'un en-tête de message de communication selon l'invention, la valeur "1" du drapeau est assimilée à la valeur "O" lorsque l'octet correspondant décodé par l'interface de communication série est à la valeur O et lorsque le niveau "O" a été lu lors de la dernière ou lors des deux dernières lectures effectuées sur la ligne de liaison. Selon une autre caractéristique du procédé de décodage d'un en-tête de message de communication selon l'invention, la période prédéterminée choisie pour venir lire le niveau de la ligne de liaison et la valeur du drapeau associé à l'interface de communication série est inférieure ou égale au dixième de la durée du bit de départ de l'en-tête. Selon un mode de réalisation de l'invention, la période de lecture est sensiblement égale à 16 ms tandis que la durée du bit de départ est de 200 ms, le décodage de l'en-tête étant alors opéré lorsque 12 fois consécutivement, le niveau du signal sur la ligne de liaison et la valeur du drapeau ont été lus à "0". On comprendra mieux les buts, aspects et avantages de la présente invention, d'après la description présentée ci-après d'un mode de réalisation de l'invention, donné à titre d'exemple non limitatif, en se référant au dessin annexé, dans lequel - la figure 1 représente le système de communication, selon l'art antérieur, entre une station de diagnostic et les différents calculateurs d'un véhicule automobile - la figure 2 est un schéma partiel du calculateur du système de contrôle moteur selon l'invention, connecté à une station diagnostic par la seul ligne K - la figure 3 est un chronogramme précisant la forme d'un en-tête de message ; - la figure 4 est un chronogramme précisant la forme des données contenues dans un message à la suite de l'en-tête - la figure 5 est un organigramme précisant les différentes étapes du procédé de décodage selon l'invention. Conformément aux figures, seuls les éléments nécessaires à la compréhension de l'invention ont été figurés. En se reportant à la figure 2, le calculateur 1 constituant le système électronique de contrôle moteur d'un véhicule automobile, comprend classiquement un calculateur du type comportant une unité centrale ou CPU, une mémoire vive ou RAM, une mémoire morte ou ROM, des convertisseurs analogiques-numériques et différentes interfaces d'entrées et de sorties I/O. Le calculateur 1 selon l'invention, est donc apte à communiquer avec le calculateur d'une station diagnostic par l'intermédiaire d'une seule ligne ou bus de liaison K. La réception des messages en provenance de la ligne K est classiquement assurée par l'intermédiaire d'un port de connexion Rx permettant à l'unité centrale de suivre l'état à "1" ou "0" de la ligne K, encore appelés respectivement niveaux "haut" et niveau "bas". Les messages transitant par la ligne K, sont également traités en parallèle par une interface de communication série SCI ayant pour fonction de transformer les données contenues dans les messages en octets directement interprétables par l'unité centrale. L'interface de communication série est couplée à un drapeau FLAG destiné à signaler à l'unité centrale l'acquisition d'une donnée par l'interface de communication série et à une case mémoire OCT pour le stockage de l'octet correspondant. Dans le protocole de transmission choisi le niveau "1" sur la ligne K est récessif tandis que le niveau "0" est considéré comme dominant. Ainsi le passage du niveau "1" au niveau "0" indique le début d'un message. Les figures 3 et 4 présentent sous forme simplifiée la structure des messages transitant sur la ligne K et notamment des messages émis par la station diagnostic à l'attention des calculateurs. Chaque message comporte un en-tête, représenté à la figure 3, à 5 bauds et comportant un bit de départ, état à "0" de la ligne pendant une durée égale à 200 ms et 8 bits de données définissant l'adresse du calculateur concerné. Après l'en-tête, le message est constitué par les données proprement dites formées par des champs de bits à 10 kbauds. Chaque donnée élémentaire émise pendant 1 ms se présente, Cf la figure 4, sous la forme d'un bit de départ de 100 ys à "0", par 8 bits définissant la donnée et par un bit de stop à "1". Conformément à l'organigramme de la figure 5, le procédé selon l'invention pour permettre à l'unité centrale de lire les en-têtes des messages transitant par la ligne K, est décrit ci-après. Pour reconnaître un en-tête de message, il est donc nécessaire de reconnaître un état stable à "0" pendant 200 ms. Pour ce faire, on vient lire périodiquement l'état de la ligne K à travers le port Rx. Pour optimiser le fonctionnement de l'unité centrale, on choisi une période suffisamment longue pour ne pas la surcharger, mais également suffisamment courte pour pouvoir cerner avec précision le bit de départ. On peut donc adopter comme période prédéterminée pour venir lire le niveau de la ligne de liaison l'interface de communication série, une durée choisie inférieure ou égale au dixième de la durée du bit de départ de l'en-tete, par exemple toute les 16ms. Un en-tête de message est alors caractérisé par la détection de 12 états successifs à "0" sans qu'entre deux états à "0" il n'y est eu de passage au niveau "1". Pour vérifier qu'entre deux lectures successives à "0" du niveau de la ligne K, il n'y a eu aucun passage à la valeur "1", on utilise alors l'information contenue dans le drapeau FLAG associé à l'interface de communication série SCI. L'interface de communication série, dont le rôle est de transcrire les données contenues dans les messages sous forme d'octets directement interprétables par l'unité centrale, fonctionne à une vitesse élevée de 10 kbauds et à chaque donnée décodée met à "1" le drapeau destiné à avertir l'unité centrale. Il suffit donc pour s'assurer qu'entre deux lectures successives du niveau de la ligne K, il n'y a eu aucun passage à la valeur "1", de venir lire après chaque mesure du port Rx, la valeur du drapeau. En effet, si la valeur du drapeau est à "0" cela montre qu'il n'y a eu aucune donnée décodée pendant le dernier intervalle et donc aucun passage à "1" du niveau de la ligne K, tandis que si cette valeur est à "1", cela indique qu'au contraire une donnée a été détectée, sous réserve toutefois de l'interprétation par l'interface de communication série du début du bit de départ à 5 bauds comme un départ de bit à 10 kbauds. Le procédé de décodage de l'en-tete d'un message transitant par la ligne K consiste donc à venir périodiquement, par exemple toute les 16 ms, lire l'état de la ligne K, via le port Rx. Soit cet état est à "1" et on en déduit qu'il n'y a alors pas d'émission d'un bit de départ, on opère alors la réinitialisation d'un compteur CPT et du drapeau. Soit cet état est à "0", et on va alors lire la valeur du drapeau. Soit le drapeau FLAG est à "0" et il n'y a donc eu aucune donnée d'émise sur la ligne K pendant les dernières 16 ms, la ligne K est donc restée uniformément au niveau logique "0" pendant cet intervalle et on incrémente le compteur CPT d'une unité. Soit le drapeau FLAG a pris la valeur "1" et donc une donnée a été décodée par la SCI, la ligne K n'est donc pas restée au niveau "0", on n'assiste donc pas à la transmission de l'en-tete d'un message. Dans ce cas on remet à "0" le compteur CPT ainsi que le drapeau FLAG. I1 convient toutefois de vérifier si la donnée décodée ne correspond pas au début du bit de départ à 5 bauds qui a été interprété par l'interface de communication série comme un départ de bit à 10 kbauds. Pour confirmer cette possibilité on vérifie que le compteur CPT est inférieure ou égale à 1, c'est-à-dire que l'on se situe au début d'un éventuel bit de départ, et que l'octet décodé OCT et stocké dans la case mémoire 7 est à 00. Dans ce cas on réinitialise le drapeau et on incrémente le compteur CPT, sinon on remet à "0" le compteur CPT ainsi que le FLAG. Il est à noter que plus l'intervalle de lecture sur la ligne K est faible, par exemple 8 ms au lieu de 16 ms, moins ce dernier test présente d'intérêt. Lorsque le compteur CPT a atteint la valeur 12, on peut alors considérer qu'un bit de départ à 5 bauds d'une adresse de message a été décodé et l'unité centrale peut alors opérer classiquement le décodage complet de l'adresse et éventuellement si cette adresse est la sienne se mettre en situation de réception de données. Ainsi, grâce au procédé selon l'invention, le calculateur 1 peut décoder avec ses seules ressources et à partir d'une seule ligne K les entêtes des messages et adapter son fonctionnement en conséquence et ce, tout en faisant fonctionner son unité centrale à 5 bauds en mode veille. Bien entendu, l'invention n'est nullement limitée au mode de réalisation décrit et illustré qui n'a été donné qu'à titre d'exemple. Au contraire, l'invention comprend tous les équivalents techniques des moyens décrits ainsi que leurs combinaisons si celles-ci sont effectuées suivant son esprit. REVENDICATIONS C13 Procédé de décodage d'un en-tête de message de communication comportant un bit de départ au niveau "0", ledit message étant transmis entre au moins deux calculateurs à travers une unique ligne de liaison (K), l'un au moins des calculateurs comportant une unité centrale (CPU) et des moyens de connexion de l'unité centrale (CPU) avec la ligne de liaison (K) comprenant un port (Rx) et une interface de communication série (SCI) servant au décodage des données sous forme d'octets directement interprétables par l'unité centrale (CPU), caractérisé en ce que le décodage de l'entête est opéré par de l'interface de communication série (SCI) fonctionnant à une vitesse appropriée. [2 Procédé de décodage d'un en-tête de message de communication selon la revendication 1, caractérisé en ce que, ladite interface (SCI) étant associée à un drapeau (FLAG) pour informer l'unité centrale (CPU) du décodage d'une donnée et à des moyens de stockage (OCT) de l'octet correspondant, il comprend les étapes suivantes, répétées selon une période prédéterminée lecture du niveau du signal sur la ligne de liaison (K) ; lecture de la valeur du drapeau (FLAG) associé à l'interface de communication série ; le décodage de l'en-tête étant alors opéré lorsque pendant une durée correspondant sensiblement à un bit de départ d'en-tête, le niveau logique du signal sur la ligne de liaison (K) et la valeur du drapeau (FLAG) ont été lus à "0". t3] Procédé de décodage d'un en-tête de message de communication selon la revendication 2, caractérisé en ce qu'un calculateur est formé par le calculateur d'une station diagnostic et que l'autre calculateur (1) est formé par le calculateur du système de contrôle moteur d'un véhicule automobile à moteur à combustion interne. [4] Procédé de décodage d'un en-tête de message de communication selon l'une quelconque des revendications 2 à 3, caractérisé en ce que la valeur à "1" du drapeau (FLAG) est assimilée à la valeur "0" lorsque l'octet correspondant contenu dans les moyens de stockage (OCT) est à la valeur 0 et lorsque le niveau "0" a été lu lors de la dernière ou lors des deux dernières lectures effectuées sur la ligne de liaison (R). [5] Procédé de décodage d'un en-tête de message de communication selon l'une quelconque des revendications 2 à 4, caractérisé en ce que la période prédéterminée choisie pour venir lire le niveau de la ligne de liaison (K) et la valeur du drapeau (FLAG) associé à l'interface de communication série (SCI) est inférieure ou égale au dixième de la durée du bit de départ de l'entête. [6] Procédé de décodage d'un en-tête de message de communication selon la revendication 5, caractérisé en ce ladite période est sensiblement égale à 16 ms tandis que la durée du bit de départ est de 200 ms, le décodage de l'en-tête étant alors opéré lorsque 12 fois consécutivement, le niveau logique du signal sur la ligne de liaison (K) et la valeur du drapeau (FLAG) ont été lus à "0".