Skip to content
Version 6.1.0
Contact Us

Accumulator

An Accumulator object counts pulses and keeps a running total, the way a utility meter does. It is built to match what the meter’s own display shows, including setting an initial reading when the meter is installed. Devices use it for energy, water and gas metering.

  • A kilowatt-hour pulse meter on a building feed
  • A water meter that sends one pulse per litre
  • A gas meter reading used for billing
  • A count of items passing a sensor
Property What it holds
Present_Value The accumulated count, an unsigned integer. It wraps around at Max_Pres_Value.
Scale Converts counts into engineering units, so a client can show the real quantity.
Units The engineering unit of the scaled quantity.
Prescale Describes a divider in front of the counter, to copy how the physical meter advances.
Max_Pres_Value The highest value before the count rolls over to zero.
Pulse_Rate The recent rate of pulses, used for demand figures.

Present_Value is not commandable. For intrinsic reporting the standard pairs this type with the UNSIGNED_RANGE algorithm, using High_Limit and Low_Limit. The standard also allows a fault algorithm for out-of-range readings.

Enable it with the STACK_OPTION_OBJECT_TYPE_ACCUMULATOR build option and add each object with BACnetStack_AddObject. Present_Value is unsigned, so the stack reads it through the callback you register with BACnetStack_RegisterCallbackGetPropertyUnsignedInteger. Arm the alarm with BACnetStack_SetIntrinsicUnsignedRangeAlgorithm, after BACnetStack_SetAlarmsAndEventsForObjectEnabled. The stack has no fault out-of-range setter for this type: BACnetStack_SetFaultOutOfRangeAlgorithmReal refuses it.

Pulse Converter, Analog Input, Positive Integer Value

The properties ASHRAE 135-2024 clause 12.61 defines for this object type.

How to read the table:

  • Conformance is what the standard asks of every object of this type: R is required, W is required and writable by a client, O is optional. A digit after the letter marks a condition in the standard that decides when the property is present or writable, such as support for intrinsic reporting.
  • Present by default: yes means the stack presents the property as soon as you add the object; no means it is optional and you turn it on with BACnetStack_SetPropertyEnabled. This is the stack’s starting setup, so it can differ from the conformance code.
  • Writable is whether a client can write the property by default. Change it with BACnetStack_SetPropertyWritable.
  • not in profile means the stack does not offer this property for this object type.
  • Value when your callback does not answer: “Held by the stack” means the stack stores and serves the value itself and does not ask your callbacks. Otherwise it is the value the stack answers when your callback declines or is not registered.
Property Datatype Conformance Present by default Writable Value when your callback does not answer
Object_Identifier BACnetObjectIdentifier R yes no Held by the stack.
Object_Name CharacterString R yes no "Object <type>,<instance>", such as "Object 0,1" for Analog Input 1.
Object_Type BACnetObjectType R yes no Held by the stack.
Present_Value Unsigned R1 yes no (yes while Out_Of_Service is true) No default: value-not-initialized.
Description CharacterString O no no ""
Device_Type CharacterString O no no ""
Status_Flags BACnetStatusFlags R yes no Built by the stack from your callbacks.
Event_State BACnetEventState R yes no 0
Reliability BACnetReliability O no no 0
Out_Of_Service Boolean R yes no false
Scale BACnetScale R yes no No default: the read fails.
Units BACnetEngineeringUnits R yes no 95 (no units)
Prescale BACnetPrescale O no no No default: the read fails.
Max_Pres_Value Unsigned R yes no 0
Value_Change_Time BACnetDateTime O2 no no No default: the read fails.
Value_Before_Change Unsigned O2,3 no no 0
Value_Set Unsigned O2,3 no no 0
Logging_Record BACnetAccumulatorRecord O no no No default: the read fails.
Logging_Object BACnetObjectIdentifier O no no No default: the read fails.
Pulse_Rate Unsigned O1,4,7 no no (yes while Out_Of_Service is true) 0
High_Limit Unsigned O4,6 no no 0
Low_Limit Unsigned O4,6 no no 0
Limit_Monitoring_Interval Unsigned O4,7 no no 0
Notification_Class Unsigned O4,6 no no 0
Time_Delay Unsigned O4,6 no no 0
Limit_Enable BACnetLimitEnable O4,6 no no An empty bit string.
Event_Enable BACnetEventTransitionBits O4,6 no no An empty bit string.
Acked_Transitions BACnetEventTransitionBits O4,6 no no An empty bit string.
Notify_Type BACnetNotifyType O4,6 no no 0
Event_Time_Stamps BACnetARRAY[3] of BACnetTimeStamp O4,6 no no No default: the read fails.
Event_Message_Texts BACnetARRAY[3] of CharacterString O6 no no ""
Event_Message_Texts_Config BACnetARRAY[3] of CharacterString O6 no no ""
Event_Detection_Enable Boolean O4,6 no no false
Event_Algorithm_Inhibit_Ref BACnetObjectPropertyReference O6 no no No default: the read fails.
Event_Algorithm_Inhibit Boolean O6,8 no no false
Time_Delay_Normal Unsigned O6 no no 0
Reliability_Evaluation_Inhibit Boolean O9 no no false
Property_List BACnetARRAY[N] of BACnetPropertyIdentifier R yes no Held by the stack.
Fault_High_Limit Unsigned O10 no no 0
Fault_Low_Limit Unsigned O10 no no 0
Audit_Level BACnetAuditLevel O11 not in profile not in profile No default: the read fails.
Auditable_Operations BACnetAuditOperationFlags O11 not in profile not in profile No default: the read fails.
Tags BACnetARRAY[N] of BACnetNameValue O no no No default: the read fails.
Profile_Location CharacterString O no no ""
Profile_Name CharacterString O no no ""