Command Priorization

Due to avoid conflicts between two BACnet clients, which "command" the same property, a system wide priority scheme with different priority levels for writing commands has been realized by BACnet. This is supported by the BACnet driver.

Every object, which has a commandable property, is concerned with processing of incoming, prioritized commands corresponding to their priority weight. The command priority can be defined for each BACnet device using the corresponding internal data point element Command.CmdPriority.

Switching and regulation commands must be prioritizable, due to organize the "control ratio" of the different application and operating programs. That means that writing commands contains the following parameters for the here listed objects. The BACnet standard defines that the Present_Value must be commandable (writable) for the following objects with priority control:

Object type Property
Analog Output Present_Value
Binary Output Present_Value
Multistate Output Present_Value
Multistate Value Present_Value
Analog Value Present_Value
Binary Value Present_Value
BitString Value Present_Value
CharacterString Value Present_Value
Date Value Present_Value
DatePattern Value Present_Value
DateTime Value Present_Value
DateTimePattern Value Present_Value
Integer Value Present_Value
LargeAnalog Value Present_Value
OctetString Value Present_Value
PositiveInteger Value Present_Value
Time Value Present_Value
Time Pattern Value Present_Value

Priorization mechanism

For BACnet objects output commands are prioritized by assignment to every command a priority. A command can be triggered via the services WriteProperty (DS-WP-A) or WritePropertyMultiple (DS-WPM-A).

This priorization mechanism for writing the commandable properties is consisted of two components:

Priority Array

This specifies an array of prioritized commands or the value NULL. The array can be read only and is specified in gradient priority. The command will be triggered, which has the highest priority (lowest array index) with a not NULL value.

Relinquish Default

This property is of the same data type (including the corresponding unit) as the "Commandable Property". As soon as all entries in the "Priority_Array" have the NULL value, the value of "Commandable Property" adopts the value from the "Relinquish_Default“ property (default).

An entry in the "Priority_Array“ can adopt the command value or the NULL value. The NULL value means that no command has been issued to the corresponding priority. An object is continuously monitoring the entries in the priorization table, detects the highest priority entry immediately and adopts its value.

A command (from application, user, etc.) may be either set a new value in the commandable property or taken back a previously given command. Due to take back the command, it is recommended to enter the NULL value.

As in WinCC OA the NULL value cannot be mapped on a value, the sending of this value is controlled by a user bit. This user bit must be defined with the config entry connUserbitPrio. If the defined user bit is 1 when the value is written, the value is set and thus written into the Priority Array. If the value of the user bit is 0, the value in the Priority Array will be deleted.