BACnet découvre les appareils en diffusant une question et en écoutant les réponses. Un client envoie Who-Is ; chaque appareil correspondant répond par I-Am, qui permet de connaître son instance et son adresse. Pour que cela fonctionne, chaque appareil doit avoir une instance unique, chaque réseau un numéro unique et la diffusion doit atteindre le réseau où se trouve l’appareil. La plupart des problèmes de découverte viennent d’une de ces trois conditions non remplies.
Ce guide fait partie de la série BACnet et protocoles du bâtiment.
Trois identifiants
| Identifiant | Définition | Portée | Exemple |
|---|---|---|---|
| Instance d’appareil | Numéro d’instance de l’objet Device, de 0 à 4 194 302 | Unique sur tout le site | 20102 |
| Numéro de réseau | Numéro d’un réseau BACnet, de 1 à 65 534 | Unique sur tout le site | 12 |
| Adresse sur le réseau | Adresse IP et port UDP en BACnet/IP, ou adresse MAC de 0 à 254 en MS/TP | Unique sur ce réseau | 10.20.4.31:47808, ou MAC 7 |
L’instance d’appareil est l’identifiant stable. Les clients découvrent un appareil par son instance, puis mémorisent son adresse. S’il change d’adresse IP, une nouvelle découverte permet de le retrouver sous la même instance.
Le document d’introduction du comité BACnet précise la règle : le numéro d’instance de l’objet Device doit être unique dans tout l’interréseau BACnet. Les identifiants d’objet au sein de l’appareil, par exemple analog-input 3, doivent être uniques seulement dans cet appareil.
Fonctionnement de Who-Is et I-Am
- Le client diffuse Who-Is. Il peut interroger tous les appareils ou seulement ceux d’une plage d’instances.
- Chaque appareil correspondant diffuse I-Am. La réponse indique son instance, la taille maximale de message acceptée, sa capacité de segmentation et son identifiant de fabricant.
- Le client relève l’adresse source de la réponse I-Am et l’associe à l’instance d’appareil.
- Il lit ensuite l’objet Device, généralement sa propriété Object_List, pour trouver les autres objets.
Les services associés Who-Has et I-Have permettent de trouver un appareil à partir du nom ou de l’identifiant d’un objet qu’il contient.
Certains appareils ne peuvent pas participer directement. L’article de Karg sur MS/TP explique qu’un appareil esclave MS/TP ne détient jamais le jeton et ne peut donc pas répondre lui-même à Who-Is. Un routeur ou un proxy d’esclave répond pour lui ; sinon, le client peut lui associer statiquement une adresse configurée. Le guide BACnet/IP et MS/TP explique le passage du jeton et les appareils esclaves.
Pourquoi un appareil n’apparaît pas
| Symptôme | Cause probable |
|---|---|
| Les appareils du sous-réseau local apparaissent, pas les autres | Les diffusions s’arrêtent aux routeurs IP ; le site a besoin de BBMD ou de l’enregistrement comme appareil étranger |
| Aucun appareil n’apparaît | Un pare-feu bloque UDP 47808, le client écoute la mauvaise interface réseau ou utilise un autre port UDP |
| Un appareil manque | Son instance est hors de la plage Who-Is ; il se trouve sur un bus MS/TP derrière un routeur dont le numéro de réseau est erroné ; ou il est esclave MS/TP |
| Un appareil apparaît puis disparaît, ou les valeurs passent d’une installation à une autre | Deux appareils utilisent la même instance |
| Les appareils derrière deux routeurs sont confondus | Deux réseaux utilisent le même numéro de réseau |
| La découverte fonctionne, mais les lectures expirent | L’appareil répond aux diffusions mais pas aux messages directs : NAT, règle de pare-feu ou message trop grand pour lui |
Le guide du routage et des BBMD explique comment les diffusions traversent les sous-réseaux.
Ping, découverte et lecture prouvent des choses différentes
Testez dans cet ordre et consignez chaque résultat :
| Test | Ce qu’un succès prouve |
|---|---|
| Envoyer un ping à l’adresse IP | L’interface réseau de l’appareil est accessible. ICMP peut être bloqué ; un échec prouve donc peu de choses |
| Échanger Who-Is et I-Am | L’appareil exécute BACnet sur ce réseau et possède l’instance attendue |
| Lire la propriété Present_Value d’un objet | Le client peut adresser directement l’appareil et l’objet existe |
| Vérifier l’actualisation des valeurs dans le temps | L’interrogation ou les notifications COV continuent, avec un horodatage récent pour chaque point |
La réussite d’une étape ne prouve pas la suivante. Un appareil qui répond au ping peut avoir BACnet désactivé. Un appareil qui répond à Who-Is peut refuser une requête ReadPropertyMultiple qu’il ne prend pas en charge.
Avant de connecter un nouveau client
Convenez des points suivants avec le responsable du système de gestion du bâtiment (BMS) :
- le port UDP et le sous-réseau IP de chaque réseau BACnet/IP ;
- les numéros de réseau déjà utilisés et le plan des instances d’appareil ;
- la présence et l’emplacement des BBMD, et l’autorisation éventuelle d’enregistrer le nouveau client auprès de l’un d’eux ;
- l’heure de la découverte sur un grand site, car un Who-Is global déclenche une rafale de réponses I-Am.
Découverte avec Edge
Edge sur le Gateway ZGW-20 est un client BACnet/IP utilisant par défaut le port UDP 47808. Il découvre les appareils par diffusion sur son réseau local et les identifie par leur instance. Son test de connexion est un ping. La découverte, la lecture d’un point et la progression régulière de son horodatage sont les étapes suivantes de la vérification décrite plus haut. Pour les contrôleurs d’autres sous-réseaux, le réseau BACnet du site doit assurer la gestion des diffusions ou le routage.
Questions fréquentes
Qu’est-ce qu’une instance d’appareil BACnet ?
C’est le numéro de l’identifiant de l’objet Device, compris entre 0 et 4 194 302. Il doit être unique dans tout l’interréseau BACnet du site, car les clients utilisent ce numéro pour trouver l’appareil et lui associer une adresse.
À quoi servent Who-Is et I-Am en BACnet ?
Who-Is est une diffusion qui demande aux appareils de s’identifier, éventuellement dans une plage d’instances donnée. Chaque appareil correspondant répond par I-Am, qui indique son instance, la taille maximale des messages, la prise en charge de la segmentation et son identifiant de fabricant. Le client déduit l’adresse de l’appareil de la réponse.
Pourquoi ne puis-je pas découvrir un appareil BACnet ?
Causes courantes : appareil sur un autre sous-réseau IP sans BBMD, pare-feu bloquant le port UDP 47808, instance hors de la plage Who-Is, instance en double, esclave MS/TP incapable de répondre aux diffusions ou client lié à la mauvaise interface réseau.
Qu’est-ce qu’un numéro de réseau BACnet ?
Un numéro de 1 à 65 534 qui désigne un réseau BACnet du site, par exemple un sous-réseau IP utilisé pour BACnet ou un bus MS/TP. Les routeurs s’en servent pour acheminer les messages. Chaque réseau du site doit avoir un numéro distinct.