BACnet Pulse Converter Object
The Pulse Converter object is defined by the BACnet standard as a process monitor that represents activity as pulses or counts. It is commonly used for utility and consumption-style measurements where a physical meter produces pulses (or where another object produces an accumulating count).
Typical applications include:
- Power usage (kWh pulses)
- Water usage (flow/volume pulses)
- Natural gas usage (volume pulses)
A Pulse Converter object may represent a physical input. It may also reference the Present_Value of an Accumulator object within the same device (or data model), and convert that accumulating value into a rate or engineering unit representation.
Pulse Converter Object Properties
The table below summarizes the Pulse Converter object properties and their BACnet datatypes. (Note: this is the Pulse Converter object, not the Group object.)
| Property | Datatype |
| Object_Identifier | BACnet Object Identifier |
| Object_Name | Character String |
| Object_Type | BACnet Object Type |
| Description | Character String |
| Present_Value | Real |
| Input_Reference | BACnet Object Property Reference |
| Status_Flags | BACnet Status Flags |
| Event_State | BACnet Event State |
| Reliability | BACnet Reliability |
| Out_of_Service | Boolean |
| Units | BACnet Engineering Units |
| Scale_Factor | Real |
| Adjust_Value | Real |
| Count | Unsigned |
| Update_Time | BACnet Date Time |
| Count_Change_Time | BACnet Date Time |
| Count_Before_Change | Unsigned |
| COV_Increment | Real |
| COV_Period | Unsigned |
| Notification_Class | Unsigned |
| Time_Delay | Unsigned |
| High_Limit | Real |
| Low_ Limit | Real |
| Deadband | Real |
| Limit_Enable | BACnet Limit Enable |
| Event_Enable | BACnet Event Transition Bits |
| Acked_Transitions | BACnet Event Transition Bits |
| Notify_Type | BACnet Notify Type |
| Event_Time_Stamps | BACnet Array (3) of BACnet Time Stamp |
| Profile_Name | Character String |
Key Behavior: Adjust_Value and Count
One property that matters in real projects is Adjust_Value. If a device implements this correctly, writing to Adjust_Value changes the reported Present_Value. It also updates the internal Count tracking so the object stays consistent after a correction.
Integrators typically use this when a meter is replaced, when a known offset must be applied, or when historical counts must be reconciled after commissioning.
Example: Utility Meter Pulse Converter
The following example shows a Pulse Converter object instance that references an Accumulator and reports a consumption-related value with engineering units. The formatting below is simplified for readability.
Object_Identifier = (Pulse Converter, Instance 1)
Object_Name = "Meter 5"
Object_Type = PULSE_CONVERTER
Description = ""
Present_Value = 125.0
Input_Reference = ((Accumulator, Instance 1), Present_Value)
Status_Flags = {FALSE, FALSE, FALSE, FALSE}
Event_State = NORMAL
Out_Of_Service = FALSE
Units = LITERS_PER_HOUR
Scale_Factor = 0.5
Adjust_Value = 500.0
Count = 250
Update_Time = (10-JUL-01, 11:40:21.0)
Count_Change_Time = (10-JUL-01, 11:30:01.0)
Count_Before_Change = 523
COV_Increment = 10.0
COV_Period = 3600
Notification_Class = 5
Time_Delay = 0
High_Limit = 1000.0
Low_Limit = 0.0
Deadband = 0.0
Limit_Enable = {FALSE, TRUE}
Event_Enable = {TRUE, FALSE, TRUE}
Acked_Transitions = {TRUE, TRUE, TRUE}
Notify_Type = ALARM
Event_Time_Stamps = ((12-JUL-01, 18:50:21.2), (*-*-*,*:*:*.*), (12-JUL-01, 19:01:34.0))
FAQ: BACnet Pulse Converter Object
What is the purpose of a BACnet Pulse Converter object?
The Pulse Converter object represents pulse- or count-based measurements and converts them into engineering values. It is commonly used for utility metering such as water, gas, or energy usage.
What is the difference between a Pulse Converter and an Accumulator object?
An Accumulator object stores a continuously increasing count value, while a Pulse Converter can reference an Accumulator and apply scaling, adjustment, and unit conversion to produce a meaningful Present_Value.
What does the Adjust_Value property do?
Writing to the Adjust_Value property adjusts the Present_Value and also updates the internal Count. This is typically used for calibration, rollover correct