BACnet Driver Addressing
The general format for addressing BACnet objects and properties is as follows (Brackets [ ] are used for array items. Braces { } are shown to mark optional components, but must not be used in the actual address string):
ObjectType{:}#{.Property}{[I]}{(P)}
where:
- ObjectType is the BACnet object Default Address, Acronym, or Object Type code, according to the following table. A colon is required to separate the type code from the instance number, but this is optional when using an address or acronym. Vendor-specific objects are only supported through codes (127-1023).
- # is the object instance number
- Property is either the name of the property or its numeric identifier, as defined in ANSI/ASHRAE Standard 135-2012, clauses 12 and 21. If omitted, it is assumed as Present_Value (85), which usually contains the current value assigned to the object. Vendor-specific properties are only supported through identifiers (512-4194303).
- I is the array index, required for properties encoded as such.
- P is the write priority, used to write to commandable properties and return the correct feedback when reading from them. Values from 1 to 16 are accepted. If not specified, devices assume it as 16 (the lowest).
(Examples follow the table.)
Object Name | Default Address | Accepted Acronyms | Type Code |
---|---|---|---|
Analog Input | AnalogInput | AI | 0 |
Analog Output | AnalogOutput | AO | 1 |
Analog Value | AnalogValue | AV | 2 |
Binary Input | BinaryInput | BI | 3 |
Binary Output | BinaryOutput | BO | 4 |
Binary Value | BinaryValue | BV | 5 |
Calendar | Calendar | CAL | 6 |
Command | Command | COM, CMD | 7 |
Device | Device | DEV | 8 |
Event Enrollment | EventEnrollment | EE | 9 |
File | File | F | 10 |
Group | Group | G | 11 |
Loop | Loop | LP | 12 |
Multi-state Input | MultiStateInput | MSI, MI | 13 |
Multi-state Output | MultiStateOutput | MSO, MO | 14 |
Notification Class | NotificationClass | NC | 15 |
Program | Program | PROG | 16 |
Schedule | Schedule | SCH | 17 |
Averaging | Averaging | AVG | 18 |
Multi-state Value | MultiStateValue | MSV, MV | 19 |
Trend Log | TrendLog | TL | 20 |
Life Safety Point | LifeSafetyPoint | LSP | 21 |
Life Safety Zone | LifeSafetyZone | LSZ | 22 |
Accumulator | Accumulator | ACM | 23 |
Pulse Converter | PulseConverter | PC | 24 |
Event Log | EventLog | EL | 25 |
Global Group | GlobalGroup | GG | 26 |
Trend Log Multiple | TrendLogMultiple | TLM | 27 |
Load Control | LoadControl | LC | 28 |
Structured View | StructuredView | SV | 29 |
Access Door | AccessDoor | ACD | 30 |
Access Credential | AccessCredential | ACC | 32 |
Access Point | AccessPoint | ACP | 33 |
Access Rights | AccessRights | ACR | 34 |
Access User | AccessUser | ACU | 35 |
Access Zone | AccessZone | ACZ | 36 |
Credential Data Input | CredentialDataInput | CDI | 37 |
Network Security | NetworkSecurity | NS | 38 |
BitString Value | BitStringValue | BSV, BS | 39 |
CharacterString Value | CharacterStringValue | CSV, CS | 40 |
Date Pattern Value | DatePatternValue | DPV, DP | 41 |
Date Value | DateValue | DV | 42 |
DateTime Pattern Value | DateTimePatternValue | DTPV, DTP | 43 |
DateTime Value | DateTimeValue | DTV | 44 |
Integer Value | IntegerValue | IV | 45 |
Large Analog Value | LargeAnalogValue | LAV | 46 |
OctetString Value | OctetStringValue | OSV, OS | 47 |
Positive Integer Value | PositiveIntegerValue | UV, PIV | 48 |
Time Pattern Value | TimePatternValue | TPV, TP | 49 |
Time Value | TimeValue | TV | 50 |
Notification Forwarder | NotificationForwarder | NF | 51 |
Alert Enrollment | AlertEnrollment | AE | 52 |
Channel | Channel | CH | 53 |
Lighting Output | LightingOutput | LO | 54 |
For example, to read or write the value of Analog Input 1, any of the following is accepted:
AnalogInput1
AnalogInput:1
AI1
AI1.85
0:1
AnalogInput1.Present_Value
AI1.Present_Value
To retrieve the engineering units of the Accumulator object #3, both of the following can be used:
Accumulator3.Units
ACM3.Units
23:3.117
To write the present value of Analog Value 2 under priority 3:
AnalogValue3.Present_Value(3)
AV2(3)
2:2(3)
If non-null values are currently stored under higher priorities (1 or 2), reading the previous address will return the highest priority value instead. Under such circumstances, a VTScada output widget will not report success in the writing procedure, unless the Read Address of the tag is set to one of two options:
- Adaptive Feedback (preferred method) - the tag will display the value of the selected priority (3 in the example), unless it has been relinquished, resulting in an invalid entry in the priority array. If so, it will display the highest priority instead:
AnalogValue3.Present_Value(3)
(or any of the other options shown above for the write address)
- Direct Priority Array reference - the tag will always display the value associated with the selected priority. If it has been relinquished, no value will be shown (invalid)
AnalogValue3.Priority_Array[3]
Address Select Dialog
The BACnet Driver provides an address selection module to help you write addresses in the correct format:
Object Type
Select the object type from this drop list. All standard BACnet object names are shown, regardless of being supported or present in the connected device.
Instance Number
Any number between 0 and the maximum object identifier (default: 4194303) can be selected, regardless of the range supported by the device.
Property
The property to read or write can be selected from this drop list. By selecting the first option in the list, the address will not specify a property, thus Present_Value will be assumed, even if the object doesn't support it. Properties supported by the selected object (per the BACnet standard) are listed on top, but any existing property can be selected. The support of specific properties, even those defined in the standard, depends on the device.
Array Index
The index of the array item being addressed, for properties encoded as such. BACnet array indexes are 1-based, with index 0 used to access the size of the array.
The driver will not prevent an array index from being specified, regardless of the type of the selected property. If it is not an array, the device will return an error when attempting to read or write it.
Write Priority
Select the priority used to access commandable properties (typically, the Present_Value property of output and value-storing objects). The BACnet prioritization system uses priority values from 1 (highest) to 16 (lowest) to arbitrate between multiple devices attempting to write to the same property.
If declared for the Read Address of a commandable property, it will override the default behavior of the prioritization system by returning the value assigned to the property in the object, if not null. Otherwise, the non-null value with the highest priority assigned to it will be returned when attempting to read the property. This setting has no effect on non-commandable properties. Items of the read-only property Priority_Array contain the values currently assigned to each priority level. If all priorities are assigned a null value, Present_Value will return the value of the property Relinquish_Default instead. If the first option (Default) is selected, no priority will be specified when attempting to write to the device, which is effectively the same as the driver's Default Write Priority parameter. Devices will ignore this setting if the property does not support write priorities.