NMEA 2000

Quelques éléments pour interpréter sur un PC les données transmises suivant cette norme...

NMEA 2000

Ce standard de communication entre appareils électroniques utilise un réseau CAN (Controller Area Network) défini par la norme ISO 11898 (automobile). Les configurations logique et physique sont un bus linéaire avec branchement en T des divers équipements identifiés par leur adresse de 0 à 251.

Les messages appelés PGN (Parameter group number) ne sont plus en mode texte comme dans la 0183 mais transmis dans une suite d'octets à décoder.

Branchement du PC

Le PC n'est plus qu'un élément du réseau parmi d'autres, il s'insère par un adaptateur NMEA 2000 / USB.
On trouvera sur le web une offre assez riche de matériels soit spécifiques marine, soit industriels (mais utilisables en marine à la connectique près), fournis avec leur driver (l'émulation d'un port COMx rend plus facile l'exploitation sur le PC), des kits de développement et des logiciels de visualisation (sous MS Windows, moins sous Linux).
Certains adaptateurs marine effectuent la traduction en NMEA 0183, mais les nouveaux paramètres de la 2000 (par ex. moteurs) ne sont évidemment pas traduits.

Format des trames

Il reprend la norme SAE J1939 (ISO 11783) complétée par le protocole spécifique NMEA 2000. Chaque trame démarre par un bit de début de transmission (SOF) suivi d'un en-tête composé d'un champ d'identification au format étendu CAN 2.0B et d'un champ de contrôle (DLC, indique le nombre d'octets de données, toujours 8 pour NMEA 2000), des données, et enfin des champs de vérification par redondance cyclique (CRC), d'acquittement (ACK) et de fin de trame (EOF) :

 <-- 29 + 3 bits identifiants --><ctl ><-/  8 octets données  /-><----- CRC ----><><-EOF->
SaaaRDbbbbbbSIbbccccccccddddddddRrrDLC                           eeeeeeeeeeeeeeeeA fffffff
O    P      RD                  T10                                              C
F           RE                  R                                                K 

Ne sont transmis par l'adaptateur que l'identification et les données décrites ci-dessous ; les bits spéciaux restent au niveau gestion du réseau.

Identification

Suivant l'adaptateur elle est transmise en clair, précédée d'un timestamp, ou simplement sur 4 octets (Airmar™ : marine, Peak-System™ : industriel, d'après leurs documentations) :

76543210765432107654321076543210
   aaaRDbbbbbbbbccccccccdddddddd
       P 

- aaa : priorité du message sur 3 bits, de 0 la plus haute à 7 la plus basse ;
- R : bit en réserve ;
- Dbbbbbbbbcccccccc : PGN sur 1 bit et 2 octets dans l'ordre poids fort -> poids faible,
- si bbbbbbbb est inférieur à 240 le PGN est sur 1 bit et 1 octet, cccccccc est l'adresse d'un appareil destinataire particulier
   (sinon 255 : tous destinataires) ;
- dddddddd : adresse de l'émetteur.
- Ex. (hexadécimal) : 0D F0 10 23 --> priorité 3, PGN 126992, source 35, destinataire 255.

Données

Si moins de 8 octets sont nécessaires le champ est complété par des 0xFF (hexadécimal), si plus (jusqu'à 223 octets) les données seront transmises en plusieurs trames (multi-paquet).
L'interprétation est particulière à chaque PGN, par exemple le 126992 (System time) :

B7 F0 13 3A 20 66 4E 1C 

- le premier octet est un numéro de séquence pour identifier des PGNs émis simultanément ;
- les quatre premiers bits du deuxième la source (0 = GPS, 1 = GLONASS, etc...) ;
- les deux octets suivants la date, dans l'ordre octets de poids faible -> poids fort, ici :

(19 x 1) + (58 x 256) = 14 867 jours 

   écoulés depuis le 1er janvier 1970, soit le 15/09/2010 ;
- et les quatre derniers l'heure, toujours dans l'ordre poids faible -> poids fort :

(32 x 1) + (102 x 256) + (79 x 2562) + (28 x 2563) = 47 490 x 104 dix millièmes de secondes 

   écoulés depuis minuit, soit 13:11:30. Rien de bien compliqué, mais cela ne s'invente pas !

Le format des paramètres est normalisé dans un dictionnaire de données CAN (J1939-71). Ils sont repris tels quels par la NMEA 2000, par ex. les angles en radians, la vitesse en mètres/seconde... qu'il faudra convertir en degrés, en noeuds... ; ont été ajoutés ceux spécifiques au domaine maritime. Ceci explique le degré de précision (nombre de décimales) parfois superflu ou même illusoire pour les applications nautiques.

La liste des PGNs est fournie sur le site de la NMEA.

© G. Navarre, 2013. Màj 8/07/2023.

retour chez Sam