Les différentes participants du réseau communiquent entre-eux par l'intermédiaire de petits datagrammes qui doivent respecter une structure et un timming précis.
cliquez sur l'image pour télecahrger la version PDF
La vitesse de communication sur le réseau ProgHardNet est de 4800 bps, 8 bits de données, pas de parité, 2 bits de stop. Le bit de poids faible (LSB) est envoyé en premier. Le délai maximum entre 2 octets d'un même datagramme est de 5ms maximum. En cas de dépassement le datagramme est considéré comme invalide.
Le protocole gère le partage de l'accès physique au réseau par l'utilisation d'une méthode s'inspirant du protocole CSMA/CD simplifiée.
Chronologie et structure d'un datagramme ProgHardNet.
1. Etat d'attente : C'est l'état de repos du bus en absence de communication. Tous les participants du bus placent les sorties de leur "buffer" de communication à haute impédance (état Z). le potentiel électrique des lignes A et B est fixé par les résitances de tirage mises en place sur le réseau. (voir la page : Installation des modules ProgHardNet sur le BUS domotique). Une attente à l'état de repos entre datagrammes de 10 ms minimum est obligatoire.
2. Préambule : Un participant qui doit émettre écoute d'abord si le bus est au repos depuis un délai supérieur ou égal à 10ms. Si c'est le cas il émet un préambule.C'est un état 0 d'une durée de 10ms minimum.
3. Extension de préambule aléaotoire : Si plusieurs participants tentent d'émettre sur le bus au même instant, cela provoquera des collisions de données. Afin d'éviter les prises de possession du bus par plusieurs participants, la durée du préambule de 10ms est prolongée d'un délai variable aléatoire allant de 0 à 2ms. Le participant qui imposera le préambule le plus long prendra la main sur le bus de communication. L'autre ou les autres cèderont la main.
4. Contrôle de prise de main : A la fin d'un préambule, le participant qui veut communiquer libère le bus pendant 10µs en placant les sorties de son "buffer" de communication à l'état haute impédance. Si aucun autre transmetteur n'est occupé à émettre un préambule de plus longue durée, les résistances de tirage portent le potentiel des lignes de communication à leur état de repos respectif. A cet instant le participant vérifie l'état présent sur le bus. Si l'état est haut (1) le bus est libre et la main est prise. Si par contre le niveau est bas (0) la main est cédée.
5. Stabilisation du bus : Un niveau haut de 600 µs est imposé sur le bus avant de transmettre les données.
6. DataLen : Premier octet du datagramme, il informe sur la longueur du packet. c-à-d le nombre d'octets qui suivent de celui-ci excepté le dernier (checkum)
7. MsgType : Identifiant du type de datagramme. (voir tableau çi-dessous)
8. DATA : Ensemble de données de structure variable propre au type de datagramme. Il est contitué de plusieurs octets.
9. CheckSum : Somme de contrôle modulo 256 en complément à 2 (négatif) de tous les octets précédents du datagramme. y compris l'octet "DataLen".
Tableaux des datagrammes PrgHardNet