The short answer
How to Build a Tag
To build a tag, take its identity from the I/O list or the controller tag database, name it by the plant convention so that the name says the site, the equipment, and the parameter, bind it to the controller tag by name or to the register address with the right data type and word order, set the engineering units and, only if the controller does not already scale it, the scaling, write a description that a stranger would understand, apply the alarm limits and the history settings from the standard for that kind of tag, and verify it: the live value against the controller, the units against the I/O list, and the alarm against a forced condition. A tag built any other way is a tag that will be wrong somewhere for years.
Key points
- The tag identity comes from the I/O list or the controller database, never invented at the screen.
- Name by the convention: site, equipment, parameter, with the suffix for the tag kind.
- Bind by controller tag name where the platform allows; by address with explicit data type and word order otherwise.
- Scale in the controller; the SCADA tag carries units and a description, not a second scaling.
- Apply the alarm and history standard for the tag class, then verify against the live value.
What you need
- The I/O list or the controller tag export for the point
- The plant tag naming convention and the tag class standards for alarms and history
- The SCADA designer or tag editor with rights to create tags
- A live connection to the controller for verification
- The screen or template the tag will be used on
Procedure
- 1
Identify the point
From the I/O list or the controller tag database: what it is, its range and units, its controller tag or address, and its data type. If it is not on the list, it goes on the list first.
- 2
Name it
By the convention: for example site, equipment, parameter, and kind, such as LS12_P1_RUN or WTP_FIT101_PV. The name must sort with its siblings and tell a reader what it is without the description.
- 3
Bind it
To the controller tag by name on platforms that browse the controller, or to the register address with the function code or table, the data type, the word order for 32-bit values, and the unit identifier. Test the bind by reading the value.
- 4
Set the type and units
Boolean, integer, or float to match the source; engineering units as a label; no scaling if the controller already provides engineering units, and the exact controller scaling if it does not.
- 5
Describe it
A description a stranger would understand: Lift station 12, pump 1 running feedback. Not the tag name repeated.
- 6
Apply the class standard
For an analog process value: alarm limits from the alarm list, deadband, delay, history at the standard interval and deadband. For a discrete status: history on change. For a setpoint: write access by role, limits, audit. The standard says which; the tag gets it.
- 7
Group it
Into the folder, area, or structure the platform uses, so that security, alarm areas, and screens find it. On platforms with user-defined types, the tag is an instance member, not a loose tag.
- 8
Verify
Live value against the controller display; units and range against the I/O list; the alarm by forcing the condition; the history by trending it. Then put it on the screen.
- 9
Record
The tag export or the change log entry, so the tag database and the I/O list stay in step.
| Field | Comes from | Common mistake |
|---|---|---|
| Name | Convention | Invented at the screen; inconsistent with siblings |
| Address or binding | Controller database or map | Wrong table, offset by one, wrong word order |
| Data type | Controller | Float bound as integer; signed as unsigned |
| Units | I/O list | Missing, or different from the controller |
| Scaling | Controller, ideally none in SCADA | Double scaling; a percent tag displayed as engineering |
| Description | I/O list | Blank or the name repeated |
| Alarms | Alarm list and class standard | Limits guessed; no deadband; wrong priority |
| History | Class standard | Not historized; or historized at a rate that fills the disk |
Frequently asked questions
- Should the SCADA tag scale the raw value?
- No, if the controller can scale it, which it can. The controller holds the engineering value in a float; SCADA displays it. Scaling in SCADA creates a second place for the range to be wrong.
- What goes in the description?
- What the point is, where, and in what units, in words: Clearwell level, feet above floor. The description appears in alarm messages and tag browsers and is what a new operator reads.
- How do I keep tag names consistent across sites?
- A written convention, a template per equipment class, and a review of every tag export against the convention before it goes live. Naming drift is the main reason screens from two integrators look like two plants.
- The value shows on the screen but is wrong.
- Check the binding: table, offset, data type, word order, and unit identifier; then the scaling in both places. Read the raw value at the controller and compare.
Related topics
- SCADA ArchitectureThe parts of a SCADA system and how data moves between them: I/O servers, the tag database, clients, the historian, the alarm server, and the topologies from a single panel PC to a redundant, distributed plant.
- I/O ListsThe document that ties the field to the controller: what every I/O list column means, how tags, terminals, and module channels are assigned, spare capacity rules, how the list drives the drawings and the program, and how to keep it true after commissioning.
- Wrong Register DataThe poll succeeds and the numbers are nonsense: an offset by one, the wrong table, swapped words in a 32-bit value, a float read as an integer, signed read as unsigned, a scale factor not applied, a stale gateway value, or the wrong unit answering.
- Engineering UnitsChoosing and documenting the units a tag carries: where the unit is decided, how it flows from transmitter range to controller scaling to screen and historian, the conventions used in water and wastewater, and the mismatches that put a wrong number on screen.
- How to Configure AlarmsConfigure alarms in the SCADA system from the alarm list: set the source, controller-generated or evaluated in SCADA, the limits and deadband and delay, and the notification; then test each alarm end to end and review the alarm rate after the first weeks.
- How to Configure a HistorianSet up a process historian that collects what matters and keeps it: decide the tags and their classes, set collection intervals and deadbands per class, size the storage and the retention, and hand the operators a working trend on day one.
Direct contact
Have a controls question?
Reach Eric Sullivan directly about anything on this site, a controls or automation topic, or one of his personal projects.