BACnet
BACnet communication protocol
The BACnet communication protocol (Building Automation and Control Networks) implements ANSI/ASHRAE 135-2001 standard.
This implementation was tested with the following devices:
Siemens
Desigo PXM20 (Control unit, LON interface, BACnet over LON)
Desigo PXC22 (Control station, LON interface, BACnet over LON)
Desigo PXC22-E.D (Control station, Ethernet interface, BACnet/IP)
Desigo PXG80-N (BACnet router, Ethernet interface, LON interface, BACnet/IP, BACnet over LON)
Delta Controls
DSC-1212E (System controller, Ethernet interface, BACnet/IP)
DAC-633 (Application controller, MS/TP interface connected to DSC-1212E, which works as BACnet router)
DAC-633 (Application controller, MS/TP interface connected to the Moxa 5250 serial/ethernet converter and communicated directly as a BACnet MS/TP device in UDP mode)
DAC-1146 - (Application controller, MS/TP interface connected to DSC-1212E which works as BACnet router)
Sauter
EYK220F001 (Automation station, Ethernet interface, BACnet/IP)
EYR203F001 (Universal controller connected to EYK220F001)
EYR207F001 (Universal controller connected to EYK220F001)
York
BACnet MS/TP MicroGateway (Communication card for York coolers, RS485 interface, BACnet MS/TP)
SE-Elektronic GmbH:
E-DDC3.1 (DDC automation station, Ethernet interface, BACnet/IP)
Klimasoft
BACnet/Mbus converter MBG-MSTP: Converter from BACnet to Mbus protocol (RS485 interface, BACnet MS/TP)
Characteristics of the current version:
Communication in Ethernet (BACnet/IP) and LONTalk networks.
Limited support of MS/TP network (master-slave token-passing on RS-485): without automatic searching for Master stations.
Support of BACnet router (the connection between BACnet/IP and LONTalk networks).
Reading and writing of simple values (binary, integer, real, strings, date, time, etc..) and any ASN sequences.
Support of the polling method of data reading (messages ReadProperty-Request and ReadPropertyMultiple-Request messages)
Support of change method of data reading (an optional registration by SubscribeCOV-Request or SubscribeCOVProperty-Request and following processing of ConfirmedCOVNotification-Request and UnconfirmedCOVNotification-Request).
Writing the values by WriteProperty-Request.
Dynamic change of I/O tag address by TELL command SETPTADDR (to read the values of Schedule objects).
Work with objects of Schedule type (schedules).
BACnet protocol considers all the participants of the communication as the network devices. Each network device contains at least one (mostly just one) object Device (its Object Identifier must be unique within the whole network). This object contains other objects of defined types (Analog Input, Analog Output, Analog Value, Binary Input, Binary Output, Binary Value, Calendar, Command, Event, Group, File, etc.). The object detection - see a description of Who-Is and Who-Has Request types.
Each object has properties, which can be mandatory or optional. Moreover, each producer of BACnet devices can implement other properties when necessary.
The messages in the BACnet protocol are related to the manipulation of objects and their properties. They are defined with the help of ASN.1 (Abstract Syntax Notation version 1) and encoded by a simple version of BER (Basic Encoding Rules - encoding of ASN.1 messages).
The messages contain, besides fixed defined items, also items of 'Abstract Syntax & Notation' type. It means that any sequence (or "tree"), the meaning of which is defined by an implementer, can be in its place in the message. When using BER, it enables parsing of the message with the unknown items. BER defines two basic item types (tags): application and context.
The application tags are predefined:
Null - empty value
Boolean - yes/no
Unsigned - positive integer
Signed - integer
Real - 4-byte real number
Double- 8-byte real number
Octet String - a sequence of character
Character String - charset + text string
Bit String - a sequence of bits
Enumerated Value - enumerated value
Date - date
Time - time
Object Identifier - identifier of the object (32-bit number, it consists of 10-bit number - Object Type and 22-bit number - Instance)
The context tags depend on the context (on the position in the message). Without knowing the context (a description of the message that is being parsed), it is possible to find out that the context tag No. 5 with the length of 4 bytes is on the particular position, but you need additional information whether the value is Unsigned, Signed, Real, Bitstring or a different type of value.
Besides the simple application and context tags, the properties may be also complex:
Sequence - the sequence that consists of other properties (both simple and complex one), they are either required or optional
Sequence of - the sequence of N-tuple of properties
Choice - one of N possibilities