
Décodage série FlexRay
Le but de ce test est d’afficher et d’évaluer les messages (paquets) du bus de données transportés sur le réseau FlexRay.
Comment effectuer le test
Localisez un point accessible le long du réseau FlexRay à l’aide du schéma de câblage du fabricant.
Connectez un cordon de test atténué x10 – TA506 – au canal A du PicoScope et au bus FlexRay plus, et son cordon de masse à la borne négative de la batterie ou à une bonne masse du châssis.
Connectez un cordon de test atténué x10 – TA506 – au canal B du PicoScope et au bus FlexRay négatif, et son cordon de masse à la borne négative de la batterie ou à une bonne masse du châssis.
Mettez le contact et/ou démarrez le moteur.
- Démarrez l’oscilloscope.
- Mettez le contact et/ou démarrez le moteur.
- Avec vos formes d’onde à l’écran, arrêtez l’oscilloscope.
- Utilisez les outils Tampon de forme d’onde, Zoom et Mesures pour examiner votre forme d’onde.
- Double-cliquez sur une ligne du tableau Décodage série pour zoomer sur la forme d’onde spécifique d’un message dans PicoScope.
Exemple de forme d’onde

Conseils supplémentaires

La conception des véhicules modernes intègre désormais une liste toujours plus longue de fonctionnalités liées à la conduite, à la sécurité et à l’interconnectivité, qui ont imposé des exigences considérables aux réseaux automobiles classiques (par exemple, le CAN).
En conséquence, un consortium de constructeurs automobiles a développé un protocole sur mesure capable de gérer le transfert de données requis entre les calculateurs à grande vitesse (10 Mbit/s) de manière combinée, déterministe et événementielle ; ce protocole est appelé FlexRay.
Les origines du développement de FlexRay remontent à la fin des années 90, mais les premiers véhicules de série équipés de FlexRay n’ont été commercialisés qu’en 2006. Tous les autres membres du consortium ont suivi le mouvement, faisant de FlexRay le réseau haut débit de choix pour des millions de véhicules de plusieurs marques prestigieuses.
Outre les propriétés inhérentes de FlexRay en termes de vitesse et de bande passante, le principe qui garantit la transmission (sans latence) de données critiques et volumineuses est appelé « accès multiple par répartition dans le temps » (TDMA). Grâce à la synchronisation ultra-précise de chaque ECU sur un réseau FlexRay, le protocole est conçu pour utiliser des créneaux horaires « statiques » réservés, attribués à des ECU et des messages spécifiques qui peuvent accéder au bus de manière cyclique pour un trafic « déterministe » programmé.
En revanche, l’« accès multiple par répartition dans le temps flexible » (FTDMA) utilise des intervalles de temps « dynamiques » (divisés en mini-intervalles) attribués à l’ECU concerné qui souhaite transmettre des messages non planifiés (c’est-à-dire déclenchés par un événement) sans affecter les données déterministes, garantissant ainsi une transmission réussie sans délai, quelle que soit la charge du bus.
Si les propriétés de FlexRay répondent aux exigences des véhicules modernes, son coût est plus élevé. C’est pourquoi FlexRay n’est utilisé que lorsque cela est nécessaire (c’est-à-dire pour les systèmes critiques pour la sécurité et les composants drive-by-wire), tout en complétant les protocoles de réseau embarqués existants tels que CAN et LIN.
La construction physique d’un réseau FlexRay est similaire à celle du CAN, où une paire de câbles torsadés non blindés (utilisant une signalisation différentielle) est utilisée pour connecter les ECU entre eux. Des résistances de terminaison sont également utilisées à chaque extrémité du réseau entre les câbles Bus Plus (BP) et Bus Minus (BM) afin d’adapter l’impédance du câblage FlexRay et d’éviter les réflexions de signaux.
La valeur typique des résistances de terminaison FlexRay varie entre 80 et 110 Ω, l’impédance totale du réseau mesurée entre BP et BM étant respectivement de 40 et 55 Ω. En général, on attend 4 niveaux de tension sur un bus FlexRay :
- Bus inactif, mode basse consommation : BP et BM = 0 V (tension différentielle = BP 0 V – BM 0 V = 0 V)
- Bus inactif : BP et BM = 2,5 V (tension différentielle = BP 2,5 V – BM 2,5 V = 0 V)
Remarque : lorsque le bus est en mode veille, il est considéré comme étant dans un état « récessif ».
- Données 1 : BP 3,5 V, BM 1,5 V (tension différentielle = BP 3,5 V – BM 1,5 V = 2 V)
- Données 0 : BP 1,5 V, BM 3,5 V (tension différentielle = BP 1,5 V – BM 3,5 V = – 2 V)
Remarque : lorsque le bus transmet la donnée 1 ou 0, il est considéré comme étant dans l’état « dominant ».
Outre les niveaux de tension typiques ci-dessus, il faut également tenir compte de l’intervalle de temps entre une impulsion de tension unique du bus inactif et la donnée 1 ou 0 qui désigne un bit unique. Étant donné que le débit en bauds de notre réseau FlexRay est de 10 Mbit/s, nous pouvons utiliser la valeur réciproque pour trouver l’intervalle de temps minimum qui représentera 1 bit : 1 / 10 000 000 = 0,0000001 s ou 100 ns.
Remarque : un intervalle de temps de 100 ns (1 bit) équivaut à une valeur de fréquence de 10 MHz.
Sur la base du bref résumé ci-dessus, nous allons maintenant examiner comment un paquet FlexRay est formé et décomposer chaque section en ses fonctions respectives.
Figure 1. points 1, 2 et 3 (paquet FlexRay)
Un paquet FlexRay peut être divisé en 3 segments principaux :
- En-tête, qui est divisé en plusieurs sections :
- Bits réservés et indicateurs
- ID de trame – Longueur de la charge utile – CRC d’en-tête – Nombre de cycles
- Charge utile, 0 à 254 octets peuvent être transmis dans un paquet FlexRay
- Trailer, qui comprend la séquence de contrôle de redondance cyclique (CRC)

Figure 2. point A (séquence de début de transmission [TSS], séquence de début de trame [FSS] et séquence de début d’octet [BSS])
La TSS est requise pour les topologies FlexRay utilisant une configuration « Active Star » ; la TSS limite les éventuelles erreurs de synchronisation générées par la configuration d’entrée/sortie Active Star tout en empêchant la troncature du contenu des messages, inhérente au processus de configuration.
La FSS est utilisée pour permettre tout retard dans l’interprétation du premier octet après la TSS. Des retards peuvent se produire en raison d’erreurs minimes introduites lors de la conversion des impulsions de tension en données numérisées dans l’ECU.
Le BSS est utilisé dans tout le paquet FlexRay avant chaque octet transmis (tous les 8 bits) comme une forme de synchronisation temporelle pour les calculateurs de réception. Le BSS se compose de 2 bits, un bas et un haut, avec un intervalle de temps de 200 ns.

Figure 3. point 1 (En-tête complet)
Comme mentionné précédemment, l’en-tête est divisé en 5 sections :
Figure 3. point B (bits réservés et indicateurs)
5 bits sont utilisés pour compléter les champs réservés et indicateurs qui servent à fournir une description précise du contenu de notre paquet FlexRay.
De gauche à droite du point B, nous avons :
- Bit réservé (1 bit) défini sur 0 logique et réservé pour une utilisation future du protocole (c’est-à-dire non utilisé actuellement).
- Préambule de charge utile (1 bit) indiquant la présence de données de gestion de réseau au début de la charge utile (si transmises dans le segment statique d’un paquet) ou d’un identifiant de message si transmises dans le segment dynamique (indiqué par la valeur logique 1).
Une valeur logique 0 indique donc que le paquet ne contient pas de données de gestion de réseau ni d’identifiant de message dans leurs segments respectifs.
– L’indicateur de trame nulle (1 bit) informe le réseau si la trame contient des données utilisables dans la section de charge utile d’un paquet FlexRay. Lorsqu’il est réglé sur 0 logique, la charge utile ne contient aucune donnée valide, lorsqu’il est réglé sur 1 logique, la charge utile contient suffisamment de données. – L’indicateur de trame de synchronisation (1 bit) indique si un paquet est utilisé pour la synchronisation de la communication à l’échelle du réseau. – L’indicateur de trame de démarrage est utilisé pour indiquer que le paquet est bien un paquet de « démarrage » qui sert à réveiller les calculateurs du réseau en conséquence.
Remarque : seuls les calculateurs désignés pour le « démarrage à froid » peuvent transmettre des paquets de démarrage, où la valeur logique 0 indique que le paquet n’est pas un paquet de démarrage et la valeur logique 1 indique que le paquet doit être utilisé pour le démarrage.
Figure 3. Point C (ID de trame) L’ID de trame a une longueur de 11 bits (1,3 µs – 200 ns [BSS] = 1,1 µs) et est transmis par un calculateur afin de définir le créneau temporel alloué dans le segment statique d’un paquet ou la priorité du message dans le segment dynamique. (Plus l’ID de trame dans le segment dynamique est faible, plus la priorité est élevée).
Figure 3. Point D (longueur de charge utile 7 bits) La longueur de charge utile indique le nombre d’octets dans le champ de charge utile uniquement. La valeur est codée en utilisant le nombre réel d’octets contenus dans le champ de charge utile divisé par deux. Ainsi, le paquet 282 de la figure 3 a une longueur de charge utile de 3 pour une charge utile contenant 6 octets.
Figure 3. point E (CRC d’en-tête 11 bits) Le CRC d’en-tête couvre les valeurs du champ d’en-tête, assurant la vérification des données et la détection des erreurs. Sur la base du contenu de l’indicateur de trame de synchronisation, de l’indicateur de trame de démarrage, de l’ID de trame et de la longueur de la charge utile, l’ECU récepteur calcule le CRC à l’aide d’un algorithme défini par la spécification FlexRay. Si les valeurs CRC ne peuvent être calculées, une erreur est détectée et gérée en conséquence.
Figure 3. point F (nombre de cycles 6 bits) Le nombre de cycles indique l’interprétation par l’ECU émetteur du cycle de communication actuel. L’ECU émetteur est chargé de maintenir le nombre de cycles jusqu’à un maximum de 63, après quoi le compteur revient à 0 et le comptage recommence.

Figure 4. point 2 (charge utile 0 – 254 octets)
Le segment de charge utile intègre une combinaison potentielle de données statiques (déterministes) et de données dynamiques (générées par des événements), les données déterministes étant prédominantes. En outre, les 0 à 12 premiers octets du segment statique de la charge utile peuvent être utilisés comme « vecteur de gestion du réseau », ce qui garantit une bonne gestion du réseau et des données internes.
Afin de déterminer si le champ de charge utile comprend des données dynamiques/de « gestion interne », reportez-vous à la figure 3. Point B section ii) « Préambule de charge utile », qui est défini sur Logique 1 dans un tel scénario.
En divisant le segment de charge utile en intervalles de temps discrets pour les données statiques, accompagnés d’intervalles de temps supplémentaires (subdivisés en « mini-intervalles ») pour les données dynamiques, chaque ECU du réseau FlexRay connaîtra l’intervalle de temps précis pour transmettre l’un ou l’autre type de données, évitant ainsi les collisions et les perturbations du trafic sur le bus.
Remarque : le segment de charge utile ne contiendra qu’un nombre pair d’octets, chaque octet de données étant numéroté et nommé en utilisant « Données 0 » pour le premier octet (après l’« en-tête ») et en augmentant numériquement par la suite (c’est-à-dire Données 1, Données 2, etc.).
Segment statique Les octets de données du segment statique contiennent en fin de compte les informations programmées (de longueur fixe) requises par les ECU connectés (par exemple, les données de paramètres), qui doivent à leur tour être converties dans les unités correctes avec les valeurs d’échelle et de décalage appropriées. Ces définitions de conversion restent des informations exclusives détenues par le constructeur automobile, dont l’accès est limité et nécessite une licence appropriée.
Remarque : l’accès au bus dans le segment statique se fait par « accès multiple par répartition dans le temps » (AMRT) et n’est autorisé que pendant le temps alloué dans un cycle de communication.
Segment dynamique Le segment dynamique gère le trafic événementiel de longueurs variables (jusqu’à 254 octets) sur une base similaire à la méthode d’arbitrage utilisée dans le CAN. L’accès à ces messages se fait à nouveau via des intervalles de temps et des mini-intervalles réservés aux calculateurs, le message ayant la priorité la plus élevée étant autorisé à accéder au bus et les messages ayant une priorité moindre attendant le prochain intervalle de temps attribué au calculateur « en attente ».
Remarque : l’accès au bus dans le segment dynamique se fait via l’« accès multiple par répartition flexible du temps » (FTDMA) et n’est autorisé que sur la base de la priorité dans un cycle de communication.
Figure 4. point 3 (Trailer 24 bits)
Le segment de fin intègre la séquence de contrôle de redondance cyclique (CRC) calculée sur l’ensemble du paquet, permettant la vérification des données et la détection des erreurs. En fonction du contenu du paquet, l’ECU récepteur calcule le CRC à l’aide d’un algorithme défini par la spécification FlexRay et compare la valeur obtenue au CRC transmis. Si les valeurs CRC ne peuvent être calculées, une erreur est détectée et gérée en conséquence.

Figure 5, point 4 (Séquence de fin de trame FES 2 bits)
La FES désigne l’octet final d’un paquet de données statiques et se compose de 2 bits, un bas et un haut, avec un intervalle de temps de 200 ns. En plus de la séquence de fin de trame, une séquence de fin dynamique (DTS) suit la FES lorsque le paquet contient des données dynamiques. La durée de la DTS est variable et se compose de deux parties, une période de longueur variable à niveau bas et une période fixe à niveau haut. La durée minimale possible de la DTS est de 200 ns, composée d’un bit bas et d’un bit haut.
Remarque : l’absence de DTS indique que le paquet ne contient que des données statiques.


