BACnet Multi-state Value Object

The BACnet Multi-state Value object (Clause 12.20) is a multi-state software point: modes and selectors, read-only or commandable

What the Multi-state Value Object Is

The Multi-state Value object, defined in Clause 12.20 of ANSI/ASHRAE 135-2024, represents a multi-state value inside a BACnet device that is not tied to physical I/O. Where a Binary Value is a two-state software flag, a Multi-state Value holds one of several named states: a system mode of occupied, unoccupied, or standby; a control strategy selector; any enumerated software setting.

Present_Value is an unsigned integer from 1 to Number_Of_States, each mapped to a label through the optional State_Text array. A Multi-state Value can be read-only or commandable; when commandable it carries the priority array, when a simple stored mode it does not. Multi-state Value objects that support intrinsic reporting apply the CHANGE_OF_STATE event algorithm.

Where You’ll See It

  • System modes. An occupancy mode or operating mode a scheduler or operator sets and many controllers read.
  • Strategy selectors. A software selection of one control strategy from several, with no physical switch.
  • Enumerated setpoints. A named preference (eco, comfort, boost) exposed as a shared value.

Required Properties

Clause 12.20 requires every Multi-state Value object to provide these properties. Datatypes are the spec’s names: Unsigned is an integer, 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 multi-state-value for this object
Present_ValueUnsignedThe state, 1 to Number_Of_States. Read-only or commandable depending on the instance
Status_FlagsBACnetStatusFlagsFour health flags: in-alarm, fault, overridden, out-of-service
Event_StateBACnetEventStateThe object’s current event state (normal, off-normal, or fault)
Out_Of_ServiceBOOLEANWhen true, Present_Value is decoupled for testing and override
Number_Of_StatesUnsignedHow many discrete states this object has
Property_ListBACnetARRAY[N] of BACnetPropertyIdentifierThe list of properties this instance actually implements

When the object is commandable, it additionally implements Priority_Array, Relinquish_Default, and Current_Command_Priority. See How Commanding Works on the Multi-state Output page for the priority-array model.

Optional Properties

The properties integrators meet most are State_Text (the label for each state number), Alarm_Values and Fault_Values (which states alarm or fault), and, on commandable instances, the command-tracking group. The intrinsic-reporting group generally appears or is absent as a set.

PropertyDatatypeGroup
DescriptionCharacterStringGeneral
State_TextBACnetARRAY[N] of CharacterStringState labels
Priority_ArrayBACnetPriorityArrayCommanding
Relinquish_DefaultUnsignedCommanding
Current_Command_PriorityBACnetOptionalUnsignedCommanding
Value_SourceBACnetValueSourceCommanding
Value_Source_ArrayBACnetARRAY[16] of BACnetValueSourceCommanding
Last_Command_TimeBACnetTimeStampCommanding
Command_Time_ArrayBACnetARRAY[16] of BACnetTimeStampCommanding
Alarm_ValuesBACnetLIST of UnsignedIntrinsic reporting
Fault_ValuesBACnetLIST of UnsignedFault detection
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
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 Multi-state 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.