Top  | Previous | Next

Scan Classes

Scan classes dictate the execution of SQLTags, and therefore play a crucial role in the design of large, high-performance systems. They offer several key modes to help create efficient projects.

 

Creating and Editing Scan Classes

Scan classes are created by clicking on the Edit Scan classes button in the SQLTags browser toolbar. The window will appear with a list of configured scan classes on the left, and configuration settings on the right.

 

Scan Class Properties

Scan Class Name

Unique name of the scan class.

Mode

Described below

Slow Rate

Base update rate, specified in milliseconds, at which tags will be executed.

Fast Rate

Used by the Driven and Leased modes, this is the faster rate that the tags will be executed at when those modes are active.

Stale Timeout

How long to wait before the tags in the scan class are determined to be "stale" (not running). This is calculated off of the last expected execution time of the scan class, and is particularly important for scan classes executed by other drivers through the external SQLTags provider.

Driven Properties

Used by the driven mode to determine when the scan class should run at the fast rate.

Advanced Properties

Settings that subtly affect how the scan class operates.

 

Note on rates: If the rate is set to 0, the scan class will not be executed. It is common for leased and driven modes to use 0 as a slow rate in order to achieve an "on/off" effect.

Scan Class Modes

Direct

The scan class executes at a fixed rate, defined by the slow rate setting.

Leased

The scan class executes at the fast rate when any of the tags it contains are subscribed and visible in a client window. If no tags are subscribed, the scan class runs at the slow rate.

Driven

The rate of the scan class is based on the value of a driving tag. The condition is a simple comparison between an a tag value and a number. If the condition is true, the scan class will execute at the fast rate. If false, it will run at the slow rate. There are two exceptions to this: the any change operator, and one-shot mode. Using either of these, the scan class will not run at a rate. Instead, it will be triggered by a change in the driving tag's  value. "Any Change" will execute each time the value changes, and "one shot" will execute once when the comparison condition is true, and not again until the condition become false, and subsequently true.

It's useful to keep in mind that the driving tag can be an Expression tag that performs complex calculations and references other tags. In this way, it's possible to create robust scan class triggering.

 

Advanced Properties

OPC Data Mode

This mode dictates how OPC values are obtained. The default mode, "Subscription", is generally recommended.

Subscribed - All OPC tags in the scan class will be subscribed according to the scan class rate. Values will come in asynchronously as they change.
Read - Tags will not be subscribed, but will instead be synchronously read each time the scan class executes. This operation is less efficient, but allows more precise control over when values are obtained. This mode is particularly useful when collecting data over a slow or expensive connection for display. When combined with the "one-shot" execution mode above, and a static tag tied to a momentary button, it's easy to create a manual refresh button on a screen that pulls data on-demand.

Historical Scan Classes

Historical scan classes are simply standard scan classes used by SQLTags to store history. By utilizing separate scan classes for status and history, it's possible to maintain a tag's status at a fast rate, without storing large amounts of history unnecessarily.

 

Despite the fact that there is not a technical differentiation between standard and historical scan classes, it is recommended that you create separate scan classes for each purpose and name them in a manner that indicates their usage. It is common to modify scan classes in order to affect a large number of tags, and without a consistent distinction it may be possible to affect tag execution in unexpected ways.