Custom Tag Types

The cornerstone of every VTScada application is a group of components called "tags" (sometimes referred to as "points"). These represent the various equipment processes that make up your system and enable you to create a chain of communications from VTScada to your physical equipment. A typical application based on the VTScada layer will include a set of tag types, with which you can create as many tag instances as your license allows.

You can extend VTScada's feature set by creating new kinds of tag. Some examples include:

  • A tag that collects data from several inputs, generating a combined value.
  • A driver tag for a new I/O device.
  • A controller that starts each motor in a group several seconds apart, thereby avoiding load spikes.

There are three ways to create new types of tag:

  • Create a Context type, adding properties and child tags that fully describe a machine, a site, an object or process.
  • Write a new type entirely from scratch using the information within this chapter.
  • Do a combination of the above, starting with a Context tag to define the fundamental structure, then extending its source code to add completely new features.

It is rare for anyone to write a new type entirely from scratch. If a Context-based structure does not fulfill the need, then it makes an excellent starting point for further development using custom code.

New types derived from Context tags do not count against your VTScada license limit until you add custom code to them, after which every instance of that type will be counted.

Every tag has three names: "ShortName" is the name of just that tag, alone. "Name" is the full name including all parents in the hierarchy. "UniqueID" is the guaranteed unique identifier, belonging to that one tag instance alone.
For any purpose that requires a lasting connection to a tag, such as alarm state & history, network values, communication with other machines, you should always use the unique ID rather than the name. TagObj.UniqueID (or just UniqueID from within a tag module) can be used to obtain the UniqueID for a tag.

Take care that you do not create a module within the tag having the same name as the tag. Or, matching any other existing module name.
Refer to examples within The Tag Variables Section