BACnet Remote Devices Best Practice

Hi everyone,

I am currently preparing a proof of concept for working with WAGO and BACnet.

While working with remote BACnet devices, I came across a few questions regarding the recommended way of interacting with remote objects.

As I understand it, there are essentially two approaches:

1. Client mapping using Read Maps / Write Maps

Pros:

  • Configuration can be done directly in the WAGO BACnet Configurator.

  • Read Maps allow the controller to subscribe to COV notifications from remote devices, e.g. smart sensors.

Cons:

  • Every remote object needs a corresponding local BACnet object. This can potentially result in multiple objects representing the same data.

  • A naming scheme would therefore be required for these “marker” objects to avoid duplicate object names and to ensure that services such as Who-Has work reliably within the BACnet system.

  • Write Maps appear to have a limitation when it comes to writing “NULL”. If a Write Map is configured, it does not seem possible to explicitly write “NULL” to the remote object, because the Present Value of the local “marker” object will never be “NULL”.

  • If no priority is active, the marker object’s relinquish default value may therefore be written to the remote object, depending on how the Write Map is configured.

2. Remote Object Function Blocks

Pros:

  • It is possible to explicitly write “NULL” to the remote object.

Cons:

  • The remote objects have to be read cyclically.

  • Only a limited number of BACnet object types appear to be supported, e.g. AI, AO, AV, DI, DO, DV, MI, MO, MV and Schedule.

My current approach

Based on the above, my current thinking is to use:

  • Client mapping / Read Maps for reading values from remote BACnet devices, particularly where COV is useful.

  • Remote Object FBs for writing to remote objects where the ability to write “NULL” is required.

This does, however, leave me wondering whether I am approaching this in the intended way, or whether there is a better solution that I have overlooked.

What is the recommended best practice for interacting with remote BACnet objects from a WAGO Controller?

In particular, I would be interested to know how others handle:

  • Reading remote objects with COV

  • Writing values with BACnet priority arrays

  • Writing “NULL” to release a priority

  • Avoiding unnecessary duplicate/marker objects in the local BACnet device

Any recommendations or examples of the intended WAGO architecture would be greatly appreciated.

Thanks for your help!

Cheers,
xxyzz

Hello xxyzz,
In my own program I’m using mainly client mapping.
Those enable me to have an direct access in the program to the BACnet object.
I’m also using Present Value and Priority Array.
On thing I have done is (on a value written by another device)
The device write on prio 8,
I copy the value in prio 16,
I reset the prio 8 to the value NULL.
This enable me to have the right value in the Present value but also being able to know when the device update the prio 8.
As for the marker and multiple object, normally you should be able to have multiple link on one object.