What the Multi-state Input Object Is
The Multi-state Input object, defined in Clause 12.18 of ANSI/ASHRAE 135-2024, is how a BACnet device represents an input that has more than two states but is not a continuous number. Where a Binary Input is either active or inactive, a Multi-state Input holds one of several discrete states: a fan running at off, low, medium, or high; a mode selector reading heat, cool, or auto.
Present_Value is an unsigned integer from 1 to Number_Of_States, and each number maps to a human label through the optional State_Text array. State 1 is the first named state, not zero. Multi-state Input objects that support intrinsic reporting apply the CHANGE_OF_STATE event algorithm, alarming when the value enters one of the configured Alarm_Values.
Where You’ll See It
- Multi-position status. A multi-speed fan, a three-position damper, or a selector switch reporting its current position.
- Enumerated states. A piece of equipment reporting a mode (off, starting, running, fault) as one of several named states rather than several separate contacts.
- Fault and alarm states. With
Alarm_ValuesandFault_Values, specific states trigger an alarm or a fault condition.
Required Properties
Clause 12.18 requires every Multi-state Input 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.
| Property | Datatype | What it holds |
|---|---|---|
Object_Identifier | BACnetObjectIdentifier | The object’s type and instance number, unique within the device |
Object_Name | CharacterString | The human-readable point name, unique within the device |
Object_Type | BACnetObjectType | Always multi-state-input for this object |
Present_Value | Unsigned | The current state, 1 to Number_Of_States |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Event_State | BACnetEventState | The object’s current event state (normal, off-normal, or fault) |
Out_Of_Service | BOOLEAN | When true, Present_Value is decoupled from the physical input for testing |
Number_Of_States | Unsigned | How many discrete states this object has |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The properties integrators meet most are State_Text (the label for each state number), and Alarm_Values and Fault_Values (which states are alarms or faults). The intrinsic-reporting group generally appears or is absent as a set.
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Device_Type | CharacterString | General |
State_Text | BACnetARRAY[N] of CharacterString | State labels |
Alarm_Values | BACnetLIST of Unsigned | Intrinsic reporting |
Fault_Values | BACnetLIST of Unsigned | Fault detection |
Time_Delay | Unsigned | Intrinsic reporting |
Notification_Class | Unsigned | Intrinsic reporting |
Event_Enable | BACnetEventTransitionBits | Intrinsic reporting |
Acked_Transitions | BACnetEventTransitionBits | Intrinsic reporting |
Notify_Type | BACnetNotifyType | Intrinsic reporting |
Event_Time_Stamps | BACnetARRAY[3] of BACnetTimeStamp | Intrinsic reporting |
Event_Message_Texts | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Event_Message_Texts_Config | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Event_Detection_Enable | BOOLEAN | Intrinsic reporting |
Event_Algorithm_Inhibit_Ref | BACnetObjectPropertyReference | Intrinsic reporting |
Event_Algorithm_Inhibit | BOOLEAN | Intrinsic reporting |
Time_Delay_Normal | Unsigned | Intrinsic reporting |
Reliability | BACnetReliability | Fault detection |
Reliability_Evaluation_Inhibit | BOOLEAN | Fault detection |
Audit_Level | BACnetAuditLevel | Auditing |
Auditable_Operations | BACnetAuditOperationFlags | Auditing |
Interface_Value | BACnetOptionalUnsigned | Integration |
Tags | BACnetARRAY[N] of BACnetNameValue | Tagging and profile |
Profile_Location | CharacterString | Tagging and profile |
Profile_Name | CharacterString | Tagging and profile |
Related Objects
- Multi-state Output: the commandable multi-state counterpart.
- Multi-state Value: a multi-state software point with no physical input.
- Binary Input: the two-state equivalent.
What Chipkin Provides
The Multi-state Input object, including the State_Text label model and CHANGE_OF_STATE intrinsic reporting, is a first-class object type in the CAS BACnet Stack. Talk to us about modeling your device’s points.