Issue
Continuum BACnet controllers are sending out incorrect or large amounts of unnecessary COV data on the network.
Environment
Continuum BACnet controllers
Cause
The Continuum BACnet controllers cannot be programmed the same as the Non BACnet Continuum controllers when it comes to points that are being exported to other controllers. There are 2 main differences that the programmer must be aware of when programming these exported points.
Resolution
The first difference to be aware of is that in a Continuum BACnet controller every change of the value of an exported point is immediately sent out at the time of the change regardless of when the point changed within the controller program scan. What this means is that unlike standard continuum programming which latches and exports the final value of a point after the entire controller scan is completed, the Continuum BACnet controller will send out any change it sees during the scan. So if you were toggling a point's value several times within the same program or within multiple programs, all the changes to the value are sent to recipient controllers during the scan, not just the final value. This will cause both incorrect and unnecessary data exports.
The second difference is that, in the case of standard Continuum points such as InfinityNumerics and InfinityOutputs, some values can be sent to them that are not reflected directly when the values are translated into BACnet. For example if you had an InfinityNumeric and used it as a binary value in the BACnet world, a program could set it to "On" and later in a program you may perform Boolean logic on it and it would be set to a logical "1", or "true". In the Standard Continuum, these values would be different, however in BACnet, both of these values would be translated to the same value. Because the evaluation of the COV point change is done before we translate it to the BACnet standard we would transmit this as a change of value even though the value transmitted in both cases would be the same. In this case we would transmit the COV during the scan every time we saw this value toggled to what BACnet would think was no change. This would cause unnecessary COV data to be transmitted.
The bottom line is that if you, through "Plain English" need your logic to set a value to a Continuum BACnet object more than once during the program scan and it is being exported, you will need to use an intermediate point such as a local variable or an InfinityNumeric to store the changes and only commit the final value to the exported point at the end of the manipulation.