These four steps produce an L5X ready for Studio 5000 import. The full guide below covers every option in detail.
Overview
UDT Generator produces Ignition UDT instance JSON from a UDT structure definition (members, types, parameters). One structure plus a list of instance rows produces the JSON for every instance in a single generation.
Common uses: generating 50+ Ignition UDT instances with consistent OPC paths, commissioning a new line that needs all the motor / valve / sensor instances at once, or replicating an existing Ignition project onto a new physical zone with the same structure but different names.
The page has two main sections: UDT Structures (the loaded definitions, top) and an Instance Definition editor (the rows you’ll generate, below). A Recent Actions panel on the right tracks the last few runs.
The default structures load automatically. PLCflow ships with seven built-in Ignition UDT structures (UDT_MotorSimple, UDT_MotorVFD, UDT_ValveDiscrete, UDT_ValveAnalog, UDT_SensorAnalog, UDT_Setpoint, UDT_Alarm) that cover the common device classes. Adding your own custom structure as JSON is also supported.
Step 1. Load UDT structures
Open UDT Generator from the dashboard. The UDT Structures section at the top lists every structure currently loaded. The first time you visit, the seven built-in structures load automatically.
Each structure shows as a tile on the left list (name plus parameter / tag counts); click any tile to see its parameters and member tags on the right.
Two actions in the header:
- Add. Upload a custom Ignition UDT structure as
.json. The structure joins the list with acustombadge. - Restore Defaults. Resets to the seven built-in structures. This deletes any custom structures you previously uploaded. The page warns you in the console afterwards if any of your loaded instances reference structures that are no longer available.
Removing an individual structure is also possible via the X icon on its tile.
Step 2. Define instances
Once at least one structure is loaded, the Instance Definition card appears. Two ways in.
File Upload
Drop a .xlsx, .xls, or .csv into the File Upload dropzone. The expected shape: one row per instance, columns for the instance name plus one column per UDT parameter. Click Download All Templates to get a multi-sheet workbook with one sheet per loaded structure.
Manual Entry
Pick a UDT type from the dropdown, click Add Row, and a row appears in the table under that type. Each row has:
- Name. The Ignition tag name for the instance (
Motor_201,Valve_42_Inlet, etc.). - One column per parameter the structure defines (e.g.
TagName,Description,OPC_Server). If the parameter is namedTagNameorDeviceName, the default value is auto-set to{InstanceName}so the parameter inherits the instance name at import time.
Bulk paste from Excel
In the loaded-state table, paste tab-separated rows directly into the table to create one instance per pasted line. The first column maps to Name; subsequent columns map to the structure’s parameters in order. Useful for adding 50+ instances at once from an existing spreadsheet.
Saving and reloading
Save stores the current instance list (rows plus parameter values) under a name. Load reopens a saved session. Clear drops every row in the editor.
Step 3. Generate
When your instance list is populated, click Generate. PLCflow substitutes each row’s parameter values into the chosen structure and emits the Ignition UDT JSON. The console streams progress; typical runs of a few hundred instances complete in well under a minute.
Output
After generation completes:
File Preview opens with a left-list / right-content layout. Click any generated file to view its JSON inline. The Copy button copies the file contents to your clipboard.
Generated Files lists each file as a downloadable card. The Download ZIP button bundles everything.
Required Components lists the UDT structure JSON for each built-in structure used by your run (e.g. UDT_MotorSimple.json if you generated motor instances). Import these into Ignition’s UDT Definitions area once per project; they are the structure definitions your instances reference.
Step 4. Import into Ignition
In Ignition Designer (connected to your Gateway):
- Open the Tag Browser.
- Right-click the destination tag folder.
- Click Import Tags.
- Select the JSON file downloaded from PLCflow.
- Confirm the import preview. Ignition shows what will be created.
- Click Import.
- Review your imported instances before deployment. Check that the UDT type bindings resolved and the OPC paths look right.
Import the UDT structure definitions (from Required Components) once per project. Import the instance file each time you have a new batch.
Common pitfalls
Restore Defaultsdiscards your custom uploads. It calls the backend’s delete-saved-structures endpoint before reloading the built-ins. If you have custom structures you want to keep, re-upload them after restoring.- Instance count doesn’t match what you expected. Each generation only writes instances that have a non-empty
Name. Rows with a blank name silently skip, so check the row count vs. instance count in the success message. - OPC connection name mismatch. Default OPC paths in the built-in structures start with
[PLC]. If your Ignition Gateway’s OPC connection isn’t namedPLC, every imported tag shows Bad quality. Either rename the Ignition OPC connection toPLC, or override the OPC path inside the UDT structure JSON before uploading it. - Importing instances before the UDT definition. Ignition refuses to import an instance referencing a UDT type it doesn’t have. Import the
UDT_*.jsonfiles from Required Components first (once per project), then the instance JSON. Typemismatch between source and target Ignition. The output JSON targets standard Ignition data type naming. On very old Gateways (pre-8.0) the type names may differ; expect import warnings.
FAQ
What's the difference between UDT Generator and UDT Converter?
UDT Converter is about format translation: take a Rockwell L5X UDT, produce the equivalent Ignition JSON. One structure goes in, one structure comes out. UDT Generator is about instance creation: take one structure, produce many tags from it. Converter for moving structures between Rockwell and Ignition; Generator for populating an Ignition project with many uses of the same structure.
How big can a single generation be?
A few hundred instances is comfortable. Past about 2,000 instances in one run, performance starts to matter; split by area or by structure type if you hit slowness.
Can I round-trip instances through Excel?
Yes. The instance editor supports paste-from-Excel for adding rows, and the per-type CSV template captures the exact column shape. Edit in Excel, paste back, re-generate.
Does UDT Generator produce anything on the Rockwell side?
No. The output is Ignition JSON only. For Rockwell L5X UDT generation, see I/O Code which produces UDT instances as part of its tag output.
What if I have different OPC paths for different instances of the same UDT?
Parameterize the OPC path inside the UDT structure definition. The OPC_Server, TagName, or similar parameters become per-instance overrides; the path template lives in the structure once.
Related
- UDT Converter. Convert an L5X UDT to Ignition JSON first, then use UDT Generator to bulk-create instances from that JSON structure.
Related modules
Honest feedback. We read all of it.