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é |
|---|---|
| 1 | Sécurité des personnes, commande manuelle |
| 2 | Sécurité des personnes, commande automatique |
| 3, 4 | Disponibles |
| 5 | Commande des équipements critiques |
| 6 | Durée minimale de marche ou d’arrêt |
| 7 | Disponible |
| 8 | Opérateur, commande manuelle |
| 9 à 16 | Disponibles ; 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) :
| Étape | Tableau de priorités | Present_Value |
|---|---|---|
| Départ : tous les emplacements contiennent NULL | Arrêt (Relinquish_Default) | |
| Le programme horaire écrit marche à 16 | 16 = marche | Marche |
| Le système de réponse à la demande écrit arrêt à 12 | 12 = arrêt, 16 = marche | Arrêt |
| Un opérateur écrit marche à 8 | 8 = marche, 12 = arrêt, 16 = marche | Marche |
| L’événement se termine ; le système de réponse à la demande écrit NULL à 12 | 8 = marche, 16 = marche | Marche |
| L’opérateur libère 8 | 16 = marche | Marche |
| Le programme horaire libère 16 la nuit | Arrê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é
- 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.
- Avant le test, lisez l’ensemble du Priority_Array et Present_Value et consignez-les.
- Écrivez la commande. Relisez Priority_Array : votre valeur figure-t-elle dans votre emplacement ?
- Vérifiez Present_Value et l’installation physique. Si un emplacement de priorité supérieure contient une valeur, votre commande ne produit aucun effet.
- Libérez la commande en écrivant NULL à la même priorité, puis relisez le tableau.
- 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.