Knowledge Base
cancel
Showing results for 
Search instead for 
Did you mean: 

Random "Controller is offline" error message in InfinityProgram mirroring points

Issue

InfinityProgram that is mirroring point randomly gets disabled with error: Controller is offline

Environment

CyberStation

Any InfinityController

9900

9640

9680

5720

5740

Cause

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.

NOTE:

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.

Resolution

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)

Tags (1)
Labels (1)
Version history
Revision #:
1 of 1
Last update:
‎2018-09-06 08:36 AM
Updated by: