BACnet CharacterString Value Object

The BACnet CharacterString Value object (Clause 12.37) exposes a named text-string value: labels, status text, and messages, read-only or commandable.

What the CharacterString Value Object Is

The CharacterString Value object, defined in Clause 12.37 of ANSI/ASHRAE 135-2024, exposes a named text-string value inside a BACnet device to other devices on the network. It makes any kind of character-string data readable and, optionally, writable: a status message, a label, a serial number, or a free-form text field the control logic holds. The mechanisms behind the value are not visible to the client, which sees only the string.

A CharacterString Value can be read-only or commandable. When it is commandable, it carries the same 16-slot priority array as an Analog Output; when it is a simple stored value, it does not. CharacterString Value objects that support intrinsic reporting apply the CHANGE_OF_CHARACTERSTRING event algorithm, and for reliability-evaluation the FAULT_CHARACTERSTRING fault algorithm may be applied; alarms deliver through the event notification services. When the set of strings is fixed and known, a Multi-state Value is often the better fit because its numeric Present_Value is easier for automated consumers to act on.

Where You’ll See It

  • Status and label text. A human-readable state string, an equipment label, or a message the logic exposes for a head end (the central BMS server) to display.
  • Identifiers. A serial number, firmware string, or asset tag other devices read with ReadProperty.
  • Free-form fields. An operator note or configurable caption written to the device.

Required Properties

Clause 12.37 requires every CharacterString Value object to provide these properties. Datatypes are the spec’s names: CharacterString is a text string, BOOLEAN a true/false flag, and the BACnet-prefixed types are structured values defined by the standard.

PropertyDatatypeWhat it holds
Object_IdentifierBACnetObjectIdentifierThe object’s type and instance number, unique within the device
Object_NameCharacterStringThe human-readable point name, unique within the device
Object_TypeBACnetObjectTypeAlways character-string-value for this object
Present_ValueCharacterStringThe string value. Read-only or commandable depending on the instance
Status_FlagsBACnetStatusFlagsFour health flags: in-alarm, fault, overridden, out-of-service
Property_ListBACnetARRAY[N] of BACnetPropertyIdentifierThe list of properties this instance actually implements

When the object is commandable, it additionally implements Priority_Array (the 16 command slots), Relinquish_Default (the fallback when all slots are Null), and Current_Command_Priority. On a simple stored CharacterString Value these are absent. See How Commanding Works on the Analog Output page for the priority-array model.

Optional Properties

The properties integrators meet most are Description, the alarm/fault string sets (Alarm_Values, Fault_Values) that drive the CHANGE_OF_CHARACTERSTRING and FAULT_CHARACTERSTRING algorithms, and, on commandable instances, the command-tracking group. The intrinsic-reporting group generally appears or is absent as a set.

PropertyDatatypeGroup
DescriptionCharacterStringGeneral
Out_Of_ServiceBOOLEANGeneral
Event_StateBACnetEventStateGeneral
Priority_ArrayBACnetPriorityArrayCommanding
Relinquish_DefaultCharacterStringCommanding
Current_Command_PriorityBACnetOptionalUnsignedCommanding
Value_SourceBACnetValueSourceCommanding
Value_Source_ArrayBACnetARRAY[16] of BACnetValueSourceCommanding
Last_Command_TimeBACnetTimeStampCommanding
Command_Time_ArrayBACnetARRAY[16] of BACnetTimeStampCommanding
Alarm_ValuesBACnetARRAY[N] of BACnetOptionalCharacterStringIntrinsic reporting
Time_DelayUnsignedIntrinsic reporting
Notification_ClassUnsignedIntrinsic reporting
Event_EnableBACnetEventTransitionBitsIntrinsic reporting
Acked_TransitionsBACnetEventTransitionBitsIntrinsic reporting
Notify_TypeBACnetNotifyTypeIntrinsic reporting
Event_Time_StampsBACnetARRAY[3] of BACnetTimeStampIntrinsic reporting
Event_Message_TextsBACnetARRAY[3] of CharacterStringIntrinsic reporting
Event_Message_Texts_ConfigBACnetARRAY[3] of CharacterStringIntrinsic reporting
Event_Detection_EnableBOOLEANIntrinsic reporting
Event_Algorithm_Inhibit_RefBACnetObjectPropertyReferenceIntrinsic reporting
Event_Algorithm_InhibitBOOLEANIntrinsic reporting
Time_Delay_NormalUnsignedIntrinsic reporting
Fault_ValuesBACnetARRAY[N] of BACnetOptionalCharacterStringFault detection
ReliabilityBACnetReliabilityFault detection
Reliability_Evaluation_InhibitBOOLEANFault detection
Audit_LevelBACnetAuditLevelAuditing
Auditable_OperationsBACnetAuditOperationFlagsAuditing
TagsBACnetARRAY[N] of BACnetNameValueTagging and profile
Profile_LocationCharacterStringTagging and profile
Profile_NameCharacterStringTagging and profile

What Chipkin Provides

The CharacterString Value object, in both read-only and commandable forms, is a first-class object type in the CAS BACnet Stack. Talk to us about modeling your device’s points.