BACnet Positive Integer Value Object

The BACnet Positive Integer Value object (Clause 12.44) is an unsigned-integer software point: counts, indexes, and totals, read-only or commandable.

What the Positive Integer Value Object Is

The Positive Integer Value object, defined in Clause 12.44 of ANSI/ASHRAE 135-2024, represents an unsigned integer value inside a BACnet device that is not tied to physical I/O. Where an Integer Value can hold a negative number, a Positive Integer Value holds only non-negative whole numbers: a count, an index, a total, or any unsigned value the control logic exposes for other devices to read.

A Positive Integer 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. Positive Integer Value objects that support intrinsic reporting apply the UNSIGNED_OUT_OF_RANGE event algorithm and deliver the alarm through the event notification services.

Where You’ll See It

  • Counts and totals. A cycle count, a run-hours total, or a demand tally the logic holds and shares.
  • Indexes and selectors. An unsigned index into a table or a numeric selector other devices read with ReadProperty.
  • Tuning parameters. An unsigned threshold or interval a technician adjusts without touching a physical channel.

Required Properties

Clause 12.44 requires every Positive Integer Value object to provide these properties. Datatypes are the spec’s names: Unsigned is a non-negative integer, CharacterString a text string, 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 positive-integer-value for this object
Present_ValueUnsignedThe unsigned integer value. Read-only or commandable depending on the instance
Status_FlagsBACnetStatusFlagsFour health flags: in-alarm, fault, overridden, out-of-service
UnitsBACnetEngineeringUnitsThe engineering units of the value
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 Positive Integer 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 COV_Increment (how much the value must change before a COV, Change of Value, notification fires), the alarm-limit group (High_Limit, Low_Limit, Deadband, Limit_Enable), 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
ResolutionUnsignedGeneral
Min_Pres_ValueUnsignedValue range
Max_Pres_ValueUnsignedValue range
Priority_ArrayBACnetPriorityArrayCommanding
Relinquish_DefaultUnsignedCommanding
Current_Command_PriorityBACnetOptionalUnsignedCommanding
Value_SourceBACnetValueSourceCommanding
Value_Source_ArrayBACnetARRAY[16] of BACnetValueSourceCommanding
Last_Command_TimeBACnetTimeStampCommanding
Command_Time_ArrayBACnetARRAY[16] of BACnetTimeStampCommanding
COV_IncrementUnsignedCOV reporting
Time_DelayUnsignedIntrinsic reporting
Notification_ClassUnsignedIntrinsic reporting
High_LimitUnsignedIntrinsic reporting
Low_LimitUnsignedIntrinsic reporting
DeadbandUnsignedIntrinsic reporting
Limit_EnableBACnetLimitEnableIntrinsic 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
Fault_High_LimitUnsignedFault detection
Fault_Low_LimitUnsignedFault detection
Reliability_Evaluation_InhibitBOOLEANFault detection
Audit_LevelBACnetAuditLevelAuditing
Auditable_OperationsBACnetAuditOperationFlagsAuditing
TagsBACnetARRAY[N] of BACnetNameValueTagging and profile
Profile_LocationCharacterStringTagging and profile
Profile_NameCharacterStringTagging and profile
  • Integer Value: the signed counterpart, for values that can go negative.
  • Large Analog Value: a double-precision floating-point software point.
  • Analog Value: the single-precision floating-point software point (setpoints, calculated values).
  • Multi-state Value: a small set of named states rather than an arbitrary count.

What Chipkin Provides

The Positive Integer 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.