Brevet FR3019666A1 — publié le 20151009

TRANSMI SSI ON DE TRAMES SUR UN BUS CAN La présente invention concerne la gestion de la transmission de trames par l'intermédiaire d'un Bus CAN. Le domaine de l'invention concerne plus particulièrement, bien que non exclusivement, le domaine de l'automobile. Aujourd'hui, les véhicules automobiles sont généralement équipés d'au moins un réseau CAN (initiales anglo-saxonnes mises pour Controller Area Network) permettant à plusieurs noeuds du réseau, typiquement des calculateurs, de se connecter à un même Bus de communication pour échanger des messages entre eux. Chaque message est transmis sous la forme d'une trame dont la structure, conformément à la norme ISO 11898, est illustrée schématiquement sur la figure 1. Plus précisément, une trame CAN 1 comporte classiquement sept champs différents : - un champ 10 de début de trame ou SOF (initiales anglo-saxonnes mises pour Start Of Frame) composé généralement de 1 bit, - un champ 11 d'arbitrage de 12 ou 32 bits, comportant un identifiant ID de la trame composé de 11 bits (CAN standard) ou 29 bits (CAN étendu), - un champ 12 de contrôle composé de 6 bits, - un champ 13 de données composé de 0 à 64 bits, - un champ 14 de contrôle de redondance ou CRC (initiales anglo-saxonnes mises pour Cyclic Redundancy Check) composé de 16 bits, - un champ 15 d'acquittement composé de 2 bits, - un champ 16 de fin de trame ou EOF (initiales anglo-saxonnes mises 25 pour End Of Frame) composé généralement de 7 bits. Dans la structure précédente, c'est l'identifiant ID contenu dans le champ 11 d'arbitrage qui est utilisé d'une part, pour identifier la trame, et d'autre part, pour déterminer la priorité d'accès de la trame au Bus de communication. Les identifiants CAN peuvent prendre une longueur soit de 11 30 bits, ce qui permet d'identifier et prioriser 211 trames différentes, soit de 29 bits, ce qui permet d'identifier et prioriser 229 trames différentes. A titre d'exemple non limitatif, la figure 2 montre les identifiants utilisés pour N trames notées Ti, T2..IN, avec leur priorité P1, P2..PN associée. Dans cet exemple, la trame Ti possède la priorité P1 d'accès au Bus la plus élevée, alors que la trame TN possède la priorité PN d'accès au Bus la plus faible. Le contrôle d'accès CSMA-CA (initiales anglo-saxonnes mises pour Carrier Sense Multiple Access with Collision Avoidance) permet d'arbitrer l'accès au Bus CAN et d'éviter les collisions entre plusieurs noeuds qui essayeraient d'accéder au BUS au même temps. Au moment d'envoyer une trame sur le Bus CAN, un noeud écoute s'il n'y a pas déjà un autre noeud en cours d'émission d'une trame. S'il y a un deuxième noeud en cours d'émission, le premier noeud s'inhibe et n'envoie pas sa trame au Bus CAN. La figure 3 illustre à titre d'exemple quatre noeuds 11 à 14 reliés à un même bus CAN 2, dans le cas où le noeud 11 souhaite accéder au Bus 2 pour transmettre une trame T2. Ici, une trame Ti est déjà en cours de transmission sur le Bus 2, de sorte que le noeud 11 doit interrompre sa transmission, rester à l'écoute du Bus 2 pour attendre la fin de la transmission de la trame Ti, puis tenter à nouveau de transmettre la trame Ti. Quand l'émission de la trame Ti est terminée, le noeud 11 attend un temps préétabli, appelé espace inter-trame, avant de commencer l'émission de sa trame T2. Il se peut que d'autres noeuds parmi les noeuds 12 à 14 essayent d'émettre à ce moment-là. Si c'est le cas, une phase d'arbitrage commence. Chaque noeud écoute ce qui est en train d'être émis par les autres noeuds. Quand un premier noeud détecte un autre noeud qui émet avec une priorité de trame plus forte, ce premier noeud inhibe l'émission de sa trame. La comparaison des identifiants se fait bit à bit (bit récessif à 1 et bit dominant à 0). A la fin de la phase d'arbitrage seul un noeud continue à émettre sur le Bus CAN. Ce noeud a gagné la phase d'arbitrage. La figure 4 illustre à titre d'exemple le cas où chacun des noeuds 11, 12 et 13 souhaite transmettre une trame, respectivement T2, T3 et T4, la trame T2 ayant une priorité P2 plus importante que les priorités P3 et P4 des deux autres trames. A l'issue de a phase d'arbitrage, le noeud 11 transmet sa trame T2 sur le bus CAN 2. Un Bus CAN peut être utilisé pour l'envoi d'informations en temps réel. Ces informations doivent impérativement être transmises dans un laps de temps donné. A cet effet, une échéance est fixée à l'avance pour chaque trame envoyée sur le Bus CAN. Le comportement temps réel du Bus CAN est sain si le temps d'accès au Bus CAN de chaque trame est inférieur à l'échéance fixée par avance. Or, le temps d'accès au Bus CAN pour une trame CAN est déterminé par la priorité de la trame et par la charge moyenne du Bus. Quand la charge moyenne du Bus augmente, le temps d'accès au BUS peut augmenter pour certaines trames moins prioritaires à cause de l'arbitrage CSMA-CA qui s'établit pour accéder au Bus. Malgré les études préalables pour déterminer l'affectation optimale des priorités des trames du Bus CAN, il se peut que l'échéance de certaines trames soit dépassée tandis que le temps d'accès au Bus d'autres trames reste en dessous des échéances fixées. La figure 5 illustre ainsi, à titre d'exemple, sous forme d'une courbe Ci, les temps d'accès à un Bus CAN pour une pluralité de trames. Les segments 02 indiquent par ailleurs les échéances fixées à l'avance pour ces mêmes trames. Ainsi, pour un premier groupe de trames, l'échéance a été fixée à 10 ms, pour un deuxième groupe de trames, l'échéance a été fixée à 16ms, et pour un troisième groupe de trames, l'échéance a été fixée à 23 ms. La figure 5 montre deux points Al et A2 correspondant respectivement à une trame du premier groupe et à une trame du troisième groupe qui ont été transmises après échéance. Le non-respect de l'échéance d'une trame provoque le non-respect des exigences temps-réel inter-systèmes, ce qui dans certains applications peut 25 induire des problèmes de sureté de fonctionnement. Aujourd'hui ce problème est contourné en limitant fortement la charge d'un Bus CAN. Mais ceci a un coût car le Bus CAN ainsi construit n'est pas exploité de manière optimale. 30 La présente invention a pour objectif de réduire au minimum le non- respect des échéances temporelles d'accès au Bus CAN d'une trame CAN. Pour ce faire, l'invention a pour objet un procédé de transmission de trames sur un Bus CAN auquel sont connectés une pluralité de noeuds, chaque trame apte à être transmise par l'un quelconque des noeuds de ladite pluralité de noeuds comportant un premier identifiant définissant une priorité d'accès au bus CAN, le procédé étant caractérisé en ce qu'il comporte les étapes suivantes, au niveau de chacun des noeuds de ladite pluralité de noeuds: - pour chaque trame apte à être transmise depuis ledit noeud, association d'une échéance de validité jusqu'à laquelle ladite trame peut être transmise valablement ; - tant que la trame n'a pas été transmise sur le Bus CAN, surveillance de ladite échéance de validité ; et - sur détection de la proximité d'échéance de validité, préemption d'accès au Bus pour la transmission de ladite trame par le noeud. Selon d'autres caractéristiques possibles: - la détection de la proximité d'échéance de validité comporte une comparaison d'un instant courant avec une valeur seuil fixe inférieure à ladite échéance de validité. La valeur seuil fixe est avantageusement fonction de ladite échéance de validité. La valeur seuil fixe est par exemple un pourcentage de ladite échéance de validité ; - selon une premier mode d'implémentation possible, le premier identifiant de chaque trame peut définir une priorité par défaut pour l'accès au bus CAN. Dans ce cas, l'étape de préemption comprend le remplacement, dans la trame, dudit premier identifiant par un deuxième identifiant dit de préemption correspondant à une priorité plus importante que la priorité par défaut ; - l'identifiant de préemption est de préférence choisi dans une plage d'identifiants de préemption, le premier identifiant est de préférence choisi dans une plage de premiers identifiants, la plage d'identifiants de préemption étant déterminée pour être toujours prioritaire par rapport à la plage de premiers identifiants ; - pour chaque trame, le premier identifiant et l'identifiant de préemption diffèrent par exemple sur au moins un bit de poids fort ; - dans un deuxième mode possible d'implémentation, chaque trame est transmise par un noeud en respectant un espace inter- trames dont la valeur par défaut est commune à toutes les trames, et l'étape de préemption comprend le remplacement, par le noeud, de la valeur par défaut de l'espace inter-trames par une valeur inférieure à la valeur par défaut. La présente invention a également pour objet un dispositif de transmission de trames sur un Bus CAN, chaque trame apte à être transmise comportant un premier identifiant définissant une priorité d'accès au bus CAN, caractérisé en ce qu'il est apte : - pour chaque trame apte à être transmise, à associer une échéance de validité jusqu'à laquelle ladite trame peut être transmise valablement ; - tant que la trame n'a pas été transmise sur le Bus CAN, à surveiller ladite échéance de validité ; et - sur détection de la proximité d'échéance de validité, à préempter 15 l'accès au Bus pour la transmission de ladite trame. L'invention a également pour objet une Trame de données apte à être transmise sur un Bus CAN, comportant un champ d'arbitrage, caractérisée en ce que le champ d'arbitrage comporte sélectivement soit un premier identifiant définissant une priorité par défaut pour l'accès au bus CAN, soit un deuxième 20 identifiant dit de préemption correspondant à une priorité plus importante que la priorité par défaut. Le premier identifiant et l'identifiant de préemption forment une paire d'identifiants qui définit de préférence ladite trame de façon unique. 25 L'invention et ses avantages seront mieux compris au vu de la description suivante, faite en référence aux figures annexées, dans lesquelles : - la figure 1, déjà décrite ci-avant, donne un exemple de structure d'une trame de données conforme à la norme CAN ; - la figure 2, déjà décrite ci-avant, donne un exemple des priorités 30 d'accès affectées classiquement à un ensemble de trames ; - la figure 3, déjà décrite ci-avant, illustre la gestion de transmission d'une trame lorsqu'une autre trame est déjà en cours de transmission sur un Bus CAN; - la figure 4, déjà décrite ci-avant, illustre un exemple d'issue d'une 5 procédure d'arbitrage classique; - la figure 5, déjà décrite ci-avant, illustre des mesures de temps d'accès effectuées pour un certain nombre de trames CAN; - la figure 6 est un synoptique simplifié des étapes mises en oeuvre dans un procédé de transmission de trames CAN selon l'invention ; 10 - la figure 7 donne un exemple d'implémentation du procédé selon l'invention en utilisant des priorités de préemption ; - la figure 8 illustre des mesures de temps d'accès effectuées pour un certain nombre de trames CAN en utilisant le procédé de transmission selon l'invention. 15 La figure 6 illustre schématiquement les étapes qui sont accomplies au niveau de chaque dispositif de transmission de trames CAN (ou noeud) conformément au procédé selon l'invention, par exemple au niveau d'un contrôleur CAN intégré dans chaque noeud. A titre purement illustratif, ce 20 mécanisme peut être appliqué sur toutes les trames en attente d'émission dans un noeud à chaque fois que l'envoi d'une trame sur le BUS CAN est finalisé. D'autres politiques temporelles d'application pourraient être envisagées. Comme cela a été indiqué ci-avant, chaque trame comporte dans un 25 champ d'arbitrage, un premier identifiant définissant une priorité d'accès au bus CAN. Chaque trame devant être transmise par l'un quelconque de ces noeuds est associée à une échéance de validité, c'est-à-dire une limite temporelle indiquant jusqu'à quand les données transmises par une trame 30 peuvent être considérées comme valables, en particulier pour un traitement en temps réel. Tant que la trame n'a pas été transmise sur le Bus CAN, le noeud correspondant surveille en permanence cette échéance de validité. Les règles d'arbitrage classiques sont alors appliquées si nécessaire. Lorsque le noeud détecte, dans une étape 100, la proximité d'échéance 5 de validité pour cette trame en attente de transmission, il décide de préempter l'accès au Bus (Etape 110) pour permettre la transmission de la trame par le noeud avant l'échéance de validité (Etape 120). En d'autres termes, sur détection du dépassement de la valeur seuil tth pour une trame en attente de transmission, le noeud est apte à forcer l'envoi de la trame concernée, en 10 passant devant d'autres trames a priori plus prioritaires, et éviter ainsi que l'échéance de validité ne soit dépassée. En pratique, l'étape 100 de détection de la proximité d'échéance de validité peut être aisément mise en oeuvre par comparaison d'un instant courant tc mesuré par l'horloge interne de chaque noeud avec une valeur seuil 15 tth fixe inférieure à l'échéance de validité. On choisit de préférence de fixer la valeur seuil en fonction de l'échéance de validité. On peut choisir en particulier un pourcentage, par exemple 90 % de l'échéance de validité. Pour l'étape 110 de préemption de l'accès au Bus CAN, plusieurs implémentations sont possibles : 20 Une implémentation préférée consiste à changer la priorité de la trame. Pour ce faire, on considère que le premier identifiant de chaque trame définit une priorité par défaut pour l'accès au bus CAN, et que le noeud est capable de remplacer dans cette trame, pour l'étape de préemption 110, le premier identifiant par un deuxième identifiant dit de préemption 25 correspondant à une priorité plus importante que la priorité par défaut. Pour chaque trame, un identifiant de préemption est choisi dans une plage d'identifiants de préemption, le premier identifiant est choisi dans une plage de premiers identifiants, la plage d'identifiants de préemption étant déterminée pour être toujours prioritaire par rapport à la plage de premiers 30 identifiants. Autrement dit, le champ 11 d'arbitrage d'une même trame de données destinée à être transmise sur un Bus CAN, peut comporter sélectivement soit le premier identifiant définissant une priorité par défaut pour l'accès au bus CAN, soit le deuxième identifiant dit de préemption correspondant à une priorité plus importante que la priorité par défaut. Le premier identifiant et l'identifiant de préemption forment une paire d'identifiants qui définit de préférence ladite trame de façon unique. Cela permet aux noeuds qui reçoivent la trame d'identifier sans ambiguïté la trame à partir de l'un quelconque de ses deux identifiants. La figure 7 donne un exemple d'attribution d'une paire d'identifiants à 1024 trames Ti, 12, 11024 susceptibles d'être transmises sur un même Bus CAN par une pluralité de noeuds. Pour chacune des trames, un identifiant de préemption est choisi dans une plage 3 d'identifiants de préemption, et un premier identifiant est choisi dans une plage 4 de premiers identifiants. La plage 3 regroupe des priorités plus élevées que les priorités regroupées dans la plage 4. De préférence, pour chaque trame, le premier identifiant et l'identifiant de préemption diffèrent sur au moins un bit de poids fort. Par exemple, pour la trame 11 représentée sur la figure 7, l'identifiant de préemption ne diffère de l'identifiant par défaut que sur la valeur du lierne bit. La figure 8 illustre de nouveau, sous forme d'une courbe C1, les temps d'accès à un Bus CAN pour une pluralité de trames, en appliquant la procédure de préemption précédemment décrite. Par comparaison avec les courbes de la figure 5, on voit que les deux points Al et A2 qui correspondaient à des trames transmises après échéance ont été remplacés par deux points A'1 et A'2 correspondant à des trames transmises avant leur échéance respective. L'étape 110 de préemption peut être également implémentée en utilisant l'espace inter-trames. Comme on l'a vu précédemment, cet espace inter-trames correspond au délai que doit respecter chaque noeud pour commencer à transmettre une trame lorsqu'une autre trame a fini d'être transmise sur le Bus. Cet espace inter-trames présente classiquement une valeur par défaut, par exemple sur trois bits, qui est commune à toutes les trames. Conformément à un deuxième mode d'implémentation du procédé selon l'invention, l'étape 110 de préemption comprend le remplacement, par le noeud, de la valeur par défaut de l'espace d'inter-trames par une valeur inférieure à la valeur par défaut. Bien entendu, ce remplacement n'est effectué que pour la trame concernée par la proximité de l'échéance. REVENDICATIONS1. Procédé de transmission de trames (Ti...TN) sur un Bus CAN (2) auquel sont connectés une pluralité de noeuds (11...1m), chaque trame apte à être transmise par l'un quelconque des noeuds de ladite pluralité de noeuds comportant un premier identifiant définissant une priorité (Pi-PN) d'accès au bus CAN (2), le procédé étant caractérisé en ce qu'il comporte les étapes suivantes, au niveau de chacun des noeuds de ladite pluralité de noeuds (11...1m) : - pour chaque trame apte à être transmise depuis ledit noeud, association d'une échéance de validité jusqu'à laquelle ladite trame peut être transmise valablement ; - tant que la trame n'a pas été transmise sur le Bus CAN (2), surveillance de ladite échéance de validité ; et - sur détection (100) de la proximité d'échéance de validité, préemption (110) d'accès au Bus pour la transmission (120) de ladite trame par le noeud. 2. Procédé de transmission selon la revendication 1, caractérisé en ce que la détection (100) de la proximité d'échéance de validité comporte une comparaison d'un instant courant (te) avec une valeur seuil (tth) fixe inférieure à ladite échéance de validité. 3. Procédé de transmission selon la revendication 2, caractérisé en ce que ladite valeur seuil (tth) fixe est fonction de ladite échéance de validité. 4. Procédé de transmission selon la revendication 3, caractérisé en ce que ladite valeur seuil (tth) fixe est un pourcentage de ladite échéance de validité. 5. Procédé de transmission selon l'une quelconque des revendications précédentes, caractérisé en ce que ledit premier identifiant de chaque trame définit une priorité (Pi...PN) par défaut pour l'accès au bus CAN(2), et en ce que l'étape (110) de préemption comprend le remplacement, dans la trame, dudit premier identifiant par un deuxième identifiant dit de préemption correspondant à une priorité plus importante que la priorité par défaut. 6. Procédé de transmission selon la revendication 5, caractérisé en ce que l'identifiant de préemption est choisi dans une plage (3) d'identifiants de préemption, en ce que le premier identifiant est choisi dans une plage (4) de premiers identifiants, et en ce que la plage (3) d'identifiants de préemption est déterminée pour être toujours prioritaire par rapport à la plage (4) de premiers identifiants. 7. Procédé de transmission selon la revendication 6, caractérisé en ce que, pour chaque trame, le premier identifiant et l'identifiant de préemption diffèrent sur au moins un bit de poids fort. 8. Procédé de transmission selon l'une quelconque des revendications 1 à 4, dans lequel chaque trame est transmise par un noeud en respectant un espace inter-trames dont la valeur par défaut est commune à toutes les trames, caractérisé en ce que l'étape (110) de préemption comprend le remplacement, par le noeud, de la valeur par défaut de l'espace inter-tram es par une valeur inférieure à la valeur par défaut. 9. Dispositif de transmission de trames (Ti..IN) sur un Bus CAN (2), chaque trame apte à être transmise comportant un premier identifiant définissant une priorité (P1..PN) d'accès au bus CAN (2), caractérisé en ce qu'il est apte : - pour chaque trame apte à être transmise, à associer une échéance de validité jusqu'à laquelle ladite trame peut être transmise valablement ; - tant que la trame n'a pas été transmise sur le Bus CAN (2), à surveiller ladite échéance de validité ; et- sur détection (100) de la proximité d'échéance de validité, à préempter (110) l'accès au Bus pour la transmission (120) de ladite tram e. 10. Trame (Ti..IN) de données apte à être transmise sur un Bus CAN (2), comportant un champ (11) d'arbitrage, caractérisée en ce que le champ (11) d'arbitrage comporte sélectivement soit un premier identifiant définissant une priorité (P1..PN) par défaut pour l'accès au bus CAN (2), soit un deuxième identifiant dit de préemption correspondant à une priorité plus importante que la priorité par défaut. 11.Trame selon la revendication 10, caractérisée en ce que le premier identifiant et l'identifiant de préemption forment une paire d'identifiants qui définit ladite trame de façon unique.