BACnet Trend Log Multiple Object

The BACnet Trend Log Multiple object (Clause 12.30) logs several properties in lockstep into one buffer read with ReadRange: properties with datatypes.

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.

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 trend-log-multiple for this object
EnableBOOLEANWritable; turns logging on and off
Log_DeviceObjectPropertyBACnetARRAY[N] of BACnetDeviceObjectPropertyReferenceThe set of properties logged together into each record
Logging_TypeBACnetLoggingTypeWhether sampling is polled or triggered
Log_IntervalUnsignedThe period between records for periodic logging
Stop_When_FullBOOLEANWhen true, logging stops once the buffer fills instead of overwriting
Buffer_SizeUnsignedThe maximum number of records the buffer holds
Log_BufferBACnetLIST of BACnetLogMultipleRecordThe stored multi-value records, read with ReadRange
Record_CountUnsignedWritable; the number of records in the buffer, and writing zero clears it
Total_Record_CountUnsigned32The 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_FlagsBACnetStatusFlagsFour health flags: in-alarm, fault, overridden, out-of-service
Event_StateBACnetEventStateThe 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_ListBACnetARRAY[N] of BACnetPropertyIdentifierThe 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.

PropertyDatatypeGroup
DescriptionCharacterStringGeneral
Start_TimeBACnetDateTimeLogging
Stop_TimeBACnetDateTimeLogging
Align_IntervalsBOOLEANLogging
Interval_OffsetUnsignedLogging
TriggerBOOLEANLogging
ReliabilityBACnetReliabilityFault detection
Notification_ThresholdUnsignedIntrinsic reporting
Records_Since_NotificationUnsignedIntrinsic reporting
Last_Notify_RecordUnsignedIntrinsic reporting
Notification_ClassUnsignedIntrinsic 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
Reliability_Evaluation_InhibitBOOLEANFault detection
Audit_LevelBACnetAuditLevelAuditing
Auditable_OperationsBACnetAuditOperationFlagsAuditing
TagsBACnetARRAY[N] of BACnetNameValueTagging and profile
Profile_LocationCharacterStringTagging and profile
Profile_NameCharacterStringTagging and profile
  • 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.