Next: Echelon i.LON 100 SOAP/XML
Up: Existing Solutions for SOAP
Previous: oBIX - Open Building
Contents
In October 2004, the American Society of Heating, Refrigerating
and Air Conditioning Engineers, Inc. (ASHRAE) released an addendum to
standard 130-2004, called BACNet/WS42 where ``WS'' stands for ``Web Service''. More information
about this standard can be found in [BACNET/WS].
The BACNet/WS standard is designed to be a general Web Service-based
communication protocol in the industrial and home automation which can
be applied to any fieldbus system. BACNet/WS is currently a public
review but is expected to become standardized in the near future.
BACNet/WS does not define the SOAP message format and it does not
provide WSDL code or XML Schemas. Instead, it concentrates on defining
an interface that can be used by higher level programming languages,
such as C++ or Visual Basic. This interface specification covers
topics like data structure, data types or available Web Service
methods. BACNet/WS was designed with the idea that the custom
interface is preliminary to the actual SOAP/XML message
specifications. However, it is expected that this or another
standard will provide WSDL documents in the near future which can
be used to access a BACNet/WS compliant server.
BACNet/WS stores its data in so-called ``nodes'' which are organized
in a hierarchical tree structure, similar to oBIX. Nodes may have one
or multiple children but always have one parent. The topmost node is
called ``root node''. Nodes present their state with so-called
``attributes'', such as its value or quality. Some attributes are
mandatory for a node, others are optional. One special attribute, the
``Value'', is the holder of the actual value of the node and is the
only attribute that may be written.
Nodes and its attributes are addressed with a ``path'' similar to a
path in a URL, such as /temperature/room2/sensor1 for a
node address or /temperature/room2/sensor1:Value for an
attribute of this node.
The BACNet/WS standard introduces so-called ``Reference Nodes'' which
are pointers to real nodes. Reference nodes can be handled equally to
their referred counterparts and are distinguished only by the special
node attributes ``Reference'' and ``Aliases''43. With the use of
reference nodes, multiple logical trees can be built, as depicted in
figure 22. The right tree in the figure illustrates
a logical/geographical data organization where reference nodes such
as ``sensor1'' are referring to nodes in the left tree.
Figure 22:
Data Organization in BACNet
![\begin{figure}\centering
\includegraphics[scale=0.7]{graphics/bacnet_tree.eps}\end{figure}](img37.png) |
BACNet provides the following key elements:
- Localization:
- BACNet/WS compliant servers may support
multiple locales and return strings or specific data types in a
localized format. In addition, BACNet servers have to provide data in
its ``canonical'' format, which is a locale-independent standardized
form44. The localized format is intended
for presentation to humans while the canonicalized format is meant for
machine processing.
- Data Types:
- The standard specifies the following data types for
node attributes: None, String, Real, Integer, Multistate,
Boolean, Date, Time, DateTime, Duration. Moreover, BACNet/WS defines
so-called ``polymorphic'' parameters, where a specific data type
cannot be assigned45. Therefore these parameters are always of the type ``string''
and have to be converted to an appropriate data type by the
application.
- Units:
- BACNet/WS defines a special node attribute which
can optionally be used to define the unit of the node value. The
standard provides a huge list of units that may be used. The complete
list can be found in [BACNET/WS].
- Attributes:
- Every BACNet compliant node contains attributes
which provide information about the node and its data. The most
significant attribute is the ``Value'' which contains the actual node
data. The value is accompanied by the attributes ``ValueType'',
``Units'', ``Resolution'' and ``Minimum/Maximum'' which provide
information about the data type and format of the value. Other
interesting attributes are ``ValueAge'' for specifying the actual time
the value was valid, ``HasHistory'' for informing the client that the
node provides historic data and ``InAlarm'' which can be used to
inform clients that the node is in a special alarm state.
- Services:
- The specification introduces so-called
``Services'' which represent methods for accessing and manipulating
data in the server. Figure 23 gives an overview
about available services.
Figure 23:
Available BACNet services
![\begin{figure}\centering
\includegraphics[scale=0.7]{graphics/bacnet_services.eps}\end{figure}](img38.png) |
- getValue:
- This service reads data from node attributes. The
returned value is polymorphically encoded and is therefore of the type
``string''. In case of an error, the server replies with an error
message as defined in [BACNET/WS]. The getValue Service can also be
used to retrieve arrays, in which case the returned value contains a
string, consisting of array elements delimited by semicolons. The
service ``getValues'' provides retrieval of multiple attributes in one
Web Service call.
- getArray:
- The getArray service may be used to retrieve
array attributes as an array of strings instead of a single string.
This service is accompanied by the two services
``getArrayRange''46 and ``getArraySize''47.
- getHistoryPeriodic:
- [BACNET/WS] specifies historical data
retrieval by the service ``getHistoryPeriodic''. The service returns
an array of strings, which may be limited by the service parameters
``start'', ``count'' and ``interval''48.
- setValue:
- This service writes data to node attributes,
which is only allowed for the attribute ``Value''. For verification
purposes, the service implements a special parameter ``readback'',
which - if specified - forces the server to read back the written
data. In case of success, the service returns an empty string or the
value, if the parameter ``readback'' is specified. The standard
furthermore provides the service ``setValues'' which can be utilized to
write multiple attributes at once.
BACNet/WS does not provide methods for system notifications, such as
subscription. Moreover, it does not specify how to obtain information
about the BACNet Server. Methods for browsing are also not
defined49. However, it is
possible that these missing points will be addressed in future
releases of the standard.
Next: Echelon i.LON 100 SOAP/XML
Up: Existing Solutions for SOAP
Previous: oBIX - Open Building
Contents
Hermann Himmelbauer
2006-09-27