BACnet Loop Object

The BACnet Loop object (Clause 12.17) exposes a PID feedback control loop as a standardized object: required and optional properties with datatypes.

What the Loop Object Is

The Loop object, defined in Clause 12.17 of ANSI/ASHRAE 135-2024, is the standardized way a BACnet device exposes a feedback control loop: the proportional-integral-derivative (PID) mechanism that drives an output to hold a controlled variable at its setpoint. A loop that modulates a heating valve to keep a discharge-air temperature at setpoint is the everyday example.

The object separates the three parts of the loop into properties. Controlled_Variable_Reference points at the measured value being held, Setpoint (or Setpoint_Reference) is the target, and Manipulated_Variable_Reference points at the output the loop writes through Priority_For_Writing. The gain constants (Proportional_Constant, Integral_Constant, Derivative_Constant) tune the response, with no assumed units since the algorithm is a local matter. Present_Value is the loop’s current output. When a Loop supports intrinsic reporting it applies the FLOATING_LIMIT event algorithm, alarming when the controlled variable drifts too far from setpoint.

Where You’ll See It

  • Modulating control. A Loop drives a valve, damper, or variable-speed output to hold a temperature, pressure, or flow at setpoint.
  • Exposed tuning. Because the gain constants are readable and writable properties, a technician can tune a loop over the network rather than at the panel.
  • Cascade and reset. Setpoint_Reference lets one loop’s output become another loop’s setpoint, the basis of reset and cascade strategies.

Required Properties

Clause 12.17 requires every Loop object to provide these properties. Datatypes are the spec’s names: REAL is a floating-point number, Unsigned 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 loop for this object
Present_ValueREALThe loop’s current output value
Status_FlagsBACnetStatusFlagsFour health flags: in-alarm, fault, overridden, out-of-service
Event_StateBACnetEventStateThe object’s current event state (normal or off-normal when the value floats out of limits)
Out_Of_ServiceBOOLEANWhen true, the loop calculation is decoupled for testing and override
Output_UnitsBACnetEngineeringUnitsThe engineering units of the loop’s output
Manipulated_Variable_ReferenceBACnetObjectPropertyReferenceThe output property the loop drives
Controlled_Variable_ReferenceBACnetObjectPropertyReferenceThe measured property the loop holds at setpoint
Controlled_Variable_ValueREALThe current value of the controlled variable
Controlled_Variable_UnitsBACnetEngineeringUnitsThe engineering units of the controlled variable
Setpoint_ReferenceBACnetSetpointReferenceAn optional external source for the setpoint (for cascade and reset)
SetpointREALThe target value the loop drives toward
ActionBACnetActionWhether the output rises or falls as the error grows (direct or reverse)
Priority_For_WritingUnsignedThe priority slot used when writing to the manipulated output
Property_ListBACnetARRAY[N] of BACnetPropertyIdentifierThe list of properties this instance actually implements

Optional Properties

The properties integrators meet most are the PID gain constants (Proportional_Constant, Integral_Constant, Derivative_Constant) and the output clamps (Maximum_Output, Minimum_Output). The intrinsic-reporting group appears or is absent as a set.

PropertyDatatypeGroup
DescriptionCharacterStringGeneral
Update_IntervalUnsignedGeneral
Proportional_ConstantREALTuning
Proportional_Constant_UnitsBACnetEngineeringUnitsTuning
Integral_ConstantREALTuning
Integral_Constant_UnitsBACnetEngineeringUnitsTuning
Derivative_ConstantREALTuning
Derivative_Constant_UnitsBACnetEngineeringUnitsTuning
BiasREALTuning
Maximum_OutputREALTuning
Minimum_OutputREALTuning
COV_IncrementREALCOV reporting
Time_DelayUnsignedIntrinsic reporting
Notification_ClassUnsignedIntrinsic reporting
Error_LimitREALIntrinsic reporting
DeadbandREALIntrinsic reporting
Low_Diff_LimitBACnetOptionalREALIntrinsic 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
  • Analog Input: a typical source for the controlled variable a Loop holds at setpoint.
  • Analog Output: a typical manipulated output a Loop drives through its priority slot.
  • Analog Value: often holds the setpoint a Loop references.

What Chipkin Provides

The Loop object exposes a PID control loop with its gain constants, output clamps, and FLOATING_LIMIT intrinsic reporting as network-visible properties. Talk to us about modeling your device’s points.