Applies To:
  • CitectSCADA 7.0
  • CitectHMI 7.0
  • CitectFacilities 7.0

In a multi-cluster project how do tags and cluster context interact when resolving graphics and cicode functions for values. 


A cluster should be thought of as a group of servers, each cluster can consist of a pair each of Alarms, Reports, and Trend servers.  Each cluster can also contain many I/O servers. More than one server can exist in a single process however all the servers in a process must be from the same cluster.  Each server component will connect to each of the other server components (in the same cluster) in the same way that CitectSCADA always has.

A display process does not belong to a cluster but connects to any number of clusters.  When a page is created it can have its cluster context defined in the page properties.  If no pre-defined cluster context is made then there are three possibilities:

1. The page is opened in a new window without a cluster context defined, in this case only tags with a cluster prefix (dot notation) will be resolved.  Tags without an explicitly set cluster context will return #COM, even if the tag name is unique.

2. The page is open in a window which previously had a page with a cluster context defined, in this case the page will inherit the cluster context of the previous page. 

3. The page will be opened by a page display function which includes a cluster context, and the tags on that page will be resolved against that cluster.

The attached project demonstrates a number of possibilities where tags are defined in genies with cluster substitution, super genies, graphic objects, and Cicode.  The test page can also be opened without an active cluster, or opened with a cluster context.

Before a tag can be resolved to a value, it must be associated with a cluster.  There are three basic ways to achieve the association.  The cluster context is required even in the case of a unique tag name.

1. Define the tag with the dot notation prefix.  eg. ClusterName.TagName.  Using this approach will resolve the tags value against the required cluster even when the context of the page or cicode is associated against another cluster.

2. Ensure that the tag is called with a pre-defined cluster context.  That could be either a page with statically defined cluster context or opened with reference to a cluster.  Using the TaskNew() function allows cicode the be run with a specific cluster context.

3. A genie tag substitution.  During run time this is essentially the same as using the cluster.tag format but can make genies more transportable.