En bref
BACnet (Building Automation and Control networks) est le protocole ouvert de référence de la GTB. Il est normalisé par l'ASHRAE (norme 135) et par l'ISO (ISO 16484-5). Il décrit ce que les équipements échangent (objets, propriétés, services) indépendamment du support physique.
Le modèle objet
Chaque équipement BACnet est vu comme un ensemble d'objets, chacun ayant des propriétés.
| Objet | Usage typique |
|---|---|
| Device | L'équipement lui-même (une seule instance par équipement) |
| Analog Input / Output / Value (AI, AO, AV) | Mesures, commandes analogiques, consignes |
| Binary Input / Output / Value (BI, BO, BV) | États, commandes TOR, autorisations |
| Multi-state Input / Output / Value | Modes, vitesses, saisons |
| Schedule, Calendar | Programmes horaires, jours fériés |
| Trend Log | Historiques |
| Notification Class | Destinataires et priorités des alarmes |
| Loop | Boucle de régulation |
Propriétés à connaître : Present_Value, Status_Flags (in-alarm, fault, overridden, out-of-service), Out_Of_Service, Units, Priority_Array et Relinquish_Default pour les objets commandables, COV_Increment pour les analogiques.
Identifiants et adressage
- Un objet est identifié par son type et son instance (ex. AI:12).
- L'instance de l'objet Device doit être unique sur tout l'interréseau BACnet : c'est l'erreur de mise en service la plus fréquente. Plage utilisable : 0 à 4 194 302.
- Chaque réseau BACnet (IP, MS/TP…) porte un numéro de réseau unique ; les routeurs BACnet relient ces réseaux.
Les supports (couches liaison)
- BACnet/IP : UDP, port standard 47808 (0xBAC0). Les découvertes (Who-Is) sont des diffusions : elles ne traversent pas les routeurs IP sans BBMD ou enregistrement en Foreign Device.
- BACnet MS/TP : bus RS-485 à passage de jeton (voir la fiche dédiée).
- BACnet/SC (Secure Connect) : transport chiffré (TLS sur WebSocket) avec certificats, pensé pour la cybersécurité.
Les services clés
- Who-Is / I-Am : découverte des équipements.
- ReadProperty / ReadPropertyMultiple : lecture (préférez le « Multiple », plus efficace).
- WriteProperty : écriture, avec une priorité pour les objets commandables.
- SubscribeCOV : abonnement aux changements de valeur, moins de trafic que la scrutation.
- Event / Alarm notification et AcknowledgeAlarm : gestion des alarmes.
Le Priority Array
Un objet commandable possède 16 niveaux de priorité. La valeur présente est celle de la priorité active la plus forte (1 = la plus forte) ; si toutes sont vides (NULL), c'est Relinquish_Default qui s'applique. Priorités nommées par la norme : 1 Manual-Life Safety, 2 Automatic-Life Safety, 5 Critical Equipment Control, 6 Minimum On/Off, 8 Manual Operator. Un forçage oublié en priorité 8 bloque la régulation (priorité 16 en général) : c'est une cause classique de « l'automate ne commande plus ».
👉 Testez-le dans le Laboratoire des protocoles.
Interopérabilité : PICS et BTL
- Le PICS (Protocol Implementation Conformance Statement) liste les objets, services et supports gérés par un produit : demandez-le au fabricant avant de concevoir l'intégration.
- Le label BTL atteste de tests de conformité.
- Profils usuels : B-OWS (poste opérateur), B-BC (contrôleur de bâtiment), B-AAC / B-ASC (contrôleurs applicatifs), B-SA (actionneur), B-SS (capteur).
Pannes courantes
- Équipement invisible : instance Device en double, mauvais numéro de réseau, Who-Is bloqué par un routeur IP (BBMD absent), pare-feu sur UDP 47808.
- Valeurs figées : objet Out_Of_Service, forçage dans le Priority Array.
- Réseau lent : scrutation trop rapide au lieu du COV, ReadProperty au lieu de ReadPropertyMultiple.
Fiche de synthèse : pour les valeurs propres à un produit, référez-vous toujours à sa documentation officielle et aux textes en vigueur.