Un objeto BACnet que admite órdenes, como una salida binaria que arranca un ventilador o un valor analógico que contiene una consigna, no se limita a adoptar el último valor que se haya escrito. Un sistema de seguridad, un operador y un horario pueden dar órdenes al mismo ventilador sin interferir entre sí porque cada uno escribe en una posición de la matriz de prioridades del objeto.
Esta guía forma parte de la serie sobre BACnet y protocolos de edificios.
Cómo decide la matriz
Cada una de las 16 posiciones contiene un valor o NULL (vacío). El Present_Value del objeto procede de la primera posición, empezando por la 1, que no sea NULL. La prioridad 1 es la más alta. Cuando todas las posiciones contienen NULL, Present_Value toma el Relinquish_Default del objeto.
La norma asigna un nombre a cinco prioridades. Las demás quedan disponibles para asignarlas en la instalación:
| Prioridad | Uso definido por la norma |
|---|---|
| 1 | Seguridad de la vida, manual |
| 2 | Seguridad de la vida, automática |
| 3, 4 | Disponibles |
| 5 | Control de equipos críticos |
| 6 | Tiempo mínimo de encendido/apagado |
| 7 | Disponible |
| 8 | Operador manual |
| 9 a 16 | Disponibles; los horarios y el control habitual suelen utilizar las más bajas |
Un plan habitual asigna los horarios a la prioridad 16, la gestión energética o la respuesta a la demanda a alguna prioridad entre 9 y 15, y las anulaciones del operador a la 8. Documente este plan junto con la lista de puntos.
Ejemplo paso a paso
Un ventilador de impulsión (binary-output 4) tiene como Relinquish_Default el estado inactivo (apagado):
| Paso | Matriz de prioridades | Present_Value |
|---|---|---|
| Inicio: todas las posiciones son NULL | Apagado (Relinquish_Default) | |
| El horario escribe encendido en la 16 | 16 = encendido | Encendido |
| Un sistema de respuesta a la demanda escribe apagado en la 12 | 12 = apagado, 16 = encendido | Apagado |
| Un operador escribe encendido en la 8 | 8 = encendido, 12 = apagado, 16 = encendido | Encendido |
| Termina el evento; el sistema de respuesta a la demanda escribe NULL en la 12 | 8 = encendido, 16 = encendido | Encendido |
| El operador libera la 8 | 16 = encendido | Encendido |
| El horario libera la 16 por la noche | Apagado (Relinquish_Default) |
Se desprenden dos lecciones. La orden del sistema de respuesta a la demanda se aceptó, pero dejó de tener efecto mientras el operador mantuvo ocupada la prioridad 8. Y si ese sistema no hubiese liberado la prioridad 12, el ventilador habría permanecido apagado cuando el horario volviese a encenderlo a la mañana siguiente.
Libere la posición; no sobrescriba el valor
Para terminar una orden, escriba NULL en la misma prioridad. Escribir el valor opuesto no equivale a liberarla: la posición sigue ocupada y bloquea todas las prioridades inferiores. Las órdenes olvidadas en prioridades intermedias son una causa habitual de que una instalación ignore su horario semanas después de una prueba.
Algunos clientes no pueden enviar NULL o lo ocultan tras otro método. La documentación de Beckhoff, por ejemplo, explica cómo su biblioteca BACnet escribe NULL mediante el envío de un valor especial. Compruebe cómo libera una orden el cliente que utiliza antes de escribir nada.
Compruebe también el tiempo mínimo de encendido/apagado en la prioridad 6. Una salida binaria con tiempos mínimos escribe su propio valor en la prioridad 6 durante el tiempo mínimo después de cada cambio, por lo que una orden de menor prioridad puede retrasarse.
Probar una escritura de forma segura
- Acuerde con el responsable del equipo el objeto, la prioridad, el valor, la duración y el procedimiento para liberar la orden.
- Lea y registre la matriz Priority_Array completa y Present_Value antes de la prueba.
- Escriba la orden. Vuelva a leer Priority_Array: ¿aparece su valor en la posición acordada?
- Compruebe Present_Value y el equipo físico. Si una posición de mayor prioridad contiene un valor, su orden no tendrá efecto.
- Libere la posición escribiendo NULL en la misma prioridad y vuelva a leer la matriz.
- Confirme que el equipo ha vuelto al estado esperado.
Si una escritura agota el tiempo de espera, se desconoce su resultado; no debe darse por fallida. Lea la matriz antes de volver a intentarlo.
Prioridades y Modbus
Modbus no tiene matriz de prioridades. Una escritura cambia el registro y prevalece la última. Cuando un dispositivo Modbus lo comparten un BMS y un sistema energético, acuerde cuál puede escribir o utilice un controlador que arbitre las órdenes. La guía de BACnet frente a Modbus compara ambos protocolos.
Escrituras con Edge
Edge, en el Gateway ZGW-20, puede escribir en objetos BACnet de salida y de valor que un administrador haya habilitado para control. Cada escritura utiliza una prioridad elegida entre 1 y 16; si no se configura ninguna, utiliza la 16. Edge no libera órdenes escribiendo NULL. Por ello, antes de una prueba acuerde cómo se liberará la orden, normalmente mediante las herramientas del BMS. Trate cada escritura como la prueba de control aprobada que se describe arriba y consulte la guía de control local para planificar las situaciones de fallo.
Preguntas frecuentes
¿Qué es la matriz de prioridades BACnet?
Una propiedad de los objetos que admiten órdenes, como las salidas binarias y analógicas, con 16 posiciones. Cada posición puede contener un valor ordenado o NULL. El valor actual del objeto procede de la posición ocupada de mayor prioridad (el número más bajo), o de Relinquish_Default si todas las posiciones contienen NULL.
¿Cuáles son los niveles de prioridad BACnet definidos por la norma?
La norma asigna nombre a cinco: 1, seguridad de la vida manual; 2, seguridad de la vida automática; 5, control de equipos críticos; 6, tiempo mínimo de encendido/apagado; y 8, operador manual. Las demás están disponibles para las aplicaciones; muchas instalaciones usan una prioridad baja, como la 16, para horarios, y una intermedia para gestión energética.
¿Qué significa liberar una orden en BACnet?
Liberar la orden escribiendo NULL en la posición de prioridad que la contiene. El objeto sigue entonces la siguiente posición de menor prioridad que tenga un valor, o su Relinquish_Default.
¿Qué es Relinquish_Default?
El valor que adopta un objeto que admite órdenes cuando ninguna posición de su matriz de prioridades contiene una orden; por ejemplo, «apagado» para un ventilador o una consigna predeterminada para una válvula.