These four steps produce an L5X ready for Studio 5000 import. The full guide below covers every option in detail.
- 1 Create · A tag. Pick a category, then a UDT, then fill in attributes.
- 2 Bulk import · Existing tag lists as CSV or multi-sheet XLSX.
- 3 Organize · Filter by category and search by name.
- 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:
| Field | Notes |
|---|---|
| Name | The PLC tag base name. Unique within the library |
| Category | One of nine fixed values (see below) |
| UDT | The UDT this tag uses. Pulled from the UDT Library; filtered to UDTs whose category matches the tag |
| Description | Surfaces in HMI tag browsers and generated comments |
| IO Address | Physical address for I/O-mapped categories (e.g.Local:1:I.Data.0) |
| Attributes | Per-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:
- Category. Pick one of the nine. The dialog filters the UDT dropdown accordingly.
- UDT. Pick the UDT this tag uses. Attribute fields below the form update to match the UDT’s members.
- Name and description. The name has to be a valid PLC identifier (alphanumeric + underscore, starts with a letter).
- IO Address. Only meaningful for I/O categories (
DI,DO,AI,AO). - 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_MOTORand maps them onto a generation run. Attributes carry through into the device parameters dialog. - Alarm Code pulls the
ALARMcategory. - Parameter Code uses the
PARAMETERcategory.
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 tooverwriteif you intend to replace existing tags, orerrorto 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.
Related
- 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.
Related modules
Generate a Studio 5000 routine from an I/O list. Upload a spreadsheet, paste from one, or add rows by hand. Output is an importable L5X with tags, UDTs, and AOIs bundled in.
Define alarm conditions in a table. Get a Studio 5000 routine bundling the ALARM_UDT, alarm tags, and detection logic into one importable L5X.
Convert a Rockwell L5X UDT into Ignition UDT JSON. OPC item paths, parameter expansion, and extra Ignition fields configured per conversion.
Honest feedback. We read all of it.