BACnet Network Port Object

The BACnet Network Port object (Clause 12.56) models a device's network interface: its IP, IPv6, BBMD, and MS/TP settings

What the Network Port Object Is

The Network Port object, defined in Clause 12.56 of ANSI/ASHRAE 135-2024, models one network interface of a BACnet device: an Ethernet BACnet/IP port, an MS/TP (Master-Slave/Token-Passing) trunk, a BACnet SC connection, and so on. A device has one Network Port object per interface, and the object exposes that interface’s addressing and datalink settings as readable and writable BACnet properties.

Its purpose is runtime configuration. Before the Network Port object, changing a device’s IP address or BACnet BBMD table meant a vendor tool; the Network Port object standardizes those settings so any BACnet client can read and change them. Writes are staged, not applied immediately: Changes_Pending flags that edits are waiting, and a ReinitializeDevice request with ACTIVATE_CHANGES commits them. Writing Command with discard-changes throws the staged edits away instead; the other Command values act on the port directly and are not the commit path.

Where You’ll See It

  • IP and network commissioning. Reading and setting a device’s IP address, subnet mask, gateway, and BACnet/IP UDP port over BACnet instead of a serial tool.
  • BBMD configuration. Editing the Broadcast Distribution Table and viewing the Foreign Device Table (populated by registration, not by write) on a device acting as a BACnet BBMD.
  • MS/TP tuning. Reading Max_Master and Max_Info_Frames on an MS/TP port. Reading Network Port 4194303 (the wildcard) with ReadProperty returns the port that received the request.

Required Properties

Clause 12.56 requires every Network Port object to provide these properties. Datatypes are the spec’s names: Unsigned is an integer, REAL a floating-point number, BOOLEAN a true/false flag, and the 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 interface name
Object_TypeBACnetObjectTypeAlways network-port for this object
Status_FlagsBACnetStatusFlagsFour health flags: in-alarm, fault, overridden, out-of-service
ReliabilityBACnetReliabilityWhy the port is unreliable, if it is
Out_Of_ServiceBOOLEANWhen true, the port is decoupled for testing
Network_TypeBACnetNetworkTypeThe datalink type (ipv4, ipv6, mstp, ethernet, secure-connect)
Protocol_LevelBACnetProtocolLevelThe protocol level the port operates at
Network_NumberUnsignedThe BACnet network number this port connects to
Network_Number_QualityBACnetNetworkNumberQualityHow the network number was learned (configured, learned, unknown)
Changes_PendingBOOLEANTrue when edited properties are staged but not yet applied
APDU_LengthUnsignedThe maximum APDU (Application Protocol Data Unit) length for this port
Link_SpeedREALThe datalink speed, in bits per second
Property_ListBACnetARRAY[N] of BACnetPropertyIdentifierThe list of properties this instance implements

Optional Properties

Most of the Network Port object is optional because the relevant set depends on the interface type: an IPv4 port implements the IP_* group, an MS/TP port the Max_Master and slave-proxy group, a BACnet BBMD the BBMD_* group. The properties integrators touch most are IP_Address, IP_Subnet_Mask, IP_Default_Gateway, and the BBMD_Broadcast_Distribution_Table.

PropertyDatatypeGroup
DescriptionCharacterStringGeneral
Reference_PortUnsignedGeneral
CommandBACnetNetworkPortCommandGeneral
MAC_AddressOctetStringGeneral
Link_SpeedsBACnetARRAY[N] of REALGeneral
Link_Speed_AutonegotiateBOOLEANGeneral
Network_Interface_NameCharacterStringGeneral
BACnet_IP_ModeBACnetIPModeBACnet/IP
IP_AddressOctetStringBACnet/IP
BACnet_IP_UDP_PortUnsignedBACnet/IP
IP_Subnet_MaskOctetStringBACnet/IP
IP_Default_GatewayOctetStringBACnet/IP
BACnet_IP_Multicast_AddressOctetStringBACnet/IP
IP_DNS_ServerBACnetARRAY[N] of OctetStringBACnet/IP
IP_DHCP_EnableBOOLEANBACnet/IP
IP_DHCP_Lease_TimeUnsignedBACnet/IP
IP_DHCP_Lease_Time_RemainingUnsignedBACnet/IP
IP_DHCP_ServerOctetStringBACnet/IP
BACnet_IP_NAT_TraversalBOOLEANBACnet/IP
BACnet_IP_Global_AddressBACnetHostNPortBACnet/IP
BBMD_Broadcast_Distribution_TableBACnetLIST of BACnetBDTEntryBACnet BBMD
BBMD_Accept_FD_RegistrationsBOOLEANBACnet BBMD
BBMD_Foreign_Device_TableBACnetLIST of BACnetFDTEntryBACnet BBMD
FD_BBMD_AddressBACnetHostNPortForeign device
FD_Subscription_LifetimeUnsigned16Foreign device
BACnet_IPv6_ModeBACnetIPModeBACnet/IPv6
IPv6_AddressOctetStringBACnet/IPv6
IPv6_Prefix_LengthUnsignedBACnet/IPv6
BACnet_IPv6_UDP_PortUnsignedBACnet/IPv6
IPv6_Default_GatewayOctetStringBACnet/IPv6
BACnet_IPv6_Multicast_AddressOctetStringBACnet/IPv6
IPv6_DNS_ServerBACnetARRAY[N] of OctetStringBACnet/IPv6
IPv6_Auto_Addressing_EnableBOOLEANBACnet/IPv6
IPv6_DHCP_Lease_TimeUnsignedBACnet/IPv6
IPv6_DHCP_Lease_Time_RemainingUnsignedBACnet/IPv6
IPv6_DHCP_ServerOctetStringBACnet/IPv6
IPv6_Zone_IndexCharacterStringBACnet/IPv6
Max_MasterUnsignedMS/TP
Max_Info_FramesUnsignedMS/TP
Slave_Proxy_EnableBOOLEANMS/TP
Manual_Slave_Address_BindingBACnetLIST of BACnetAddressBindingMS/TP
Auto_Slave_DiscoveryBOOLEANMS/TP
Slave_Address_BindingBACnetLIST of BACnetAddressBindingMS/TP
Max_BVLC_Length_AcceptedUnsigned16BACnet SC
Max_NPDU_Length_AcceptedUnsigned16BACnet SC
SC_Primary_Hub_URICharacterStringBACnet SC
SC_Failover_Hub_URICharacterStringBACnet SC
SC_Minimum_Reconnect_TimeUnsigned16BACnet SC
SC_Maximum_Reconnect_TimeUnsigned16BACnet SC
SC_Connect_Wait_TimeoutUnsigned16BACnet SC
SC_Disconnect_Wait_TimeoutUnsigned16BACnet SC
SC_Heartbeat_TimeoutUnsigned16BACnet SC
SC_Hub_Connector_StateBACnetSCHubConnectorStateBACnet SC
SC_Primary_Hub_Connection_StatusBACnetSCHubConnectionBACnet SC
SC_Failover_Hub_Connection_StatusBACnetSCHubConnectionBACnet SC
SC_Hub_Function_EnableBOOLEANBACnet SC
SC_Failed_Connection_RequestsBACnetLIST of BACnetSCFailedConnectionRequestBACnet SC
SC_Hub_Function_Accept_URIsBACnetARRAY[N] of CharacterStringBACnet SC
SC_Hub_Function_BindingCharacterStringBACnet SC
SC_Hub_Function_Connection_StatusBACnetLIST of BACnetSCHubFunctionConnectionBACnet SC
SC_Direct_Connect_Initiate_EnableBOOLEANBACnet SC
SC_Direct_Connect_Accept_EnableBOOLEANBACnet SC
SC_Direct_Connect_Accept_URIsBACnetARRAY[N] of CharacterStringBACnet SC
SC_Direct_Connect_BindingCharacterStringBACnet SC
SC_Direct_Connect_Connection_StatusBACnetLIST of BACnetSCDirectConnectionBACnet SC
Operational_Certificate_FileBACnetObjectIdentifierBACnet SC
Issuer_Certificate_FilesBACnetARRAY[N] of BACnetObjectIdentifierBACnet SC
Certificate_Signing_Request_FileBACnetObjectIdentifierBACnet SC
Virtual_MAC_Address_TableBACnetLIST of BACnetVMACEntryRouting
Routing_TableBACnetLIST of BACnetRouterEntryRouting
Event_Detection_EnableBOOLEANIntrinsic 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_StateBACnetEventStateIntrinsic reporting
Reliability_Evaluation_InhibitBOOLEANIntrinsic reporting
Audit_LevelBACnetAuditLevelAuditing
Auditable_OperationsBACnetAuditOperationFlagsAuditing
TagsBACnetARRAY[N] of BACnetNameValueTagging and profile
Profile_LocationCharacterStringTagging and profile
Profile_NameCharacterStringTagging and profile

The BACnet SC Property Group

On a BACnet Secure Connect port, the Network Port object is the whole configuration and diagnostic surface for the datalink. Annex AB defines no separate management protocol, so the properties above are how a BACnet client reads and changes BACnet SC behavior.

  • Hub connection. SC_Primary_Hub_URI and SC_Failover_Hub_URI are the wss:// addresses the node connects outbound to. SC_Hub_Connector_State reports which one is active. Hub redundancy lives here, on the node, not on the hub: the node decides when to fall back.
  • Why a node was rejected. SC_Failed_Connection_Requests records the timestamp, peer address, VMAC, UUID, and error for each connection attempt this device refused, whether the hub function turned it away or direct-connect accept did. When a controller silently will not join, this is the first property to read on the device that rejected it. It is usually the difference between “certificate expired” and “clock skew”, without a packet capture you could not decrypt anyway.
  • The hub function. SC_Hub_Function_Enable is what turns a node into the hub. SC_Hub_Function_Connection_Status lists the nodes currently connected, which is the fastest answer to “is that controller actually online.”
  • Direct connect. The initiate and accept enables are separate properties, so a device can accept peer connections without ever opening one, or the reverse. See NM-SCDC-B.
  • Certificates. Operational_Certificate_File, Issuer_Certificate_Files, and Certificate_Signing_Request_File point at File objects, which is what lets certificate provisioning run over ordinary atomic file transfer. See NM-SCCM-A.
  • Reconnect behavior. SC_Minimum_Reconnect_Time and SC_Maximum_Reconnect_Time bound the backoff a node uses after losing the hub. They exist because a hub restart on a site with hundreds of nodes is a thundering herd, and the randomized window between the two values is what spreads the reconnect storm out.
  • Device: summarizes the device’s identity and capabilities; the Network Port objects carry the per-interface network detail.

The Network Port object is also where BACnet BBMD tables and device-address proxying are configured, the surface NM-BBMDC-B and NM-RC-B require a device to expose.

What Chipkin Provides

The Network Port object, including the BACnet/IP, IPv6, BBMD, MS/TP, and BACnet SC property groups and the staged-changes model, is implemented in the CAS BACnet Stack, exposed for read in 5.x. Two caveats: automatic fallback from the primary to the failover BACnet SC hub URI is a CAS BACnet Stack 6.x item, so do not design 5.x redundancy around it (see BACnet SC in the CAS BACnet Stack); and BDT writes landing end to end through standard WriteProperty are also a 6.x target rather than a 5.x capability (see How BACnet Networks Scale). Talk to us about modeling your device’s points.