BACnet objects and properties
General information on handling
Each BACnet object has a defined number of properties associated with it. These properties are configured offline on the BACnet server side and made available to other BACnet devices in the BACnet network during operation (RUN or Free RUN). These offline data, or the initial values of the object properties are displayed in the "Settings" tab. The Online tab shows the current values of the object properties at runtime. Some properties are read-only (and identified as such by a lock symbol ) and cannot be changed.
Each object property has a unique number. In TwinCAT BACnet/IP properties are subdivided into groups, which are identified by numbers as follows:
- Property ID 0...511: BACnet standard-compliant properties:
- defined in ISO 16484-5
- specified, defined manufacturer-spanning behavior
- can be configured offline in part, in some cases only representation of an online state
- Property ID 512...799: manufacturer-specific properties with BACnet visibility:
- visible in the BACnet network as properties of the corresponding objects
- Property ID 800...1000: manufacturer-specific properties without BACnet visibility:
- used for configuring internal parameters that are not relevant for BACnet but are allocated to objects as parameters
- configurable in the Settings tab of corresponding objects; not visible in the Online tab
- includes fall-back values for I/O modules
- Property ID >1000: internal properties without BACnet visibility:
- not visible in the Settings or Online dialog
- used internally for special process data (e.g. "RawIo*")
- used in PLC automapping for priority-based links and a device ID
In Online view a context menu can be opened by right-clicking.
The menu entry "Read Property Data" can be used to read the value of an individual property.
ReadPropertyAll The overall view is read with the BACnet service ReadPropertyAll. If a device does not support this service, the properties are read individually. |
If the function Auto Update is activated, all properties are read and displayed at 1-second intervals. In this case the individual properties no longer have to be read explicitly via the menu entry "Read Property Data". This feature is enabled by default.
List and array property elements can be added/removed with the Add/Remove function.
By default, changes in the property data are written immediately. Data can be manipulated without triggering immediate writing by deactivating the function "Auto Commit". This enables to make complex changes in the properties (e.g. in the property ExceptionSchedule), and the changes can subsequently be written in a single operation. The edited properties are identified with a pen symbol on the left-hand side until the changes have been written. The context menu option "Write Property Data" can be used to write the changes. Please note: the option WritePropertyMultiple is currently not implemented. Instead, individual WriteProperty calls are used.
Notice | |
Deactivate auto update! If "Auto Commit" is deactivated, the function "Auto Update" should also be deactivated in order to prevent overriding of edited data on reading. |
Certain objects have commandable properties. In these cases a write access priority can be specified. This value is written to the PriorityArray via the index linked with the priority.
The PriorityArray also offers direct write access. All entries with the value "(Null)" are ignored. Depending on the priority, entries with a concrete data type and a valid value act on the corresponding, commandable property or are overridden by another entry with higher priority. The entries from the PriorityArray determine the value of the PresentValue of a BinaryOutput object, for example.
To remove an entry from the PriorityArray, set the type to NULL in the Type column. Entries can also be deleted from the PriorityArray via the context menu of the commandable property. To this end select NULL as type and write it to the corresponding priority with "Write Property Data" or automatically with "Auto Commit".
Configuration of optional properties and property write protection
The BACnet standard defines the standard objects and their properties (property ID 0 - 511). Some properties are identified as optional, other as obligatory. In order to achieve maximum flexibility in the configuration of objects, optional properties can be set to be in view or hidden and the access type can be limited, if permitted (read-only or read/write) in the Object view under the "Optional Properties" tab.
Information shown after the property name (R/W/O) The letter after the property name (R/W/O) indicates the minimum access right according to the BACnet specification. "R" stands for readable (or higher) properties, "W" for readable and writeable and "O" for optional readable and/or writeable properties. The identification number of optional properties indicates their interdependence. Optional properties with the same number can only be activated or deactivated as a group. Notwithstanding the BACnet specification some normally optional properties are obligatory in TwinCAT BACnet/IP and can therefore not be disabled. This due to the internal implementation. |
For some properties write access can be specified. The green, open lock symbol indicates write access. The red, closed lock symbol indicates read only access. Click on the symbol to toggle the state. In case of greyed out symbol the permission cannot be changed. The access permission is indicated by "W" or "R" or the greyed out lock symbol ("W" and open, grey lock = write/read access, "R" and closed, grey lock = read only access).
The availability of optional properties can be controlled by clicking on the symbol checkbox . Deselecting the checkbox disables the corresponding property.
Manufacturer-specific properties
TwinCAT BACnet/IP uses a number of manufacturer-specific properties, which are explained below. Vendor-specific properties are distinguished through their property IDs. Properties with IDs between 512 and 799 are visible across the BACnet network. Properties with higher IDs are used for the configuration within TwinCAT BACnet/IP and are not displayed via BACnet. These properties are visible in the Settings tab, but not yet in the Online tab.
ScaleOffset (512) | ScaleOffset is used for AnalogInput and AnalogOutput objects and determines the offset for the conversion between the hardware range to BACnet and vice versa. For AnalogInput objects: PresentValue = RawIoSingedValue * Resolution + ScaleOffset The same calculation algorithms apply for the process data properties RawIoUnsingedValue. |
IoBusNr [0..255] (513) | IoBusNr is used for mapping a fieldbus state, e.g. during K-bus I/O automapping. Further details can be found in sections IO Automapping and Process data. 255 indicates that a BACnet object is not allocated to any IoBus. |
IoModuleNr [0..65535] (514) | IoModuleNr indicates the position of a terminal within an I/O bus. For I/O automapping consecutive numbers are used, starting with 1. This property is for information purposes only and is not used in the BACnet stack. |
IoModuleChn [0..255] (515) | IoModuleChn indicates the channel number of an I/O terminal. For I/O automapping consecutive numbers are used, starting with 1. This property is for information purposes only and is not used in the BACnet stack. |
PersistentData (516) | Persistent Data indicates whether changes have occurred since the last saving of persistent data. In addition, this property can be used to trigger saving of persistent data via BACnet. Details relating to this property can be found in section Persistent data. This property is only visible if persistent data were activated and the configuration was loaded in RUN mode. |
ActivePriority (517) | ActivePriority indicates the active priority level for objects with commandable PresentValue properties. If all entries in PriorityArray are NULL, the value of Active Priority is 17, and ReliquishDefault is used as value for PresentValue. |
LastConfirmedServiceAccess (518) | The property LastConfirmedServiceAccess of the device object can be used to display the IP address of the last successfully executed and confirmed service (e.g. read, write property) in the form of a string. In COV mode a TrendLog object can be used to set up an access log for documenting all network access. |
DataRequestMode (519) | EventEnrollment object - monitoring of external objects. These properties can be used to configure the data transfer method of an EventEnrollment object. The property DataRequestMode of data type Enum specifies the service used to read data (ReadProperty, COV, ReadPropertyMultiple). The property DataPollingInterval specifies the interval at which data are requested in transmission types ReadProperty and ReadPropertyMultiple. EnrollmentCovResubscriptionInterval specifies the ResubscriptionIntervall for the COV mode. |
FileName (522) | In the File object, the corresponding file is identified via the property ObjectName. If the operator requires a fixed naming scheme for the File object, the file can no longer assigned via the property ObjectName. The property FileName can be optionally enabled. If this property is active, the corresponding file, relative to the boot folder, is allocated via the value of the character string, and the property ObjectName can be used freely. |
Requirements
FaultFallbackRealValue (802) | FaultFallbackRealValue can be used for AnalogInput objects, so that valid values are provided in the event of an I/O bus error in the higher-level PLC or BACnet. If an IoBus error is detected, TwinCAT BACnet/IP no longer copies the corresponding process data of the fieldbus, but the configured fall-back values.
The fall-back value can be activated in the Settings tab by ticking the box for the optional value. If no fall-back value is active, in the event of an IoBus error no process data are copied, and the last valid value remains active. | |
FaultFallbackBinaryValue (803) | FaultFallbackBinaryValue has the same purpose as FaultFallbackValueReal and is used for BinaryInput objects. | |
OutOfServiceFallbackRealValue (804) | OutOfServiceFallbackRealValue can be used for generating valid output process data if an AnalogOutput object is in OutOfService mode. If OutOfServiceFallbackRealValue is active, the corresponding value for the I/O process data is used. Otherwise, if OutOfService is active, the last valid PresentValue value is used. | |
OutOfServiceFallbackBinaryValue (805) | OutOfServiceFallbackBinaryValue has the same purpose as OutOfServiceFallbackRealValue and is used for BinaryOutput objects. | |
TimeSynchronizationUseUTC (806) | TimeSynchronizationUseUTC is used for configuring a TimeMaster and indicates whether the TimeSynchronization service or the UTCTimeSynchronization service is used for sending synchronization telegrams to the TimeSynchronizationRecipients. Revision 6, which is implemented in TwinCAT BACnet/IP, does not yet make provision for TimeMaster-specific properties. In this context TwinCAT BACnet/IP implements the standard-compliant properties AlignIntervals, IntervalOffset and TimeSynchronizationInterval without BACnet visibility. The property TimeSynchronizationInterval (204) indicates the interval (in minutes) at which time synchronization telegrams are sent. If the value of this property is 0 the TimeMaster function is disabled. The property AlignIntervals (193) can be used to enable the property IntervalOffset (195), which can be used to specify when exactly time synchronization telegrams are sent. If the property TimeSynchronizationInterval has a value that is divisible by 60, time synchronization messages are sent when the current time in minutes modulo matches the value of TimeSynchronizationInterval and IntervalOffset. The following example explains the configuration of a Timemaster, which sends UTC time synchronization telegrams to all BACnet devices in the network every day at 2 am: TimeSynchronizationUseUTC = TRUE | |
PredictScheduleValueTime [sec] (807) | In building automation applications, HVAC systems can save energy through "optimized/sliding" switch-on. If, for example, a set temperature of 21°C is required at 8:00, a heating system can be activated earlier or later depending on the season. At low outside temperatures the heating will come on earlier than at higher outside temperatures. The heating activation time can be calculated based on a suitable mathematical equation or through learning systems. | |
AccumulatorIntegrationMode (811) | The Accumulator object can be used to accumulate count values via the process data property RawIoAccumulatorValueUSINT. In normal mode the counter value of the accumulators is incremented by 1, if the value of RawIoAccumulatorValueUSINT is incremented by 1. Integration mode can be activated for measuring quantities per time. In this case, the count value of the accumulator is incremented if the value of RawIoAccumulatorValueUSINT was 1 over one millisecond. This functionality can be used to calculate an air volume, for example, if RawIoAccumulatorValueUSINT is linked to the current air flow. The time base is 1 ms. The BACnet property PreScale can be used for scaling, e.g. on an hourly basis. | |
AvgFilterCycles (812) | Analog input values may result in fluctuating values, due to long cables or interference. When AnalogInput objects are used in BACnet, the property CovIncrement can be used to limit the transfer of value changes. If the fluctuations exceed the resolution of values to be displayed, it may be advisable to smooth out the analog input values through filters. The property AvgFilterCycles can be used to activate an averaging filter for AnalogInput objects, which forms the average value of the raw value over AvgFilterCycles. With a BACnet cycle time of 50 ms, a value of AvgFilterCycles = 20 indicates a filter over 1 second. | |
FaultDeadband (813) | A further potential problem caused by fluctuating analog values is violation of a value range defined as valid. For AnalogInput objects the properties MinPresValue and MaxPresValue define a valid range for the value of the property PresentValue. If the value scaled from the raw* value is outside the defined range, the BACnet object assumes Fault state. Since the properties MinPresValue and MaxPresValue are also read as value range by the control system, these limits should not be shifted in an attempt to tolerate values that fluctuate slightly below the limit as valid. Similar to the property Deadband, which determines the transition to OffNormal state, the property FaultDeadband can be used to specify an extended limit for the Fault state. If the value calculated by the scaling falls below the value of MinPresValue by less than FaultDeadband, the PresentValue assumes the value MinPresValue, and the object does not assume Fault state. The exact calculation formula is implemented as follows: | |
Example: |
| |
Pt1DampFactor [0..1] (814) | Similar to the property AvgFilterCycles, the property Pt1DampFactor can be used to activate an analog input filter. The Pt1 filter is applied after the scaling and smoothes the analog value. The damping factor can have values between 0 and 1. No filtering takes place if the value is 1. If the value is 0, the new input value is only applied at infinity. Meaningful values can be 0.01 or 0.001, for example. A TrendLog object can be used to verify the effect of the filter for a simple pulse response. (Change of the raw value from 0 to 1). The implemented formula is: | |
EnableInternalLoopCtrl (815) | The property EnableInternalLoopCtrl can be used to activate an internal control algorithm in the Loop object. Normally, the loop is implemented as an empty shell for a controller implemented in the PLC. A basic controller was integrated in the BACnet stack, in order to provide support for dynamic generation of Loop objects. This PID controller additively links the P, I and D components and implements a limitation for the integral and sum component. The formula implemented in the Loop object when the EnableInternalLoopCtrl is activated (and set to TRUE) is shown below: IF (Action = = direct) E = W - X IF (Action = = reverse) E = X - W Yp = Kp * E // Proportional Yi = Yi(n-1) + (Ki * tCycle * E) // Integral Max >= Yi >= Min // Anti-Wind-Up Yd = Kd * (E – E(n-1)) / tCycle // Differenzial Y = Yp + Yi + Yd + Bias Max >= Y >= Min // Ausgangslimitierung | |
Pt1DerivativeDampFactor [0..∞] (816) | In order to be able to handle step changes in the setpoint specification for the control algorithm implemented in the Loop object, the error value (E) of the D component can be attenuated via a Pt1 factor. This enables the effect of the D component to be amplified when step changes occur in setpoints. |