Easy BACnet · BACnet field reference

Why is my BACnet point stuck, and how do I release an override?

Short answer

Because a value written to a commandable BACnet point is held at the priority it was written at until something explicitly releases it. It does not time out, and it survives the tool that wrote it being closed or disconnected. To release it you write NULL to Present_Value at the same priority level that is holding the point. Then control falls to the next-highest occupied priority, or to Relinquish_Default if the array is empty.

How the priority array works

Commandable BACnet objects — typically Analog Outputs and Values, Binary Outputs and Values, and Multi-state Outputs and Values — do not have a single present value. They have a priority array of 16 slots. Slot 1 is the highest priority, slot 16 the lowest. The object's actual Present_Value is whatever sits in the lowest-numbered occupied slot.

When every slot is empty, the point falls back to its Relinquish_Default property. That is the value the object reverts to when nobody is commanding it at all.

PriorityConventional use
1Manual Life Safety
2Automatic Life Safety
5Critical Equipment Control
6Minimum On/Off
8Manual Operator — a person with a tool
16Lowest; often where the normal control program writes

Only 1, 2, 5, 6 and 8 are assigned meanings by the standard. The rest are available, and every vendor uses them slightly differently — which is exactly why you should agree a priority level in writing before letting an integrator command anything.

Why the point is stuck

Someone wrote a value at a priority and never released it. The usual suspects:

Reading the priority array tells you immediately which slot is occupied, and therefore who to blame. A point being held at priority 8 is a person; at 16, it is probably the control program doing its job.

How to release it

Write NULL to Present_Value at the priority that is holding the point. Writing a normal value at a lower priority will not help — the higher slot still wins. Writing NULL at the wrong priority clears an empty slot and changes nothing.

After releasing, re-read the point. Control should drop to the next occupied slot or to Relinquish_Default.

The rule that keeps you out of trouble

Release every point you take command of before you leave site. A commanded point does not expire. A damper you drove to 100% to prove an actuator works will still be at 100% next February unless somebody clears it, and the control program will have no way to tell you it is being overruled.

If you are writing from Easy BACnet: the point detail screen shows which priority currently commands the point and what it falls back to, and the Release to Auto button writes NULL at the priority you select. Every write and release in a session is recorded in the session write log so you can check nothing was left behind.