InfinityProgram that is mirroring point randomly gets disabled with error: Controller is offline
Direction of data transfer IS important when transfering data between controllers in Continuum as it determines the type of communication operation (point to point versus import/export) the system will use.
Continuum IE system is similar to BACnet COV in that data transfer is optimized to take place only when there is a change in value.
When writing an InfinityProgram in a controller with the intent of mirroring points it is important that the program is written to take advantage of the Import/Export system as opposed to forcing a point to point operation.
Consider the following scenario
Three Infinity controllers A, B and C
Controller A has the OAT (Outside Air Temperature) point, we want to mirror its value into InfinityNumerics in controllers B and C called bOAT and cOAT
On the surface, it appears that the best way to accomplish this is to write a program in controller A that mirrors the value of OAT into bOAT and cOAT
MySite\B\bOAT = OAT
MySite\C\cOAT = OAT
In fact, writing a program this way is a very bad approach for several reasons
a) Because this is a SET operation (instead of a GET) it will cause a point to point communication from A to B and C to set the values of bOAT and cOAT every time the program line is executed EVEN if the value of OAT has not changed at all, this will add a lot of unnecessary traffic to the network.
b) The program is much more brittle, it will get disabled if either B or C go offline even for a brief moment. (for the purpose of this illustration we are not using a line E)
A much better implementation is to use a program in B and C to mirror the value of A’s OAT
Program in B
bOAT = MySite\A\OAT
Program in C
cOAT = MySite\A\OAT
While this implementation requires 2 programs one in B and one in C instead of just one program in A it is much better for the following reasons:
a) Since we are doing a GET operation (getting the value of OAT from A) under the hood the Continuum controller’s Import/Export (IE) system is used. This means that the value of OAT is only transferred if it has changed even if the program is sitting looping on the line. The amount of traffic this program will put on the network is insignificant compared to the point to point approach.
b) The program is much more robust, it will not get disabled even if controller A goes offline. (the IE system handles this automatically)