Archive for the 'BACnet MSTP' Category

BACnet MSTP on a Delta DFM-200 Field Module

This device supports two protocols. One is BACnet MS/TP and the other is LinkNet (Delta’s own protocol).

When the product is shipped the internal jumper is set to LinkNet. Despite this BACnet MSTP is active and if you connect a MSTP client you can read and write the BACnet objects. What you cant do until you change the jumper is discover the device. It appears the only effect of the jumper is to enable the reply to a who-is.

Did you know that with the CAS BACnet Explorer you can add a device manually and then discover its objects and properties. Using this feature the DFM-200 was ‘discovered’ even with the protocol selection jumper in the wrong position.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Chipkin BACnet Explorer set the max master

To change the CAS BACnet explorer MSTP MaxMaster.

1) Open the settings file with notepad. The settings file is stored in of two places

C:\Users\<username>\Documents\CAS BACnet Explorer\Settings.xml
C:\Users\<username>\Documents\CAS BACnet Explorer (beta)\Settings.xml

2) Find the iMSTPNmaxMaster value

<key name=”iMSTPNmaxMaster” value=”127“/>

3) Change the value to a number between 1-254. Note: 255 (OxFF) is reserved for broadcasts.

From the BACnet Spec:

This parameter represents the value of the Max_Master property of the node’s Device object. The value of Max_Master specifies the highest allowable address for master nodes. The value of Max_Master shall be less than or equal to 127. If Max_Master is not writable in a node, its value shall be 127.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Modbus/TCP to BACnet/IP Configuration Sample

This example FieldServer configuration illustrates a config which reads data from a Modbus/TCP device and makes the data available as BACnet data. A remote BACnet client can read and write points.

Relationship between a connection, node and Map Descriptor for a client

The name of the connection/adapter is used to form the relationship between the connection and the node. Here the name ‘N1’ is used in common. This means that when messages are sent to the node called PLC_01 (Node Address=1) they will be sent using connection N1.

As the FieldServer processes each task (Map Descriptor) it needs to know which device or node to send the message to. The name of the Node is used to form the relationship. For example, the task to read address 40001 is defined for Node=’PLC_01’. Now the FieldServer looks for a node with the same name. When it finds it, it then known which connection to send the message on. In this example, it also finds the IP address of the node. So now it knows to send a read holding register message to the device with device address = 1 at IP Adrdess 192.168.1.82 using Network connection N1.

img1

Relationship between a connection, node and Map Descriptor for a Server

For a server, it is not necessary to form a relationship between the connection and the node. What does it mean when a node is not related to a connection? Let’s say you define the same protocol on two connections (eg N1 and N2 – not all FieldServer’s have both) but you want to use the same server node to respond to messages that arrive on connection N1 or N2. By leaving the relationship between a connection and a node undefined (like this example), this becomes possible.

For a server, Map Descriptors may be thought of as server data object definitions. They must be related to a node. When a request for data from node 11 (like this example) is received, the driver must find a matching server node in the config. Once a matching node is found, the FieldServer must find a data object definition that matches the request. Thus, a relationship between the node and the Map Descriptor must be established. This is done by using a common Node_Name as illustrated by the green line.

img2

What connects two protocols together?

The Data Arrays connect protocols. The client reads data and stores it in a data array. The server serves data, extracting it from the Data Array and serving the data using a different protocol. Some data scaling or rearrangement may be required. FieldServer provides tools to move, reorganize, do arithmetic and scale Data Array data. In this example the relationship is direct.

In this diagram the pink and purple lines show how client side data read using Modbus is served as BACnet Data.

img3

The Client read 20 data items from register 30001 and stores the data in DA_Ana_Inputs starting at offset zero.

This means DA_Ana_Inputs[0] contains the value of register 30001.  DA_Ana_Inputs[1] contains the value of register 30002.  DA_Ana_Inputs[2] contains the value of register 30003.

The server Map Descriptor named ‘AnaInput01’ serves data extracted from the Data Array named ‘DA_Ana_Inputs’ offset 0. Thus the data it serves correlates to register 30001.

The server Map Descriptor named ‘AnaInput02’ serves data extracted from the Data Array named ‘DA_Ana_Inputs’ offset 1. Thus the data it serves correlates to register 30002.

The server Map Descriptor named ‘AnaInput03’ serves data extracted from the Data Array named ‘DA_Ana_Inputs’ offset 2. Thus the data it serves correlates to register 30003

A similar discussion applies to the other data.

If the client goes offline or the data cannot be read because of some error then the age of the data increases. At some point the data becomes too old to serve in which case the FieldServer marks the data as unreliable.

Data Arrays

Data Arrays are used to store data. Select Data_Formats that are suitable for the data. FieldServers can store 1,8,16 and 32 bit data, signed and unsigned as will as floating point data. A few other formats such as packed_bits and packed_bytes allow binary data to be easily packed/unpacked. In addition using special functions data can be moved from one location to another. During the move, data formats can be changed and arithmetic can be performed.

Data arrays use FieldServer memory but the length does not affect the point count.

img4

Scaling

A value can be scaled before it is served. In this example, the value served will be 100 times smaller than the value found in the Data Array. Read the config as follows; When a value of 0-10,000 is extracted from the Data Array it will be served to the remote node as a value between 0-100.

img5

Modbus Client

No more than once per second (Scan_Interval) read (Function=RDBC which means read continuously) 20 (Length) input registers starting at address 30001 (Address) and store the returned data in DA_Ana_Inputs[0..19]. For this protocol the Map_Descriptor_Name serves only a descriptive purpose – it is not used by the protocol.

There are three other similar tasks. Each reads a different data type and stores it in a different location.

img6

BACnet Server

The BACnet device instance has been set to 11. (Node_ID).

12 Data objects have been defined. Each is defined by a single map descriptor. The unstated length of each map descriptor is 1 (default value for this protocol.). That means each map descriptor defines a single BACnet data object. The object type and instance numbers are defined by Data_Type and Object_ID. They do not have to be sequential.

The MapDescriptor name is used as the BACnet Object Name. When a remote client reads from this server it will find objects named ‘AnaInput01’, ‘AnaInput02’, etc…

The Virtual BACNet device will be allocated to the Local Network. (Network zero). There are methods to change this default allocation.

A parameter called ‘Relinqush_Default’ tells the driver what value to set the object to if it is not being commanded by a remote device and if it is not being read from a remote device. It is required for output types and the typical value is zero.

The function is set to server meaning that these map descriptors are capabilities as opposed to tasks. The FieldServer does no active work based on these Map Descriptors. The server side waits passively until it receives a message from a remote BACnet device. When a message is received, the Fieldserver matches it against a server side node and then against the server side map descriptors. If there is a match data can be extracted and served. If there is no match then an error response is sent.

img7

Engineering Units are a property of a BACnet data object. You can set them to any supported unit using the ‘Units’ parameter. The manual provides a full list of units. You can see the analog data is scaled before it is served.

How to Write/Command Data

When you send a BACnet comamd to change the value of an object (typically an output object) then a message is sent to the FieldSever with the new value. If a matching device and object are found the Data Array is updated. Normally the data is read by the client side and shared with the server side. These two operations seem to contradict each other. Here is how it works:

1. Normally client side (Modbus) reads the data and server side serves that data.

2. BACnet Scada System sends a command to write a data object.

3. This causes the FieldServer to store the data in the Data Array location being used by the corresponding Server Map Descriptor.

4. This in turn triggers a once off operation. Instead of reading the data from the Modbus Device, a single write to the Modbus device is performed with the new data. FieldServers call this a ‘write-though-read’. That is why we get away with having no ‘write’ map descriptors to the Modbus device but we are still able to send commands to the Modbus Device.

Lets say a remote controller sends a new setpoint to Analog Output #2. In this case the new setpoint is stored in DA_Ana_Outputs[1] (offset 1).

img13

You can deduce that DA_Ana_Outputs[1] corresponds to Modbus register 40002. ( Basis for deduction – follow the data array name from the server map descriptor – find which client Map Descrptor uses the same Data Array. In this case it is the one called ‘Read_Holding_Regs’. Now you can see that 40001 corresponds to DA_Ana_Outputs[0] and hence 40002 corresponds DA_Ana_Outputs[1].

img14

Now the FieldServer knows where to send the new setpoint and hence a message to set 40002 in device #1 using Modbus/TCP is sent.

Modbus and Floating Point Numbers

Modbus does not naturally have a way of transporting floating point numbers. Commonly, two 16bit integers are used to store a representation of a floating point number. Commonly the representation method is IEEE754. FieldServer have a method of doing the conversion.

The following table shows the FieldServer function moves that copy two adjacent 16-bit registers to a 32-bit floating point value:

img8

In these examples, 32 16-bit values are combined to form 16 floating point numbers.

In the 1st example DA_SYN_REG[502] and DA_SYN_REG[503] are combined and stored in DA_SYN_ FLOAT500[0]. This is repeated 15 more times. Eg DA_SYN_REG[504] and DA_SYN_REG[505] are combined and stored in DA_SYN_FLOAT500[1].

img9

Complete Configuration File

img10
img11
img12

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

FieldServer Gateway (Dual Serial)

Dual Serial – Ethernet

FS-B2510

The FS-B2510 Dual Serial-Ethernet gateway provides a wealth of features to enable data transfer between different devices and networks utilizing serial and Ethernet protocols. The extensive library of FieldServer drivers provides easy interoperability with devices and networks used in building automation, HVAC, fire and process control industries. The FS-B2510 is particular cost effective in the integration of two devices/systems utilizing serial protocols such as a fire alarm control panel to BACnet MSTP.

The FS-B2510 is one of the FS-X30 Series FieldServers designed to meet the needs of system integrators in designing a complete interoperable system. The FS-B25 Series brings together the powerful FieldServer driver library with state-of-the-art gateway design. This FieldServer includes twi serial connections (RS-232 or RS-485, software selectable) and one 10/100BaseT Ethernet ports. The multiport design allows for serial-to-serial interfaces or interface from mulitple serial products to an Ethernet or LonWorks network. The Ethernet port enables the integrator to connect a PC to download configuration changes without disturbing the system connections and without the additional cost of an external hub.

CAS sell, support, install, configure and develop custom drivers for FieldServers. With every FieldServer purchased from CAS that includes a BACnet protocol we provide a free license to the CAS BACnet Explorer which can be used to test / prove the BACnet interface is working.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Segementation in BACnet

 

BACnet messages that don’t fit in a single packet use segmentation. Why would one message need more than one packet ? Well IP packets have a maximum length of 1500 bytes. So if you are sending a BACnet IP message that is longer than 1500 bytes then you need to send more than one Ethernet packet.

Example: Ask your fishing buddy if he wants another beer. The reply is short and fits in s single response packet. Yes. Now ask him to tell you about the one that got away. He will need multiple sentences to tell you the long storey. Your buddy needs you to support segmentation otherwise you will only hear the first sentence of his storey (lucky you.)

Be aware: 1500 is not a hard coded Maximum Transmission Unit (MTU) length in all Ethernet applications. Often the size is set smaller.

Most serial protocols like MS/TP choose a small number for the MTU because am error requires retransmission and the data is slow so it better to catch an error in smaller packet.

Practical / Field Issues

  How does Segmentation affect you as a user ?If a device has a large number of objects and a message is sent to read the object list then it is possible that the response wont fit in a single packet. If both the device and the requestor support segmentation then there is no problem. If either side doesn’t support segmentation then 1) You are out of luck or 2) The requestor must use a different method to read the object list – for example, reading each object using its index until it reaches an index number with no object.The CAS BACNet explorer works like that – first it tries the most efficient method and then it slowly downgrades itself to try and ensure the response will fit in a single packet.

How do you know if a device supports segmentation ?

You can read the vendor’s PIC (Protocol Implementation and Conformance) Statement or you can look at the device object’s properties.

segmentation in bacnet

segmentation in bacnet

segmented-both (0)

segmented-transmit (1)

segmented-receive (2)

no-segmentation (3)

How can you work around the segmentation issue ?

If you can configure the services your system uses to read data you have a fighting chance. Ensure you use read-property for a single property – avoiding read-property for all properties. If you have to use read-property-multiple then limit the list of properties to be read and avoid reading all using this service.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Reducing latency on com ports

When a BYTE is sent from a serial device (BACnet MSTP thermostat) to a USB to 232/485 converters (USB-COMI-SI-M) it is cached on the USB converter until one of two things happened.

  • Transfer size – More then x BYTES are collected or
  • Latency timer – More then n Milliseconds (ms) expirer.

By default most ‘off the self’ USB to serial converters have a latency timer of 50ms and a transfer size of 4096 BYTES

The can be a major problem for PC utilities monitoring a serial network. The PC doesn’t get the BYTES fast enough to respond to the serial device before it times out.

For example:

On a network with a BACnet MSTP thermostat and a RS485 to USB converter connected to a PC. The BACnet MSTP thermostat will send a poll to the PC and will expect the PC to respond within 100ms. If the thermostat does not receive a response within this time the thermostat will assume that the device has gone offline. When the USB to 458 converter receives the message it will stay in its buffers for 50ms before being sent to the PC. Depending on the message it may take longer then 50 ms for the PC to respond to the poll and the thermostat will consider the PC offline.

Luckily we can set the Transfer size, and latency timer.

Most USB to 485 devices that I have used have the ability to set the transfer size and the latency timer.

  1. Start menu–> Settings –> Control panel –> device manager –> Ports (COM & LPT) –>{Select your USB to RS485 converter}
  2. Right click and select “Properties
  3. Select the “Port Settings” tab
  4. Click the “Advanced” button advancedsettingsforcomm10
  5. Change the Latency Timer (mSec) to 1 or the lowest possible setting.
  6. Change the USB Transfer sizes to 64 or the lowest possible settings
  7. Save and close.
Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

BACnet BIBB’s

The implementation of BACnet is under-the-hood. It is invisible to most of us users. We don’t know what services are supported and nor do we know when each service is used. If we don’t know then how can we tell, for example, whether a controller and field device such as a thermostat can interact.

The question is: How do you match requirements of a project to the capabilities of the devices being installed ? The Answer – in BACnet – is BIBBS.

A BIBB is a Bacnet Interoperability Building Block.

Continuing with our example: Say your controller needs to read the set point on a thermostat to perform its control. Then the controller needs to support a BIBB called DS-RP-A. This isn’t enough. The thermostat must be able to respond so it needs to support a BIBB called DS-RP-B. DS stands for Data Sharing. RP stands for Read Property. The A and the B stand for Client (A) and Server (B).

The outdoor temperature on a HVAC controller could come from two places. A local sensor connected to the unit or a remote value sent via BACnet. In this case you would want to match the BAS controller and HVAC controller with BIBBS DS-WP-A and DS-WP-B (DataSharing-WriteProperty-A or B for Client and Server).

Thus, if you buy a great controller that supports Conditional and Range Reads you would want to buy field devices that support these services. DS-RPC-A/B for DataSharing-ReadPropertyConditional-Client/Server.

Abbreviation BIBB Category
DS        Data Sharing
AE        Alarm and Event Management
DM       Device Management
DM and NM are part of the same category.
NM       Network Management
T          Trend
SCHED Schedule

TIP : Device A and Device B. All the BIBBs end in ‘-A’ or ‘-B’. BACnet refers to the A device and the B device. The A device in this context is a device acting as a client. The B device means a device acting as a server. In BACnet devices can be both clients and servers since almost all devices can read data from each other.

A complete table of BIIB’s is available at: http://www.chipkin.com/articles/bacnet-bibbs-table-bacnet-interoperability-building-blocks

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

BACnet BIBB’s TABLE – Bacnet Interoperability Building Blocks

Notes on BIBB’s are provided here: http://www.chipkin.com/articles/bacnet-bibbs

AE-ACK-A Alarm and Event Notification – Acknowledgement
Alarm and Event Management
A client sends an acknowledgement after receiving an Alarm or Event notification that requires one.
Service Initiate Execute
AcknowledgeAlarm Yes No
AE-ACK-B Alarm and Event Notification – Acknowledgement
Alarm and Event Management
A server processes an alarm or event notification
Service Initiate Execute
AcknowledgeAlarm No Yes
AE-ASUM-A Alarm and Event – Alarm Summary
Alarm and Event Management
A client polls for a summary
Service Initiate Execute
GetAlarmSummary Yes No
AE-ASUM-B Alarm and Event – Alarm Summary
Alarm and Event Management
Server sends an alarm summary
Service Initiate Execute
GetAlarmSummary No Yes
AE-ESUM-A Alarm and Event – Enrolment Summary
Alarm and Event Management
Client wants a summary of event initiating objects. Selection criteria may be specified in the request.
Service Initiate Execute
GetEnrollmentSummary No Yes
AE-ESUM-B Alarm and Event – Enrolment Summary
Alarm and Event Management
Server sends a list of selected objects that are event initiating. Selectionis based on the requesting criteria.
Service Initiate Execute
GetEnrollmentSummary Yes No
AE-INFO-A Alarm and Event – Information
Alarm and Event Management
The GetEventInformation service is used by a client BACnet-user to obtain a summary of all “active event states”. The term
“active event states” refers to all event-initiating objects that
(a) have an Event_State property whose value is not equal to NORMAL, or
(b) have an Acked_Transitions property, which has at least one of the bits (TO-OFFNORMAL, TO-FAULT, TONORMAL)
set to FALSE.
Service Initiate Execute
GetEventInformation Yes No
AE-INFO-B Alarm and Event – Information
Alarm and Event Management
Server sends a summary of all active event states
“active event states” refers to all event-initiating objects that
(a) have an Event_State property whose value is not equal to NORMAL, or
(b) have an Acked_Transitions property, which has at least one of the bits (TO-OFFNORMAL, TO-FAULT, TONORMAL)
set to FALSE.
Service Initiate Execute
GetEventInformation No Yes
AE-LS-A Alarm and Event – Life Saftey
Alarm and Event Management
A client devices as a life saftety device is able to process and acknowldege notifications it receives about life safty events. The Client
sends a reset, silence or unsilence message. Is intended for fire and life safety systems.
Service Initiate Execute
LifeSafetyOperation Yes No
AE-LS-B Alarm and Event – Life Saftey
Alarm and Event Management
A device as a server and as a life saftey device sends notifications about life safety events. Server performs the reset or silence
Service Initiate Execute
LifeSafetyOperation No Yes
AE-N-A Alarm and Event Notification
Alarm and Event Management
A Client can process notifications about alarms and other events from any standard or proprietary eventgenerating
object of any standard or proprietary event type.
Service Initiate Execute
UnConfirmedEventNotification No Yes
ConfirmedEventNotification No Yes
AE-N-E-B Alarm and Event Notification – External Device
Alarm and Event Management
Server device sends notifications about alarms and other events in another device. At least one event enrolment object mustbe
supported and DS_RP-A and AE-N-I-B must be supported. If the notifications require acknowldgement then the server must be capable
of processing the acknowledgdments by supporting AE-ACK-B
object of any standard or proprietary event type.
Service Initiate Execute
AE-N-I-B Alarm and Event Notification – Internal
Alarm and Event Management
Server device sends notifications about alarms and other events. The server must support Intrinsic or Algorihmic reporting. If the
notifications require acknowldgement then the server must be capable of processing the acknowledgdments by supporting AE-ACK-B
object of any standard or proprietary event type.
Service Initiate Execute
ConfirmedEventNotification Yes No
UnconfirmedEventNotification Yes No
DS-COV-A Change of Value
Data Sharing
Client can subscribe for COV notification and can process the notifications from the remote device.Support for subscriptions of a
limited lifetime is required, and support for subscriptions of indefinite lifetime is optional. This service has two important differences
from the SubscriveCOVProperty service. Firstly, there is a limited set of properties (For the most part, Present_Value and Status_Flags)
it may subscribe to and secondly the COVIncrement is not part of the subscription – the notifications are based on how the server is
Service Initiate Execute
UnconfirmedCOVNotification No Yes
SubscribeCOV Yes No
ConfirmedCOVNotification No Yes
DS-COV-B Change of Value
Data Sharing
Server can accept subscriptions and send COV notifications to the remote device. Requires support for a minimum of five concurrent
subscriptions. Support for
subscriptions of a limited lifetime is required, and support for subscriptions of indefinite lifetime is optional.
Service Initiate Execute
ConfirmedCOVNotification Yes No
UnconfirmedCOVNotification Yes No
SubscribeCOV No Yes
DS-COVP-A Change of Value – Property
Data Sharing
Client can subscribe for COV notification of one/more properties of a single object and can process the notifications from the remote
device.Support for subscriptions of a limited lifetime is required, and support for subscriptions of indefinite lifetime is optional. This
service allows the COVIncrement to be specified and range of subscribable properties is larger than DS-COV-A
Service Initiate Execute
SubscribeCOV Yes No
ConfirmedCOVNotification No Yes
UnconfirmedCOVNotification No Yes
DS-COVP-B Change of Value – Property
Data Sharing
Server can accept subscriptions and send COV notifications Requires support for a minimum of five concurrent subscriptions. Support
for subscriptions of a limited lifetime is required, and support for subscriptions of indefinite lifetime is optional.
Service Initiate Execute
ConfirmedCOVNotification Yes No
UnconfirmedCOVNotification Yes No
SubscribeCOV No Yes
DS-COVU-A Unsolicited COV
Data Sharing
Client can process unsolicited COV messages from a Server.
Service Initiate Execute
UnconfirmedCOVNotification No Yes
DS-COVU-B Unsolicited COV
Data Sharing
Server can send unsolicited COV messages to a remote client.
Service Initiate Execute
UnconfirmedCOVNotification Yes No
DS-RP-A Read Property
Data Sharing
Client Polls for Data from remote device
Service Initiate Execute
ReadProperty Yes No
DS-RP-B Read Property
Data Sharing
Server responds to poll
Service Initiate Execute
ReadProperty No Yes
DS-RPC-A Read Property Conditional
Data Sharing
Client polls for data from one/more properties from one/more objects. Selection is based on criteria specified.
Service Initiate Execute
ReadPropertyConditional Yes No
DS-RPC-B Read Property Conditional
Data Sharing
Server responds conditionally sending selected properties from selected objects based on conditional criteria.
Service Initiate Execute
ReadPropertyConditional Yes No
DS-RPM-A Read Property Multiple
Data Sharing
Client Polls for Data from remote device
Service Initiate Execute
ReadPropertyMultiple Yes No
DS-RPM-B Read Property Multiple
Data Sharing
Server responds to poll
Service Initiate Execute
ReadPropertyMultiple No Yes
DS-WP-A Write Property
Data Sharing
Client sets the value of a property of a single object in the server device.
Service Initiate Execute
WriteProperty Yes No
DS-WP-B Write Property
Data Sharing
Server allows a value to be changed by a remote client.
Service Initiate Execute
WriteProperty No Yes
DS-WPM-A Write Property Multiple
Data Sharing
Client sets the value of a one/more properties of a single object in the server device. This is different from ReadPropertyMultiple which
can process properties more than one object.
Service Initiate Execute
WritePropertyMutiple Yes No
DS-WPM-B Write Property Multiple
Data Sharing
Server allows the values of one/more properties to be set by a remote client.
Service Initiate Execute
WritePropertyMutiple No Yes
DM-BR-A Backup and Restore
Device and Network
Client reads the files that contain the configuration of the B device and writes those files to the B device should it
need to be restored to its previously backed-up state.
Service Initiate Execute
ReinitializeDevice Yes No
CreateObject Yes No
AtomicReadFile Yes No
AtomicWriteFile Yes No
DM-BR-B Backup and Restore
Device and Network
Server sends it’s cofiguration to a remote client and allows a remote device to restore it by accepting a configuration and allowing a
Service Initiate Execute
CreateObject No Yes
ReinitializeDevice No Yes
AtomicWriteFile No Yes
AtomicReadFile No Yes
DM-DCC-A Commication Control
Device and Network
The DeviceCommunicationControl service is used by a client BACnet-user to instruct a remote device to stop initiating and
optionally stop responding to all APDUs (except DeviceCommunicationControl or, if supported, ReinitializeDevice) on the
communication network or internetwork for a specified duration of time. This service is primarily used by a human operator
for diagnostic purposes.
Service Initiate Execute
DeviceCommunicationControl Yes No
DM-DCC-B Commication Control
Device and Network
The controlled device responds to the request.
Service Initiate Execute
DeviceCommunicationControl No Yes
DM-DDB-A Dynamic Device Binding
Device and Network
A client can send discovery messages as well as process discovery anouncements send by other devices
Service Initiate Execute
Who-Is Yes No
I-Am No Yes
DM-DDB-B Dynamic Device Binding
Device and Network
A server can process discovery requests and can accounce itself.
Service Initiate Execute
Who-Is No Yes
I-Am Yes No
DM-DOB-B Dynamic Object Binding
Device and Network
Client polls to see which devices contain an object specified by Name or Object Identifier
Service Initiate Execute
I-Have Yes No
Who-Has No Yes
I-Have Yes No
Who-Has No Yes
DM-LM-A List Manipulation
Device and Network
Many BACnet object types have properties that are lists of a particular datatype. The Client can add and remove list
elements in properties of objects in the Server
Service Initiate Execute
AddListElement Yes No
RemoveListElement Yes No
DM-LM-B List Manipulation
Device and Network
The Server device removes/add the items the client requested to be changed in the list
Service Initiate Execute
RemoveListElement No Yes
AddListElement No Yes
DM-OCD-A Object Creation and Deletion
Device and Network
A client requests a server device to create / delete an object. Only applies to the Object Types supported on the server. Check the server
device PICS statememnt as it shoud contain a list of the types which can be dynamicallly manipulated.
Service Initiate Execute
CreateObject Yes No
DeleteObject Yes No
DM-OCD-B Object Creation and Deletion
Device and Network
A server device processes the request to add / delete objects on the fly.
Service Initiate Execute
CreateObject No Yes
DeleteObject No Yes
DM-PT-A Private Transfer
Device and Network
Client sends non-BACNet data to a remote device.
Service Initiate Execute
ConfirmedPrivateTransfer Yes No
UnconfirmedPrivateTransfer Yes No
DM-PT-B Private Transfer
Device and Network
The Recipient of the non-BACNet data, processes the data.
Service Initiate Execute
UnconfirmedPrivateTransfer No Yes
ConfirmedPrivateTransfer No Yes
DM-R-A Restart
Device and Network
When devices restart they can send notifications of this event. Support for this BIBB means the device can process these notifications
Service Initiate Execute
UnconfirmedCOVNotification No Yes
DM-R-B Restart
Device and Network
When a device restarts it can send notifications of this event.
Service Initiate Execute
UnconfirmedCOVNotification Yes No
DM-RD-A Reinitialize
Device and Network
Client requests a device to reinitialize
Service Initiate Execute
ReinitializeDevice Yes No
DM-RD-B Reinitialize
Device and Network
Server device performs the reinitialization
Service Initiate Execute
ReinitializeDevice No Yes
DM-TM-A Text Message
Device and Network
Client sends text data to a remote device. The device must support at least one of the services.
Service Initiate Execute
UnconfirmedTextMessage Yes No
ConfirmedTextMessage Yes No
DM-TM-B Text Message
Device and Network
The Recipient of the Text data, processes the data.
Service Initiate Execute
UnconfirmedTextMessage No Yes
ConfirmedTextMessage No Yes
DM-TS-A Time Synch – Local Time
Device and Network
Client sends a time synch message. The TimeSynchronization service is used by a requesting BACnet-user to notify a remote device of
the correct current time.
This service may be broadcast, multicast, or addressed to a single recipient. Its purpose is to notify recipients of the correct
current time so that devices may synchronize their internal clocks with one another.
Service Initiate Execute
TimeSynchronization Yes No
DM-TS-B Time Synch – Local Time
Device and Network
The server device applies the time synch. Its device object must support the Local_Time and Local_Date properties.
Service Initiate Execute
TimeSynchronization No Yes
DM-UTC-A Time Synch – Coordinated Universal Time
Device and Network
Client sends a time synch message. The TimeSynchronization service is used by a requesting BACnet-user to notify a remote device of
the correct current time.
This service may be broadcast, multicast, or addressed to a single recipient. Its purpose is to notify recipients of the correct
current time so that devices may synchronize their internal clocks with one another.
Service Initiate Execute
UTCTimeSynchronization Yes No
DM-UTC-B Time Synch – Coordinated Universal Time
Device and Network
The server device applies the time synch. Its device object must support the Local_Time , Local_Date, UTC_Offset …properties.
Service Initiate Execute
UTCTimeSynchronization No Yes
DM-VT-A Virtual Terminal
Device and Network
A client opens and conducts a Virtual Terminal session with a remote device.
Service Initiate Execute
VT-Close Yes Yes
VT-Data Yes Yes
VT-Open Yes No
DM-VT-B Virtual Terminal
Device and Network
A server devices allows a Virtual Terminal sessions to be opended and exchanges data with the remote client.
Service Initiate Execute
VT-Open No Yes
VT-Data Yes Yes
VT-Close Yes Yes
NM-CE-A Connection Establishment
Network Management
A device sends a command to a half-router to establish/terminate connections
Service Initiate Execute
Establish-Connection-To-Network Yes No
Disconnect-Connection-To-Network Yes No
NM-CE-B Connection Establishment
Network Management
A half-router processes commands to establish/terminate connections
Service Initiate Execute
Disconnect-Connection-To-Network No Yes
Establish-Connection-To-Network No Yes
NM-RC-A Router Configuration
Network Management
Client sends messages to configure or query a router or half-router
Service Initiate Execute
Initialize-Routing-Table-Ack No Yes
Initialize-Routing-Table Yes No
Who-Is-Router-To-Network Yes No
I-Am-Router-To-Network No Yes
I-Could-Be-Router-To-Network No Yes
NM-RC-B Router Configuration
Network Management
A router or half-router acts on configuration commands or responds to queries about the configuration.
Service Initiate Execute
Who-Is-Router-To-Network Yes Yes
Initialize-Routing-Table No Yes
Initialize-Routing-Table-Ack Yes No
I-Am-Router-To-Network Yes Yes
SCHED-A Scheduling
Scheduling
A client manipulates schedules and calandars in a server device. To do this the client musts support these two BIBBs DS-RP-A and DS-
Service Initiate Execute
SCHED-E-B Scheduling-External
Scheduling
Allows time and date scheduling of specific objects in other devices. To support SCHED-E-B the device must also required to support
SCHED-I-B and DS-WP
Service Initiate Execute
SCHED-I-B Scheduling-Internal
Scheduling
A device as a server has objects and properties that can be scheduled by date and time. The device supports at least one calandar and
one schedule object (must support at least 6 entries per day). This device must also support DM-TS-B and/or DM-UTC-B to claim support
Service Initiate Execute
T-ATR-A Automated Trend Retrieval
Trending
A device as a client can respond to notifications that a trend log is ready and reads the new data from the server.
Service Initiate Execute
ConfirmedEventNotification No Yes
ReadRange Yes No
T-ATR-B Automated Trend Retrieval
Trending
When a trend log has aquired a preset number of records the device (as a server) sends notification to a client device.
Service Initiate Execute
ConfirmedEventNotification Yes No
ReadRange No Yes
T-VMT-A Viewing and Modifying Trends
Trending
A client can display Trend Data obtained from the server device and can maipulate parameters in the remote server device that control
Service Initiate Execute
ReadRange Yes No
T-VMT-E-B Viewing and Modifying Trends External
Trending
The device as a server can collect trend log data from an external device and store these records internally. The device must also
support T-VMT-I-B and DS-RP-A.
Service Initiate Execute
T-VMT-I-B Viewing and Modifying Trends Internal
Trending
The device as a server can collect trend log data records and store them internally. Support for at least one Trend Log Object is provided.
Service Initiate Execute
ReadRange No Yes
Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Why can’t I change to 76800 baud rate on PC?

Q: Why can’t we change to a 76800 baud rate on a PC but are able to on some devices?

A: The reason for this is that the the standard 16C550 PC UART is too slow to keep up with the signals coming in and out. 76800 is not a standard multiple of the UART clock frequency.

Devices can be customized and therefore allow baud rates of 76800. If your PC has a customizable COM port card where you can program the bit clock then you would be able to set this value.

There is no fix for this, but if you find a converter that can change 76800 to a higher UART this could be a work around.

The standard frequencies are:

  • 150
  • 300
  • 1200
  • 2400
  • 4800
  • 9600
  • 19200
  • 38400
  • 115000
Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Cable Specifications for RS485 Networks – BACnet MSTP

The BACnet spec defined the media for MSTP as follows (2004) ;

“An MS/TP EIA-485 network shall use shielded, twisted-pair cable with characteristic impedance between 100 and 130 ohms. Distributed capacitance between conductors shall be less than 100 pF per meter (30 pF per foot). Distributed capacitance between conductors and shield shall be less that 200 pF per meter (60 pF per foot). Foil or braided shields are acceptable. The maximum recommended length of an MS/TP segment is 1200 meters (4000 feet) with AWG 18 (0.82 mm2 conductor area) cable. The use of greater distances and/or different wire gauges shall comply with the electrical specifications of EIA-485.”

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have