If the BACnet device object contains BACnet notification class objects, the SubscribeToEvents flag is set in the EventNotifier OPC UA Attribute.

Object_List gathers the references to BACnet objects of the BACnet device provided through the BACnet property Object_List.

The OPC UA Property Object_List on the Object_List object, of DataType BACnetObjectIdentifier[], represents the BACnet property Object_List. The BACnetObjectIdentifier DataType is defined in 10.2.1. It contains a list of BACnet objects within the device.

The list of BACnetObjectTypes on the Object_List object contains the list of BACnet objects within the device. The list may be limited through configuration of the BACnetUaMapper.

Structured_Object_List gathers the references to all BACnet structured view objects of the BACnet device provided through the BACnet property Structured_Object_List.

The OPC UA Property Structured_Object_List on the Structured_Object_List object, of DataType BACnetObjectIdentifier[], represents the BACnet property Structured_Object_List. The BACnetObjectIdentifier DataType is defined in 10.2.1. It contains a list of BACnet structured view objects within the device.

The list of BACnetStructuredViewTypes on the Structured_Object_List object contains the list of BACnet structured view objects within the device. The list may be limited through configuration of the BACnetUaMapper.

This optional OPC UA Object, of type BACnetTimeManagementType, provides localized time and date information to consumers of the device object.

If an automatic time synchronization master is available, the special subtype BACnetAutomaticTimeSynchronizationMasterType is used.

This optional OPC UA Object, of type BACnetBackupRestoreType, provides backup and restore status to consumers of the device object. This status provides information about the last restore time, backup failures, preparation and completion times, and so on.

This optional OPC UA Object, of type BACnetMstpMasterType, describes paramters that are relevant if the device objects functions as a master on an MS/TP network.

This optional OPC UA Object, of type BACnetDeviceRestartType, provides information related to restarting the device. The last restart time and the set of devices that are notified when the device is restarted are provided by this object.

OPC UA Objects that have the EventNotifier Attribute set to SubscribeToEvents are so called event notifiers. They can be used by OPC UA Clients to subscribe for Events from the OPC UA Server. The OPC UA ReferenceType HasNotifier is used to build an event notifier tree starting from the Server Object.

BACnetNotifierType Objects like instances of BACnetNotificationClassTypes are used together with instances of the BACnetDeviceType to represent the OPC UA event notifier hierarchy starting from the Server object.

Figure 12 shows an example of BACnet objects referencing each other with BACnetObjectIdentifiers and the representation with OPC UA Objects and References. The example contains a BACnet Device object, one Analog Input object that creates alarms and therefore references a Notification Class object.

image018.png

Figure 12 – Event notifiers in BACnet and OPC UA

This OPC UA Property, of DataType BACnetDeviceStatus, represents the BACnet property System_Status. The BACnetDeviceStatus DataType is defined in 10.4.9.

The property is an enumeration that describes the current operating state of the device. Some example states are “operational”, “non-operational”, “backup in progress”, and so forth.

This OPC UA Property, of DataType String, represents the BACnet property Vendor_Name.

This property identifies the manufacturer of the BACnet device.

This OPC UA Property, of DataType UInt16, represents the BACnet property Vendor_Identifier.

This property represents a unique identification code, assigned by ASHRAE. The code is used to identify proprietary extensions to the protocol.

This OPC UA Property, of DataType String, represents the BACnet property Model_Name.

This property identifies the model name of the BACnet device.

This OPC UA Property, of DataType String, represents the BACnet property Serial_Number.

This property identifies the serial number of the BACnet device.

This OPC UA Property, of DataType String, represents the BACnet property Firmware_Revision.

This property identifies the firmware installed in the BACnet device.

This OPC UA Property, of DataType String, represents the BACnet property Application_Software_Version.

This property identifies the application software version installed in the BACnet device.

This optional OPC UA Property, of DataType String, represents the BACnet property Location.

This property identifies the physical location of the BACnet device.

This OPC UA Property, of DataType UInteger, represents the BACnet property Protocol_Version.

This property identifies the major version of the BACnet protocol supported by this device.

This OPC UA Property, of DataType UInteger, represents the BACnet property Protocol_Revision.

This OPC UA Property, of DataType BACnetServicesSupportedBits, represents the BACnet property Protocol_Services_Supported. The BACnetServicesSupportedBits DataType is defined in 10.3.6.

The BACnetServicesSupportedBits identifies the standardized protocol services that are executed by the implementation of the protocol on this device. See the BACnet specification for minimum supported service requirements.

This OPC UA Property, of DataType BACnetObjectTypeSupportedBits, represents the BACnet property Protocol_Object_Types_Supported. The BACnetObjectTypeSupportedBits DataType is defined in 10.3.5.

This property identifies the standardized BACnet object types (like analog inputs, binary outputs, calendars, and so on) that can be represented by this device’s implementation of the BACnet protocol. The minimum set of supported objects shall be at least Analog Input, Analog Output, Analog Value, Binary Input, Binary Output, and Binary Value.

This OPC UA Property, of DataType UInteger, represents the BACnet property Max_APDU_Length_Accepted.

This property describes the maxium number of octets that may be packaged into a single application layer protocol data unit. The data type of this variable is an unsigned integer and its value shall be greater than or equal to 50.

This OPC UA Property, of DataType BACnetSegmentation, represents the BACnet property Segmentation_Supported. The BACnetSegmentation DataType is defined in 10.4.30.

The BACnetSegmentation is an enumeration that indicates whether the BACnet device supports message segmentation and, if so, whether it supports segmented transmission, reception, or both.

This optional OPC UA Property, of DataType UInteger, represents the BACnet property Max_Segments_Accepted.

The Max_Segments_Accepted property indicates the maximum number of segments of an APDU that the device will accept.

This optional OPC UA Property, of DataType UInteger, represents the BACnet property APDU_Segment_Timeout.

The APDU_Segment_Timeout property indicates the amount of time (in milliseconds) between retransmission of an APDU segment. See the BACnet specification for recommended default values and best practices.

This OPC UA Property, of DataType UInteger, represents the BACnet property APDU_Timeout.

The APDU_Timeout property indicates the amount of time (in milliseconds) between retransmissions of an APDU that requires acknowledgement, but for which no acknowledgement has been received. See the BACnet specification for recommended default values and best practices.

This OPC UA Property, of DataType UInteger, represents the BACnet property Number_Of_APDU_Retries.

The Number_Of_APDU_Retries property indicates the maximum number of times that an ADPU is retransmitted. See the BACnet specification for recommended default values and best practices.

This OPC UA Property, containing an array of DataType BACnetAddressBinding, represents the BACnet property Device_Address_Binding. The BACnetAddressBinding DataType is defined in 10.5.3.

The BACnetAddressBinding data type identify the actual device address that will be used when the remote device must be accessed using a BACnet service request. See the BACnet specification for rules related to zero network-number addresses and empty lists.

This OPC UA Property, of DataType UInteger, represents the BACnet property Database_Revision.

The Database_Revision property describes a logical revision number for the device database. The revision is incremented when an object is created, an object is deleted, an object’s name is changed, an object’s Object_Identifier property is changed, or a restore is performed. See the BACnet specification for exceptions.

This OPC UA Property, containing an array of DataType BACnetCOVSubscription, represents the BACnet property Active_COV_Subscriptions. The BACnetCOVSubscription DataType is defined in 10.5.4.

The BACnetCOVSubscription value provides a network-visible indication of those COV subscriptions that are active at any given time. When a COV subscription is created using the BACnet COV subscription services, a ew entry is added to the Active_COV_Subscriptions list. The entry is removed when the subscription is terminated.

This method represents the BACnet service CreateObject. It is used to create a new instance of an object. The BACnet properties of standard objects created with this Method may be initialized in two ways: initial values may be provided as part of the CreateObject Method call or values may be written to the newly created object using OPC UA Write.

Signature

CreateObject (

[in]BACnetObjectIdentifier ObjectSpecifier

[in]0:KeyValuePair[] ListOfInitialValues

);

Argument

Description

ObjectSpecifier

Provides the information about the BACnet object type to be created or the BACnet object identifier if the object to be created. The instance information shall be undefined if only the object type is passed in. The BACnetObjectIdentifier DataType is defined in 10.2.1.

ListOfInitialValues

A list of initial values that shall be used to initialize the values of the specified properties of the newly created object.

Method Result Codes

ResultCode

Description

BadOutOfMemory

This status is returned for the BACnet error code NO_SPACE_FOR_OBJECT

BadNotSupported

This status is returned for the BACnet error code DYNAMIC_CREATION_NOT_SUPPORTED

BadTypeDefinitionInvalid

This status is returned for the BACnet error code UNSUPPORTED_OBJECT_TYPE

BadNodeIdInvalid

This status is returned for the BACnet error code OBJECT_IDENTIFIER_ALREADY_EXISTS

BadTypeMismatch

This status is returned for the BACnet error code INVALID_DATATYPE

BadOutOfRange

This status is returned for the BACnet error code VALUE_OUT_OF_RANGE

BadNodeIdInvalid

This status is returned for the BACnet error code UNKNOWN_PROPERTY

BadTypeMismatch

This status is returned for the BACnet error code CHARACTER_SET_NOT_SUPPORTED

BadNotWritable

This status is returned for the BACnet error code WRITE_ACCESS_DENIED

BadTypeMismatch

This status is returned for the BACnet error code DATATYPE_NOT_SUPPORTED

This method represents the BACnet service DeleteObject. It can be used to delete objects that may be created and deleted dynamically.

Signature

DeleteObject (

[in]BACnetObjectIdentifier ObjectIdentifier

);

Argument

Description

ObjectIdentifier

Specifies the BACnet object to be deleted. The BACnetObjectIdentifier DataType is defined in 10.2.1.

Method Result Codes

ResultCode

Description

BadNodeIdUnknown

This status is returned for the BACnet error code UNKNOWN_OBJECT

BadUserAccessDenied

This status is returned for the BACnet error code OBJECT_DELETION_NOT_PERMITTED

This method represents the BACnet service ReinitializeDevice. It is used to instruct a remote device to reboot itself (cold start), reset itself to some predefined initial state (warm start), or to control the backup or restore procedure. Resetting or rebooting a device is primarily initiated by a human operator for diagnostic purposes.

Remark: Since the method contains the Password, this method should only be available if the connection is encrypted.

Signature

ReinitializeDevice (

[in]BACnetReinitializedStateofDevice ReinitializedStateofDevice

[in]0:String Password

);

Argument

Description

ReinitializedStateofDevice

This parameter allows the caller to specify the desired state of the device after its reinitialization. The BACnetReinitializedStateofDevice DataType is defined in 10.4.27.

Password

password parameter.

Method Result Codes

ResultCode

Description

BadInvalidState

This status is returned for the BACnet error code CONFIGURATION_IN_PROGRESS

BadUserAccessDenied

This status is returned for the BACnet error code PASSWORD_FAILURE

BadNoCommunication

This status is returned for the BACnet error code COMMUNICATION_DISABLED

This method represents the BACnet service DeviceCommunicationControl. It is used to instruct a remote device to stop initiating communication and optionally stop responding to communication for a specified duration of time.

Remark: Since the method contains the Password, this method should only be available if the connection is encrypted.

Signature

DeviceCommunicationControl (

[in]0:UInt16 TimeDurationInMinutes

[in]BACnetDeviceCommunicationEnabledEnableDisable

[in]0:String Password

);

Argument

Description

TimeDurationInMinutes

This optional parameter of DataType 0:UInt16 indicates the number of minutes that the remote device shall stop communication. If the parameter is not specified, 0 shall be passed in as value.

EnableDisable

This parameter is an enumeration that may take on the values ENABLE, DISABLE, or DISABLE_INITIATION. It is used to indicate whether the device should enable all, disable initiation, or disable all communications on the network interface. The BACnetDeviceCommunicationEnabled DataType is defined in 10.4.8.

Password

password parameter.

Method Result Codes

ResultCode

Description

BadUserAccessDenied

This status is returned for the BACnet error code PASSWORD_FAILURE

BadNotSupported

This status is returned for the BACnet error code O_FUNCTIONALITY_NOT_SUPPORTED

This method represents the BACnet services ConfirmedTextMessage and UnconfirmedTextMessage.

The UnconfirmedTextMessage service is used by a client BACnet-user to send a text message to one or more BACnet devices. This service may be broadcast, multicast, or addressed to a single recipient. This service may be used in cases where confirmation that the text message was received is not required. Messages may be prioritized into normal or urgent categories. In addition, a given text message may optionally be classified by a numeric class code or class identification string. This classification may be used by receiving BACnet devices to determine how to handle the text message. For example, the message class might indicate a particular output device on which to print text or a set of actions to take when the text message is received. In any case, the interpretation of the class is a local matter.

The ConfirmedTextMessage service is used by a client BACnet-user to send a text message to another BACnet device. This service is not a broadcast or multicast service. This service may be used in cases when confirmation that the text message was received is required. The confirmation does not guarantee that a human operator has seen the message. Messages may be prioritized into normal or urgent categories. In addition, a given text message may be optionally classified by a numeric class code or class identification string. This classification may be used by the receiving BACnet device to determine how to handle the text message. For example, the message class might indicate a particular output device on which to print text or a set of actions to take when the text is received. In any case, the interpretation of the class is a local matter.

Signature

TextMessage (

[in]0:Boolean SendUnconfirmed

[in]BACnetObjectIdentifier TextMessageSourceDevice

[in]BACnetMessageClass MessageClass

[in]BACnetMessagePriority MessagePriority

[in]0:String Message

);

Argument

Description

SendUnconfirmed

Flag indicating if the BACnet service UnconfirmedTextMessage (TRUE) or ConfirmedTextMessage (FALSE) is used.

TextMessageSourceDevice

This parameter, of type BACnetObjectIdentifier, shall convey the value of the Object_Identifier property of the Device object of the device that initiated this text message.

MessageClass

This parameter, if present, shall indicate the classification of the received message. The datatype of this parameter shall be a choice of Unsigned or CharacterString. The interpretation of the meaning of any particular value for this parameter shall be a local matter.

MessagePriority

This parameter, of type ENUMERATED, shall indicate the priority for message handling: {NORMAL, URGENT}

Message

This parameter, of type CharacterString, shall be used to convey the text message.

Method Result Codes

ResultCode

Description

BadUserAccessDenied

This status is returned for the BACnet error code PASSWORD_FAILURE

BadNotSupported

This status is returned for the BACnet error code O_FUNCTIONALITY_NOT_SUPPORTED

This Method adds entries to the BACnet property Device_Address_Binding.

Signature

AddDeviceAddressBindings (

[in]BACnetAddressBinding [] AddressBindings

[out]0:UInt32 FirstFailedElementNumber

);

Argument

Description

AddressBindings

Array of address bindings to add to the entries in the BACnet property Device_Address_Binding. The BACnetAddressBinding DataType is defined in 10.5.3.

FirstFailedElementNumber

The numerical position, starting at 1, of the failed element in the AddressBindings. If the call succeeds or fails for other reasons, the returned value shall be 0.

Method Result Codes

ResultCode

Description

BadNodeIdUnknown

This status is returned for the BACnet error codes UNKNOWN_OBJECT and UNKNOWN_PROPERTY

BadTypeMismatch

This status is returned for the BACnet error codes INVALID_DATATYPE and DATATYPE_NOT_SUPPORTED

BadOutOfRange

This status is returned for the BACnet error code VALUE_OUT_OF_RANGE

BadNotWritable

This status is returned for the BACnet error code WRITE_ACCESS_DENIED

BadOutOfMemory

This status is returned for the BACnet error code NO_SPACE_TO_ADD_LIST_ELEMENT

This Method removes entries from the BACnet property Device_Address_Binding.

Signature

RemoveDeviceAddressBindings (

[in]BACnetAddressBinding[] AddressBindings

[out]0:UInt32 FirstFailedElementNumber

);

Argument

Description

AddressBindings

Array of address bindings to remove from the entries in the BACnet property Device_Address_Binding. The BACnetAddressBinding DataType is defined in 10.5.3.

FirstFailedElementNumber

The numerical position, starting at 1, of the failed element in the AddressBindings. If the call succeeds or fails for other reasons, the returned value shall be 0.

Method Result Codes

ResultCode

Description

BadNodeIdUnknown

This status is returned for the BACnet error codes UNKNOWN_OBJECT and UNKNOWN_PROPERTY

BadTypeMismatch

This status is returned for the BACnet error codes INVALID_DATATYPE

BadOutOfRange

This status is returned for the BACnet error code VALUE_OUT_OF_RANGE

BadNotWritable

This status is returned for the BACnet error code WRITE_ACCESS_DENIED

BadNotFound

This status is returned for the BACnet error code LIST_ELEMENT_NOT_FOUND