Knowledge Base
cancel
Showing results for 
Search instead for 
Did you mean: 

How to view the current Priority level controlling an Analog BACnet object (AnalogOutput, AnalogValue) using Plain English.

Issue

How to view the current Priority level controlling a BACnet object using Plain English.

Environment

Continuum Cyberstation

BACnet

AnalogOutput, AnalogValue

Cause

3rd party is controlling a BACnet object at an unknown priority level. We want to see what the current Priority level is and relinquish this control.

Resolution

We can use the PriorityArray attribute to view the value of each Priority level. Then using a For loop we can loop through all 16 priority levels to determine the current priority level controlling the BACnet object.


Below is a program that will allow you to see the current priority (aaPriorityValue) controlling your object (PriorityTest) and at what priority level (aaPriorityIndex).

You will need to create two numerics (configure as AnalogValue) for this program to work (aaPriorityIndex and aaPriorityValue).

With the method below we can see if a non-zero value is the current priority and at what priority level.  Unfortunately a 0 value is seen the same as a NULL value (both seen as 0), so if a 0 value is currently controlling the object we are unable to determine at what priority level this is set.

If aaPriorityValue is 0 and aaPriorityIndex is < 16 then we know that aaPriorityIndex is the level of the non-zero value and can relinquish all priorities down to that level if needed. Still not exactly what we want but it does give a bit of flexibility to actually control the current priority level.

=======================
' Program to get the highest priority value and its index number
' Flow: Looping
Numeric count
Numeric PriorityValue

CALC:
  For count = 1 to 16   'Loop through the priority array, looking for the first non-Null value
    PriorityValue = ReadProperty(PriorityTest PriorityArray, count)
    If PriorityValue is not NULL then
      Break 'stop at the first non-Null value. Side effect, also first non-zero value
    Endif
  Next count

  If PriorityTest = 0 then
'Check for 0 value
    aaPriorityValue = 0
    aaPriorityIndex = count
  Else
'If not 0 or NULL value, set current priority value and index
    aaPriorityValue = PriorityValue
    aaPriorityIndex = count
  Endif
=================================


 

Tags (1)
Labels (1)
Version history
Revision #:
1 of 1
Last update:
2 weeks ago
Updated by: