Définition des trames du réseau ZigBee

13 mar Définition des trames du réseau ZigBee

Ayant à une époque envisagé de monter un réseau CAN, et ayant très apprécié le travail de BigOnOff, je me suis fortement inspiré de sa gestion des trames.

Pour mémoire, ce blog me sert de bloc note. Cet article est donc une ébauche et susceptible d’être modifiée durant mon développement…

Structure générale d’une trame

L’adressage d’un message vers un module s’effectuant au niveau du ZigBee, nos trames se présentent ainsi :
– un champ identificateur (ID) constitué de 2 octets. l’ID permet de définir la commande.
– un champ de contrôle (CD) constitué d’1 octet. Le CD permet d’indiquer le nombre d’octet présent dans la trame.
– un champ de data (Dn) constitué de 1 à n octets de data selon la valeur indiquée dans le champ CD.

Structure générale d’un identificateur

ID : cccccccc pppppppp
contient les 8 bits « c ».  Commande : Précise la nature de la commande, ex : allumer une lampe
contient les 8 bits « p ». Paramètre complémentaire : dépend de la commande : exemple, lampe n°5

Les commandes communes

La mise en place de commande commune et de commande spécifique permettra la gestion de différent module : Gestion aquarium, gestion piscine, gestion arrosage jardin, etc…
ID : 00000000 pppppppp
avec
00000000 : 0 = commande commune
pppppppp : paramètre qui représente la nature de la commande. Ex : passer en bootloader

Les commandes d’erreur

ID : 11111111 pppppppp
avec
11111111 : 0 = commande commune
pppppppp : paramètre qui représente la nature de la commande. Ex : passer en bootloader

La trame d’erreur est toujours accompagnée de 2 octets de data, pour lesquels le rôle est fixe :
D0 : N° de commande qui a provoqué l’erreur
D1 : paramètre qui a provoqué l’erreur

Une trame d’erreur aura donc cette forme
ID : 00000000 00001101 -> erreur n°13
CD : 02 -> le message contient 2 octets de data
D0 : 12 -> sur le numéro de commande 12
D1 : 50 -> le paramètre ayant provoqué l’erreur valait 50
Il est alors possible d’interpréter l’erreur ainsi : La commande n° 0x12 avec le paramètre 0x50 a renvoyé une erreur n°13.

Be Sociable, Share!
No Comments

Post A Comment