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.