Glosario de Automatización • Propiedad Present_Value de BACnet

¿Qué es la propiedad Present_Value de BACnet?

Ingeniería Merobix • • 5 min de lectura

Present_Value es la propiedad que se lee de un objeto BACnet para obtener su valor actual, y es la propiedad más accedida de cualquier integración. Pero se comporta distinto en una entrada que en una salida, y malentender esa diferencia está detrás de mucha confusión sobre por qué un valor escrito no se quedó. Esta referencia explica qué guarda Present_Value en cada clase de objeto, por qué escribirlo en una salida pasa por el arreglo de prioridades y cómo leerlo para que el número que usted registra sea de verdad confiable.

Volver al glosario

Propiedad Present_Value de BACnet en una línea: La propiedad Present_Value guarda el valor actual de un objeto: la lectura medida de un Analog Input, el estado de marcha de un Binary Input o la salida comandada de un Analog Output. En los objetos de entrada refleja el sensor o el proceso y es de solo lectura para los clientes. En los objetos comandables de salida y de valor, Present_Value no se escribe directo; el cliente escribe un valor a una prioridad en el arreglo de prioridades, y Present_Value es el resultado de la prioridad que gane en ese momento.

Present_Value en los objetos de entrada

En un objeto Analog Input, Binary Input o Multi-state Input, Present_Value lleva el valor que el dispositivo está sensando en este momento: una temperatura en las unidades configuradas, un estado discreto de encendido o apagado, un estado enumerado. Es la cara de solo lectura del mundo físico, y es lo que un cliente supervisorio sondea o a lo que se suscribe cuando quiere la lectura actual. Un cliente no puede comandar el Present_Value de una entrada, porque el valor viene de un sensor y no de un comando: intentar escribirlo es un error de categoría que el dispositivo rechazará.

El Present_Value de una entrada solo tiene significado en el contexto de sus propiedades compañeras. La propiedad Units le dice al cliente en qué unidad de ingeniería está un valor analógico, así que una lectura de 21.5 es grados Celsius u otra cosa según Units. Las propiedades Status_Flags y Reliability, cubiertas en la referencia de las banderas de estado, le dicen al cliente si el valor es válido o está en falla. Una lectura tomada sin esas compañeras es un número sin garantía detrás.

Algunos objetos de entrada soportan la propiedad Out_Of_Service, que desacopla Present_Value del sensor físico para pruebas. Cuando una entrada se pone fuera de servicio, un cliente puede escribir su Present_Value para simular una lectura, útil en puesta en marcha y en verificaciones de lazo pero peligroso si se queda activado, porque el objeto entonces reporta un valor ficticio mientras el sensor real se ignora. Confirmar que Out_Of_Service está en falso es parte de confiar en la lectura de una entrada, y es una causa común de un punto que reporta tercamente un número fijo sin importar el proceso.

Present_Value en los objetos comandables de salida

En un objeto comandable - típicamente Analog Output, Binary Output, Multi-state Output y los objetos de valor comandables - Present_Value no es un valor que el cliente fija directo. El objeto sostiene en cambio un arreglo de prioridades, una pila de dieciséis casillas de comando, y Present_Value es el valor de la casilla de mayor prioridad que tenga un comando en ese momento. Cuando un cliente escribe al objeto, escribe un valor a un nivel de prioridad elegido dentro de ese arreglo, y el objeto recalcula Present_Value según la casilla que ahora gane. Esa indirección es lo que permite que varias fuentes de control comanden la misma salida sin sobreescribirse a ciegas.

La consecuencia práctica es que una escritura puede parecer no hacer nada. Si un cliente escribe un valor a prioridad 10 pero una casilla de mayor prioridad, digamos la 8, ya sostiene un comando, Present_Value sigue reflejando la prioridad 8 y la escritura en la 10 queda guardada pero sin efecto. El valor no se pierde - se vuelve efectivo en el momento en que la casilla superior se libera - pero para un operador que no sabe que el arreglo de prioridades está en juego, la salida simplemente ignoró el comando. La mecánica completa se cubre en la referencia del arreglo de prioridades.

Cuando todas las casillas de prioridad están vacías, Present_Value cae a la propiedad Relinquish_Default, el valor de reposo de diseño del objeto. Así que una salida comandable nunca se queda sin Present_Value: es el comando ganador o el valor por omisión de liberación. Entender esta cadena - casillas del arreglo, luego el valor de liberación - es lo que permite al integrador predecir qué hará una salida cuando una fuente de control la suelte, en lugar de sorprenderse de dónde aterriza.

Preguntas frecuentes

¿Por qué escribir Present_Value en una salida BACnet no siempre funciona?

Porque en un objeto comandable usted no escribe Present_Value directo: escribe un valor a un nivel de prioridad dentro del arreglo de prioridades del objeto. Present_Value refleja la casilla de prioridad que gane en ese momento. Si una casilla de mayor prioridad ya sostiene un comando, su escritura de menor prioridad queda guardada pero no cambia Present_Value hasta que el comando superior se libere. La escritura no se pierde; simplemente quedó por debajo en rango.

¿Un cliente puede escribir el Present_Value de una entrada BACnet?

No mientras la entrada esté en servicio. El Present_Value de una entrada viene del sensor físico y es de solo lectura para los clientes. La excepción es cuando la propiedad Out_Of_Service de la entrada está en verdadero, lo que desacopla el valor del sensor para que un cliente escriba un Present_Value simulado en pruebas. Dejar una entrada fuera de servicio es una causa común de un punto atorado en un valor fijo, así que debe limpiarse tras la puesta en marcha.

¿A qué cae Present_Value cuando no hay comando activo?

En un objeto comandable de salida, cuando todas las casillas del arreglo de prioridades están vacías, Present_Value toma el valor de la propiedad Relinquish_Default. Ese es el estado de reposo de diseño del objeto: la posición o el punto de consigna que sostiene cuando ninguna fuente de control lo comanda. Así que una salida comandable siempre tiene Present_Value: el comando activo de mayor prioridad, o el valor de liberación cuando todos los comandos se soltaron.

Fuentes y lecturas

Referencias primarias de los organismos de normas y reguladores que definen este tema:

Más en Protocolos industriales
El descubrimiento BACnet no encuentra dispositivos  •  BACnet  •  Modelo de objetos y propiedades BACnet  •  Object Identifier de BACnet  •  Objeto Device de BACnet  •  Todo en Protocolos industriales →
Capacitación SCADA gratuita para operadores
Merobix University - 70 lecciones en video y 261 preguntas de examen, del primer inicio de sesión a los reportes de cumplimiento (contenido en inglés). Sin llamada de ventas.
Comenzar gratis →