Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. Cet article ne cite pas suffisamment ses sources (octobre 2010). Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ». En pratique : Quelles sources sont attendues ? Comment ajouter mes sources ?

Le BACnet est un protocole spécifié par l'organisation ASHRAE (association de constructeurs et d'utilisateurs dans le domaine du chauffage, de la ventilation et de la climatisation (CVC ou HVAC)).

La spécification de ce protocole est devenue un standard international normalisé par l'ANSI[1] et l'ISO.

Description

La spécification BACnet intègre plusieurs aspects indépendants les uns des autres :

Un réseau BACnet et une application de supervision sont tous deux des systèmes intégralement orientés objet. Du fait de cette logique objet intrinsèque, il est alors possible de les intégrer (les faire communiquer) nativement, sans passer par une conversion entre les objets BACnet et des variables de supervision.

Architecture réseau de BACnet

L'architecture réseau du protocole BACnet peut être mise en relation avec le modèle d'architecture OSI (Open System Interconnection) de l'ISO. Il s'agit cependant d'une architecture simplifiée qui fait référence uniquement aux couches : physique, liaison, réseau, application.

Les couches : transport, session et présentation ne sont pas utilisées dans le cas présent.

Les couches réseau et application font l'objet de spécifications propres au protocole BACnet. Les couches : physique et liaison font référence à des spécifications existantes indépendantes de BACnet :

Couches BACnet Equivalent OSI

Couche application BACnet

Couche application

Couche réseau BACnet

Couche réseau

LLC:IEEE 802.2

MS/TP

PTP

LonTalk

BVLC

BVLC

Couche liaison

Ethernet:IEEE 802.3

ARCNET

EIA-485

EIA-232

UDP/IP

Websocket

Couche physique

Topologies des réseaux

Un système BACnet est constitué d'un ensemble d'appareils interconnectés. Cette interconnexion s'appuie sur plusieurs concepts :

Le segment BACnet

Un segment BACnet est constitué d'un ensemble d'équipements (devices) connectés sur un ou plusieurs segments physiques (reliés par des répéteurs) de même nature. Un segment BACnet est homogène du point de vue de la couche physique.

Le réseau BACnet

Un réseau BACnet est constitué d'un ensemble de segments interconnectés par des ponts. Les devices d'un réseau BACnet sont homogènes du point de vue de la couche liaison.

L'inter-réseau BACnet

L'inter-réseau BACnet est constitué d'un ensemble de réseaux BACnet interconnectés par des routeurs. Les technologies réseau (couche liaison et couche physique) peuvent être différentes pour chacun des réseaux BACnet.

Adressage BACnet

Le protocole BACnet fait appel à plusieurs mécanismes pour l'adressage des devices BACnet en fonction de la couche à laquelle on s'intéresse :

Pour la couche physique, l'adressage des devices n'est pas spécifique à BACnet et se fait en fonction de la technologie utilisée. Cette adresse est identifiée (vu de la couche réseau) comme la MAC address. Pour la technologie IP par exemple il s'agit de l'ensemble port UDP + adresse IP.

Pour la couche réseau, l'adressage des devices fait appel à l'ensemble numéro de réseau + MAC address. Tous les devices d'un même réseau BACnet doivent appartenir au même domaine (ou espace) d'adressage. Si un système BACnet comporte des devices de même technologie (par exemple BACnet IP) mais répartis dans des domaines d'adressage distincts (par exemple 192.168.10.X et 192.168.20.X), ils doivent alors être répartis dans plusieurs réseaux BACnet comportant un numéro de réseau distinct pour former un inter-réseau BACnet.

Pour la couche application, l'adressage des devices s'appuie sur le mécanisme général d'adressage des objets BACnet (le device est représenté sur le réseau au travers d'un objet BACnet). L'adressage d'un objet BACnet fait appel à l'ensemble type d'objet + numéro d'instance. Cette adresse est référencée sous le nom BACnetObjectIdentifier.

Des règles unicité doivent être respectées pour permettre un adressage non ambigu des objets (et donc des devices) :

Utilisation sur réseau IP

Les travaux de spécifications du protocole BACnet ont débuté en 1987 à une époque où la technologie IP n'était pas encore la technologie réseau universelle (au moins dans la majorité des domaines) qu'elle est devenue à ce jour.

L'intégration de cette technologie dans les spécifications du protocole BACnet a fait l'objet d'une annexe (annexe J) qui précise les conditions de son utilisation pour ce protocole. L'utilisation du protocole BACnet sur IP est généralement mentionnée sous l'appellation BACnet/IP.

Le choix du protocole IP utilisé pour BACnet s'est porté sur UDP. Le choix de ce protocole, sans garantie d'acheminement, est basé sur le fait que la messagerie BACnet intègre elle-même les mécanismes de garantie d'acheminement (timeout d'acquittement de réception et tentatives multiples).

Un problème propre au protocole BACnet est posé pour son utilisation sur des réseaux IP publics ou d'entreprise. Ce problème est lié à l'utilisation du principe de broadcast inhérent à certains services du protocole BACnet. Les messages broadcast étant généralement filtrés par les équipements des réseaux non strictement locaux, une réponse spécifique a été apportée à ce problème. Cette réponse est basée sur la notion de BBMD (BACnet/IP Broadcast Management Device).

La notion de BBMD correspond à une fonction de propagation dirigée des messages broadcast. Une fonction BBMD doit être présente sur chacun des segments de réseau qui doit être relié à un autre segment au travers d'un dispositif qui filtre les messages broadcast. Cette fonction, de la couche réseau, se base sur des tables de configuration (BDT et FDT) pour retransmettre, aux réseaux distants, les messages broadcast émis par les devices locaux, et générer sur le réseau local les demandes de broadcast transmis par les réseaux distants.

Fonctionnement de la couche application de BACnet

La couche application de BACnet repose essentiellement sur la définition d'un ensemble d'objets manipulés, au travers du réseau, par un ensemble de services.

Les objets de BACnet

La notion d'objet est une notion fondamentale du protocole BACnet. Les objets sont utilisés d'une part pour représenter les informations gérées par les devices et échangées au travers du protocole, et d'autre part pour une gestion optimale de certains services ou de fonctions applicatives.

Généralités

Pour le protocole BACnet, un objet est caractérisé par une liste de propriétés et par les valeurs de ces dernières. Les spécifications de BACnet définissent un certain nombre de types d'objets (classes) en indiquant la liste et les caractéristiques des propriétés de chacun des types. Certaines propriétés sont obligatoires pour qu'un objet soit conforme à la définition d'un type, d'autres sont optionnelles. Un constructeur d'équipements BACnet peut ajouter des propriétés qui lui sont propres aux objets standards, et il peut également définir ses propres types d'objets.

L'identification d'un objet (son adresse) au sein d'un système BACnet fait intervenir deux propriétés obligatoires (indépendantes) :

Cette propriété est constituée de la concaténation du type de l'objet et d'un numéro d'instance. La valeur de cette propriété doit être unique pour le système s'il s'agit d'un objet device, ou doit être unique au sein du device qui le gère pour les autres objets.

Cette propriété est une chaîne de caractères qui doit obéir aux mêmes règles d'unicité que la propriété Object_Identifier.

La définition du type d'un objet est indiquée par la propriété obligatoire Object_Type.

Objets de données

Dans l'ensemble des types d'objets standards de BACnet un certain nombre d'entre eux sont utilisés pour gérer une donnée élémentaire du système. Ces objets sont les suivants : Accumulator, Analog Input, Analog Output, Analog Value, Binary Input, Binary Output, Binary Value, Multi-state Input, Multi-state Output, Multi-state Value.

D'une façon générale, ces objets ont pour fonction de représenter la valeur d'une donnée au travers de leur propriété Present_Value. Ils peuvent comporter des conditions d'alarme et être couplés à un objet de notification (Notification_Class) pour générer des alarmes ou des événements lors du franchissement de ces conditions.

Objets fonctionnels

Les objets fonctionnels réalisent la prise en charge d'une fonction destinée à piloter des propriétés d'autres objets ou à élaborer des résultats localement. Les objets fonctionnels définis par les spécifications BACnet sont les suivants :

Certains objets fonctionnels sont plus particulièrement adaptés pour un métier particulier (contrôle d'accès, détection incendie, …) :

D'autres objets fonctionnels sont utilisés en liaison avec les services proposés par le protocole BACnet :

Gestion des propriétés commandables

Il existe deux types de propriétés du point de vue des opérations d'écriture : commandable ou non commandable.

Pour les propriétés commandables, une notion de priorité permet de gérer des forçages de valeur en fonction du niveau de priorité utilisé lors de la demande d'écriture. Un tableau de priorités est géré par les objets qui disposent d'une propriété commandable. Ce tableau dispose d'un emplacement pour chacun des 16 niveaux de priorité possibles. Ce tableau contient la dernière valeur éventuellement écrite pour un niveau donné. La valeur prise par la propriété concernée est alors la valeur associée à la priorité la plus élevée. La priorité d'écriture est spécifiée à chaque demande d'écriture. Une demande d'écriture avec la valeur NULL libère le niveau de priorité spécifié.

Les services de BACnet

La couche application du protocole BACnet spécifie également un ensemble de services qui permettent de gérer les devices et les objets des devices qui constituent un système BACnet. Ces services couvrent divers aspects, en particulier :

Utilisation pour la supervision

Le protocole BACnet est utilisé pour assurer la communication entre les différents équipements d'un système BACnet en vue de satisfaire les exigences du fonctionnement global d'une installation. Il est également, voire principalement, utilisé pour les besoins de la supervision de ces installations.

Pour les besoins de la supervision, les services utiles sont essentiellement l'accès aux objets et à leurs propriétés, et la gestion des alarmes.

La mise en œuvre d'un réseau BACnet pour la supervision pose des problèmes spécifiques à cette technologie pour les logiciels de supervision traditionnels.

Ces problèmes sont essentiellement liés à :

Les superviseurs traditionnels ne sont généralement pas capable de distinguer la nature des informations échangées et ne peuvent donc pas adapter la logique des échanges sur le réseau en fonction de cette nature. Lorsqu'il n'est pas possible de prendre en compte ces caractéristiques, il faut alors renoncer à récupérer les propriétés statiques ou quasi statiques sous peine de surcharger inutilement le réseau.Il est à noter qu'il existe un service de notification qui permet à un device client de s'abonner à des notifications sur changement de valeur. Ce service ne s'applique cependant qu'à certaines propriétés.

La façon d'apporter une réponse à ces problèmes doit être un critère de choix de premier niveau pour le logiciel de supervision d'un système BACnet.

Notes et références

  1. ANSI/ASHRAE Standard 135-2008 ISSN 1041-2336