Skip to main content
Version: 8.1

BACnet

BACnet​

Ignition provides a driver for BACnet (a data communication protocol for building automation and control networks). The first step before setting up devices and using the driver is to download the module. Go to the Ignition downloads page then refer to Installing or Upgrading a Module.

The driver implements BACnet/IP over UDP. Any access to devices on other network media types (Ethernet (ISO-8802-3), MSTP, ARCNET, etc…) must be done through a gateway/router device.

Setup Process​

The process for setting up BACnet differs from other drivers in that you have to first set up a local device. After that you can configure a remote device.

  1. Set up a local device.
  2. Set up a remote device.

Creating Tags​

Inductive University

BACnet Addressing

Watch the video

The BACnet driver offers browsing support, making Tag creation as easy as dragging-and-dropping from the Tag Browser. However understanding how the OPC Item Path is read by the driver can be useful. Using the example below, there are three important parts of the item path we can identify.

ns=1;s=[MyRemoteDevice]AnalogInput100.Present_Value
  • [MyRemoteDevice] is the Remote Device Name
  • AnalogInput is the Object Type
  • 100 is the Object Identifier

Remote Device Name​

The name of the Remote Device, as known by the OPC server.

Object Type​

The BACnet object type. Currently supported types are:

  • Device
  • AnalogInput
  • AnalogOutput
  • AnalogValue
  • LargeAnalogValue
  • BinaryInput
  • BinaryOutput
  • BinaryValue
  • MultiStateInput
  • MultiStateOutput
  • MultiStateValue
New in 8.1.17
Ignition now supports Elapsed_Active_Time and Time_Of_Active_Time_Reset properties on BinaryInput, BinaryOutput, and BinaryValue objects. These tag types contain an ElapsedActiveTime folder with the following properties:
NameTypeRead/Write
Elapsed_Active_TimeLongWritable
Time_Of_Active_Time_ResetDocumentRead Only

Object Identifier​

The numerical Identifier of the object.

Status_Flags and Document Tags​

The Status_Flags Tags on each object are turn a JSON document, which requires parsing before you can see the values on the flags.

Status_Flags and Document Tags

While the individual flags can be accessed by manually creating Tags for each flag, in some cases you may want to handle the parsing with an expression instead of creating separate OPC Tags. This can easily be done with the jsonGet functions. Assuming an Expression Tag was created in the same directory as a Status_Flags Tag, we could use the following expression to extract the first bit of Status_Flags (which represents In_Alarm):

getBit(jsonGet({[.]Status_Flags}, 'Value[0]'), 0)

Writing BACnet Null Values​

New in 8.1.4
As of release 8.1.4, you can write a None value (via Python) to a Tag that's subscribing to an address in a BACnet device.

Writing to Unsupported Objects​

New in 8.1.18

Scripting functions (system.bacnet.readRaw and system.bacnet.writeRaw) now allow users to read from or write to any BACnet object or property. Because the functions accept and return types used by the underlying BACnet4j library instead of translating to OPC UA and into types supported by tags, these functions provide access to objects not explicitly supported by the BACnet driver.

caution

Please use caution when interacting directly with any BACnet device, as writing to an object may have unintended consequences and could result in data loss.