Tags · Module

Tag Database

Library of reusable device, alarm, and parameter definitions. Tags defined here can be pulled into any code generation module via Import from DB.

Free tier Updated May 11, 2026 5 min read
9
Tag categories
Bulk
CSV / XLSX import
User / Project
Library scopes
The 2-minute path

These four steps produce an L5X ready for Studio 5000 import. The full guide below covers every option in detail.

  1. 1 Create · A tag. Pick a category, then a UDT, then fill in attributes.
  2. 2 Bulk import · Existing tag lists as CSV or multi-sheet XLSX.
  3. 3 Organize · Filter by category and search by name.
  4. 4 Use · Generation modules pull from here via Import from DB.

Overview

The Tag Database holds the reusable device, alarm, and parameter definitions that every generation module reads from. Import an existing tag list once, and I/O Code, Alarm Code, and the other generators can pull rows from it directly via their Import from DB button. No spreadsheet round-trip per generation.

The Tag Database is a PLCflow-side library, not a Studio 5000 export. Tags here are source-of-truth definitions (name, category, UDT, IO address, per-UDT attributes) that generation modules consume as input.

Before you start. You can build the database row by row, but the fastest path is bulk import from a CSV or XLSX you already have. The UDT Library should be populated first. Every tag references a UDT, so the dropdown is empty if you have none.

What goes in a tag

Each tag entry has these fields:

FieldNotes
NameThe PLC tag base name. Unique within the library
CategoryOne of nine fixed values (see below)
UDTThe UDT this tag uses. Pulled from the UDT Library; filtered to UDTs whose category matches the tag
DescriptionSurfaces in HMI tag browsers and generated comments
IO AddressPhysical address for I/O-mapped categories (e.g.Local:1:I.Data.0)
AttributesPer-UDT key/value bag; fields here come from the selected UDT’s members

The nine categories are: DI, DO, AI, AO, VALVE, MOTOR, VFD_MOTOR, ALARM, PARAMETER. The category drives which UDTs appear in the dropdown when creating a tag.

Library scope

Above the tag list, the Scope menu chooses between User Library (your private tags) and Project Library (shared across project members). The User Library is the default; the Project Library lights up once the Projects module ships.

Step 1. Create a tag

Click Add Tag on the Tag Database page. The create dialog walks you through:

  1. Category. Pick one of the nine. The dialog filters the UDT dropdown accordingly.
  2. UDT. Pick the UDT this tag uses. Attribute fields below the form update to match the UDT’s members.
  3. Name and description. The name has to be a valid PLC identifier (alphanumeric + underscore, starts with a letter).
  4. IO Address. Only meaningful for I/O categories (DI, DO, AI, AO).
  5. Attributes. One input per UDT member, with BOOL members shown as checkboxes and the rest as text fields.

Save and the tag joins the library, available to every generation module.

Step 2. Bulk import an existing list

Most projects start with an existing tag list. Click Import CSV to open the bulk-import dialog. Two file shapes are accepted:

Excel (.xlsx), one sheet per UDT. Sheet name must match a UDT name in your library. Each sheet’s columns: name, description, io_address, then one column per UDT attribute member.

CSV, flat file. Columns: name, category, udt_name. One row per tag.

On duplicates you pick: Skip (default), Overwrite, or Report error. The result panel breaks down created / skipped / errors after each run.

name,category,udt_name
PMP_201,MOTOR,UDT_MotorSimple
TT_101,AI,UDT_SensorAnalog
ALM_TT_101_HI,ALARM,ALARM_UDT
name              description                  io_address          Running FB    Alarm Delay    Interlock
PMP_201_RUN       Transfer pump 201            Local:1:O.Data.0    PMP_201_FB    5000
PMP_202_RUN       Transfer pump 202            Local:1:O.Data.1    PMP_202_FB    5000

The per-UDT XLSX shape carries the full attribute payload into the database, so when I/O Code imports these rows back via Import from DB the device parameters come pre-filled.

Step 3. Find and filter

The list view has search-by-name and a Category filter. Use the category chips to scope the table to e.g. only VALVE tags, then Export the visible set as Excel.

Step 4. Use the library from generation modules

Each generation module that pulls from the database has an Import from DB button:

  • I/O Code pulls categories DI, DO, AI, AO, VALVE, MOTOR, VFD_MOTOR and maps them onto a generation run. Attributes carry through into the device parameters dialog.
  • Alarm Code pulls the ALARM category.
  • Parameter Code uses the PARAMETER category.

Push the other way with Save to DB on the generation page once you have rows configured.

Common pitfalls

  • UDT dropdown is empty. The UDT Library has no UDTs matching the category you picked. Add the UDT first, or pick a different category.
  • CSV import skips most rows. Default conflict mode is skip, so duplicates pass silently. Switch to overwrite if you intend to replace existing tags, or error to surface every collision.
  • Excel sheet name does not match a UDT. The import dialog requires sheet names to exactly match a UDT name in your library. Rename the sheet or rename the UDT.
  • Project Library is disabled. It activates once the Projects module ships. Until then, everything lives in the User Library, scoped to your account.
  • Tag rejected as invalid name. PLC names start with a letter, contain only alphanumerics and underscore, and can’t collide with reserved Logix identifiers.

FAQ

Why are the categories fixed instead of free-form?

Generation modules need to know which tags map to which UDT shapes. A free-form category would mean the import dialog couldn’t auto-route an ALARM-category row to Alarm Code. The fixed list keeps Import from DB unambiguous.

Can I attach my own UDTs?

Yes. Add them to the UDT Library and they appear in the create-tag dropdown whenever the tag’s category matches the UDT’s category. Custom UDTs work everywhere built-in UDTs do.

Can I move tags between users or projects?

User-scoped tags belong to the account that created them. The Project Library will let you scope tags to a project once it ships. Until then, export-then-reimport into another account if you need to share.

  • I/O Code. Pulls device categories directly via Import from DB. No spreadsheet round-trip.
  • Alarm Code. Pulls ALARM-category rows.
  • UDT Converter. Bridges Rockwell L5X UDTs to Ignition JSON so the same UDT definition flows downstream into SCADA.
What's next

Related modules

Was this helpful?

Honest feedback. We read all of it.

Try Tag Database on real data

Free tier, no credit card. Bring a real spreadsheet, see what comes out.