Skip to content
Version 6.1.0
Contact Us

Pulse Converter

A Pulse Converter object turns a stream of pulses into a scaled number. It counts pulses from a meter or an accumulator, multiplies by a scale factor, and presents the result in engineering units. A client can also adjust the count to match a meter reading.

  • Electric meter pulses converted to kWh
  • Water meter pulses converted to litres
  • Gas meter counts for demand tracking
  • Reading from an accumulator in the same device
  • Peak-load monitoring over a time interval
Property What it holds
Present_Value The scaled value, calculated from Count and Scale_Factor.
Input_Reference The property that supplies the pulses, for example an accumulator’s value in the same device.
Scale_Factor The factor that turns a count into engineering units.
Adjust_Value Writing it adjusts the count so Present_Value matches a known reading.
Count The running pulse count since the last adjustment.
COV_Period How often, in seconds, the object sends a COV notification even when the value has not moved far.

The object is not commandable. When it reports intrinsic events, the standard pairs it with the OUT_OF_RANGE algorithm, using High_Limit, Low_Limit and Deadband. COV notifications go out when Present_Value changes by COV_Increment, on any change to Status_Flags, or when COV_Period expires.

Enable it with the STACK_OPTION_OBJECT_TYPE_PULSE_CONVERTOR build option, spelled that way, and add each object with BACnetStack_AddObject. Present_Value is a Real, so serve it with the callback you register with BACnetStack_RegisterCallbackGetPropertyReal. The other properties come from your callbacks, matched to their datatypes. To arm alarms, enable alarms for the object and call BACnetStack_SetIntrinsicOutOfRangeAlgorithm. Call BACnetStack_UpdateValue whenever the value you serve changes, so COV, trend logs and alarms see it.

Accumulator, Analog Input, Analog Value

The properties ASHRAE 135-2024 clause 12.23 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.
Description CharacterString O no no ""
Present_Value Real R1 yes no (yes while Out_Of_Service is true) No default: value-not-initialized.
Input_Reference BACnetObjectPropertyReference O no no No default: the read fails.
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 (yes while Out_Of_Service is true) 0
Out_Of_Service Boolean R yes no false
Units BACnetEngineeringUnits R yes no 95 (no units)
Scale_Factor Real R yes no 0.0
Adjust_Value Real W yes yes 0.0
Count Unsigned R yes no 0
Update_Time BACnetDateTime R yes no No default: the read fails.
Count_Change_Time BACnetDateTime R yes no No default: the read fails.
Count_Before_Change Unsigned R yes no 0
COV_Increment Real O2 no no 0.0
COV_Period Unsigned O2 no no 0
Notification_Class Unsigned O3,5 no no 0
Time_Delay Unsigned O3,5 no no 0
High_Limit Real O3,5 no no 0.0
Low_Limit Real O3,5 no no 0.0
Deadband Real O3,5 no no 0.0
Limit_Enable BACnetLimitEnable O3,5 no no An empty bit string.
Event_Enable BACnetEventTransitionBits O3,5 no no An empty bit string.
Acked_Transitions BACnetEventTransitionBits O3,5 no no An empty bit string.
Notify_Type BACnetNotifyType O3,5 no no 0
Event_Time_Stamps BACnetARRAY[3] of BACnetTimeStamp O3,5 no no No default: the read fails.
Event_Message_Texts BACnetARRAY[3] of CharacterString O5 no no ""
Event_Message_Texts_Config BACnetARRAY[3] of CharacterString O5 no no ""
Event_Detection_Enable Boolean O3,5 no no false
Event_Algorithm_Inhibit_Ref BACnetObjectPropertyReference O5 no no No default: the read fails.
Event_Algorithm_Inhibit Boolean O5,6 no no false
Time_Delay_Normal Unsigned O5 no no 0
Reliability_Evaluation_Inhibit Boolean O7 no no false
Property_List BACnetARRAY[N] of BACnetPropertyIdentifier R yes no Held by the stack.
Audit_Level BACnetAuditLevel O8 not in profile not in profile No default: the read fails.
Auditable_Operations BACnetAuditOperationFlags O8 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 ""