What the Trend Log Multiple Object Is
The Trend Log Multiple object, defined in Clause 12.30 of ANSI/ASHRAE 135-2024, is how a BACnet device records several properties together as a single timestamped record. Where a Trend Log captures one property, a Trend Log Multiple captures a whole set on the same clock, so every field in a record shares one timestamp. The referenced properties can be in the same device or in other devices on the network.
Log_DeviceObjectProperty is an array naming each property to log, and each log record holds one value per array element. Logging_Type and Log_Interval control when a record is taken (periodically or when triggered by a write to Trigger). The buffer is read back with the ReadRange service, and writing zero to Record_Count clears it. When a Trend Log Multiple supports intrinsic reporting it applies the BUFFER_READY event algorithm, notifying recipients once Notification_Threshold new records have accumulated.
Where You’ll See It
- Correlated points. Logging supply temperature, return temperature, and valve position on one clock lets an analyst line the three up sample for sample, which separate Trend Logs cannot guarantee.
- Snapshot logging. A Trend Log Multiple records a full equipment snapshot at each interval, so a single ReadRange returns every logged point for a period.
- Automatic collection. With intrinsic reporting enabled, BUFFER_READY tells a fileserver or head end (the central BMS server) when enough new records exist to fetch.
Required Properties
Clause 12.30 requires every Trend Log Multiple object to provide these properties. Datatypes are the spec’s names: BOOLEAN is a true/false flag, Unsigned an integer, BACnetLIST of BACnetLogMultipleRecord is the timestamped multi-value buffer, and the other BACnet-prefixed types are structured values defined by the standard.
| Property | Datatype | What it holds |
|---|---|---|
Object_Identifier | BACnetObjectIdentifier | The object’s type and instance number, unique within the device |
Object_Name | CharacterString | The human-readable point name, unique within the device |
Object_Type | BACnetObjectType | Always trend-log-multiple for this object |
Enable | BOOLEAN | Writable; turns logging on and off |
Log_DeviceObjectProperty | BACnetARRAY[N] of BACnetDeviceObjectPropertyReference | The set of properties logged together into each record |
Logging_Type | BACnetLoggingType | Whether sampling is polled or triggered |
Log_Interval | Unsigned | The period between records for periodic logging |
Stop_When_Full | BOOLEAN | When true, logging stops once the buffer fills instead of overwriting |
Buffer_Size | Unsigned | The maximum number of records the buffer holds |
Log_Buffer | BACnetLIST of BACnetLogMultipleRecord | The stored multi-value records, read with ReadRange |
Record_Count | Unsigned | Writable; the number of records in the buffer, and writing zero clears it |
Total_Record_Count | Unsigned32 | The running total of records ever collected, used as the sequence number. Monotonic: it does not decrease on wrap, and rolls over from 4294967295 to 1 |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Event_State | BACnetEventState | The object’s current event state. It stays normal for buffer-ready reporting, which is dispatched as a TO-NORMAL transition from NORMAL. See BUFFER_READY |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The properties integrators meet most are Start_Time and Stop_Time (the collection window), Align_Intervals (aligning records to clock boundaries), and Trigger (for on-demand records). The intrinsic-reporting group appears or is absent as a set.
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Start_Time | BACnetDateTime | Logging |
Stop_Time | BACnetDateTime | Logging |
Align_Intervals | BOOLEAN | Logging |
Interval_Offset | Unsigned | Logging |
Trigger | BOOLEAN | Logging |
Reliability | BACnetReliability | Fault detection |
Notification_Threshold | Unsigned | Intrinsic reporting |
Records_Since_Notification | Unsigned | Intrinsic reporting |
Last_Notify_Record | Unsigned | Intrinsic reporting |
Notification_Class | Unsigned | Intrinsic reporting |
Event_Enable | BACnetEventTransitionBits | Intrinsic reporting |
Acked_Transitions | BACnetEventTransitionBits | Intrinsic reporting |
Notify_Type | BACnetNotifyType | Intrinsic reporting |
Event_Time_Stamps | BACnetARRAY[3] of BACnetTimeStamp | Intrinsic reporting |
Event_Message_Texts | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Event_Message_Texts_Config | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Event_Detection_Enable | BOOLEAN | Intrinsic reporting |
Event_Algorithm_Inhibit_Ref | BACnetObjectPropertyReference | Intrinsic reporting |
Event_Algorithm_Inhibit | BOOLEAN | Intrinsic reporting |
Reliability_Evaluation_Inhibit | BOOLEAN | Fault detection |
Audit_Level | BACnetAuditLevel | Auditing |
Auditable_Operations | BACnetAuditOperationFlags | Auditing |
Tags | BACnetARRAY[N] of BACnetNameValue | Tagging and profile |
Profile_Location | CharacterString | Tagging and profile |
Profile_Name | CharacterString | Tagging and profile |
Related Objects
- Trend Log: logs a single property rather than a set.
- Event Log: records event notifications instead of property values.
- Notification Class: routes the BUFFER_READY notification to its recipients.
What Chipkin Provides
The Trend Log Multiple object, including lockstep logging of a property set and the BUFFER_READY intrinsic reporting algorithm, is supported in the CAS BACnet Stack and hosted by B-BC building controllers. Talk to us about modeling your device’s points.
Related Pages
- BACnet
- BACnet Objects
- BACnet ReadRange Service
- BACnet Trend Log Object
- BACnet Object Types & Properties Reference
- BACnet TrendLog vs TrendLogMultiple: which trend log object to use, and the questions that decide it
- BACnet BUFFER_READY: The Event That Fires Without a State Change: why the notification silently never arrives