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