BACnet MS/TP Configuration Guide for FieldServer
BACnet Integration Solutions
Chipkin has BACnet solutions for almost every situation. We have over 20+ years experience in BACnet integration, check out our BACnet Products:
This page documents the BACnet MS/TP (Master-Slave/Token-Passing) driver and provides configuration references for FieldServer operation in both Client and Server modes. For background on FieldServer configuration file structure and general concepts, refer to the FieldServer Configuration Manual.
1. BACnet MS/TP Description
The BACnet Master-Slave/Token-Passing (MS/TP) driver implements a data link protocol that uses the services of the RS-485 physical layer. See the FieldServer BACnet PIC statement for the level of conformance that this driver implements.
All information in a BACnet system is represented in terms of objects. The Object_Identifier is a 32-bit code that identifies the type of Object (also identified by the Object_Type Property) and its "Instance" number, which together uniquely identify the Object within its BACnet device. Theoretically, a BACnet device could have over four million Objects of a particular type. The Object_Name is a text string with a unique capability: BACnet devices may broadcast queries for devices that contain Objects with a specific Object_Name. This can greatly simplify project setup.
BACnet requires one Device Object to be present in every BACnet device. The Device Object makes information about the device and its capabilities available to other devices on the networks. Before one BACnet device starts control-related communications with another, it needs to obtain some of the information presented by the other device's Device Object. Unlike other Objects, the Device Object's Instance number must be unique across the entire BACnet internetwork because it is used to uniquely identify BACnet devices. It may be used to conveniently identify the BACnet device from other devices during installation.
Standard object types are used to hold real time data and other information. Each Object Type is referenced by a number, for example 0 represents an Analog Input.
Each Object consists of a number of prescribed properties, the main property being the Present_Value. Objects are monitored and controlled through their properties. The Analog Input Object is representative of the Objects involved directly with control elements and many of its Properties reflect this.
The information that follows describes how to expand upon the factory defaults provided in the configuration files included with the FieldServer.
Max Nodes Supported
| FieldServer Mode | Nodes | Comments |
|---|---|---|
| Client | 1 | |
| Server | 32 |
2. Driver Scope of Supply
2.1 Items Supplied by FieldServer Technologies
| FieldServer Technologies PART # | Description |
|---|---|
| FS-8917-16 | RJ45 to terminal connector cable |
2.2 Items Provided by the Supplier of 3rd Party Equipment
2.2.1 Hardware
| Part # | Description |
|---|---|
| BACnet Controller(s) on RS-485 Network |
2.2.2 Optional Items
| Part # | Vendor/Manufacturer | Description |
|---|---|---|
| FS-4301-00 | FieldServer | RS-232 to RS-485 converter |
3. Hardware Connections
The FieldServer is connected to the BACnet MS/TP as shown in the connection drawing.
Configure the BACnet MS/TP according to the manufacturer's instructions.
3.1 Hardware Connection Tips / Hints
Follow standard RS-485 2-wire guidelines for installation. See connection diagram below.
4. Configuring the FieldServer as a BACnet MS/TP Client
This section documents the parameters necessary for configuring the FieldServer to communicate with a BACnet MS/TP Server.
The configuration file tells the FieldServer about its interfaces and the routing of data required. To enable the FieldServer for BACnet MS/TP communications:
- Declare driver-independent FieldServer buffers in the Data Arrays section.
- Declare destination device addresses in the Client Side Nodes section.
- Map required data from servers in the Client Side Map Descriptors section.
Details on how to do this can be found below.
4.1 Client Data Arrays and Data Array Parameters
In the tables, * indicates an optional parameter, with the bold legal value being the default.
| Column Title | Function | Legal Values |
|---|---|---|
| Data_Array_Name | Provide name for Data Array | Up to 15 alphanumeric characters |
| Data_Array_Format | Provide data format. Each Data Array can only take on one format. | Float, Bit, Uint16, Uint32, Sint16, Sint32, Packed_Bit, Byte, Packed_Byte, Swapped_Byte |
| Data_Array_Length | Number of Data Objects. Must be larger than the data storage area required by the Map Descriptors for the data placed in this array. | 1–10,000 |
Example – Client Data Arrays
// Data Arrays
Data_Arrays
Data_Array_Name , Data_Array_Format , Data_Array_Length
DA_AI_01 , Float , 200
DA_AO_01 , Float , 200
DA_DI_01 , Bit , 200
DA_DO_01 , Bit , 200
4.2 Specify the MAC_Address of the FieldServer
The MAC_Address is used on the Data_Link (or physical) layer as the source or destination address. See section 9.1.1.2 of the BACnet ANSI/ASHRAE standard for more information.
| Column Title | Function | Legal Values |
|---|---|---|
| System_Node_ID | Specify the MAC_Address of the FieldServer. | 1–254 |
Example – Bridge MAC Address (System_Node_ID)
// Bridge
Bridge
Title , System_Node_ID
BACnet_MSTP , 11
4.3 Client Side Connection Descriptions
| Column Title | Function | Legal Values |
|---|---|---|
| Port | Specify which port the device is connected to the FieldServer | P1–P81, R1–R22 |
| Baud | Specify baud rate | 9600, 38400, 76800 |
| Parity* | Specify parity | Odd, Even, None |
| Data_Bits* | Specify data bits | 7, 8 |
| Stop_Bits* | Specify stop bits | 1, 2 |
| Protocol | Specify protocol used | BACnet_MSTP |
| Poll Delay* | Time between internal polls | 0–32000s, 1s |
| Timeout | Application logger timeout | 30s |
| Max_Master* | Specify the highest MAC_Address for Master nodes. When designing an MS/TP network with multiple Master nodes, allocate MAC_Address settings starting at 1. This allows a smaller Max_Master and improves performance. | 1–127 |
| Max_Info_Frames | Specify the maximum number of information frames the connection may send before it must pass the token. | 1–65535 |
Example – Client Connections
// Client Side Connections
Connections
Port , Baud , Parity , Data_Bits , Stop_Bits , Protocol , Poll_Delay , Timeout
R1 , 38400 , None , 8 , 1 , BACnet_MSTP , 0.100s , 30s
Notes:
- P1 to P8 will require the optional RS-485 converter (Part # FS-4301-00).
- Not all ports shown are necessarily supported by the hardware. Consult the appropriate instruction manual.
- 76800 baud is supported on the X30, X25 and ProtoCessor.
4.4 Client Side Node Descriptors
| Column Title | Function | Legal Values |
|---|---|---|
| Node_Name | Provide name for Node | Up to 32 alphanumeric characters |
| Node_ID | Specify the BACnet Device object instance. | 1–16777215 |
| Protocol | Specify protocol used | BACnet_MSTP |
| Port | Specify port | P1–P84, R1–R25 |
| MAC_Address | MAC_Address of the physical server node. | 1–127 (Master), 1–254 (Slave) |
| Network_Number* | Use if the remote MS/TP server is on another BACnet network connected via a router. | 1, 2, 3… 16-bit positive numbers, 5 |
Example – Client Node
// Client Side Nodes
Nodes
Node_Name , Node_ID , Protocol , Port
DEV_1 , 1 , BACnet_MSTP , R1
Notes:
- P1 to P8 will require the optional RS-485 converter (Part # FS-4301-00).
- Not all ports shown are necessarily supported by the hardware. Consult the appropriate instruction manual.
4.5 Client Side Map Descriptors
4.5.1 FieldServer Map Descriptor Parameters (Client)
| Column Title | Function | Legal Value |
|---|---|---|
| Map_Descriptor_Name | Name of this Map Descriptor. Used for Object_Name property. Refer to Appendix A.1. | Up to 32 alphanumeric characters |
| Data_Array_Name | Name of Data Array where data is stored in the FieldServer | One of the Data Array names from Data_Arrays section |
| Data_Array_Offset | Starting location in Data Array | 0 to (Data_Array_Length − 1) |
| Function | Function of Client Map Descriptor | Rdbc, Wrbc, Wrbx, Ars |
4.5.2 Driver Map Descriptor Parameters (Client)
| Column Title | Function | Legal Value |
|---|---|---|
| Node_Name | Name of Node to fetch data from | One of the node names specified in Client Side Node Descriptors |
| Object_Type (Alias = Data_Type) | Type of object. Refer to Appendix D.1. | AI, AO, AV, BI, BO, BV, MI, MO, MV, NC |
| Object_Instance (Alias = Address) | Instance of the object on the device. | 0, 1, 2, 3, … 4194303 |
| Property | The BACnet property to be read. | Refer to Appendix D.2 |
| Data_Array_Low_Scale* | Scaling zero in Data Array | -32767 to 32767, 0 |
| Data_Array_High_Scale* | Scaling max in Data Array | -32767 to 32767, 100 |
| Node_Low_Scale* | Scaling zero in Connected Node | -32767 to 32767, 0 |
| Node_High_Scale* | Scaling max in Connected Node | -32767 to 32767, 100 |
| Length* | Used to create an array of sequential Object_Instances on an Object_Type. | 1 to max point count of the FieldServer, 1 |
| Array_Index* | For Multistate properties, specifies the index of the property to read. If 1 is specified, the first entry is read; if 2, the second; etc. If 0 is specified, the driver returns the total number (count) of array items. If omitted, a list of all items is returned. | 0 to max number of array items in the BACnet property |
4.5.3 Timing Parameters (Client)
| Column Title | Function | Legal Value |
|---|---|---|
| Scan_Interval* | Rate at which data is polled | 0–32000, 2s |
Example – Client Map Descriptors
// Client Side Map Descriptors
Map_Descriptors
Map_Descriptor_Name , Data_Array_Name , Data_Array_Offset , Function , Node_Name , Data_Type , Object_Instance , Property , Scan_Interval
CMD_AI_01 , DA_AI_01 , 0 , Rdbc , DEV_1 , AI , 1 , Present_Value , 20.000s
CMD_AI_02 , DA_AI_01 , 1 , Rdbc , DEV_1 , AI , 2 , Present_Value , 20.000s
CMD_AI_03 , DA_AI_01 , 2 , Rdbc , DEV_1 , AI , 3 , Present_Value , 20.000s
CMD_AO_01 , DA_AO_01 , 0 , Rdbc , DEV_1 , AO , 1 , Present_Value , 30.000s
CMD_AO_02 , DA_AO_01 , 1 , Rdbc , DEV_1 , AO , 2 , Present_Value , 30.000s
CMD_AO_03 , DA_AO_01 , 2 , Rdbc , DEV_1 , AO , 3 , Present_Value , 30.000s
Map_Descriptors
Map_Descriptor_Name , Data_Array_Name , Data_Array_Offset , Function , Node_Name , Data_Type , Object_Instance , Property , Scan_Interval
CMD_DI_01 , DA_DI_01 , 0 , Rdbc , DEV_1 , BI , 1 , Present_Value , 15.000s
CMD_DI_02 , DA_DI_01 , 1 , Rdbc , DEV_1 , BI , 2 , Present_Value , 15.000s
CMD_DI_03 , DA_DI_01 , 2 , Rdbc , DEV_1 , BI , 3 , Present_Value , 15.000s
CMD_DO_01 , DA_DO_01 , 0 , Rdbc , DEV_1 , BO , 1 , Present_Value , 30.000s
CMD_DO_02 , DA_DO_01 , 1 , Rdbc , DEV_1 , BO , 2 , Present_Value , 30.000s
CMD_DO_03 , DA_DO_01 , 2 , Rdbc , DEV_1 , BO , 3 , Present_Value , 30.000s
5. Configuring the FieldServer as a BACnet MS/TP Server
This section documents the parameters necessary for configuring the FieldServer to communicate with a BACnet MS/TP Client.
To enable the FieldServer for BACnet MS/TP communications in Server mode:
- Declare driver-independent FieldServer buffers in the Data Arrays section.
- Declare FieldServer virtual node(s) in the Server Side Nodes section.
- Map data to be provided to clients in the Server Side Map Descriptors section.
In the tables below, * indicates an optional parameter, with the bold legal value being the default.
5.1 Driver-Specific FieldServer Parameters (Server)
| Column Title | Function | Legal Values |
|---|---|---|
| Title | FieldServer name | Text |
| System_Station_Address | The FieldServer's MAC address on the MS/TP network | 1–254 |
Example – Server Bridge Parameters
// FieldServer driver specific parameters
Bridge
Title , System_Station_Address
BacNet MSTP Server V1.02a, 11
5.2 Server Data Arrays and Data Array Parameters
| Column Title | Function | Legal Values |
|---|---|---|
| Data_Array_Name | Provide name for Data Array | Up to 15 alphanumeric characters |
| Data_Array_Format | Provide data format. Each Data Array can only take on one format. | Float, Bit, Uint16, Uint32, Sint16, Sint32, Packed_Bit, Byte, Packed_Byte, Swapped_Byte |
| Data_Array_Length | Number of Data Objects. Must be larger than the data storage area required by the Map Descriptors for the data placed in this array. | 1–10,000 |
Example – Server Data Arrays
// Data Arrays
Data_Arrays
Data_Array_Name , Data_Array_Format , Data_Array_Length
DA_AI_01 , Float , 200
DA_AO_01 , Float , 200
DA_DI_01 , Bit , 200
DA_DO_01 , Bit , 200
5.3 Server Side Connection Descriptors
| Column Title | Function | Legal Values |
|---|---|---|
| Port | Specify which port the device is connected to the FieldServer | P1–P86, R1–R27 |
| Baud | Specify baud rate | 9600, 38400, 76800 |
| Parity* | Specify parity | Odd, Even, None |
| Data_Bits* | Specify data bits | 7, 8 |
| Stop_Bits* | Specify stop bits | 1, 2 |
| Protocol | Specify protocol used | BACnet_MSTP |
| Connection Type* | Specify if the connection must be in Master_Mode or Slave_Mode | MSTP_Master_Mode, MSTP_Slave_Mode |
| Max_Master* | Specify the highest possible MAC_Address that exists on the MS/TP network. Only applicable for MSTP_Master_Mode connections. | 1–127 |
| Max_Info_Frames | Specify the maximum number of information frames the connection may send before it must pass the token. Only applicable for MSTP_Master_Mode connections. | 1–65535 |
Notes:
- P1 to P8 will require the optional RS-485 converter (Part # FS-4301-00).
- Not all ports shown are necessarily supported by the hardware. Consult the appropriate instruction manual.
- 76800 baud is supported on the X30, X25 and ProtoCessor.
- For Server configurations, the Max_Master and Max_Info_Frames parameters (or properties) can be overridden by a BACnet Client using "Write Property". When the FieldServer is restarted, the default values specified in the configuration file will be applied.
5.4 Server Side Node Descriptors
| Column Title | Function | Legal Values |
|---|---|---|
| Node_Name | Provide name for Node | Up to 32 alphanumeric characters |
| Node_ID | BACnet station address of physical Server node | 1–16777215 |
| Protocol | Specify protocol used | BACnet_MSTP |
| Node_Option* | Enable or disable COV for this Node. | COV_Enable, COV_Disable |
Example – Server Virtual Node
// Server Side Nodes
Nodes
Node_Name , Node_ID , Protocol
Virtual_DEV_11 , 11 , BACnet_MSTP
Notes:
- Only one Server Node may be defined for each connection. For multiple virtual server nodes on one connection, contact Sales.
- Port is not declared in the Server Side Nodes.
5.5 Server Side Map Descriptors
5.5.1 FieldServer Map Descriptor Parameters (Server)
| Column Title | Function | Legal Value |
|---|---|---|
| Map_Descriptor_Name | Name of this Map Descriptor. Used for Object_Name property. Refer to Appendix A.1. | Up to 32 alphanumeric characters |
| Data_Array_Name | Name of Data Array where data is stored in the FieldServer | One of the Data Array names from Data Arrays section |
| Data_Array_Offset | Starting location in Data Array | 0 to (Data_Array_Length − 1) |
| Function | Function of Server Map Descriptor | Passive |
5.5.2 Driver Map Descriptor Parameters (Server)
| Column Title | Function | Legal Value |
|---|---|---|
| Node_Name | Name of Node to fetch data from | One of the Node Names specified in Server Side Node Descriptors |
| Object_Type (Alias = Data_Type) | Data type in Controller | AI, AO, AV, BI, BO, BV, MI, MO, MV, NC |
| Object_Instance (Alias = Address) | Instance of the Object on the Device. | 0, 1, 2, 3, … 4194303 |
| Units* | The object units | Refer to Appendix D.3, m2 |
| Data_Array_Low_Scale* | Scaling zero in Data Array | -32767 to 32767, 0 |
| Data_Array_High_Scale* | Scaling max in Data Array | -32767 to 32767, 100 |
| Node_Low_Scale* | Scaling zero in Connected Node | -32767 to 32767, 0 |
| Node_High_Scale* | Scaling max in Connected Node | -32767 to 32767, 100 |
| Active_Text* | Specify the Active Text property of the Object | Any text string up to 40 characters, Active |
| Inactive_Text* | Specify the Inactive Text property of the Object | Any text string up to 40 characters, Inactive |
| Relinquish_Default | Value returned as Present_Value on startup or when control is relinquished. Must be specified for outputs. | Any Float value |
| Length* | Used to create an array of sequential Object_Instances on an Object_Type. | 1 to max point count of the FieldServer, 1 |
| Notification_Class* | Map_Descriptor_Name of the Notification_Class object that manages Intrinsic Reporting for this Map Descriptor. | One of the configured Notification_Class Map Descriptor names (NC) |
| Ack_Required* | For a Notification_Class object, specify whether EventNotifications require acknowledgement. | Yes, No |
| COV_Increment* | For AO or AI, initialize the COV_Increment property. | Any Float value, 0 |
| Input_alarm_State* | For binary points, specify which state (0 or 1) is regarded as alarm. | 0, 1 |
| Description* | Specify the object's description property. | Any text string up to 40 characters (defaults to Object_Name) |
Note: See the BACnet DFS to determine if a particular object supports the relevant properties.
Example – Server Map Descriptor Diagram
Appendix
Appendix A. Useful Features
Appendix A.1 BACnet Object Names
When an external BACnet Client builds a list of Object Names, the BACnet Server Map Descriptor names determine the BACnet Object Name. If the Map Descriptor length is greater than 1, the Object Name will be suffixed with the index into the Map Descriptor. For example, if the Map Descriptor name is SMD_AI_01 and the length 3, then the Object Names will be SMD_AI_01[0], SMD_AI_01[1] and SMD_AI_01[2].
Appendix A.2 Network Number
If multiple BACnet Nodes are specified on the Server side, the FieldServer automatically defaults to virtual operation. In effect, the FieldServer simulates a software router. BACnet identifies this FieldServer using a combination of its network number and IP/MAC address. The default Network number of a FieldServer is 5.
A unique network number must be assigned if both of the following conditions are true:
- The FieldServer has multiple BACnet Server nodes.
- There is more than one FieldServer on a network which includes multiple BACnet nodes.
To override the FieldServer's default network number 5 include the following in the configuration file:
| Column Title | Function | Legal Values |
|---|---|---|
| Title | FieldServer name | Text |
| Network_Number* | Specify a unique network number if there are multiple virtual server nodes. | 1–65534, 5 |
Example – Override Network_Number
// FieldServer driver specific parameters
Bridge
Title , Network_Number
BACnet Server , 6
Note: While it is theoretically possible to have up to 65535 virtual nodes, it is recommended that a maximum of 32 is configured. If an application requires more than 32 virtual nodes please consult FST.
Appendix A.3 Accessing Data from BACnet Array Properties
Some BACnet object properties (e.g., Priority_Array) are arrays of values. In order to read a specific array entry, the Array_Index must be specified in the Map Descriptor.
The following example shows a configuration that will read the Priority_Array value at Array_Index 7, belonging to Analog Output 1.
Example – Read Priority_Array Entry (Array_Index)
Map_Descriptors
Map_Descriptor_Name , Data_Array_Name , Data_Array_Offset , Function , Node_Name , Data_Type , Object_ID , Property , Array_Index
CMD_AI_01 , DA_AI_01 , 0 , Rdbc , DEV_01 , AO , 1 , Priority_Array , 7
Details of the relevant BACnet properties and their associated arrays can be found in the BACnet Protocol Spec.
Appendix A.4 FieldServer Implementation of BACnet Priority Arrays
When BACnet Output objects are written to the Server side of the FieldServer, an associated write priority is given to each write value. When the FieldServer receives the write value, it stores it to the Map Descriptor Priority Array Table at the specified priority. The Priority Array Table is then scanned and the value with the highest priority is stored to the Data Array location specified by the Map Descriptor.
When a Write "Relinquished" command is received, the value is removed from the Priority Array Table and the next highest value from the Priority Array Table is stored to the Data Array.
If all values have been "Relinquished" from the Priority Array Table, then the Map Descriptor's Relinquish_Default value will be stored to the Data Array.
Appendix A.4.1 Accessing Priority Array Information
The Priority Array table and its "In_Use" state are stored internally to every Map Descriptor and cannot be accessed directly. The information can be accessed indirectly by specifying Data Arrays that maintain a copy of the Priority Array Table.
Appendix A.5 BACnet State Text Preload
BACnet Multistate Objects have a State_Text property defined as an array of character strings representing descriptions of all possible states of the Present_Value. The maximum permitted length of any State_Text string is 50 characters.
Appendix A.5.3 Using Intrinsic Reporting for a Multistate Value
To use Intrinsic Reporting for a Multistate value, classify each state as Normal, Alarm or Trouble by adding Table_User_Value to the Offset_Table:
- 0 = normal
- 1 = alarm
- 2 = fault
Example – Offset_Table for State_Text Classification
// Set up a lookup table
Offset_Table
Offset_Table_Name , Table_String , Table_Index_Value , Table_User_Value
FIRE_ALRM_TEXT , SYSTEM READY , 1 , 0
FIRE_ALRM_TEXT , ALARM , 2 , 1
FIRE_ALRM_TEXT , MAINTENANCE , 3 , 2
FIRE_ALRM_TEXT , OFF-LINE , 4 , 2
FIRE_ALRM_TEXT , IN SERVICE , 5 , 0
FIRE_ALRM_TEXT , OTHER , 6 , 2
Note: The state value (Table_Index_Value) is an enumerated value greater than zero. Zero is not a valid value, but since many client-side configurations wake up with values of zero, the BACnet server treats a value of zero as normal (not alarm/fault).
Appendix A.6 COV and Intrinsic Reporting
COV (Change of Value) and Intrinsic Reporting are event-driven methods for reporting point changes to a client workstation (as opposed to polling). This can improve performance and reduce network traffic.
For BACnet MS/TP, only MS/TP Master Nodes support COV and Intrinsic Reporting.
COV is suited to value updates. On analog points, sensitivity can be set using COV_Increment.
Intrinsic Reporting is used for alarming. It is implemented via Notification_Class objects, subscriptions, and event notifications (confirmed or unconfirmed). Intrinsic Reporting also supports alarm acknowledgement and acknowledgement notifications.
Appendix A.6.1 Notes on COV Configuration
COV is not enabled by default for MS/TP. Node_Option can enable/disable COV. Systems using BACnet/IP or BACnet/Ethernet to BACnet/MS/TP routers may not function reliably if COV is enabled, because the router can make the MS/TP device appear as BACnet/IP/Ethernet and lead to unrealistic client throughput expectations. Enable COV only when the client communicates directly via MS/TP, or when the throughput implications are understood.
SubscribeCOV applies to Present_Value and Status_Flags properties. SubscribeCOVProperty is not supported by the FieldServer.
For analog Server Map Descriptors, COV_Increment can be initialized via the configuration file (startup initial value), and may be overridden by values written by the Client.
COV is not available on the ProtoCessor.
Appendix A.6.2 Notes on Intrinsic Reporting Configuration
Intrinsic Reporting requires at least one Notification_Class object. Each Data_Object monitored by Intrinsic Reporting must link to a Notification_Class via the Notification_Class Map Descriptor property. Analog points require alarm limits; binary points require Input_Alarm_State.
The Notification_Class object includes properties that allow a client workstation to modify event reporting rules.
RecipientLists are non-volatile, and subscriptions must be renewed on system restart.
Appendix A.6.3 Map Descriptor Diagram – COV
Appendix A.6.4 Map Descriptor Diagram – Intrinsic Reporting
Appendix A.6.5 Example – Enable or Disable COV (Nodes)
Nodes
Node_Name , Node_ID , Protocol , Node_Option
Virtual_Dev_11 , 11 , Bacnet_IP , COV_Disable
Appendix B. Troubleshooting
Appendix B.1 Debugging a BACnet Connection
If duplicate Object_Instances are configured in the FieldServer, the second instance will overwrite the first. This may cause a BACnet Object to be "lost."
If the Node_Name configured on the BACnet Server Side is not being indicated as the Device Name on the BACnet SCADA system, then the FieldServer is not communicating with the SCADA system. If the Device Object's name is being indicated, but the Present_Value shows question marks, then it is likely that the Client side of the FieldServer is not communicating.
Extra memory is required to store Map Descriptors that have the active/inactive text parameters specified. If the defaults are appropriate, do not specify these parameters. This saves memory and allows more Map Descriptors to be created.
When a BACnet MS/TP connection is configured as a server, it is generally better to use connection_type MSTP_Slave_Node. The main time a server connection must be a Master_Node is when alarming has been established on the FieldServer.
When a FieldServer/ProtoCessor is configured to support MS/TP virtual server nodes, the firmware implements a virtual router and a network number is required so it can expose its nodes to external devices as belonging to a specific network (default is network 5 if not specified). This network number is defined on the Bridge descriptor as Network_Number and must be unique for a site (see Appendix A.2).
Appendix C. Vendor Information
Appendix C.1 McQuay
McQuay Units are shipped with a default Device instance of the last 6 digits of the McQuay Serial number.
Appendix C.2 Trane
When new points are added to the FieldServer it is important to restart the Summit Workstation or BCU, otherwise these new points may not be seen by the FieldServer.
Disconnect the FieldServer from the BACnet network when transferring images to the BCU.
Appendix C.3 Liebert
Polling BACnet addresses that are not configured for Liebert systems may cause the connection to fail in older versions of Liebert. Contact your Liebert supplier for more information.
Appendix C.4 Automated Logic Corporation
When an ALC module is powered up and does not detect valid BACnet MS/TP traffic on its MS/TP port, the module goes into terminal mode and MS/TP communications will not be initiated.
When connecting the FieldServer to an ALC BACnet MS/TP module, always start the FieldServer first. Wait until the RUN LED is flashing on the FieldServer before powering up the MS/TP module.
Appendix C.5 Honeywell EBI
Honeywell EBI cannot process Event Notifications with ACK_Required set to 1. The ACK_Required property of Notification Class Map Descriptors configured for use with EBI must therefore be set to 0.
Appendix D. Reference
Appendix D.1 Object_Type Legal Values – Abbreviation Descriptions
| Abbrev. | Meaning |
|---|---|
| AI | ANALOG_INPUT |
| AO | ANALOG_OUTPUT |
| AV | ANALOG_VALUE |
| BI | BINARY_INPUT |
| BO | BINARY_OUTPUT |
| BV | BINARY_VALUE |
| MI | MULTI_STATE_INPUT |
| MO | MULTI_STATE_OUTPUT |
| MV | MULTI_STATE_VALUE |
| NC | NOTIFICATION_CLASS_OBJECT |
Appendix D.2 Property Legal Values
| Legal Value | Description |
|---|---|
| Object_Identifier | This property is a numeric code used to identify the object. It is unique within the BACnet Device that maintains it. |
| Object_List | Relevant to Device Object Type. This property is a BACnet ARRAY of Object_Identifiers accessible through BACnet services. An Object_Identifier is composed of Object Type and Object Instance and must be unique within a BACnet Device. |
| Present_Value | This property contains the present value of the Input / Output / Value. |
| Object_Name | Character string providing the name of a BACnet object. Object_Name is determined by Map_Descriptor_Name. |
| Description | Character string describing a BACnet object (user-definable). |
| Out_of_service | BOOLEAN indicating whether the physical input is out of service. When TRUE, Present_Value is decoupled from the physical input. |
| Event_State | BACnetEventState indicating whether the object has an active event state. If intrinsic reporting is supported, indicates event state; otherwise NORMAL. |
| Units | This property contains the units associated with Present_Value. |
| Reliability | BACnetReliability indicating whether Present_Value is reliable and, if not, why (e.g., NO_FAULT_DETECTED, UNRELIABLE_OTHER). |
| Priority_Array | Output/Value types: read-only array containing prioritized commands or NULLs. Highest priority (lowest index) non-NULL is active. |
| State_Text | Multistate types: BACnet ARRAY of strings describing all possible states of Present_Value. Index = Present_Value integer. |
| Number_Of_States | Multistate types: total number of states described in State_Text (auto-determined from Offset Table in Appendix A.5). |
| Max_Master | MS/TP Device Object: highest possible address for master nodes (≤ 127). If not writable, defaults to 127. |
| Max_Info_Frames | MS/TP Device Object: max information frames sent before passing token. If not writable, defaults to 1. |
| Active_Text | Binary types: human-readable description of ACTIVE state (e.g., "Fan 1 On"). |
| Inactive_Text | Binary types: human-readable description of INACTIVE state (e.g., "Fan 1 Off"). |
| Firmware_revision | The firmware revision of the application. |
| Relinquish_Default | Default value used for Present_Value when all command priorities in Priority_Array are NULL. |
Appendix D.3 Units
The original unit table is extensive and may be maintained as-is if required for your application. If you want, I can convert the entire Units table into a structured, searchable format (grouped by category) while preserving all entries verbatim.
Appendix D.4 BACnet Specific Statistics
| Stat | Description | Resolution |
|---|---|---|
| Link Control | A "who-is" link control message was sent or received. | Normal in small quantities. If unusually high vs transmit/receive, investigate lost communications. |
| Unsupported Properties | A request for an unsupported property was received. | Not an error. Clients often probe properties to determine support. |
| Segmentation Not Supported | Requested data exceeded maximum APDU size and could not be sent unsegmented. | Not an error. Client will use a different method to read data. |
| Sequence Error | Invoke ID of a reply did not match the Invoke ID of the poll. | Typically indicates a configuration error. |
| Write Access Denied | A write to an object was denied. | Often occurs when writing to an Input Object not Out-Of-Service. Inputs are not writable. |
| Exception Errors | A BACnet Service was denied because it is not supported. | May be a client-side issue. Consult the PIC statement for supported services. |