Protocoles et données

Priorités BACnet et libération des commandes

Fonctionnement des 16 priorités de commande BACnet, libération par écriture de NULL, Relinquish_Default et test d’écriture sans laisser de commande forcée.

Un objet BACnet commandable, comme une sortie binaire qui démarre un ventilateur ou une valeur analogique qui porte une consigne, ne prend pas simplement la dernière valeur écrite. Un système de sécurité, un opérateur et un programme horaire peuvent tous commander le même ventilateur sans se contredire, car chacun écrit à sa place dans le tableau de priorités de l’objet.

Ce guide fait partie de la série BACnet et protocoles du bâtiment.

Comment le tableau décide

Chacun des 16 emplacements contient une valeur ou NULL (vide). Present_Value provient du premier emplacement non NULL, en comptant à partir de 1. La priorité 1 est la plus élevée. Si tous les emplacements contiennent NULL, Present_Value prend la valeur Relinquish_Default de l’objet.

La norme nomme cinq priorités. Le site peut attribuer les autres :

PrioritéUsage normalisé
1Sécurité des personnes, commande manuelle
2Sécurité des personnes, commande automatique
3, 4Disponibles
5Commande des équipements critiques
6Durée minimale de marche ou d’arrêt
7Disponible
8Opérateur, commande manuelle
9 à 16Disponibles ; les programmes horaires et les commandes courantes utilisent souvent les plus faibles

Une convention courante place les programmes horaires à 16, la gestion énergétique ou la réponse à la demande entre 9 et 15, et les forçages de l’opérateur à 8. Consignez cette convention avec la liste de points.

Exemple détaillé

Un ventilateur de soufflage (binary-output 4) possède une valeur Relinquish_Default inactive (arrêt) :

ÉtapeTableau de prioritésPresent_Value
Départ : tous les emplacements contiennent NULLArrêt (Relinquish_Default)
Le programme horaire écrit marche à 1616 = marcheMarche
Le système de réponse à la demande écrit arrêt à 1212 = arrêt, 16 = marcheArrêt
Un opérateur écrit marche à 88 = marche, 12 = arrêt, 16 = marcheMarche
L’événement se termine ; le système de réponse à la demande écrit NULL à 128 = marche, 16 = marcheMarche
L’opérateur libère 816 = marcheMarche
Le programme horaire libère 16 la nuitArrêt (Relinquish_Default)

Deux enseignements : la commande de réponse à la demande a été acceptée mais n’a produit aucun effet tant que l’opérateur tenait la priorité 8. Si ce système n’avait pas libéré la priorité 12, le ventilateur serait resté arrêté lorsque le programme horaire serait repassé en marche le lendemain matin.

Libérer la commande, pas la remplacer

Pour mettre fin à une commande, écrivez NULL à la même priorité. Écrire la valeur opposée ne revient pas au même : l’emplacement reste occupé et bloque toutes les priorités inférieures. Les commandes oubliées à une priorité intermédiaire expliquent souvent pourquoi une installation ignore son programme horaire des semaines après un test.

Certains clients ne savent pas envoyer NULL ou cachent cette opération derrière une autre méthode. La documentation de Beckhoff décrit, par exemple, comment sa bibliothèque BACnet écrit NULL en envoyant une valeur spéciale. Vérifiez comment votre client libère une commande avant d’écrire quoi que ce soit.

Vérifiez également la durée minimale de marche ou d’arrêt à la priorité 6. Une sortie binaire dotée de ces durées écrit sa propre valeur à la priorité 6 pendant la durée minimale après chaque changement ; une commande de priorité inférieure peut donc être retardée.

Tester une écriture en sécurité

  1. Convenez avec le responsable de l’équipement de l’objet, de la priorité, de la valeur, de la durée et de la procédure de libération.
  2. Avant le test, lisez l’ensemble du Priority_Array et Present_Value et consignez-les.
  3. Écrivez la commande. Relisez Priority_Array : votre valeur figure-t-elle dans votre emplacement ?
  4. Vérifiez Present_Value et l’installation physique. Si un emplacement de priorité supérieure contient une valeur, votre commande ne produit aucun effet.
  5. Libérez la commande en écrivant NULL à la même priorité, puis relisez le tableau.
  6. Confirmez que l’installation a retrouvé son état attendu.

Une écriture qui expire donne un résultat inconnu, pas un échec confirmé. Lisez le tableau avant de réessayer.

Priorités et Modbus

Modbus ne possède pas de tableau de priorités. Une écriture modifie le registre et la dernière l’emporte. Si un appareil Modbus est partagé entre un BMS et un système énergétique, convenez du système autorisé à écrire ou utilisez un contrôleur qui arbitre les commandes. Le guide BACnet et Modbus compare les deux.

Écritures avec Edge

Edge sur le Gateway ZGW-20 peut écrire dans les objets de sortie et de valeur BACnet qu’un administrateur a configurés pour la commande. Chaque écriture utilise la priorité choisie de 1 à 16, ou la priorité 16 si aucune n’est définie. Edge ne libère pas une commande par NULL : avant tout test, convenez de la méthode de libération, généralement avec les outils du BMS. Traitez chaque écriture comme le test de commande approuvé ci-dessus et consultez le guide de la commande locale pour prévoir les cas de défaillance.

Questions fréquentes

Qu’est-ce que le tableau de priorités BACnet ?

Une propriété des objets commandables, comme les sorties binaires et analogiques, qui contient 16 emplacements. Chacun peut contenir une valeur commandée ou NULL. La valeur présente de l’objet provient de l’emplacement occupé de priorité la plus élevée, c’est-à-dire du plus petit numéro, ou de Relinquish_Default si tous les emplacements contiennent NULL.

Quels sont les niveaux de priorité BACnet normalisés ?

La norme en nomme cinq : 1 pour la sécurité des personnes en mode manuel, 2 en mode automatique, 5 pour la commande d’équipements critiques, 6 pour les durées minimales de marche et d’arrêt, et 8 pour l’opérateur en mode manuel. Les autres sont disponibles pour les applications ; de nombreux sites utilisent une faible priorité comme 16 pour les programmes horaires et une priorité intermédiaire pour la gestion énergétique.

Que signifie libérer une commande en BACnet ?

Écrire NULL dans l’emplacement prioritaire qui contient la commande. L’objet suit ensuite l’emplacement occupé de priorité suivante, ou sa valeur Relinquish_Default.

Qu’est-ce que Relinquish_Default ?

La valeur qu’un objet commandable prend lorsqu’aucun emplacement de son tableau de priorités ne contient de commande, par exemple « arrêt » pour un ventilateur ou une consigne par défaut pour une vanne.